1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(C) 2021 Marvell. 3 */ 4 #ifndef _ROC_NIX_INL_PRIV_H_ 5 #define _ROC_NIX_INL_PRIV_H_ 6 #include <pthread.h> 7 #include <sys/types.h> 8 9 struct nix_inl_dev; 10 struct nix_inl_qint { 11 struct nix_inl_dev *inl_dev; 12 uint16_t qint; 13 }; 14 15 struct nix_inl_dev { 16 /* Base device object */ 17 struct dev dev; 18 19 /* PCI device */ 20 struct plt_pci_device *pci_dev; 21 22 /* LF specific BAR2 regions */ 23 uintptr_t nix_base; 24 uintptr_t ssow_base; 25 uintptr_t sso_base; 26 uintptr_t cpt_base; 27 28 /* MSIX vector offsets */ 29 uint16_t nix_msixoff; 30 uint16_t ssow_msixoff; 31 uint16_t sso_msixoff; 32 uint16_t cpt_msixoff; 33 34 /* SSO data */ 35 uint32_t xaq_buf_size; 36 uint32_t xae_waes; 37 uint32_t iue; 38 uint32_t nb_xae; 39 struct roc_sso_xaq_data xaq; 40 roc_nix_inl_sso_work_cb_t work_cb; 41 void *cb_args; 42 uint64_t *pkt_pools; 43 uint16_t pkt_pools_cnt; 44 45 /* NIX data */ 46 uint8_t lf_tx_stats; 47 uint8_t lf_rx_stats; 48 uint16_t vwqe_interval; 49 uint16_t cints; 50 uint16_t qints; 51 uint16_t configured_qints; 52 struct roc_nix_rq *rqs; 53 struct nix_inl_qint *qints_mem; 54 uint16_t nb_rqs; 55 bool is_nix1; 56 uint8_t spb_drop_pc; 57 uint8_t lpb_drop_pc; 58 59 /* NIX/CPT data */ 60 void *inb_sa_base; 61 uint16_t inb_sa_sz; 62 63 /* CPT data */ 64 struct roc_cpt_lf cpt_lf; 65 66 /* OUTB soft expiry poll thread */ 67 pthread_t soft_exp_poll_thread; 68 uint32_t soft_exp_poll_freq; 69 uint64_t *sa_soft_exp_ring; 70 bool set_soft_exp_poll; 71 72 /* Soft expiry ring bitmap */ 73 struct plt_bitmap *soft_exp_ring_bmap; 74 75 /* bitmap memory */ 76 void *soft_exp_ring_bmap_mem; 77 78 /* Device arguments */ 79 uint8_t selftest; 80 uint16_t channel; 81 uint16_t chan_mask; 82 bool is_multi_channel; 83 uint32_t ipsec_in_min_spi; 84 uint32_t ipsec_in_max_spi; 85 uint32_t inb_spi_mask; 86 bool attach_cptlf; 87 bool wqe_skip; 88 bool ts_ena; 89 }; 90 91 int nix_inl_sso_register_irqs(struct nix_inl_dev *inl_dev); 92 void nix_inl_sso_unregister_irqs(struct nix_inl_dev *inl_dev); 93 94 int nix_inl_nix_register_irqs(struct nix_inl_dev *inl_dev); 95 void nix_inl_nix_unregister_irqs(struct nix_inl_dev *inl_dev); 96 97 uint16_t nix_inl_dev_pffunc_get(void); 98 99 #endif /* _ROC_NIX_INL_PRIV_H_ */ 100