We try to refine default RSS for IP fragment packets. However,
the change will lead to more serious errors. The scenario that
there is overlap/conflict between the new characteristics and the
existing ones has not been supported, so non-fragment packets
and fragment packets cannot share the same hash fields, or
all related profiles will be removed.

Therefore, IPID field is necessary for fragment packets.

Fixes: cf37e1e5e9d2 ("net/ice: fix default RSS hash for IP fragment packets")

Signed-off-by: Wenjun Wu <wenjun1...@intel.com>
---
 drivers/net/ice/ice_ethdev.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 8d62b84805..0683296584 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -2981,7 +2981,7 @@ ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf)
 
        if (rss_hf & ETH_RSS_FRAG_IPV4) {
                cfg.addl_hdrs = ICE_FLOW_SEG_HDR_IPV4 | 
ICE_FLOW_SEG_HDR_IPV_FRAG;
-               cfg.hash_flds = ICE_FLOW_HASH_IPV4;
+               cfg.hash_flds = ICE_FLOW_HASH_IPV4 | 
BIT_ULL(ICE_FLOW_FIELD_IDX_IPV4_ID);
                ret = ice_add_rss_cfg_wrap(pf, vsi->idx, &cfg);
                if (ret)
                        PMD_DRV_LOG(ERR, "%s IPV4_FRAG rss flow fail %d",
@@ -2990,7 +2990,7 @@ ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf)
 
        if (rss_hf & ETH_RSS_FRAG_IPV6) {
                cfg.addl_hdrs = ICE_FLOW_SEG_HDR_IPV6 | 
ICE_FLOW_SEG_HDR_IPV_FRAG;
-               cfg.hash_flds = ICE_FLOW_HASH_IPV6;
+               cfg.hash_flds = ICE_FLOW_HASH_IPV6 | 
BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_ID);
                ret = ice_add_rss_cfg_wrap(pf, vsi->idx, &cfg);
                if (ret)
                        PMD_DRV_LOG(ERR, "%s IPV6_FRAG rss flow fail %d",
-- 
2.25.1

Reply via email to