#include <rte_tailq.h>
#include <rte_common.h>
#include <rte_ethdev_driver.h>
-#include <rte_eth_ctrl.h>
#include <rte_ether.h>
#include <rte_flow.h>
#include <rte_flow_driver.h>
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 "
{
struct sfc_rxq *rxq;
- if (queue->index >= sa->rxq_count)
+ if (queue->index >= sfc_sa2shared(sa)->rxq_count)
return -EINVAL;
rxq = &sa->rxq_ctrl[queue->index];
const struct rte_flow_action_rss *action_rss,
struct rte_flow *flow)
{
- struct sfc_rss *rss = &sa->rss;
+ struct sfc_adapter_shared * const sas = sfc_sa2shared(sa);
+ struct sfc_rss *rss = &sas->rss;
unsigned int rxq_sw_index;
struct sfc_rxq *rxq;
unsigned int rxq_hw_index_min;
if (action_rss->queue_num == 0)
return -EINVAL;
- rxq_sw_index = sa->rxq_count - 1;
+ rxq_sw_index = sfc_sa2shared(sa)->rxq_count - 1;
rxq = &sa->rxq_ctrl[rxq_sw_index];
rxq_hw_index_min = rxq->hw_index;
rxq_hw_index_max = 0;
for (i = 0; i < action_rss->queue_num; ++i) {
rxq_sw_index = action_rss->queue[i];
- if (rxq_sw_index >= sa->rxq_count)
+ if (rxq_sw_index >= sfc_sa2shared(sa)->rxq_count)
return -EINVAL;
rxq = &sa->rxq_ctrl[rxq_sw_index];
sfc_flow_filter_insert(struct sfc_adapter *sa,
struct rte_flow *flow)
{
- struct sfc_rss *rss = &sa->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;
uint32_t efs_rss_context = EFX_RSS_CONTEXT_DEFAULT;
unsigned int i;
struct rte_flow *flow,
struct rte_flow_error *error)
{
- struct sfc_adapter *sa = dev->data->dev_private;
+ struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev);
int rc;
rc = sfc_flow_parse_attr(attr, flow, error);
const struct rte_flow_action actions[],
struct rte_flow_error *error)
{
- struct sfc_adapter *sa = dev->data->dev_private;
+ struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev);
struct rte_flow *flow = NULL;
int rc;
if (rc != 0)
goto fail_bad_value;
- TAILQ_INSERT_TAIL(&sa->filter.flow_list, flow, entries);
-
sfc_adapter_lock(sa);
+ TAILQ_INSERT_TAIL(&sa->filter.flow_list, flow, entries);
+
if (sa->state == SFC_ADAPTER_STARTED) {
rc = sfc_flow_filter_insert(sa, flow);
if (rc != 0) {
struct rte_flow *flow,
struct rte_flow_error *error)
{
- struct sfc_adapter *sa = dev->data->dev_private;
+ struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev);
struct rte_flow *flow_ptr;
int rc = EINVAL;
sfc_flow_flush(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
- struct sfc_adapter *sa = dev->data->dev_private;
+ struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev);
struct rte_flow *flow;
int rc = 0;
int ret = 0;
sfc_flow_isolate(struct rte_eth_dev *dev, int enable,
struct rte_flow_error *error)
{
- struct sfc_adapter *sa = dev->data->dev_private;
- struct sfc_port *port = &sa->port;
+ struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev);
int ret = 0;
sfc_adapter_lock(sa);
NULL, "please close the port first");
ret = -rte_errno;
} else {
- port->isolated = (enable) ? B_TRUE : B_FALSE;
+ sfc_sa2shared(sa)->isolated = (enable) ? B_TRUE : B_FALSE;
}
sfc_adapter_unlock(sa);