net/cnxk: support outbound soft expiry notification
[dpdk.git] / drivers / common / cnxk / roc_nix_inl_priv.h
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         /* Base device object */
11         struct dev dev;
12
13         /* PCI device */
14         struct plt_pci_device *pci_dev;
15
16         /* LF specific BAR2 regions */
17         uintptr_t nix_base;
18         uintptr_t ssow_base;
19         uintptr_t sso_base;
20         uintptr_t cpt_base;
21
22         /* MSIX vector offsets */
23         uint16_t nix_msixoff;
24         uint16_t ssow_msixoff;
25         uint16_t sso_msixoff;
26         uint16_t cpt_msixoff;
27
28         /* SSO data */
29         uint32_t xaq_buf_size;
30         uint32_t xae_waes;
31         uint32_t iue;
32         uint32_t nb_xae;
33         struct roc_sso_xaq_data xaq;
34         roc_nix_inl_sso_work_cb_t work_cb;
35         void *cb_args;
36         uint64_t *pkt_pools;
37         uint16_t pkt_pools_cnt;
38
39         /* NIX data */
40         uint8_t lf_tx_stats;
41         uint8_t lf_rx_stats;
42         uint16_t vwqe_interval;
43         uint16_t cints;
44         uint16_t qints;
45         struct roc_nix_rq rq;
46         uint16_t rq_refs;
47         bool is_nix1;
48         uint8_t spb_drop_pc;
49         uint8_t lpb_drop_pc;
50
51         /* NIX/CPT data */
52         void *inb_sa_base;
53         uint16_t inb_sa_sz;
54
55         /* CPT data */
56         struct roc_cpt_lf cpt_lf;
57
58         /* OUTB soft expiry poll thread */
59         pthread_t soft_exp_poll_thread;
60         uint32_t soft_exp_poll_freq;
61         void *sa_soft_exp_ring[ROC_NIX_INL_MAX_SOFT_EXP_RNGS];
62
63         /* Soft expiry ring bitmap */
64         struct plt_bitmap *soft_exp_ring_bmap;
65
66         /* bitmap memory */
67         void *soft_exp_ring_bmap_mem;
68
69         /* Device arguments */
70         uint8_t selftest;
71         uint16_t channel;
72         uint16_t chan_mask;
73         bool is_multi_channel;
74         uint32_t ipsec_in_min_spi;
75         uint32_t ipsec_in_max_spi;
76         uint32_t inb_spi_mask;
77         bool attach_cptlf;
78         bool wqe_skip;
79 };
80
81 int nix_inl_sso_register_irqs(struct nix_inl_dev *inl_dev);
82 void nix_inl_sso_unregister_irqs(struct nix_inl_dev *inl_dev);
83
84 int nix_inl_nix_register_irqs(struct nix_inl_dev *inl_dev);
85 void nix_inl_nix_unregister_irqs(struct nix_inl_dev *inl_dev);
86
87 uint16_t nix_inl_dev_pffunc_get(void);
88
89 #endif /* _ROC_NIX_INL_PRIV_H_ */