- memcpy(eth->val.dst_mac, spec->dst.addr_bytes, ETHER_ADDR_LEN);
- memcpy(eth->mask.dst_mac, mask->dst.addr_bytes, ETHER_ADDR_LEN);
+ memcpy(eth->val.dst_mac, spec->dst.addr_bytes, RTE_ETHER_ADDR_LEN);
+ memcpy(eth->mask.dst_mac, mask->dst.addr_bytes, RTE_ETHER_ADDR_LEN);
return 0;
error:
return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ITEM,
return 0;
error:
return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ITEM,
/*
* Single-pass check to make sure that:
* - Mask is supported, no bits are set outside proc->mask_support.
/*
* Single-pass check to make sure that:
* - Mask is supported, no bits are set outside proc->mask_support.
const struct rte_flow_attr *attr,
const struct rte_flow_item pattern[],
const struct rte_flow_action actions[],
const struct rte_flow_attr *attr,
const struct rte_flow_item pattern[],
const struct rte_flow_action actions[],
const struct rte_flow_action actions[],
struct rte_flow_error *error)
{
const struct rte_flow_action actions[],
struct rte_flow_error *error)
{
return mlx4_flow_prepare(priv, attr, pattern, actions, error, NULL);
}
return mlx4_flow_prepare(priv, attr, pattern, actions, error, NULL);
}
const struct rte_flow_action actions[],
struct rte_flow_error *error)
{
const struct rte_flow_action actions[],
struct rte_flow_error *error)
{
int err = mlx4_flow_toggle(priv, flow, 0, error);
if (err)
int err = mlx4_flow_toggle(priv, flow, 0, error);
if (err)
mlx4_flow_flush(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
mlx4_flow_flush(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
{
struct rte_flow_attr attr = {
.priority = MLX4_FLOW_PRIORITY_LAST,
{
struct rte_flow_attr attr = {
.priority = MLX4_FLOW_PRIORITY_LAST,
uint16_t queue[queues];
struct rte_flow_action_rss action_rss = {
.func = RTE_ETH_HASH_FUNCTION_DEFAULT,
uint16_t queue[queues];
struct rte_flow_action_rss action_rss = {
.func = RTE_ETH_HASH_FUNCTION_DEFAULT,
- assert(flow->ibv_attr->type == IBV_FLOW_ATTR_NORMAL);
- assert(flow->ibv_attr->num_of_specs == 1);
- assert(eth->type == IBV_FLOW_SPEC_ETH);
- assert(flow->rss);
+ MLX4_ASSERT(flow->ibv_attr->type ==
+ IBV_FLOW_ATTR_NORMAL);
+ MLX4_ASSERT(flow->ibv_attr->num_of_specs == 1);
+ MLX4_ASSERT(eth->type == IBV_FLOW_SPEC_ETH);
+ MLX4_ASSERT(flow->rss);
if (!flow || !flow->internal) {
/* Not found, create a new flow rule. */
memcpy(rule_mac, mac, sizeof(*mac));
if (!flow || !flow->internal) {
/* Not found, create a new flow rule. */
memcpy(rule_mac, mac, sizeof(*mac));
- flow = mlx4_flow_create(priv->dev, &attr, pattern,
+ flow = mlx4_flow_create(ETH_DEV(priv), &attr, pattern,
for (flow = LIST_FIRST(&priv->flows);
flow && flow->internal;
flow = LIST_NEXT(flow, next)) {
for (flow = LIST_FIRST(&priv->flows);
flow && flow->internal;
flow = LIST_NEXT(flow, next)) {
if (flow->rss->queues != queues ||
memcmp(flow->rss->queue_id, action_rss.queue,
queues * sizeof(flow->rss->queue_id[0])))
if (flow->rss->queues != queues ||
memcmp(flow->rss->queue_id, action_rss.queue,
queues * sizeof(flow->rss->queue_id[0])))
}
if (!flow || !flow->internal) {
/* Not found, create a new flow rule. */
}
if (!flow || !flow->internal) {
/* Not found, create a new flow rule. */
- flow = mlx4_flow_create(priv->dev, &attr, pattern,
+ flow = mlx4_flow_create(ETH_DEV(priv), &attr, pattern,
} else {
/* Refresh internal rules. */
ret = mlx4_flow_internal(priv, error);
} else {
/* Refresh internal rules. */
ret = mlx4_flow_internal(priv, error);
- mlx4_flow_destroy(priv->dev, flow, NULL);
- assert(LIST_EMPTY(&priv->rss));
+ mlx4_flow_destroy(ETH_DEV(priv), flow, NULL);
+ MLX4_ASSERT(LIST_EMPTY(&priv->rss));