Hi, Qi > -----Original Message----- > From: Zhang, Qi Z <qi.z.zh...@intel.com> > Sent: Wednesday, July 15, 2020 10:13 PM > To: Su, Simei <simei...@intel.com> > Cc: dev@dpdk.org; Guo, Junfeng <junfeng....@intel.com>; Guo, Jia > <jia....@intel.com>; Xu, Ting <ting...@intel.com> > Subject: RE: [PATCH v4] net/ice: fix invalid RSS type > > > > > -----Original Message----- > > From: Su, Simei <simei...@intel.com> > > Sent: Wednesday, July 15, 2020 6:26 PM > > To: Zhang, Qi Z <qi.z.zh...@intel.com> > > Cc: dev@dpdk.org; Guo, Junfeng <junfeng....@intel.com>; Guo, Jia > > <jia....@intel.com>; Xu, Ting <ting...@intel.com>; Su, Simei > > <simei...@intel.com> > > Subject: [PATCH v4] net/ice: fix invalid RSS type > > > > When a RSS rule with only SRC/DST_ONLY or IPV6 prefix RSS type, it > > should return failure. Besides, when a RSS rule with symmetric hash > > function, the RSS type shouldn't carry with SRC/DST_ONLY. > > This patch adds invalid RSS type check for the two cases. > > > > Fixes: dfdc589f6ee0 ("net/ice: refactor PF hash flow") > > > > Signed-off-by: Simei Su <simei...@intel.com> > > > --- > > > > v4: > > * Modify check logic for symmetric case. > > > > v3: > > * Add invalid RSS type check for symmetric case. > > * Consider IPV6 prefix. > > * Refine commit log. > > > > v2: > > * Add specific macro value in check rather than hard code. > > --- > > drivers/net/ice/ice_hash.c | 28 ++++++++++++++++++++++++++++ > > 1 file changed, 28 insertions(+) > > > > diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c > > index e57feff..009ea1f 100644 > > --- a/drivers/net/ice/ice_hash.c > > +++ b/drivers/net/ice/ice_hash.c > > @@ -1049,13 +1049,41 @@ struct ice_hash_match_type > > ice_hash_type_list[] = { > > combine_type = ETH_RSS_L2_SRC_ONLY | > > ETH_RSS_L2_DST_ONLY | > > RTE_ETH_RSS_L3_PRE32 | > > + RTE_ETH_RSS_L3_PRE40 | > > RTE_ETH_RSS_L3_PRE48 | > > + RTE_ETH_RSS_L3_PRE56 | > > RTE_ETH_RSS_L3_PRE64 | > > + RTE_ETH_RSS_L3_PRE96 | > > ETH_RSS_L3_SRC_ONLY | > > ETH_RSS_L3_DST_ONLY | > > ETH_RSS_L4_SRC_ONLY | > > ETH_RSS_L4_DST_ONLY; > > Do we support 48, 56 and 96? Will they already be rejected during previous > check?
We only support 32, 48 and 64 currently. > > Better to refactor the code to avoid duplicate, for example: > > rss_attr_src_dst = ETH_RSS_L2_DST_ONLY | ETH_RSS_L2_SRC_ONLY.... > > rss_attr_l3_pre = ETH_RSS_L3_PRE32 | PRE_40 | ... > > rss_attr_all = rss_attr_v6_prefix | rss_attr_src_dst > Ok, I will refine it. Thanks. Br Simei > > > > > + /* Check if only SRC/DST_ONLY or ipv6 prefix exists. */ > > + if ((rss_type & ~combine_type) == 0) > > + return rte_flow_error_set(error, ENOTSUP, > > + RTE_FLOW_ERROR_TYPE_ACTION, action, > > + "invalid rss types"); > > + > > + /** > > + * Check if SRC/DST_ONLY is set for SYMMETRIC_TOEPLITZ > > + * hash function. > > + */ > > + if (rss->func == > > + RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ) { > > + if (rss_type & (ETH_RSS_L2_SRC_ONLY | > > + ETH_RSS_L2_DST_ONLY | > > + ETH_RSS_L3_SRC_ONLY | > > + ETH_RSS_L3_DST_ONLY | > > + ETH_RSS_L4_SRC_ONLY | > > + ETH_RSS_L4_DST_ONLY)) > > + return rte_flow_error_set(error, > > + ENOTSUP, > > + RTE_FLOW_ERROR_TYPE_ACTION, > > + action, > > + "invalid rss types"); > > + } > > + > > /* Check if rss types match pattern. */ > > if (rss_type & ~combine_type & ~m->eth_rss_hint) { > > return rte_flow_error_set(error, > > -- > > 1.8.3.1 >