git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
app/eventdev: add ethernet device setup helpers
[dpdk.git]
/
drivers
/
net
/
mlx5
/
mlx5_rxtx_vec.c
diff --git
a/drivers/net/mlx5/mlx5_rxtx_vec.c
b/drivers/net/mlx5/mlx5_rxtx_vec.c
index
01edcaf
..
142c786
100644
(file)
--- a/
drivers/net/mlx5/mlx5_rxtx_vec.c
+++ b/
drivers/net/mlx5/mlx5_rxtx_vec.c
@@
-160,15
+160,15
@@
mlx5_tx_burst_vec(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n)
uint16_t ret;
/* Transmit multi-seg packets in the head of pkts list. */
uint16_t ret;
/* Transmit multi-seg packets in the head of pkts list. */
- if (
!(txq->flags & ETH_TXQ_FLAGS_NOMULT
SEGS) &&
+ if (
(txq->offloads & DEV_TX_OFFLOAD_MULTI_
SEGS) &&
NB_SEGS(pkts[nb_tx]) > 1)
nb_tx += txq_scatter_v(txq,
&pkts[nb_tx],
pkts_n - nb_tx);
n = RTE_MIN((uint16_t)(pkts_n - nb_tx), MLX5_VPMD_TX_MAX_BURST);
NB_SEGS(pkts[nb_tx]) > 1)
nb_tx += txq_scatter_v(txq,
&pkts[nb_tx],
pkts_n - nb_tx);
n = RTE_MIN((uint16_t)(pkts_n - nb_tx), MLX5_VPMD_TX_MAX_BURST);
- if (
!(txq->flags & ETH_TXQ_FLAGS_NOMULTSEGS)
)
+ if (
txq->offloads & DEV_TX_OFFLOAD_MULTI_SEGS
)
n = txq_count_contig_single_seg(&pkts[nb_tx], n);
n = txq_count_contig_single_seg(&pkts[nb_tx], n);
- if (
!(txq->flags & ETH_TXQ_FLAGS_NOOFFLOADS)
)
+ if (
txq->offloads & MLX5_VEC_TX_CKSUM_OFFLOAD_CAP
)
n = txq_calc_offload(txq, &pkts[nb_tx], n, &cs_flags);
ret = txq_burst_v(txq, &pkts[nb_tx], n, cs_flags);
nb_tx += ret;
n = txq_calc_offload(txq, &pkts[nb_tx], n, &cs_flags);
ret = txq_burst_v(txq, &pkts[nb_tx], n, cs_flags);
nb_tx += ret;
@@
-253,24
+253,20
@@
mlx5_rx_burst_vec(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
*
* @param priv
* Pointer to private structure.
*
* @param priv
* Pointer to private structure.
+ * @param dev
+ * Pointer to rte_eth_dev structure.
*
* @return
* 1 if supported, negative errno value if not.
*/
int __attribute__((cold))
*
* @return
* 1 if supported, negative errno value if not.
*/
int __attribute__((cold))
-priv_check_raw_vec_tx_support(struct priv *priv)
+priv_check_raw_vec_tx_support(__rte_unused struct priv *priv,
+ struct rte_eth_dev *dev)
{
{
- uint16_t i;
-
- /* All the configured queues should support. */
- for (i = 0; i < priv->txqs_n; ++i) {
- struct mlx5_txq_data *txq = (*priv->txqs)[i];
+ uint64_t offloads = dev->data->dev_conf.txmode.offloads;
- if (!(txq->flags & ETH_TXQ_FLAGS_NOMULTSEGS) ||
- !(txq->flags & ETH_TXQ_FLAGS_NOOFFLOADS))
- break;
- }
- if (i != priv->txqs_n)
+ /* Doesn't support any offload. */
+ if (offloads)
return -ENOTSUP;
return 1;
}
return -ENOTSUP;
return 1;
}
@@
-280,17
+276,21
@@
priv_check_raw_vec_tx_support(struct priv *priv)
*
* @param priv
* Pointer to private structure.
*
* @param priv
* Pointer to private structure.
+ * @param dev
+ * Pointer to rte_eth_dev structure.
*
* @return
* 1 if supported, negative errno value if not.
*/
int __attribute__((cold))
*
* @return
* 1 if supported, negative errno value if not.
*/
int __attribute__((cold))
-priv_check_vec_tx_support(struct priv *priv)
+priv_check_vec_tx_support(struct priv *priv
, struct rte_eth_dev *dev
)
{
{
- if (!priv->tx_vec_en ||
+ uint64_t offloads = dev->data->dev_conf.txmode.offloads;
+
+ if (!priv->config.tx_vec_en ||
priv->txqs_n > MLX5_VPMD_MIN_TXQS ||
priv->txqs_n > MLX5_VPMD_MIN_TXQS ||
- priv->mps != MLX5_MPW_ENHANCED ||
-
priv->tso
)
+ priv->
config.
mps != MLX5_MPW_ENHANCED ||
+
offloads & ~MLX5_VEC_TX_OFFLOAD_CAP
)
return -ENOTSUP;
return 1;
}
return -ENOTSUP;
return 1;
}
@@
-310,7
+310,7
@@
rxq_check_vec_support(struct mlx5_rxq_data *rxq)
struct mlx5_rxq_ctrl *ctrl =
container_of(rxq, struct mlx5_rxq_ctrl, rxq);
struct mlx5_rxq_ctrl *ctrl =
container_of(rxq, struct mlx5_rxq_ctrl, rxq);
- if (!ctrl->priv->rx_vec_en || rxq->sges_n != 0)
+ if (!ctrl->priv->
config.
rx_vec_en || rxq->sges_n != 0)
return -ENOTSUP;
return 1;
}
return -ENOTSUP;
return 1;
}
@@
-329,7
+329,7
@@
priv_check_vec_rx_support(struct priv *priv)
{
uint16_t i;
{
uint16_t i;
- if (!priv->rx_vec_en)
+ if (!priv->
config.
rx_vec_en)
return -ENOTSUP;
/* All the configured queues should support. */
for (i = 0; i < priv->rxqs_n; ++i) {
return -ENOTSUP;
/* All the configured queues should support. */
for (i = 0; i < priv->rxqs_n; ++i) {