git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/mlx5: fix initialization of steering registers
[dpdk.git]
/
drivers
/
net
/
sfc
/
base
/
efx_filter.c
diff --git
a/drivers/net/sfc/base/efx_filter.c
b/drivers/net/sfc/base/efx_filter.c
index
575f622
..
3310b73
100644
(file)
--- a/
drivers/net/sfc/base/efx_filter.c
+++ b/
drivers/net/sfc/base/efx_filter.c
@@
-1,7
+1,7
@@
/* SPDX-License-Identifier: BSD-3-Clause
*
/* SPDX-License-Identifier: BSD-3-Clause
*
- * Copyright
(c) 2007-2018 Solarflare Communications
Inc.
- *
All rights reserved
.
+ * Copyright
(c) 2019-2020 Xilinx,
Inc.
+ *
Copyright(c) 2007-2019 Solarflare Communications Inc
.
*/
#include "efx.h"
*/
#include "efx.h"
@@
-28,7
+28,7
@@
static __checkReturn efx_rc_t
siena_filter_add(
__in efx_nic_t *enp,
__inout efx_filter_spec_t *spec,
siena_filter_add(
__in efx_nic_t *enp,
__inout efx_filter_spec_t *spec,
- __in
boolean_t may_replace
);
+ __in
efx_filter_replacement_policy_t policy
);
static __checkReturn efx_rc_t
siena_filter_delete(
static __checkReturn efx_rc_t
siena_filter_delete(
@@
-93,8
+93,16
@@
efx_filter_insert(
goto fail2;
}
goto fail2;
}
- return (efop->efo_add(enp, spec, B_FALSE));
+ if (spec->efs_priority == EFX_FILTER_PRI_AUTO) {
+ rc = EINVAL;
+ goto fail3;
+ }
+ return (efop->efo_add(enp, spec,
+ EFX_FILTER_REPLACEMENT_HIGHER_PRIORITY));
+
+fail3:
+ EFSYS_PROBE(fail3);
fail2:
EFSYS_PROBE(fail2);
fail1:
fail2:
EFSYS_PROBE(fail2);
fail1:
@@
-1437,7
+1445,7
@@
static __checkReturn efx_rc_t
siena_filter_add(
__in efx_nic_t *enp,
__inout efx_filter_spec_t *spec,
siena_filter_add(
__in efx_nic_t *enp,
__inout efx_filter_spec_t *spec,
- __in
boolean_t may_replace
)
+ __in
efx_filter_replacement_policy_t policy
)
{
efx_rc_t rc;
siena_filter_spec_t sf_spec;
{
efx_rc_t rc;
siena_filter_spec_t sf_spec;
@@
-1478,9
+1486,17
@@
siena_filter_add(
saved_sf_spec = &sftp->sft_spec[filter_idx];
if (siena_filter_test_used(sftp, filter_idx)) {
saved_sf_spec = &sftp->sft_spec[filter_idx];
if (siena_filter_test_used(sftp, filter_idx)) {
- if (may_replace == B_FALSE) {
+ /* All Siena filter are considered the same priority */
+ switch (policy) {
+ case EFX_FILTER_REPLACEMENT_NEVER:
+ case EFX_FILTER_REPLACEMENT_HIGHER_PRIORITY:
rc = EEXIST;
goto fail4;
rc = EEXIST;
goto fail4;
+ case EFX_FILTER_REPLACEMENT_HIGHER_OR_EQUAL_PRIORITY:
+ break;
+ default:
+ EFSYS_ASSERT(0);
+ break;
}
}
siena_filter_set_used(sftp, filter_idx);
}
}
siena_filter_set_used(sftp, filter_idx);