X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fmlx4%2Fmlx4_txq.c;h=0db2e55befd348ff66713a463577bffcd592b93e;hb=46c6714ffd4326cd9ea884a9812a459a444f464a;hp=2df26842fbe4b9876ff205112a408e64b7abff4b;hpb=b014c6b7b595277860308468c4c12a9337bf132e;p=dpdk.git diff --git a/drivers/net/mlx4/mlx4_txq.c b/drivers/net/mlx4/mlx4_txq.c index 2df26842fb..0db2e55bef 100644 --- a/drivers/net/mlx4/mlx4_txq.c +++ b/drivers/net/mlx4/mlx4_txq.c @@ -273,20 +273,20 @@ mlx4_txq_fill_dv_obj_info(struct txq *txq, struct mlx4dv_obj *mlxdv) uint64_t mlx4_get_tx_port_offloads(struct mlx4_priv *priv) { - uint64_t offloads = DEV_TX_OFFLOAD_MULTI_SEGS; + uint64_t offloads = RTE_ETH_TX_OFFLOAD_MULTI_SEGS; if (priv->hw_csum) { - offloads |= (DEV_TX_OFFLOAD_IPV4_CKSUM | - DEV_TX_OFFLOAD_UDP_CKSUM | - DEV_TX_OFFLOAD_TCP_CKSUM); + offloads |= (RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | + RTE_ETH_TX_OFFLOAD_UDP_CKSUM | + RTE_ETH_TX_OFFLOAD_TCP_CKSUM); } if (priv->tso) - offloads |= DEV_TX_OFFLOAD_TCP_TSO; + offloads |= RTE_ETH_TX_OFFLOAD_TCP_TSO; if (priv->hw_csum_l2tun) { - offloads |= DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM; + offloads |= RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM; if (priv->tso) - offloads |= (DEV_TX_OFFLOAD_VXLAN_TNL_TSO | - DEV_TX_OFFLOAD_GRE_TNL_TSO); + offloads |= (RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO | + RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO); } return offloads; } @@ -394,16 +394,17 @@ mlx4_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, .elts_comp_cd_init = RTE_MIN(MLX4_PMD_TX_PER_COMP_REQ, desc / 4), .csum = priv->hw_csum && - (offloads & (DEV_TX_OFFLOAD_IPV4_CKSUM | - DEV_TX_OFFLOAD_UDP_CKSUM | - DEV_TX_OFFLOAD_TCP_CKSUM)), + (offloads & (RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | + RTE_ETH_TX_OFFLOAD_UDP_CKSUM | + RTE_ETH_TX_OFFLOAD_TCP_CKSUM)), .csum_l2tun = priv->hw_csum_l2tun && (offloads & - DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM), + RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM), /* Enable Tx loopback for VF devices. */ .lb = !!priv->vf, .bounce_buf = bounce_buf, }; + dev->data->tx_queues[idx] = txq; priv->verbs_alloc_ctx.type = MLX4_VERBS_ALLOC_TYPE_TX_QUEUE; priv->verbs_alloc_ctx.obj = txq; txq->cq = mlx4_glue->create_cq(priv->ctx, desc, NULL, NULL, 0); @@ -507,13 +508,11 @@ mlx4_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, /* Save pointer of global generation number to check memory event. */ txq->mr_ctrl.dev_gen_ptr = &priv->mr.dev_gen; DEBUG("%p: adding Tx queue %p to list", (void *)dev, (void *)txq); - dev->data->tx_queues[idx] = txq; priv->verbs_alloc_ctx.type = MLX4_VERBS_ALLOC_TYPE_NONE; return 0; error: - dev->data->tx_queues[idx] = NULL; ret = rte_errno; - mlx4_tx_queue_release(txq); + mlx4_tx_queue_release(dev, idx); rte_errno = ret; MLX4_ASSERT(rte_errno > 0); priv->verbs_alloc_ctx.type = MLX4_VERBS_ALLOC_TYPE_NONE; @@ -523,26 +522,20 @@ error: /** * DPDK callback to release a Tx queue. * - * @param dpdk_txq - * Generic Tx queue pointer. + * @param dev + * Pointer to Ethernet device structure. + * @param idx + * Transmit queue index. */ void -mlx4_tx_queue_release(void *dpdk_txq) +mlx4_tx_queue_release(struct rte_eth_dev *dev, uint16_t idx) { - struct txq *txq = (struct txq *)dpdk_txq; - struct mlx4_priv *priv; - unsigned int i; + struct txq *txq = dev->data->tx_queues[idx]; if (txq == NULL) return; - priv = txq->priv; - for (i = 0; i != ETH_DEV(priv)->data->nb_tx_queues; ++i) - if (ETH_DEV(priv)->data->tx_queues[i] == txq) { - DEBUG("%p: removing Tx queue %p from list", - (void *)ETH_DEV(priv), (void *)txq); - ETH_DEV(priv)->data->tx_queues[i] = NULL; - break; - } + DEBUG("%p: removing Tx queue %hu from list", (void *)dev, idx); + dev->data->tx_queues[idx] = NULL; mlx4_txq_free_elts(txq); if (txq->qp) claim_zero(mlx4_glue->destroy_qp(txq->qp));