xref: /dpdk/drivers/net/cnxk/cn10k_ethdev.h (revision 358d02d2)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2021 Marvell.
3  */
4 #ifndef __CN10K_ETHDEV_H__
5 #define __CN10K_ETHDEV_H__
6 
7 #include <cnxk_ethdev.h>
8 #include <cnxk_security.h>
9 
10 struct cn10k_eth_txq {
11 	uint64_t send_hdr_w0;
12 	int64_t fc_cache_pkts;
13 	uint64_t *fc_mem;
14 	uintptr_t lmt_base;
15 	rte_iova_t io_addr;
16 	uint16_t sqes_per_sqb_log2;
17 	int16_t nb_sqb_bufs_adj;
18 	rte_iova_t cpt_io_addr;
19 	uint64_t sa_base;
20 	uint64_t *cpt_fc;
21 	uint16_t cpt_desc;
22 	int32_t *cpt_fc_sw;
23 	uint64_t lso_tun_fmt;
24 	uint64_t ts_mem;
25 	uint64_t mark_flag : 8;
26 	uint64_t mark_fmt : 48;
27 } __plt_cache_aligned;
28 
29 struct cn10k_eth_rxq {
30 	uint64_t mbuf_initializer;
31 	uintptr_t desc;
32 	void *lookup_mem;
33 	uintptr_t cq_door;
34 	uint64_t wdata;
35 	int64_t *cq_status;
36 	uint32_t head;
37 	uint32_t qmask;
38 	uint32_t available;
39 	uint16_t data_off;
40 	uint64_t sa_base;
41 	uint64_t lmt_base;
42 	uint64_t aura_handle;
43 	uint16_t rq;
44 	struct cnxk_timesync_info *tstamp;
45 } __plt_cache_aligned;
46 
47 /* Private data in sw rsvd area of struct roc_ot_ipsec_inb_sa */
48 struct cn10k_inb_priv_data {
49 	void *userdata;
50 	int reass_dynfield_off;
51 	int reass_dynflag_bit;
52 	struct cnxk_eth_sec_sess *eth_sec;
53 };
54 
55 /* Private data in sw rsvd area of struct roc_ot_ipsec_outb_sa */
56 struct cn10k_outb_priv_data {
57 	void *userdata;
58 	/* Rlen computation data */
59 	struct cnxk_ipsec_outb_rlens rlens;
60 	/* Back pointer to eth sec session */
61 	struct cnxk_eth_sec_sess *eth_sec;
62 	/* SA index */
63 	uint32_t sa_idx;
64 };
65 
66 struct cn10k_sec_sess_priv {
67 	union {
68 		struct {
69 			uint32_t sa_idx;
70 			uint8_t inb_sa : 1;
71 			uint8_t outer_ip_ver : 1;
72 			uint8_t mode : 1;
73 			uint8_t roundup_byte : 5;
74 			uint8_t roundup_len;
75 			uint16_t partial_len : 10;
76 			uint16_t chksum : 2;
77 			uint16_t dec_ttl : 1;
78 			uint16_t rsvd : 3;
79 		};
80 
81 		uint64_t u64;
82 	};
83 } __rte_packed;
84 
85 /* Rx and Tx routines */
86 void cn10k_eth_set_rx_function(struct rte_eth_dev *eth_dev);
87 void cn10k_eth_set_tx_function(struct rte_eth_dev *eth_dev);
88 
89 /* Security context setup */
90 void cn10k_eth_sec_ops_override(void);
91 
92 /* SSO Work callback */
93 void cn10k_eth_sec_sso_work_cb(uint64_t *gw, void *args,
94 			       uint32_t soft_exp_event);
95 
96 #define LMT_OFF(lmt_addr, lmt_num, offset)                                     \
97 	(void *)((uintptr_t)(lmt_addr) +                                       \
98 		 ((uint64_t)(lmt_num) << ROC_LMT_LINE_SIZE_LOG2) + (offset))
99 
100 #endif /* __CN10K_ETHDEV_H__ */
101