From 8d53e9f3c6001dcb2865f6e894da5b54e1418f88 Mon Sep 17 00:00:00 2001 From: Christian Ehrhardt Date: Thu, 4 Jul 2019 10:40:06 +0200 Subject: New upstream version 18.11.2 Change-Id: I23eb4f9179abf1f9c659891f8fddb27ee68ad26b Signed-off-by: Christian Ehrhardt --- drivers/net/mlx4/mlx4_flow.c | 67 +++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 32 deletions(-) (limited to 'drivers/net/mlx4/mlx4_flow.c') diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c index b40e7e5c..5136d136 100644 --- a/drivers/net/mlx4/mlx4_flow.c +++ b/drivers/net/mlx4/mlx4_flow.c @@ -71,7 +71,7 @@ struct mlx4_flow_proc_item { struct mlx4_drop { struct ibv_qp *qp; /**< QP target. */ struct ibv_cq *cq; /**< CQ associated with above QP. */ - struct priv *priv; /**< Back pointer to private data. */ + struct mlx4_priv *priv; /**< Back pointer to private data. */ uint32_t refcnt; /**< Reference count. */ }; @@ -95,7 +95,7 @@ struct mlx4_drop { * rte_errno is set. */ uint64_t -mlx4_conv_rss_types(struct priv *priv, uint64_t types, int verbs_to_dpdk) +mlx4_conv_rss_types(struct mlx4_priv *priv, uint64_t types, int verbs_to_dpdk) { enum { INNER, @@ -657,7 +657,7 @@ static const struct mlx4_flow_proc_item mlx4_flow_proc_item_list[] = { * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int -mlx4_flow_prepare(struct priv *priv, +mlx4_flow_prepare(struct mlx4_priv *priv, const struct rte_flow_attr *attr, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], @@ -767,7 +767,7 @@ fill: if (flow->rss) break; queue = action->conf; - if (queue->index >= priv->dev->data->nb_rx_queues) { + if (queue->index >= ETH_DEV(priv)->data->nb_rx_queues) { msg = "queue target index beyond number of" " configured Rx queues"; goto exit_action_not_supported; @@ -796,7 +796,7 @@ fill: /* Sanity checks. */ for (i = 0; i < rss->queue_num; ++i) if (rss->queue[i] >= - priv->dev->data->nb_rx_queues) + ETH_DEV(priv)->data->nb_rx_queues) break; if (i != rss->queue_num) { msg = "queue index target beyond number of" @@ -928,7 +928,7 @@ mlx4_flow_validate(struct rte_eth_dev *dev, const struct rte_flow_action actions[], struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; return mlx4_flow_prepare(priv, attr, pattern, actions, error, NULL); } @@ -944,7 +944,7 @@ mlx4_flow_validate(struct rte_eth_dev *dev, * is set. */ static struct mlx4_drop * -mlx4_drop_get(struct priv *priv) +mlx4_drop_get(struct mlx4_priv *priv) { struct mlx4_drop *drop = priv->drop; @@ -1020,7 +1020,7 @@ mlx4_drop_put(struct mlx4_drop *drop) * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int -mlx4_flow_toggle(struct priv *priv, +mlx4_flow_toggle(struct mlx4_priv *priv, struct rte_flow *flow, int enable, struct rte_flow_error *error) @@ -1066,8 +1066,8 @@ mlx4_flow_toggle(struct priv *priv, /* Stop at the first nonexistent target queue. */ for (i = 0; i != rss->queues; ++i) if (rss->queue_id[i] >= - priv->dev->data->nb_rx_queues || - !priv->dev->data->rx_queues[rss->queue_id[i]]) { + ETH_DEV(priv)->data->nb_rx_queues || + !ETH_DEV(priv)->data->rx_queues[rss->queue_id[i]]) { missing = 1; break; } @@ -1136,7 +1136,7 @@ mlx4_flow_create(struct rte_eth_dev *dev, const struct rte_flow_action actions[], struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct rte_flow *flow; int err; @@ -1177,7 +1177,7 @@ mlx4_flow_isolate(struct rte_eth_dev *dev, int enable, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; if (!!enable == !!priv->isolated) return 0; @@ -1200,7 +1200,7 @@ mlx4_flow_destroy(struct rte_eth_dev *dev, struct rte_flow *flow, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; int err = mlx4_flow_toggle(priv, flow, 0, error); if (err) @@ -1224,7 +1224,7 @@ static int mlx4_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct rte_flow *flow = LIST_FIRST(&priv->flows); while (flow) { @@ -1249,10 +1249,10 @@ mlx4_flow_flush(struct rte_eth_dev *dev, * Next configured VLAN ID or a high value (>= 4096) if there is none. */ static uint16_t -mlx4_flow_internal_next_vlan(struct priv *priv, uint16_t vlan) +mlx4_flow_internal_next_vlan(struct mlx4_priv *priv, uint16_t vlan) { while (vlan < 4096) { - if (priv->dev->data->vlan_filter_conf.ids[vlan / 64] & + if (ETH_DEV(priv)->data->vlan_filter_conf.ids[vlan / 64] & (UINT64_C(1) << (vlan % 64))) return vlan; ++vlan; @@ -1289,7 +1289,7 @@ mlx4_flow_internal_next_vlan(struct priv *priv, uint16_t vlan) * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int -mlx4_flow_internal(struct priv *priv, struct rte_flow_error *error) +mlx4_flow_internal(struct mlx4_priv *priv, struct rte_flow_error *error) { struct rte_flow_attr attr = { .priority = MLX4_FLOW_PRIORITY_LAST, @@ -1329,7 +1329,7 @@ mlx4_flow_internal(struct priv *priv, struct rte_flow_error *error) * get RSS by default. */ uint32_t queues = - rte_align32pow2(priv->dev->data->nb_rx_queues + 1) >> 1; + rte_align32pow2(ETH_DEV(priv)->data->nb_rx_queues + 1) >> 1; uint16_t queue[queues]; struct rte_flow_action_rss action_rss = { .func = RTE_ETH_HASH_FUNCTION_DEFAULT, @@ -1351,9 +1351,9 @@ mlx4_flow_internal(struct priv *priv, struct rte_flow_error *error) }; struct ether_addr *rule_mac = ð_spec.dst; rte_be16_t *rule_vlan = - (priv->dev->data->dev_conf.rxmode.offloads & + (ETH_DEV(priv)->data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_VLAN_FILTER) && - !priv->dev->data->promiscuous ? + !ETH_DEV(priv)->data->promiscuous ? &vlan_spec.tci : NULL; uint16_t vlan = 0; @@ -1433,7 +1433,7 @@ next_vlan: 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, actions, error); if (!flow) { err = -rte_errno; @@ -1449,15 +1449,16 @@ next_vlan: goto next_vlan; } /* Take care of promiscuous and all multicast flow rules. */ - if (priv->dev->data->promiscuous || priv->dev->data->all_multicast) { + if (ETH_DEV(priv)->data->promiscuous || + ETH_DEV(priv)->data->all_multicast) { for (flow = LIST_FIRST(&priv->flows); flow && flow->internal; flow = LIST_NEXT(flow, next)) { - if (priv->dev->data->promiscuous) { + if (ETH_DEV(priv)->data->promiscuous) { if (flow->promisc) break; } else { - assert(priv->dev->data->all_multicast); + assert(ETH_DEV(priv)->data->all_multicast); if (flow->allmulti) break; } @@ -1471,16 +1472,16 @@ next_vlan: } if (!flow || !flow->internal) { /* Not found, create a new flow rule. */ - if (priv->dev->data->promiscuous) { + if (ETH_DEV(priv)->data->promiscuous) { pattern[1].spec = NULL; pattern[1].mask = NULL; } else { - assert(priv->dev->data->all_multicast); + assert(ETH_DEV(priv)->data->all_multicast); pattern[1].spec = ð_allmulti; pattern[1].mask = ð_allmulti; } pattern[2] = pattern[3]; - flow = mlx4_flow_create(priv->dev, &attr, pattern, + flow = mlx4_flow_create(ETH_DEV(priv), &attr, pattern, actions, error); if (!flow) { err = -rte_errno; @@ -1497,7 +1498,8 @@ error: struct rte_flow *next = LIST_NEXT(flow, next); if (!flow->select) - claim_zero(mlx4_flow_destroy(priv->dev, flow, error)); + claim_zero(mlx4_flow_destroy(ETH_DEV(priv), flow, + error)); else flow->select = 0; flow = next; @@ -1521,7 +1523,7 @@ error: * 0 on success, a negative errno value otherwise and rte_errno is set. */ int -mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error) +mlx4_flow_sync(struct mlx4_priv *priv, struct rte_flow_error *error) { struct rte_flow *flow; int ret; @@ -1535,7 +1537,8 @@ mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error) for (flow = LIST_FIRST(&priv->flows); flow && flow->internal; flow = LIST_FIRST(&priv->flows)) - claim_zero(mlx4_flow_destroy(priv->dev, flow, error)); + claim_zero(mlx4_flow_destroy(ETH_DEV(priv), flow, + error)); } else { /* Refresh internal rules. */ ret = mlx4_flow_internal(priv, error); @@ -1563,12 +1566,12 @@ mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error) * Pointer to private structure. */ void -mlx4_flow_clean(struct priv *priv) +mlx4_flow_clean(struct mlx4_priv *priv) { struct rte_flow *flow; while ((flow = LIST_FIRST(&priv->flows))) - mlx4_flow_destroy(priv->dev, flow, NULL); + mlx4_flow_destroy(ETH_DEV(priv), flow, NULL); assert(LIST_EMPTY(&priv->rss)); } -- cgit 1.2.3-korg