Rather than having a two element array of context cache values inside
the Tx queue structure, convert it to a pointer to a cache at the end of
the structure. This makes future merging of the structure easier as we
don't need the "ixgbe_advctx_info" struct defined when defining a
combined queue structure.

Signed-off-by: Bruce Richardson <bruce.richard...@intel.com>
---
 drivers/net/intel/ixgbe/ixgbe_rxtx.c            | 7 ++++---
 drivers/net/intel/ixgbe/ixgbe_rxtx.h            | 4 ++--
 drivers/net/intel/ixgbe/ixgbe_rxtx_vec_common.h | 3 +--
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/net/intel/ixgbe/ixgbe_rxtx.c 
b/drivers/net/intel/ixgbe/ixgbe_rxtx.c
index f7ddbba1b6..2ca26cd132 100644
--- a/drivers/net/intel/ixgbe/ixgbe_rxtx.c
+++ b/drivers/net/intel/ixgbe/ixgbe_rxtx.c
@@ -2522,8 +2522,7 @@ ixgbe_reset_tx_queue(struct ixgbe_tx_queue *txq)
        txq->last_desc_cleaned = (uint16_t)(txq->nb_tx_desc - 1);
        txq->nb_tx_free = (uint16_t)(txq->nb_tx_desc - 1);
        txq->ctx_curr = 0;
-       memset((void *)&txq->ctx_cache, 0,
-               IXGBE_CTX_NUM * sizeof(struct ixgbe_advctx_info));
+       memset(txq->ctx_cache, 0, IXGBE_CTX_NUM * sizeof(struct 
ixgbe_advctx_info));
 }
 
 static const struct ixgbe_txq_ops def_txq_ops = {
@@ -2741,10 +2740,12 @@ ixgbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
        }
 
        /* First allocate the tx queue data structure */
-       txq = rte_zmalloc_socket("ethdev TX queue", sizeof(struct 
ixgbe_tx_queue),
+       txq = rte_zmalloc_socket("ethdev TX queue", sizeof(struct 
ixgbe_tx_queue) +
+                                       sizeof(struct ixgbe_advctx_info) * 
IXGBE_CTX_NUM,
                                 RTE_CACHE_LINE_SIZE, socket_id);
        if (txq == NULL)
                return -ENOMEM;
+       txq->ctx_cache = RTE_PTR_ADD(txq, sizeof(struct ixgbe_tx_queue));
 
        /*
         * Allocate TX ring hardware descriptors. A memzone large enough to
diff --git a/drivers/net/intel/ixgbe/ixgbe_rxtx.h 
b/drivers/net/intel/ixgbe/ixgbe_rxtx.h
index 581676d01c..b8cbbe4d24 100644
--- a/drivers/net/intel/ixgbe/ixgbe_rxtx.h
+++ b/drivers/net/intel/ixgbe/ixgbe_rxtx.h
@@ -215,8 +215,8 @@ struct ixgbe_tx_queue {
        uint8_t             wthresh;       /**< Write-back threshold reg. */
        uint64_t offloads; /**< Tx offload flags of RTE_ETH_TX_OFFLOAD_* */
        uint32_t            ctx_curr;      /**< Hardware context states. */
-       /** Hardware context0 history. */
-       struct ixgbe_advctx_info ctx_cache[IXGBE_CTX_NUM];
+       /** Hardware context history. */
+       struct ixgbe_advctx_info *ctx_cache;
        const struct ixgbe_txq_ops *ops;       /**< txq ops */
        bool            tx_deferred_start; /**< not in global dev start. */
 #ifdef RTE_LIB_SECURITY
diff --git a/drivers/net/intel/ixgbe/ixgbe_rxtx_vec_common.h 
b/drivers/net/intel/ixgbe/ixgbe_rxtx_vec_common.h
index 6e6b24e5fd..5c38ba13d0 100644
--- a/drivers/net/intel/ixgbe/ixgbe_rxtx_vec_common.h
+++ b/drivers/net/intel/ixgbe/ixgbe_rxtx_vec_common.h
@@ -176,8 +176,7 @@ _ixgbe_reset_tx_queue_vec(struct ixgbe_tx_queue *txq)
        txq->last_desc_cleaned = (uint16_t)(txq->nb_tx_desc - 1);
        txq->nb_tx_free = (uint16_t)(txq->nb_tx_desc - 1);
        txq->ctx_curr = 0;
-       memset((void *)&txq->ctx_cache, 0,
-               IXGBE_CTX_NUM * sizeof(struct ixgbe_advctx_info));
+       memset(txq->ctx_cache, 0, IXGBE_CTX_NUM * sizeof(struct 
ixgbe_advctx_info));
 }
 
 static inline int
-- 
2.43.0

Reply via email to