if (spec == NULL)
return 0;
- if (is_same_ether_addr(&mask->dst, &supp_mask.dst)) {
+ if (rte_is_same_ether_addr(&mask->dst, &supp_mask.dst)) {
efx_spec->efs_match_flags |= is_ifrm ?
EFX_FILTER_MATCH_IFRM_LOC_MAC :
EFX_FILTER_MATCH_LOC_MAC;
EFX_MAC_ADDR_LEN);
} else if (memcmp(mask->dst.addr_bytes, ig_mask,
EFX_MAC_ADDR_LEN) == 0) {
- if (is_unicast_ether_addr(&spec->dst))
+ if (rte_is_unicast_ether_addr(&spec->dst))
efx_spec->efs_match_flags |= is_ifrm ?
EFX_FILTER_MATCH_IFRM_UNKNOWN_UCAST_DST :
EFX_FILTER_MATCH_UNKNOWN_UCAST_DST;
efx_spec->efs_match_flags |= is_ifrm ?
EFX_FILTER_MATCH_IFRM_UNKNOWN_MCAST_DST :
EFX_FILTER_MATCH_UNKNOWN_MCAST_DST;
- } else if (!is_zero_ether_addr(&mask->dst)) {
+ } else if (!rte_is_zero_ether_addr(&mask->dst)) {
goto fail_bad_mask;
}
* ethertype masks are equal to zero in inner frame,
* so these fields are filled in only for the outer frame
*/
- if (is_same_ether_addr(&mask->src, &supp_mask.src)) {
+ if (rte_is_same_ether_addr(&mask->src, &supp_mask.src)) {
efx_spec->efs_match_flags |= EFX_FILTER_MATCH_REM_MAC;
rte_memcpy(efx_spec->efs_rem_mac, spec->src.addr_bytes,
EFX_MAC_ADDR_LEN);
- } else if (!is_zero_ether_addr(&mask->src)) {
+ } else if (!rte_is_zero_ether_addr(&mask->src)) {
goto fail_bad_mask;
}
return 0;
if (mask->protocol == supp_mask.protocol) {
- if (spec->protocol != rte_cpu_to_be_16(ETHER_TYPE_TEB)) {
+ if (spec->protocol != rte_cpu_to_be_16(RTE_ETHER_TYPE_TEB)) {
rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ITEM, item,
"GENEVE encap. protocol must be Ethernet "
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)
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;
{
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);
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
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
if (rc != 0)
goto fail_bad_value;
- TAILQ_INSERT_TAIL(&sa->filter.flow_list, flow, entries);
-
sfc_adapter_lock(sa);
+ TAILQ_INSERT_TAIL(&sa->flow_list, flow, entries);
+
if (sa->state == SFC_ADAPTER_STARTED) {
rc = sfc_flow_filter_insert(sa, flow);
if (rc != 0) {
return flow;
fail_filter_insert:
- TAILQ_REMOVE(&sa->filter.flow_list, flow, entries);
+ TAILQ_REMOVE(&sa->flow_list, flow, entries);
fail_bad_value:
rte_free(flow);
"Failed to destroy flow rule");
}
- TAILQ_REMOVE(&sa->filter.flow_list, flow, entries);
+ TAILQ_REMOVE(&sa->flow_list, flow, entries);
rte_free(flow);
return rc;
sfc_adapter_lock(sa);
- TAILQ_FOREACH(flow_ptr, &sa->filter.flow_list, entries) {
+ TAILQ_FOREACH(flow_ptr, &sa->flow_list, entries) {
if (flow_ptr == flow)
rc = 0;
}
sfc_adapter_lock(sa);
- while ((flow = TAILQ_FIRST(&sa->filter.flow_list)) != NULL) {
+ while ((flow = TAILQ_FIRST(&sa->flow_list)) != NULL) {
rc = sfc_flow_remove(sa, flow, error);
if (rc != 0)
ret = rc;
{
SFC_ASSERT(sfc_adapter_is_locked(sa));
- TAILQ_INIT(&sa->filter.flow_list);
+ TAILQ_INIT(&sa->flow_list);
}
void
SFC_ASSERT(sfc_adapter_is_locked(sa));
- while ((flow = TAILQ_FIRST(&sa->filter.flow_list)) != NULL) {
- TAILQ_REMOVE(&sa->filter.flow_list, flow, entries);
+ while ((flow = TAILQ_FIRST(&sa->flow_list)) != NULL) {
+ TAILQ_REMOVE(&sa->flow_list, flow, entries);
rte_free(flow);
}
}
SFC_ASSERT(sfc_adapter_is_locked(sa));
- TAILQ_FOREACH(flow, &sa->filter.flow_list, entries)
+ TAILQ_FOREACH(flow, &sa->flow_list, entries)
sfc_flow_filter_remove(sa, flow);
}
SFC_ASSERT(sfc_adapter_is_locked(sa));
- TAILQ_FOREACH(flow, &sa->filter.flow_list, entries) {
+ TAILQ_FOREACH(flow, &sa->flow_list, entries) {
rc = sfc_flow_filter_insert(sa, flow);
if (rc != 0)
goto fail_bad_flow;