From: Ivan Malov Date: Thu, 5 Mar 2020 10:47:47 +0000 (+0000) Subject: net/sfc: make flow RSS details VNIC-specific X-Git-Url: http://git.droids-corp.org/?p=dpdk.git;a=commitdiff_plain;h=7571c08d9fb039e82f9bbbbe3b1cf8e4f2e72a99 net/sfc: make flow RSS details VNIC-specific The flow specification structure will be transformed to a generic one, and its current contents will be fenced off to form a VNIC-specific parameters. Flow RSS details do not belong to the said specification currently, albeit being VNIC-specific. This patch addresses this issue as a preparation step. Signed-off-by: Ivan Malov Signed-off-by: Andrew Rybchenko --- diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c index 8d636f6923..f285ba5525 100644 --- a/drivers/net/sfc/sfc_flow.c +++ b/drivers/net/sfc/sfc_flow.c @@ -1262,7 +1262,7 @@ sfc_flow_parse_rss(struct sfc_adapter *sa, unsigned int rxq_hw_index_max; efx_rx_hash_type_t efx_hash_types; const uint8_t *rss_key; - struct sfc_flow_rss *sfc_rss_conf = &flow->rss_conf; + struct sfc_flow_rss *sfc_rss_conf = &flow->spec.rss_conf; unsigned int i; if (action_rss->queue_num == 0) @@ -1334,7 +1334,7 @@ sfc_flow_parse_rss(struct sfc_adapter *sa, rss_key = rss->key; } - flow->rss = B_TRUE; + flow->spec.rss = B_TRUE; sfc_rss_conf->rxq_hw_index_min = rxq_hw_index_min; sfc_rss_conf->rxq_hw_index_max = rxq_hw_index_max; @@ -1402,12 +1402,12 @@ sfc_flow_filter_insert(struct sfc_adapter *sa, { struct sfc_adapter_shared * const sas = sfc_sa2shared(sa); struct sfc_rss *rss = &sas->rss; - struct sfc_flow_rss *flow_rss = &flow->rss_conf; + struct sfc_flow_rss *flow_rss = &flow->spec.rss_conf; uint32_t efs_rss_context = EFX_RSS_CONTEXT_DEFAULT; unsigned int i; int rc = 0; - if (flow->rss) { + if (flow->spec.rss) { unsigned int rss_spread = MIN(flow_rss->rxq_hw_index_max - flow_rss->rxq_hw_index_min + 1, EFX_MAXRSS); @@ -1450,7 +1450,7 @@ sfc_flow_filter_insert(struct sfc_adapter *sa, if (rc != 0) goto fail_filter_insert; - if (flow->rss) { + if (flow->spec.rss) { /* * Scale table is set after filter insertion because * the table entries are relative to the base RxQ ID @@ -1491,7 +1491,7 @@ sfc_flow_filter_remove(struct sfc_adapter *sa, if (rc != 0) return rc; - if (flow->rss) { + if (flow->spec.rss) { /* * All specifications for a given flow rule have the same RSS * context, so that RSS context value is taken from the first diff --git a/drivers/net/sfc/sfc_flow.h b/drivers/net/sfc/sfc_flow.h index 71ec18cb95..14a6b5d148 100644 --- a/drivers/net/sfc/sfc_flow.h +++ b/drivers/net/sfc/sfc_flow.h @@ -43,13 +43,15 @@ struct sfc_flow_spec { efx_filter_spec_t filters[SF_FLOW_SPEC_NB_FILTERS_MAX]; /* number of complete specifications */ unsigned int count; + /* RSS toggle */ + boolean_t rss; + /* RSS configuration */ + struct sfc_flow_rss rss_conf; }; /* PMD-specific definition of the opaque type from rte_flow.h */ struct rte_flow { struct sfc_flow_spec spec; /* flow spec for hardware filter(s) */ - boolean_t rss; /* RSS toggle */ - struct sfc_flow_rss rss_conf; /* RSS configuration */ TAILQ_ENTRY(rte_flow) entries; /* flow list entries */ };