summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
e01d9b2)
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 <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
unsigned int rxq_hw_index_max;
efx_rx_hash_type_t efx_hash_types;
const uint8_t *rss_key;
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)
unsigned int i;
if (action_rss->queue_num == 0)
+ 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;
sfc_rss_conf->rxq_hw_index_min = rxq_hw_index_min;
sfc_rss_conf->rxq_hw_index_max = rxq_hw_index_max;
{
struct sfc_adapter_shared * const sas = sfc_sa2shared(sa);
struct sfc_rss *rss = &sas->rss;
{
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;
uint32_t efs_rss_context = EFX_RSS_CONTEXT_DEFAULT;
unsigned int i;
int rc = 0;
unsigned int rss_spread = MIN(flow_rss->rxq_hw_index_max -
flow_rss->rxq_hw_index_min + 1,
EFX_MAXRSS);
unsigned int rss_spread = MIN(flow_rss->rxq_hw_index_max -
flow_rss->rxq_hw_index_min + 1,
EFX_MAXRSS);
if (rc != 0)
goto fail_filter_insert;
if (rc != 0)
goto fail_filter_insert;
/*
* Scale table is set after filter insertion because
* the table entries are relative to the base RxQ ID
/*
* Scale table is set after filter insertion because
* the table entries are relative to the base RxQ ID
/*
* All specifications for a given flow rule have the same RSS
* context, so that RSS context value is taken from the first
/*
* All specifications for a given flow rule have the same RSS
* context, so that RSS context value is taken from the first
efx_filter_spec_t filters[SF_FLOW_SPEC_NB_FILTERS_MAX];
/* number of complete specifications */
unsigned int count;
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) */
};
/* 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 */
};
TAILQ_ENTRY(rte_flow) entries; /* flow list entries */
};