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 uint64_t lso_tun_fmt; 23 uint64_t ts_mem; 24 uint64_t mark_flag : 8; 25 uint64_t mark_fmt : 48; 26 } __plt_cache_aligned; 27 28 struct cn10k_eth_rxq { 29 uint64_t mbuf_initializer; 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 data_off; 39 uint64_t sa_base; 40 uint64_t lmt_base; 41 uint64_t aura_handle; 42 uint16_t rq; 43 struct cnxk_timesync_info *tstamp; 44 } __plt_cache_aligned; 45 46 /* Private data in sw rsvd area of struct roc_ot_ipsec_inb_sa */ 47 struct cn10k_inb_priv_data { 48 void *userdata; 49 int reass_dynfield_off; 50 int reass_dynflag_bit; 51 struct cnxk_eth_sec_sess *eth_sec; 52 }; 53 54 /* Private data in sw rsvd area of struct roc_ot_ipsec_outb_sa */ 55 struct cn10k_outb_priv_data { 56 void *userdata; 57 /* Rlen computation data */ 58 struct cnxk_ipsec_outb_rlens rlens; 59 /* Back pointer to eth sec session */ 60 struct cnxk_eth_sec_sess *eth_sec; 61 /* SA index */ 62 uint32_t sa_idx; 63 }; 64 65 struct cn10k_sec_sess_priv { 66 union { 67 struct { 68 uint32_t sa_idx; 69 uint8_t inb_sa : 1; 70 uint8_t outer_ip_ver : 1; 71 uint8_t mode : 1; 72 uint8_t roundup_byte : 5; 73 uint8_t roundup_len; 74 uint16_t partial_len; 75 }; 76 77 uint64_t u64; 78 }; 79 } __rte_packed; 80 81 /* Rx and Tx routines */ 82 void cn10k_eth_set_rx_function(struct rte_eth_dev *eth_dev); 83 void cn10k_eth_set_tx_function(struct rte_eth_dev *eth_dev); 84 85 /* Security context setup */ 86 void cn10k_eth_sec_ops_override(void); 87 88 /* SSO Work callback */ 89 void cn10k_eth_sec_sso_work_cb(uint64_t *gw, void *args, 90 uint32_t soft_exp_event); 91 92 #define LMT_OFF(lmt_addr, lmt_num, offset) \ 93 (void *)((uintptr_t)(lmt_addr) + \ 94 ((uint64_t)(lmt_num) << ROC_LMT_LINE_SIZE_LOG2) + (offset)) 95 96 #endif /* __CN10K_ETHDEV_H__ */ 97