Message ID | 1594085898-138749-1-git-send-email-simei.su@intel.com (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Qi Zhang |
Headers | show |
Series | net/ice: fix GTPU/PPPoE packets with no hash value | expand |
Context | Check | Description |
---|---|---|
ci/Intel-compilation | fail | Compilation issues |
ci/travis-robot | warning | Travis build: failed |
ci/Performance-Testing | fail | build patch failure |
ci/checkpatch | success | coding style OK |
> -----Original Message----- > From: Su, Simei <simei.su@intel.com> > Sent: Tuesday, July 7, 2020 9:38 AM > To: Zhang, Qi Z <qi.z.zhang@intel.com> > Cc: dev@dpdk.org; Zhao1, Wei <wei.zhao1@intel.com>; Jiang, JunyuX > <junyux.jiang@intel.com>; Lu, Nannan <nannan.lu@intel.com>; Su, Simei > <simei.su@intel.com> > Subject: [PATCH] net/ice: fix GTPU/PPPoE packets with no hash value > > When RSS init, because of profile overlap, the GTPU_IPV4 packets don't hit > GTPU_INNER_IPV4 profile which causes no hash value. Because of no PPPoE > profile, the PPPoE packets also has no hash value. This patch solves this issue > by pulling GTPU_IPV4 profile into inner ipv4 group and creating related > PPPoE profile at the same time. > > Fixes: 8cadc41294c6 ("net/ice: initialize and update RSS based on user > config") > > Signed-off-by: Simei Su <simei.su@intel.com> Acked-by: Qi Zhang <qi.z.zhang@intel.com> Applied to dpdk-next-net-intel. Thanks Qi
> -----Original Message----- > From: Zhang, Qi Z > Sent: Tuesday, July 7, 2020 10:30 AM > To: Su, Simei <simei.su@intel.com> > Cc: dev@dpdk.org; Zhao1, Wei <wei.zhao1@intel.com>; Jiang, JunyuX > <junyux.jiang@intel.com>; Lu, Nannan <nannan.lu@intel.com> > Subject: RE: [PATCH] net/ice: fix GTPU/PPPoE packets with no hash value > > > > > -----Original Message----- > > From: Su, Simei <simei.su@intel.com> > > Sent: Tuesday, July 7, 2020 9:38 AM > > To: Zhang, Qi Z <qi.z.zhang@intel.com> > > Cc: dev@dpdk.org; Zhao1, Wei <wei.zhao1@intel.com>; Jiang, JunyuX > > <junyux.jiang@intel.com>; Lu, Nannan <nannan.lu@intel.com>; Su, Simei > > <simei.su@intel.com> > > Subject: [PATCH] net/ice: fix GTPU/PPPoE packets with no hash value > > > > When RSS init, because of profile overlap, the GTPU_IPV4 packets don't > > hit > > GTPU_INNER_IPV4 profile which causes no hash value. Because of no > > PPPoE profile, the PPPoE packets also has no hash value. This patch > > solves this issue by pulling GTPU_IPV4 profile into inner ipv4 group > > and creating related PPPoE profile at the same time. > > > > Fixes: 8cadc41294c6 ("net/ice: initialize and update RSS based on user > > config") > > > > Signed-off-by: Simei Su <simei.su@intel.com> > > Acked-by: Qi Zhang <qi.z.zhang@intel.com> > > Applied to dpdk-next-net-intel. There is a compile issue be fixed before be applied. > > Thanks > Qi
diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index 0af9405..85b9eb4 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -2533,6 +2533,86 @@ static int ice_parse_devargs(struct rte_eth_dev *dev) PMD_DRV_LOG(ERR, "%s SCTP_IPV6 rss flow fail %d", __func__, ret); } + + if (rss_hf & ETH_RSS_IPV4) { + ret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV4, + ICE_FLOW_SEG_HDR_GTPU_IP, 0); + if (ret) + PMD_DRV_LOG(ERR, "%s GTPU_IPV4 rss flow fail %d", + __func__, ret); + + ret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV4, + ICE_FLOW_SEG_HDR_PPPOE, 0); + if (ret) + PMD_DRV_LOG(ERR, "%s PPPoE_IPV4 rss flow fail %d", + __func__, ret); + } + + if (rss_hf & ETH_RSS_IPV6) { + ret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV6, + ICE_FLOW_SEG_HDR_GTPU_IP, 0); + if (ret) + PMD_DRV_LOG(ERR, "%s GTPU_IPV6 rss flow fail %d", + __func__, ret); + + ret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV6, + ICE_FLOW_SEG_HDR_PPPOE, 0); + if (ret) + PMD_DRV_LOG(ERR, "%s PPPoE_IPV6 rss flow fail %d", + __func__, ret); + } + + if (rss_hf & ETH_RSS_NONFRAG_IPV4_UDP) { + ret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_UDP_IPV4, + ICE_FLOW_SEG_HDR_PPPOE, 0); + if (ret) + PMD_DRV_LOG(ERR, "%s PPPoE_IPV4_UDP rss flow fail %d", + __func__, ret); + } + + if (rss_hf & ETH_RSS_NONFRAG_IPV6_UDP) { + ret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_UDP_IPV6, + ICE_FLOW_SEG_HDR_PPPOE, 0); + if (ret) + PMD_DRV_LOG(ERR, "%s PPPoE_IPV6_UDP rss flow fail %d", + __func__, ret); + } + + if (rss_hf & ETH_RSS_NONFRAG_IPV4_TCP) { + ret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_TCP_IPV4, + ICE_FLOW_SEG_HDR_PPPOE, 0); + if (ret) + PMD_DRV_LOG(ERR, "%s PPPoE_IPV4_TCP rss flow fail %d", + __func__, ret); + } + + if (rss_hf & ETH_RSS_NONFRAG_IPV6_TCP) { + ret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_TCP_IPV6, + ICE_FLOW_SEG_HDR_PPPOE, 0); + if (ret) + PMD_DRV_LOG(ERR, "%s PPPoE_IPV6_TCP rss flow fail %d", + __func__, ret); + } + + if (rss_hf & ETH_RSS_NONFRAG_IPV4_SCTP) { + ret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_SCTP_IPV4, + ICE_FLOW_SEG_HDR_PPPOE, 0); + if (ret) + PMD_DRV_LOG(ERR, "%s PPPoE_IPV4_SCTP rss flow fail %d", + __func__, ret); + } + + if (rss_hf & ETH_RSS_NONFRAG_IPV6_SCTP) { + if (ret) + PMD_DRV_LOG(ERR, "%s GTPU_IPV6_SCTP rss flow fail %d", + __func__, ret); + + ret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_SCTP_IPV6, + ICE_FLOW_SEG_HDR_PPPOE, 0); + if (ret) + PMD_DRV_LOG(ERR, "%s PPPoE_IPV6_SCTP rss flow fail %d", + __func__, ret); + } } static int ice_init_rss(struct ice_pf *pf)
When RSS init, because of profile overlap, the GTPU_IPV4 packets don't hit GTPU_INNER_IPV4 profile which causes no hash value. Because of no PPPoE profile, the PPPoE packets also has no hash value. This patch solves this issue by pulling GTPU_IPV4 profile into inner ipv4 group and creating related PPPoE profile at the same time. Fixes: 8cadc41294c6 ("net/ice: initialize and update RSS based on user config") Signed-off-by: Simei Su <simei.su@intel.com> --- drivers/net/ice/ice_ethdev.c | 80 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+)