app/testpmd: fix GTP PSC extension header length
[dpdk.git] / drivers / common / cnxk / roc_sso_priv.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2021 Marvell.
3  */
4
5 #ifndef _ROC_SSO_PRIV_H_
6 #define _ROC_SSO_PRIV_H_
7
8 struct sso_rsrc {
9         uint16_t rsrc_id;
10         uint64_t base;
11 };
12
13 struct sso {
14         struct plt_pci_device *pci_dev;
15         struct dev dev;
16         /* Interrupt handler args. */
17         struct sso_rsrc hws_rsrc[MAX_RVU_BLKLF_CNT];
18         struct sso_rsrc hwgrp_rsrc[MAX_RVU_BLKLF_CNT];
19         /* MSIX offsets */
20         uint16_t hws_msix_offset[MAX_RVU_BLKLF_CNT];
21         uint16_t hwgrp_msix_offset[MAX_RVU_BLKLF_CNT];
22         /* SSO link mapping. */
23         struct plt_bitmap **link_map;
24         void *link_map_mem;
25 } __plt_cache_aligned;
26
27 enum sso_err_status {
28         SSO_ERR_PARAM = -4096,
29 };
30
31 enum sso_lf_type {
32         SSO_LF_TYPE_HWS,
33         SSO_LF_TYPE_HWGRP,
34 };
35
36 static inline struct sso *
37 roc_sso_to_sso_priv(struct roc_sso *roc_sso)
38 {
39         return (struct sso *)&roc_sso->reserved[0];
40 }
41
42 /* SSO LF ops */
43 int sso_lf_alloc(struct dev *dev, enum sso_lf_type lf_type, uint16_t nb_lf,
44                  void **rsp);
45 int sso_lf_free(struct dev *dev, enum sso_lf_type lf_type, uint16_t nb_lf);
46 void sso_hws_link_modify(uint8_t hws, uintptr_t base, struct plt_bitmap *bmp,
47                          uint16_t hwgrp[], uint16_t n, uint16_t enable);
48 int sso_hwgrp_alloc_xaq(struct dev *dev, uint32_t npa_aura_id, uint16_t hwgrps);
49 int sso_hwgrp_release_xaq(struct dev *dev, uint16_t hwgrps);
50 int sso_hwgrp_init_xaq_aura(struct dev *dev, struct roc_sso_xaq_data *xaq,
51                             uint32_t nb_xae, uint32_t xae_waes,
52                             uint32_t xaq_buf_size, uint16_t nb_hwgrp);
53 int sso_hwgrp_free_xaq_aura(struct dev *dev, struct roc_sso_xaq_data *xaq,
54                             uint16_t nb_hwgrp);
55
56 /* SSO IRQ */
57 int sso_register_irqs_priv(struct roc_sso *roc_sso,
58                            struct plt_intr_handle *handle, uint16_t nb_hws,
59                            uint16_t nb_hwgrp);
60 void sso_unregister_irqs_priv(struct roc_sso *roc_sso,
61                               struct plt_intr_handle *handle, uint16_t nb_hws,
62                               uint16_t nb_hwgrp);
63
64 #endif /* _ROC_SSO_PRIV_H_ */