net/cnxk: add SoC specific PTP timestamp read
[dpdk.git] / drivers / net / cnxk / cn9k_ethdev.h
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 } __plt_cache_aligned;
26
27 struct cn9k_eth_rxq {
28         uint64_t mbuf_initializer;
29         uint64_t data_off;
30         uintptr_t desc;
31         void *lookup_mem;
32         uintptr_t cq_door;
33         uint64_t wdata;
34         int64_t *cq_status;
35         uint32_t head;
36         uint32_t qmask;
37         uint32_t available;
38         uint16_t rq;
39         struct cnxk_timesync_info *tstamp;
40 } __plt_cache_aligned;
41
42 /* Private data in sw rsvd area of struct roc_onf_ipsec_inb_sa */
43 struct cn9k_inb_priv_data {
44         void *userdata;
45         uint32_t replay_win_sz;
46         struct cnxk_on_ipsec_ar ar;
47         struct cnxk_eth_sec_sess *eth_sec;
48 };
49
50 /* Private data in sw rsvd area of struct roc_onf_ipsec_outb_sa */
51 struct cn9k_outb_priv_data {
52         union {
53                 uint64_t esn;
54                 struct {
55                         uint32_t seq;
56                         uint32_t esn_hi;
57                 };
58         };
59
60         /* Rlen computation data */
61         struct cnxk_ipsec_outb_rlens rlens;
62
63         /* IP identifier */
64         uint16_t ip_id;
65
66         /* SA index */
67         uint32_t sa_idx;
68
69         /* Flags */
70         uint16_t copy_salt : 1;
71
72         /* Salt */
73         uint32_t nonce;
74
75         /* User data pointer */
76         void *userdata;
77
78         /* Back pointer to eth sec session */
79         struct cnxk_eth_sec_sess *eth_sec;
80 };
81
82 struct cn9k_sec_sess_priv {
83         union {
84                 struct {
85                         uint32_t sa_idx;
86                         uint8_t inb_sa : 1;
87                         uint8_t rsvd1 : 2;
88                         uint8_t roundup_byte : 5;
89                         uint8_t roundup_len;
90                         uint16_t partial_len;
91                 };
92
93                 uint64_t u64;
94         };
95 } __rte_packed;
96
97 /* Rx and Tx routines */
98 void cn9k_eth_set_rx_function(struct rte_eth_dev *eth_dev);
99 void cn9k_eth_set_tx_function(struct rte_eth_dev *eth_dev);
100
101 /* Security context setup */
102 void cn9k_eth_sec_ops_override(void);
103
104 #endif /* __CN9K_ETHDEV_H__ */