xref: /dpdk/drivers/net/bnxt/bnxt_txr.h (revision d46406c7070724c8cfd04b805849339d1178f528)
1fd710bb1SScott Branden /* SPDX-License-Identifier: BSD-3-Clause
26d160d77SRandy Schacher  * Copyright(c) 2014-2023 Broadcom
36eb3cc22SAjit Khaparde  * All rights reserved.
46eb3cc22SAjit Khaparde  */
56eb3cc22SAjit Khaparde 
66eb3cc22SAjit Khaparde #ifndef _BNXT_TXR_H_
76eb3cc22SAjit Khaparde #define _BNXT_TXR_H_
86eb3cc22SAjit Khaparde 
9ca241d9aSSantosh Shukla #include <rte_io.h>
10ca241d9aSSantosh Shukla 
1177942f50SAjit Khaparde #define BNXT_MAX_TSO_SEGS	32
1277942f50SAjit Khaparde #define BNXT_MIN_PKT_SIZE	52
136eb3cc22SAjit Khaparde 
14c4e4c189SLance Richardson /* Number of transmit descriptors processed per inner loop in vector mode. */
15c4e4c189SLance Richardson #define BNXT_TX_DESCS_PER_LOOP	4U
16c4e4c189SLance Richardson 
176eb3cc22SAjit Khaparde struct bnxt_tx_ring_info {
18c7de4195SAjit Khaparde 	uint16_t		tx_raw_prod;
19c7de4195SAjit Khaparde 	uint16_t		tx_raw_cons;
20bb0546edSLance Richardson 	struct bnxt_db_info     tx_db;
216eb3cc22SAjit Khaparde 
226eb3cc22SAjit Khaparde 	struct tx_bd_long	*tx_desc_ring;
23527b1008SLance Richardson 	struct rte_mbuf		**tx_buf_ring;
246eb3cc22SAjit Khaparde 
25df6e0a06SSantosh Shukla 	rte_iova_t		tx_desc_mapping;
266eb3cc22SAjit Khaparde 
27925cd070SSomnath Kotur 	unsigned short          *nr_bds;
286eb3cc22SAjit Khaparde 	struct bnxt_ring	*tx_ring_struct;
296eb3cc22SAjit Khaparde };
306eb3cc22SAjit Khaparde 
bnxt_tx_bds_in_hw(struct bnxt_tx_queue * txq)31355b482eSLance Richardson static inline uint32_t bnxt_tx_bds_in_hw(struct bnxt_tx_queue *txq)
32355b482eSLance Richardson {
33c7de4195SAjit Khaparde 	return ((txq->tx_ring->tx_raw_prod - txq->tx_ring->tx_raw_cons) &
34355b482eSLance Richardson 		txq->tx_ring->tx_ring_struct->ring_mask);
35355b482eSLance Richardson }
36355b482eSLance Richardson 
bnxt_tx_avail(struct bnxt_tx_queue * txq)37355b482eSLance Richardson static inline uint32_t bnxt_tx_avail(struct bnxt_tx_queue *txq)
38355b482eSLance Richardson {
39355b482eSLance Richardson 	/* Tell compiler to fetch tx indices from memory. */
40355b482eSLance Richardson 	rte_compiler_barrier();
41355b482eSLance Richardson 
42355b482eSLance Richardson 	return ((txq->tx_ring->tx_ring_struct->ring_size -
43355b482eSLance Richardson 		 bnxt_tx_bds_in_hw(txq)) - 1);
44355b482eSLance Richardson }
45355b482eSLance Richardson 
466eb3cc22SAjit Khaparde void bnxt_free_tx_rings(struct bnxt *bp);
476eb3cc22SAjit Khaparde int bnxt_init_one_tx_ring(struct bnxt_tx_queue *txq);
482bb1d5dbSAjit Khaparde int bnxt_init_tx_ring_struct(struct bnxt_tx_queue *txq, unsigned int socket_id);
496eb3cc22SAjit Khaparde uint16_t bnxt_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
506eb3cc22SAjit Khaparde 			uint16_t nb_pkts);
51*d46406c7SAjit Khaparde uint16_t _bnxt_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
52*d46406c7SAjit Khaparde 			 uint16_t nb_pkts);
5339835834SLance Richardson #if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64)
54bc4a000fSLance Richardson uint16_t bnxt_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
55bc4a000fSLance Richardson 			    uint16_t nb_pkts);
56bc4a000fSLance Richardson #endif
57b0986c39SBruce Richardson #if defined(RTE_ARCH_X86)
58c4e4c189SLance Richardson uint16_t bnxt_xmit_pkts_vec_avx2(void *tx_queue, struct rte_mbuf **tx_pkts,
59c4e4c189SLance Richardson 				 uint16_t nb_pkts);
60c4e4c189SLance Richardson #endif
61bc4a000fSLance Richardson 
629b63c6fdSAjit Khaparde int bnxt_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id);
639b63c6fdSAjit Khaparde int bnxt_tx_queue_stop(struct rte_eth_dev *dev, uint16_t tx_queue_id);
644fb6ab3fSAjit Khaparde int bnxt_flush_tx_cmp(struct bnxt_cp_ring_info *cpr);
656eb3cc22SAjit Khaparde 
66daa02b5cSOlivier Matz #define PKT_TX_OIP_IIP_TCP_UDP_CKSUM	(RTE_MBUF_F_TX_TCP_CKSUM | RTE_MBUF_F_TX_UDP_CKSUM | \
67daa02b5cSOlivier Matz 					RTE_MBUF_F_TX_IP_CKSUM | RTE_MBUF_F_TX_OUTER_IP_CKSUM)
68daa02b5cSOlivier Matz #define PKT_TX_OIP_IIP_UDP_CKSUM	(RTE_MBUF_F_TX_UDP_CKSUM | \
69daa02b5cSOlivier Matz 					RTE_MBUF_F_TX_IP_CKSUM | RTE_MBUF_F_TX_OUTER_IP_CKSUM)
70daa02b5cSOlivier Matz #define PKT_TX_OIP_IIP_TCP_CKSUM	(RTE_MBUF_F_TX_TCP_CKSUM | \
71daa02b5cSOlivier Matz 					RTE_MBUF_F_TX_IP_CKSUM | RTE_MBUF_F_TX_OUTER_IP_CKSUM)
72daa02b5cSOlivier Matz #define PKT_TX_IIP_TCP_UDP_CKSUM	(RTE_MBUF_F_TX_TCP_CKSUM | RTE_MBUF_F_TX_UDP_CKSUM | \
73daa02b5cSOlivier Matz 					RTE_MBUF_F_TX_IP_CKSUM)
74daa02b5cSOlivier Matz #define PKT_TX_IIP_TCP_CKSUM		(RTE_MBUF_F_TX_TCP_CKSUM | RTE_MBUF_F_TX_IP_CKSUM)
75daa02b5cSOlivier Matz #define PKT_TX_IIP_UDP_CKSUM		(RTE_MBUF_F_TX_UDP_CKSUM | RTE_MBUF_F_TX_IP_CKSUM)
76daa02b5cSOlivier Matz #define PKT_TX_OIP_TCP_UDP_CKSUM	(RTE_MBUF_F_TX_TCP_CKSUM | RTE_MBUF_F_TX_UDP_CKSUM | \
77daa02b5cSOlivier Matz 					RTE_MBUF_F_TX_OUTER_IP_CKSUM)
78daa02b5cSOlivier Matz #define PKT_TX_OIP_UDP_CKSUM		(RTE_MBUF_F_TX_UDP_CKSUM | \
79daa02b5cSOlivier Matz 					RTE_MBUF_F_TX_OUTER_IP_CKSUM)
80daa02b5cSOlivier Matz #define PKT_TX_OIP_TCP_CKSUM		(RTE_MBUF_F_TX_TCP_CKSUM | \
81daa02b5cSOlivier Matz 					RTE_MBUF_F_TX_OUTER_IP_CKSUM)
82daa02b5cSOlivier Matz #define PKT_TX_OIP_IIP_CKSUM		(RTE_MBUF_F_TX_IP_CKSUM |	\
83daa02b5cSOlivier Matz 					 RTE_MBUF_F_TX_OUTER_IP_CKSUM)
84daa02b5cSOlivier Matz #define PKT_TX_TCP_UDP_CKSUM		(RTE_MBUF_F_TX_TCP_CKSUM | RTE_MBUF_F_TX_UDP_CKSUM)
85d644aa04SAjit Khaparde 
86d644aa04SAjit Khaparde 
87d644aa04SAjit Khaparde #define TX_BD_FLG_TIP_IP_TCP_UDP_CHKSUM	(TX_BD_LONG_LFLAGS_TCP_UDP_CHKSUM | \
88d644aa04SAjit Khaparde 					TX_BD_LONG_LFLAGS_T_IP_CHKSUM | \
89d644aa04SAjit Khaparde 					TX_BD_LONG_LFLAGS_IP_CHKSUM)
90d644aa04SAjit Khaparde #define TX_BD_FLG_IP_TCP_UDP_CHKSUM	(TX_BD_LONG_LFLAGS_TCP_UDP_CHKSUM | \
91d644aa04SAjit Khaparde 					TX_BD_LONG_LFLAGS_IP_CHKSUM)
92d644aa04SAjit Khaparde #define TX_BD_FLG_TIP_IP_CHKSUM		(TX_BD_LONG_LFLAGS_T_IP_CHKSUM | \
93d644aa04SAjit Khaparde 					TX_BD_LONG_LFLAGS_IP_CHKSUM)
94d644aa04SAjit Khaparde #define TX_BD_FLG_TIP_TCP_UDP_CHKSUM	(TX_BD_LONG_LFLAGS_TCP_UDP_CHKSUM | \
95d644aa04SAjit Khaparde 					TX_BD_LONG_LFLAGS_T_IP_CHKSUM)
966eb3cc22SAjit Khaparde #endif
97