summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/intel/ice/ice_tc_lib.c
diff options
context:
space:
mode:
authorWojciech Drewek <wojciech.drewek@intel.com>2021-09-23 14:43:48 +0200
committerTony Nguyen <anthony.l.nguyen@intel.com>2021-10-19 10:53:26 -0700
commit73b483b7902918cd7de3481313ed4943eb9c3f3b (patch)
treec556ac96e2dec58fed5c12829e599c214ddde2dd /drivers/net/ethernet/intel/ice/ice_tc_lib.c
parent1281b7459657abcd6db74fbfbf9b20717de8966c (diff)
ice: Manage act flags for switchdev offloads
Currently it is not possible to set/unset lb_en and lan_en flags for advanced rules during their creation. Both flags are enabled by default. In case of switchdev offloads for egress traffic we need lb_en to be disabled. Because of that, we work around it by updating the rule immediately after its creation. This change allows us to set/unset those flags right away and it gets rid of old workaround as well. Using ice_adv_rule_flags_info structure we can pass info about flags we want to be set for a given advanced rule. Flags are stored in flags_info.act. Values from act would be used only if act_valid was set to true, otherwise default values would be used. Signed-off-by: Wojciech Drewek <wojciech.drewek@intel.com> Acked-by: Paul Menzel <pmenzel@molgen.mpg.de> Tested-by: Sandeep Penigalapati <sandeep.penigalapati@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_tc_lib.c')
-rw-r--r--drivers/net/ethernet/intel/ice/ice_tc_lib.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.c b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
index 4c1daa1a02a1..1dccfd116bc9 100644
--- a/drivers/net/ethernet/intel/ice/ice_tc_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
@@ -274,6 +274,8 @@ ice_eswitch_add_tc_fltr(struct ice_vsi *vsi, struct ice_tc_flower_fltr *fltr)
rule_info.sw_act.flag |= ICE_FLTR_TX;
rule_info.sw_act.src = vsi->idx;
rule_info.rx = false;
+ rule_info.flags_info.act = ICE_SINGLE_ACT_LAN_ENABLE;
+ rule_info.flags_info.act_valid = true;
}
/* specify the cookie as filter_rule_id */
@@ -296,12 +298,6 @@ ice_eswitch_add_tc_fltr(struct ice_vsi *vsi, struct ice_tc_flower_fltr *fltr)
fltr->rid = rule_added.rid;
fltr->rule_id = rule_added.rule_id;
- if (fltr->direction == ICE_ESWITCH_FLTR_EGRESS) {
- if (ice_fltr_update_flags(vsi, fltr->rule_id, fltr->rid,
- ICE_SINGLE_ACT_LAN_ENABLE))
- ice_rem_adv_rule_by_id(hw, &rule_added);
- }
-
exit:
kfree(list);
return ret;