From patchwork Thu Jul 9 06:21:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simei Su X-Patchwork-Id: 73578 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4F433A0526; Thu, 9 Jul 2020 08:22:57 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 23F3F1DAD8; Thu, 9 Jul 2020 08:22:56 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 337831DACA for ; Thu, 9 Jul 2020 08:22:53 +0200 (CEST) IronPort-SDR: WbTiyraM+YP6Fkq00MC1z3JyDKolxqhnT53URp2jnMBkcGPb3H/z+wBMcZ1fDNdw89aq8js+1i KFIeDc7ViBxQ== X-IronPort-AV: E=McAfee;i="6000,8403,9676"; a="232819838" X-IronPort-AV: E=Sophos;i="5.75,330,1589266800"; d="scan'208";a="232819838" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jul 2020 23:22:52 -0700 IronPort-SDR: F2smb4GuA4ELJQgYsc8SnhpJkwods0TCeqJuAes9RA1HrZa5iSJBAPimaFURqUG6gXkTsv8/Wn sRxLyzwz3w4A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,330,1589266800"; d="scan'208";a="280196290" Received: from unknown (HELO npg-dpdk-cvl-simeisu-118d193.sh.intel.com) ([10.67.110.178]) by orsmga003.jf.intel.com with ESMTP; 08 Jul 2020 23:22:47 -0700 From: Simei Su To: qi.z.zhang@intel.com Cc: dev@dpdk.org, jia.guo@intel.com, Simei Su Date: Thu, 9 Jul 2020 14:21:28 +0800 Message-Id: <1594275688-283889-1-git-send-email-simei.su@intel.com> X-Mailer: git-send-email 1.8.3.1 Subject: [dpdk-dev] [PATCH] net/ice: fix incomplete protocol header for PPPoE X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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: dfaedcf20170 ("net/ice: refactor PF hash flow") Signed-off-by: Simei Su Acked-by: Qi Zhang --- drivers/net/ice/ice_hash.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c index a10734a..cbd6116 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,