From: Simei Su Date: Thu, 9 Jul 2020 06:21:28 +0000 (+0800) Subject: net/ice: fix protocol header for PPPoE X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=8020b8123ab62622f048fbc6cd90e2311bb9a0e6;p=dpdk.git net/ice: fix protocol header for PPPoE When adding a RSS rule with pattern MAC_PPPOE_IPV4_UDP and input set SRC/DST IPV4, because of incomplete protocol header fields, the rule can't do hash with inner src/dst ipv4. PPPOE_IPV4_TCP/SCTP and PPPOE_IPV6_UDP/TCP/SCTP also have similar issues. This patch complements protocol header fields for PPPOE data packets. Fixes: 0b952714e9c1 ("net/ice: refactor PF hash flow") Signed-off-by: Simei Su Acked-by: Qi Zhang --- diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c index a10734af0b..cbd61161af 100644 --- a/drivers/net/ice/ice_hash.c +++ b/drivers/net/ice/ice_hash.c @@ -113,16 +113,20 @@ struct rss_type_match_hdr hint_eth_ipv4_gtpu_eh_ipv4_tcp = { ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP, ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV4_TCP}; struct rss_type_match_hdr hint_eth_pppoes_ipv4 = { - ICE_FLOW_SEG_HDR_PPPOE, + ICE_FLOW_SEG_HDR_PPPOE | ICE_FLOW_SEG_HDR_IPV4 | + ICE_FLOW_SEG_HDR_IPV_OTHER, ETH_RSS_ETH | ETH_RSS_PPPOE | ETH_RSS_IPV4}; struct rss_type_match_hdr hint_eth_pppoes_ipv4_udp = { - ICE_FLOW_SEG_HDR_PPPOE, + ICE_FLOW_SEG_HDR_PPPOE | ICE_FLOW_SEG_HDR_IPV4 | + ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP, ETH_RSS_ETH | ETH_RSS_PPPOE | ETH_RSS_NONFRAG_IPV4_UDP}; struct rss_type_match_hdr hint_eth_pppoes_ipv4_tcp = { - ICE_FLOW_SEG_HDR_PPPOE, + ICE_FLOW_SEG_HDR_PPPOE | ICE_FLOW_SEG_HDR_IPV4 | + ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP, ETH_RSS_ETH | ETH_RSS_PPPOE | ETH_RSS_NONFRAG_IPV4_TCP}; struct rss_type_match_hdr hint_eth_pppoes_ipv4_sctp = { - ICE_FLOW_SEG_HDR_PPPOE, + ICE_FLOW_SEG_HDR_PPPOE | ICE_FLOW_SEG_HDR_IPV4 | + ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_SCTP, ETH_RSS_ETH | ETH_RSS_PPPOE | ETH_RSS_NONFRAG_IPV4_SCTP}; struct rss_type_match_hdr hint_eth_ipv4_esp = { ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | @@ -218,16 +222,20 @@ struct rss_type_match_hdr hint_eth_vlan_ipv6_sctp = { ETH_RSS_ETH | ETH_RSS_C_VLAN | ETH_RSS_NONFRAG_IPV6_SCTP}; struct rss_type_match_hdr hint_eth_pppoes_ipv6 = { - ICE_FLOW_SEG_HDR_PPPOE, + ICE_FLOW_SEG_HDR_PPPOE | ICE_FLOW_SEG_HDR_IPV6 | + ICE_FLOW_SEG_HDR_IPV_OTHER, ETH_RSS_ETH | ETH_RSS_PPPOE | ETH_RSS_IPV6}; struct rss_type_match_hdr hint_eth_pppoes_ipv6_udp = { - ICE_FLOW_SEG_HDR_PPPOE, + ICE_FLOW_SEG_HDR_PPPOE | ICE_FLOW_SEG_HDR_IPV6 | + ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP, ETH_RSS_ETH | ETH_RSS_PPPOE | ETH_RSS_NONFRAG_IPV6_UDP}; struct rss_type_match_hdr hint_eth_pppoes_ipv6_tcp = { - ICE_FLOW_SEG_HDR_PPPOE, + ICE_FLOW_SEG_HDR_PPPOE | ICE_FLOW_SEG_HDR_IPV6 | + ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP, ETH_RSS_ETH | ETH_RSS_PPPOE | ETH_RSS_NONFRAG_IPV6_TCP}; struct rss_type_match_hdr hint_eth_pppoes_ipv6_sctp = { - ICE_FLOW_SEG_HDR_PPPOE, + ICE_FLOW_SEG_HDR_PPPOE | ICE_FLOW_SEG_HDR_IPV6 | + ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_SCTP, ETH_RSS_ETH | ETH_RSS_PPPOE | ETH_RSS_NONFRAG_IPV6_SCTP}; struct rss_type_match_hdr hint_eth_pppoes = { ICE_FLOW_SEG_HDR_PPPOE,