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