drivers/net: advertise no support for keeping flow rules
[dpdk.git] / drivers / net / cnxk / cn10k_ethdev.h
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         uint64_t sg_w0;
13         int64_t fc_cache_pkts;
14         uint64_t *fc_mem;
15         uintptr_t lmt_base;
16         rte_iova_t io_addr;
17         uint16_t sqes_per_sqb_log2;
18         int16_t nb_sqb_bufs_adj;
19         rte_iova_t cpt_io_addr;
20         uint64_t sa_base;
21         uint64_t *cpt_fc;
22         uint16_t cpt_desc;
23         uint64_t cmd[4];
24         uint64_t lso_tun_fmt;
25 } __plt_cache_aligned;
26
27 struct cn10k_eth_rxq {
28         uint64_t mbuf_initializer;
29         uintptr_t desc;
30         void *lookup_mem;
31         uintptr_t cq_door;
32         uint64_t wdata;
33         int64_t *cq_status;
34         uint32_t head;
35         uint32_t qmask;
36         uint32_t available;
37         uint16_t data_off;
38         uint64_t sa_base;
39         uint64_t lmt_base;
40         uint64_t aura_handle;
41         uint16_t rq;
42         struct cnxk_timesync_info *tstamp;
43 } __plt_cache_aligned;
44
45 /* Private data in sw rsvd area of struct roc_ot_ipsec_inb_sa */
46 struct cn10k_inb_priv_data {
47         void *userdata;
48         struct cnxk_eth_sec_sess *eth_sec;
49 };
50
51 /* Private data in sw rsvd area of struct roc_ot_ipsec_outb_sa */
52 struct cn10k_outb_priv_data {
53         void *userdata;
54         /* Rlen computation data */
55         struct cnxk_ipsec_outb_rlens rlens;
56         /* Back pinter to eth sec session */
57         struct cnxk_eth_sec_sess *eth_sec;
58         /* SA index */
59         uint32_t sa_idx;
60 };
61
62 struct cn10k_sec_sess_priv {
63         union {
64                 struct {
65                         uint32_t sa_idx;
66                         uint8_t inb_sa : 1;
67                         uint8_t outer_ip_ver : 1;
68                         uint8_t mode : 1;
69                         uint8_t roundup_byte : 5;
70                         uint8_t roundup_len;
71                         uint16_t partial_len;
72                 };
73
74                 uint64_t u64;
75         };
76 } __rte_packed;
77
78 /* Rx and Tx routines */
79 void cn10k_eth_set_rx_function(struct rte_eth_dev *eth_dev);
80 void cn10k_eth_set_tx_function(struct rte_eth_dev *eth_dev);
81
82 /* Security context setup */
83 void cn10k_eth_sec_ops_override(void);
84
85 #define LMT_OFF(lmt_addr, lmt_num, offset)                                     \
86         (void *)((uintptr_t)(lmt_addr) +                                       \
87                  ((uint64_t)(lmt_num) << ROC_LMT_LINE_SIZE_LOG2) + (offset))
88
89 #endif /* __CN10K_ETHDEV_H__ */