xref: /dpdk/drivers/common/cnxk/roc_nix_inl_priv.h (revision 3c100e0e)
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