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__ */ 90