xref: /dpdk/drivers/net/mvneta/mvneta_ethdev.h (revision 089e5ed727a15da2729cfee9b63533dd120bd04c)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Marvell International Ltd.
3  * Copyright(c) 2018 Semihalf.
4  * All rights reserved.
5  */
6 
7 #ifndef _MVNETA_ETHDEV_H_
8 #define _MVNETA_ETHDEV_H_
9 
10 #include <rte_ethdev.h>
11 #include <rte_malloc.h>
12 #include <rte_log.h>
13 
14 /*
15  * container_of is defined by both DPDK and MUSDK,
16  * we'll declare only one version.
17  *
18  * Note that it is not used in this PMD anyway.
19  */
20 #ifdef container_of
21 #undef container_of
22 #endif
23 
24 #include <drivers/mv_neta.h>
25 #include <drivers/mv_neta_ppio.h>
26 
27 /** Packet offset inside RX buffer. */
28 #define MRVL_NETA_PKT_OFFS 64
29 
30 /** Maximum number of rx/tx queues per port */
31 #define MRVL_NETA_RXQ_MAX 8
32 #define MRVL_NETA_TXQ_MAX 8
33 
34 /** Minimum/maximum number of descriptors in tx queue */
35 #define MRVL_NETA_TXD_MIN 16
36 #define MRVL_NETA_TXD_MAX 2048
37 
38 /** Tx queue descriptors alignment in B */
39 #define MRVL_NETA_TXD_ALIGN 32
40 
41 /** Minimum/maximum number of descriptors in rx queue */
42 #define MRVL_NETA_RXD_MIN 16
43 #define MRVL_NETA_RXD_MAX 2048
44 
45 /** Rx queue descriptors alignment in B */
46 #define MRVL_NETA_RXD_ALIGN 32
47 
48 #define MRVL_NETA_VLAN_TAG_LEN	4
49 #define MRVL_NETA_ETH_HDRS_LEN	(RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + \
50 				MRVL_NETA_VLAN_TAG_LEN)
51 
52 #define MRVL_NETA_HDRS_LEN		(MV_MH_SIZE + MRVL_NETA_ETH_HDRS_LEN)
53 #define MRVL_NETA_MTU_TO_MRU(mtu)	((mtu) + MRVL_NETA_HDRS_LEN)
54 #define MRVL_NETA_MRU_TO_MTU(mru)	((mru) - MRVL_NETA_HDRS_LEN)
55 
56 /** Rx offloads capabilities */
57 #define MVNETA_RX_OFFLOADS (DEV_RX_OFFLOAD_JUMBO_FRAME | \
58 			    DEV_RX_OFFLOAD_CHECKSUM)
59 
60 /** Tx offloads capabilities */
61 #define MVNETA_TX_OFFLOAD_CHECKSUM (DEV_TX_OFFLOAD_IPV4_CKSUM | \
62 				    DEV_TX_OFFLOAD_UDP_CKSUM  | \
63 				    DEV_TX_OFFLOAD_TCP_CKSUM)
64 #define MVNETA_TX_OFFLOADS (MVNETA_TX_OFFLOAD_CHECKSUM | \
65 			    DEV_TX_OFFLOAD_MULTI_SEGS)
66 
67 #define MVNETA_TX_PKT_OFFLOADS (PKT_TX_IP_CKSUM | \
68 				PKT_TX_TCP_CKSUM | \
69 				PKT_TX_UDP_CKSUM)
70 
71 struct mvneta_priv {
72 	/* Hot fields, used in fast path. */
73 	struct neta_ppio	*ppio;    /**< Port handler pointer */
74 
75 	uint8_t pp_id;
76 	uint8_t ppio_id;	/* ppio port id */
77 	uint8_t uc_mc_flushed;
78 	uint8_t multiseg;
79 
80 	struct neta_ppio_params ppio_params;
81 
82 	uint64_t rate_max;
83 	struct rte_eth_stats prev_stats;
84 };
85 
86 /** Current log type. */
87 extern int mvneta_logtype;
88 
89 #define MVNETA_LOG(level, fmt, args...) \
90 	rte_log(RTE_LOG_ ## level, mvneta_logtype, "%s(): " fmt "\n", \
91 		__func__, ##args)
92 
93 #endif /* _MVNETA_ETHDEV_H_ */
94