net/ice/base: fix getting sched node from ID type
[dpdk.git] / drivers / net / ice / base / ice_switch.c
index 43ad018..d4cc664 100644 (file)
@@ -7779,6 +7779,7 @@ ice_get_compat_fv_bitmap(struct ice_hw *hw, struct ice_adv_rule_info *rinfo,
 bool ice_is_prof_rule(enum ice_sw_tunnel_type type)
 {
        switch (type) {
+       case ICE_SW_TUN_AND_NON_TUN:
        case ICE_SW_TUN_PROFID_IPV6_ESP:
        case ICE_SW_TUN_PROFID_IPV6_AH:
        case ICE_SW_TUN_PROFID_MAC_IPV6_L2TPV3:
@@ -8913,7 +8914,12 @@ ice_add_adv_rule(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
        s_rule = (struct ice_aqc_sw_rules_elem *)ice_malloc(hw, rule_buf_sz);
        if (!s_rule)
                return ICE_ERR_NO_MEMORY;
-       act |= ICE_SINGLE_ACT_LAN_ENABLE;
+       if (!rinfo->flags_info.act_valid)
+               act |= ICE_SINGLE_ACT_LAN_ENABLE;
+       else
+               act |= rinfo->flags_info.act & (ICE_SINGLE_ACT_LAN_ENABLE |
+                                               ICE_SINGLE_ACT_LB_ENABLE);
+
        switch (rinfo->sw_act.fltr_act) {
        case ICE_FWD_TO_VSI:
                act |= (rinfo->sw_act.fwd_id.hw_vsi_id <<