net/mlx5: fix Tx recovery
[dpdk.git] / drivers / net / mlx5 / mlx5_tx.h
index 0adc3f4..2077691 100644 (file)
@@ -164,22 +164,18 @@ struct mlx5_txq_data {
        int32_t ts_offset; /* Timestamp field dynamic offset. */
        struct mlx5_dev_ctx_shared *sh; /* Shared context. */
        struct mlx5_txq_stats stats; /* TX queue counters. */
+       struct mlx5_txq_stats stats_reset; /* stats on last reset. */
        struct mlx5_uar_data uar_data;
        struct rte_mbuf *elts[0];
        /* Storage for queued packets, must be the last field. */
 } __rte_cache_aligned;
 
-enum mlx5_txq_type {
-       MLX5_TXQ_TYPE_STANDARD, /* Standard Tx queue. */
-       MLX5_TXQ_TYPE_HAIRPIN, /* Hairpin Tx queue. */
-};
-
 /* TX queue control descriptor. */
 struct mlx5_txq_ctrl {
        LIST_ENTRY(mlx5_txq_ctrl) next; /* Pointer to the next element. */
        uint32_t refcnt; /* Reference counter. */
        unsigned int socket; /* CPU socket ID for allocations. */
-       enum mlx5_txq_type type; /* The txq ctrl type. */
+       bool is_hairpin; /* Whether TxQ type is Hairpin. */
        unsigned int max_inline_data; /* Max inline data. */
        unsigned int max_tso_header; /* Max TSO header size. */
        struct mlx5_txq_obj *obj; /* Verbs/DevX queue object. */
@@ -2075,7 +2071,7 @@ do_build:
        if (unlikely(loc->wqe_free < ((ds + 3) / 4)))
                return MLX5_TXCMP_CODE_EXIT;
        /* Check for maximal WQE size. */
-       if (unlikely((MLX5_WQE_SIZE_MAX / MLX5_WSEG_SIZE) < ((ds + 3) / 4)))
+       if (unlikely((MLX5_WQE_SIZE_MAX / MLX5_WSEG_SIZE) < ds))
                return MLX5_TXCMP_CODE_ERROR;
 #ifdef MLX5_PMD_SOFT_COUNTERS
        /* Update sent data bytes/packets counters. */