xref: /dpdk/drivers/net/cnxk/cn9k_ethdev.h (revision 50e2c7fd)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2021 Marvell.
3  */
4 #ifndef __CN9K_ETHDEV_H__
5 #define __CN9K_ETHDEV_H__
6 
7 #include <cnxk_ethdev.h>
8 #include <cnxk_security.h>
9 #include <cnxk_security_ar.h>
10 
11 struct cn9k_eth_txq {
12 	uint64_t send_hdr_w0;
13 	int64_t fc_cache_pkts;
14 	uint64_t *fc_mem;
15 	void *lmt_addr;
16 	rte_iova_t io_addr;
17 	uint64_t lso_tun_fmt;
18 	uint64_t ts_mem;
19 	uint16_t sqes_per_sqb_log2;
20 	int16_t nb_sqb_bufs_adj;
21 	rte_iova_t cpt_io_addr;
22 	uint64_t sa_base;
23 	uint64_t *cpt_fc;
24 	uint16_t cpt_desc;
25 	uint64_t mark_flag : 8;
26 	uint64_t mark_fmt : 48;
27 } __plt_cache_aligned;
28 
29 struct cn9k_eth_rxq {
30 	uint64_t mbuf_initializer;
31 	uint64_t data_off;
32 	uintptr_t desc;
33 	void *lookup_mem;
34 	uintptr_t cq_door;
35 	uint64_t wdata;
36 	int64_t *cq_status;
37 	uint32_t head;
38 	uint32_t qmask;
39 	uint32_t available;
40 	uint16_t rq;
41 	struct cnxk_timesync_info *tstamp;
42 } __plt_cache_aligned;
43 
44 /* Private data in sw rsvd area of struct roc_onf_ipsec_inb_sa */
45 struct cn9k_inb_priv_data {
46 	void *userdata;
47 	uint32_t replay_win_sz;
48 	struct cnxk_on_ipsec_ar ar;
49 	struct cnxk_eth_sec_sess *eth_sec;
50 };
51 
52 /* Private data in sw rsvd area of struct roc_onf_ipsec_outb_sa */
53 struct cn9k_outb_priv_data {
54 	union {
55 		uint64_t esn;
56 		struct {
57 			uint32_t seq;
58 			uint32_t esn_hi;
59 		};
60 	};
61 
62 	/* Rlen computation data */
63 	struct cnxk_ipsec_outb_rlens rlens;
64 
65 	/* IP identifier */
66 	uint16_t ip_id;
67 
68 	/* SA index */
69 	uint32_t sa_idx;
70 
71 	/* Flags */
72 	uint16_t copy_salt : 1;
73 
74 	/* Salt */
75 	uint32_t nonce;
76 
77 	/* User data pointer */
78 	void *userdata;
79 
80 	/* Back pointer to eth sec session */
81 	struct cnxk_eth_sec_sess *eth_sec;
82 };
83 
84 struct cn9k_sec_sess_priv {
85 	union {
86 		struct {
87 			uint32_t sa_idx;
88 			uint8_t inb_sa : 1;
89 			uint8_t rsvd1 : 2;
90 			uint8_t roundup_byte : 5;
91 			uint8_t roundup_len;
92 			uint16_t partial_len;
93 		};
94 
95 		uint64_t u64;
96 	};
97 } __rte_packed;
98 
99 /* Rx and Tx routines */
100 void cn9k_eth_set_rx_function(struct rte_eth_dev *eth_dev);
101 void cn9k_eth_set_tx_function(struct rte_eth_dev *eth_dev);
102 
103 /* Security context setup */
104 void cn9k_eth_sec_ops_override(void);
105 
106 #endif /* __CN9K_ETHDEV_H__ */
107