diff options
author | Kurt Kanzenbach <kurt@linutronix.de> | 2021-06-28 21:43:31 -0700 |
---|---|---|
committer | Tony Nguyen <anthony.l.nguyen@intel.com> | 2021-07-16 14:08:03 -0700 |
commit | 73744262210c4560efb2d89385c6219739d16bbd (patch) | |
tree | 1b0f2fad38c59aa9c62056a01f040d6bd20b2539 /drivers/net/ethernet/intel/igc/igc_main.c | |
parent | 7991487ecb2d27f2293376411d576867a3d9640b (diff) | |
download | linux-73744262210c4560efb2d89385c6219739d16bbd.tar.bz2 |
igc: Make flex filter more flexible
Currently flex filters are only used for filters containing user data.
However, it makes sense to utilize them also for filters having
multiple conditions, because that's not supported by the driver at the
moment. Add it.
Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Tested-by: Dvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/igc/igc_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/igc/igc_main.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index 9999d8fc640b..11385c380947 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -3385,14 +3385,8 @@ static int igc_enable_nfc_rule(struct igc_adapter *adapter, { int err; - /* Check for user data first: When user data is set, the only option is - * to use a flex filter. When more options are set (ethertype, vlan tci, - * ...) construct a flex filter matching all of that. - */ - if (rule->filter.match_flags & IGC_FILTER_FLAG_USER_DATA) { - err = igc_add_flex_filter(adapter, rule); - if (err) - return err; + if (rule->flex) { + return igc_add_flex_filter(adapter, rule); } if (rule->filter.match_flags & IGC_FILTER_FLAG_ETHER_TYPE) { @@ -3431,8 +3425,10 @@ static int igc_enable_nfc_rule(struct igc_adapter *adapter, static void igc_disable_nfc_rule(struct igc_adapter *adapter, const struct igc_nfc_rule *rule) { - if (rule->filter.match_flags & IGC_FILTER_FLAG_USER_DATA) + if (rule->flex) { igc_del_flex_filter(adapter, rule->filter.flex_index); + return; + } if (rule->filter.match_flags & IGC_FILTER_FLAG_ETHER_TYPE) igc_del_etype_filter(adapter, rule->filter.etype); |