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