From: Wenjun Wu Date: Thu, 10 Jun 2021 02:30:19 +0000 (+0800) Subject: net/ice: fix RSS for L2 packet X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=218018ebfe0e315d96031868c51834b63839d13d;p=dpdk.git net/ice: fix RSS for L2 packet L2 RSS support was deleted by mistake during code refactoring. This patch adds it again. Fixes: 38d632cbdc88 ("net/ice: refactor PF RSS") Cc: stable@dpdk.org Signed-off-by: Wenjun Wu Acked-by: Qi Zhang --- diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c index d6242744cd..1989abfa7b 100644 --- a/drivers/net/ice/base/ice_flow.c +++ b/drivers/net/ice/base/ice_flow.c @@ -3430,7 +3430,7 @@ enum ice_status ice_flow_rem_vsi_prof(struct ice_hw *hw, enum ice_block blk, u16 } #define ICE_FLOW_RSS_SEG_HDR_L2_MASKS \ -(ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_VLAN) +(ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_ETH_NON_IP | ICE_FLOW_SEG_HDR_VLAN) #define ICE_FLOW_RSS_SEG_HDR_L3_MASKS \ (ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV6) diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c index 3bc16139d1..bc809e9d23 100644 --- a/drivers/net/ice/ice_hash.c +++ b/drivers/net/ice/ice_hash.c @@ -365,6 +365,13 @@ struct ice_rss_hash_cfg empty_tmplt = { 0 }; +struct ice_rss_hash_cfg eth_tmplt = { + ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_ETH_NON_IP, + ICE_FLOW_HASH_ETH, + ICE_RSS_OUTER_HEADERS, + 0 +}; + /* IPv4 */ #define ICE_RSS_TYPE_ETH_IPV4 (ETH_RSS_ETH | ETH_RSS_IPV4 | \ ETH_RSS_FRAG_IPV4) @@ -467,6 +474,9 @@ struct ice_rss_hash_cfg empty_tmplt = { #define ICE_RSS_TYPE_IPV4_PFCP (ETH_RSS_PFCP | ETH_RSS_IPV4) #define ICE_RSS_TYPE_IPV6_PFCP (ETH_RSS_PFCP | ETH_RSS_IPV6) +/* MAC */ +#define ICE_RSS_TYPE_ETH ETH_RSS_ETH + /** * Supported pattern for hash. * The first member is pattern item type, @@ -536,6 +546,8 @@ static struct ice_pattern_match_item ice_hash_pattern_list[] = { {pattern_eth_ipv6_pfcp, ICE_RSS_TYPE_IPV6_PFCP, ICE_INSET_NONE, ð_ipv6_pfcp_tmplt}, /* PPPOE */ {pattern_eth_pppoes, ICE_RSS_TYPE_PPPOE, ICE_INSET_NONE, &pppoe_tmplt}, + /* MAC */ + {pattern_ethertype, ICE_RSS_TYPE_ETH, ICE_INSET_NONE, ð_tmplt}, /* EMPTY */ {pattern_empty, ICE_INSET_NONE, ICE_INSET_NONE, &empty_tmplt}, }; @@ -637,6 +649,11 @@ ice_refine_hash_cfg_l234(struct ice_rss_hash_cfg *hash_cfg, *addl_hdrs &= ~ICE_FLOW_SEG_HDR_ETH; } + if (*addl_hdrs & ICE_FLOW_SEG_HDR_ETH_NON_IP) { + if (rss_type & ETH_RSS_ETH) + *hash_flds |= BIT_ULL(ICE_FLOW_FIELD_IDX_ETH_TYPE); + } + if (*addl_hdrs & ICE_FLOW_SEG_HDR_VLAN) { if (rss_type & ETH_RSS_C_VLAN) *hash_flds |= BIT_ULL(ICE_FLOW_FIELD_IDX_C_VLAN);