LCOV - code coverage report
Current view: top level - drivers/common/cnxk - roc_nix_inl.h (source / functions) Hit Total Coverage
Test: Code coverage Lines: 0 6 0.0 %
Date: 2024-02-14 00:53:57 Functions: 0 0 -
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 4 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: BSD-3-Clause
       2                 :            :  * Copyright(C) 2021 Marvell.
       3                 :            :  */
       4                 :            : #ifndef _ROC_NIX_INL_H_
       5                 :            : #define _ROC_NIX_INL_H_
       6                 :            : 
       7                 :            : /* ONF INB HW area */
       8                 :            : #define ROC_NIX_INL_ONF_IPSEC_INB_HW_SZ                                        \
       9                 :            :         PLT_ALIGN(sizeof(struct roc_onf_ipsec_inb_sa), ROC_ALIGN)
      10                 :            : /* ONF INB SW reserved area */
      11                 :            : #define ROC_NIX_INL_ONF_IPSEC_INB_SW_RSVD 384
      12                 :            : #define ROC_NIX_INL_ONF_IPSEC_INB_SA_SZ                                        \
      13                 :            :         (ROC_NIX_INL_ONF_IPSEC_INB_HW_SZ + ROC_NIX_INL_ONF_IPSEC_INB_SW_RSVD)
      14                 :            : #define ROC_NIX_INL_ONF_IPSEC_INB_SA_SZ_LOG2 9
      15                 :            : 
      16                 :            : /* ONF OUTB HW area */
      17                 :            : #define ROC_NIX_INL_ONF_IPSEC_OUTB_HW_SZ                                       \
      18                 :            :         PLT_ALIGN(sizeof(struct roc_onf_ipsec_outb_sa), ROC_ALIGN)
      19                 :            : /* ONF OUTB SW reserved area */
      20                 :            : #define ROC_NIX_INL_ONF_IPSEC_OUTB_SW_RSVD 128
      21                 :            : #define ROC_NIX_INL_ONF_IPSEC_OUTB_SA_SZ                                       \
      22                 :            :         (ROC_NIX_INL_ONF_IPSEC_OUTB_HW_SZ + ROC_NIX_INL_ONF_IPSEC_OUTB_SW_RSVD)
      23                 :            : #define ROC_NIX_INL_ONF_IPSEC_OUTB_SA_SZ_LOG2 8
      24                 :            : 
      25                 :            : /* ON INB HW area */
      26                 :            : #define ROC_NIX_INL_ON_IPSEC_INB_HW_SZ                                         \
      27                 :            :         PLT_ALIGN(sizeof(struct roc_ie_on_inb_sa), ROC_ALIGN)
      28                 :            : /* ON INB SW reserved area */
      29                 :            : #define ROC_NIX_INL_ON_IPSEC_INB_SW_RSVD 640
      30                 :            : #define ROC_NIX_INL_ON_IPSEC_INB_SA_SZ                                         \
      31                 :            :         (ROC_NIX_INL_ON_IPSEC_INB_HW_SZ + ROC_NIX_INL_ON_IPSEC_INB_SW_RSVD)
      32                 :            : #define ROC_NIX_INL_ON_IPSEC_INB_SA_SZ_LOG2 10
      33                 :            : 
      34                 :            : /* ONF OUTB HW area */
      35                 :            : #define ROC_NIX_INL_ON_IPSEC_OUTB_HW_SZ                                        \
      36                 :            :         PLT_ALIGN(sizeof(struct roc_ie_on_outb_sa), ROC_ALIGN)
      37                 :            : /* ONF OUTB SW reserved area */
      38                 :            : #define ROC_NIX_INL_ON_IPSEC_OUTB_SW_RSVD 256
      39                 :            : #define ROC_NIX_INL_ON_IPSEC_OUTB_SA_SZ                                        \
      40                 :            :         (ROC_NIX_INL_ON_IPSEC_OUTB_HW_SZ + ROC_NIX_INL_ON_IPSEC_OUTB_SW_RSVD)
      41                 :            : #define ROC_NIX_INL_ON_IPSEC_OUTB_SA_SZ_LOG2 9
      42                 :            : 
      43                 :            : #define ROC_NIX_INL_SA_SOFT_EXP_ERR_MAX_POLL_COUNT 25
      44                 :            : 
      45                 :            : #define ROC_NIX_SOFT_EXP_ERR_RING_MAX_ENTRY_LOG2 16
      46                 :            : 
      47                 :            : #define ROC_NIX_SOFT_EXP_PER_PORT_MAX_RINGS 4
      48                 :            : 
      49                 :            : #define ROC_NIX_MAX_TOTAL_OUTB_IPSEC_SA                                        \
      50                 :            :         (ROC_IPSEC_ERR_RING_MAX_ENTRY * ROC_NIX_SOFT_EXP_PER_PORT_MAX_RINGS)
      51                 :            : 
      52                 :            : #define ROC_NIX_INL_MAX_SOFT_EXP_RNGS                                          \
      53                 :            :         (PLT_MAX_ETHPORTS * ROC_NIX_SOFT_EXP_PER_PORT_MAX_RINGS)
      54                 :            : 
      55                 :            : /* Reassembly configuration */
      56                 :            : #define ROC_NIX_INL_REAS_ACTIVE_LIMIT     0xFFF
      57                 :            : #define ROC_NIX_INL_REAS_ACTIVE_THRESHOLD 10
      58                 :            : #define ROC_NIX_INL_REAS_ZOMBIE_LIMIT     0xFFF
      59                 :            : #define ROC_NIX_INL_REAS_ZOMBIE_THRESHOLD 10
      60                 :            : 
      61                 :            : static inline struct roc_ie_on_inb_sa *
      62                 :            : roc_nix_inl_on_ipsec_inb_sa(uintptr_t base, uint64_t idx)
      63                 :            : {
      64                 :          0 :         uint64_t off = idx << ROC_NIX_INL_ON_IPSEC_INB_SA_SZ_LOG2;
      65                 :            : 
      66                 :          0 :         return PLT_PTR_ADD(base, off);
      67                 :            : }
      68                 :            : 
      69                 :            : static inline struct roc_ie_on_outb_sa *
      70                 :            : roc_nix_inl_on_ipsec_outb_sa(uintptr_t base, uint64_t idx)
      71                 :            : {
      72                 :          0 :         uint64_t off = idx << ROC_NIX_INL_ON_IPSEC_OUTB_SA_SZ_LOG2;
      73                 :            : 
      74                 :          0 :         return PLT_PTR_ADD(base, off);
      75                 :            : }
      76                 :            : 
      77                 :            : static inline void *
      78                 :            : roc_nix_inl_on_ipsec_inb_sa_sw_rsvd(void *sa)
      79                 :            : {
      80   [ #  #  #  # ]:          0 :         return PLT_PTR_ADD(sa, ROC_NIX_INL_ON_IPSEC_INB_HW_SZ);
      81                 :            : }
      82                 :            : 
      83                 :            : static inline void *
      84                 :            : roc_nix_inl_on_ipsec_outb_sa_sw_rsvd(void *sa)
      85                 :            : {
      86                 :          0 :         return PLT_PTR_ADD(sa, ROC_NIX_INL_ON_IPSEC_OUTB_HW_SZ);
      87                 :            : }
      88                 :            : 
      89                 :            : static inline struct roc_onf_ipsec_inb_sa *
      90                 :            : roc_nix_inl_onf_ipsec_inb_sa(uintptr_t base, uint64_t idx)
      91                 :            : {
      92                 :            :         uint64_t off = idx << ROC_NIX_INL_ONF_IPSEC_INB_SA_SZ_LOG2;
      93                 :            : 
      94                 :            :         return PLT_PTR_ADD(base, off);
      95                 :            : }
      96                 :            : 
      97                 :            : static inline struct roc_onf_ipsec_outb_sa *
      98                 :            : roc_nix_inl_onf_ipsec_outb_sa(uintptr_t base, uint64_t idx)
      99                 :            : {
     100                 :            :         uint64_t off = idx << ROC_NIX_INL_ONF_IPSEC_OUTB_SA_SZ_LOG2;
     101                 :            : 
     102                 :            :         return PLT_PTR_ADD(base, off);
     103                 :            : }
     104                 :            : 
     105                 :            : static inline void *
     106                 :            : roc_nix_inl_onf_ipsec_inb_sa_sw_rsvd(void *sa)
     107                 :            : {
     108                 :            :         return PLT_PTR_ADD(sa, ROC_NIX_INL_ONF_IPSEC_INB_HW_SZ);
     109                 :            : }
     110                 :            : 
     111                 :            : static inline void *
     112                 :            : roc_nix_inl_onf_ipsec_outb_sa_sw_rsvd(void *sa)
     113                 :            : {
     114                 :            :         return PLT_PTR_ADD(sa, ROC_NIX_INL_ONF_IPSEC_OUTB_HW_SZ);
     115                 :            : }
     116                 :            : 
     117                 :            : /* Inline device SSO Work callback */
     118                 :            : typedef void (*roc_nix_inl_sso_work_cb_t)(uint64_t *gw, void *args,
     119                 :            :                                           uint32_t soft_exp_event);
     120                 :            : 
     121                 :            : typedef int (*roc_nix_inl_meta_pool_cb_t)(uint64_t *aura_handle,  uintptr_t *mpool,
     122                 :            :                                           uint32_t blk_sz, uint32_t nb_bufs, bool destroy,
     123                 :            :                                           const char *mempool_name);
     124                 :            : typedef int (*roc_nix_inl_custom_meta_pool_cb_t)(uintptr_t pmpool, uintptr_t *mpool,
     125                 :            :                                                  const char *mempool_name, uint64_t *aura_handle,
     126                 :            :                                                  uint32_t blk_sz, uint32_t nb_bufs, bool destroy);
     127                 :            : 
     128                 :            : struct roc_nix_inl_dev {
     129                 :            :         /* Input parameters */
     130                 :            :         struct plt_pci_device *pci_dev;
     131                 :            :         uint32_t ipsec_in_min_spi;
     132                 :            :         uint32_t ipsec_in_max_spi;
     133                 :            :         bool selftest;
     134                 :            :         bool is_multi_channel;
     135                 :            :         uint16_t channel;
     136                 :            :         uint16_t chan_mask;
     137                 :            :         bool attach_cptlf;
     138                 :            :         uint16_t wqe_skip;
     139                 :            :         uint8_t spb_drop_pc;
     140                 :            :         uint8_t lpb_drop_pc;
     141                 :            :         uint32_t soft_exp_poll_freq; /* Polling disabled if 0 */
     142                 :            :         uint32_t nb_meta_bufs;
     143                 :            :         uint32_t meta_buf_sz;
     144                 :            :         uint32_t max_ipsec_rules;
     145                 :            :         /* End of input parameters */
     146                 :            : 
     147                 :            : #define ROC_NIX_INL_MEM_SZ (1280)
     148                 :            :         uint8_t reserved[ROC_NIX_INL_MEM_SZ] __plt_cache_aligned;
     149                 :            : } __plt_cache_aligned;
     150                 :            : 
     151                 :            : /* NIX Inline Device API */
     152                 :            : int __roc_api roc_nix_inl_dev_init(struct roc_nix_inl_dev *roc_inl_dev);
     153                 :            : int __roc_api roc_nix_inl_dev_fini(struct roc_nix_inl_dev *roc_inl_dev);
     154                 :            : void __roc_api roc_nix_inl_dev_dump(struct roc_nix_inl_dev *roc_inl_dev, FILE *file);
     155                 :            : bool __roc_api roc_nix_inl_dev_is_probed(void);
     156                 :            : void __roc_api roc_nix_inl_dev_lock(void);
     157                 :            : void __roc_api roc_nix_inl_dev_unlock(void);
     158                 :            : int __roc_api roc_nix_inl_dev_xaq_realloc(uint64_t aura_handle);
     159                 :            : int __roc_api roc_nix_inl_dev_stats_get(struct roc_nix_stats *stats);
     160                 :            : uint16_t __roc_api roc_nix_inl_dev_pffunc_get(void);
     161                 :            : int __roc_api roc_nix_inl_dev_cpt_setup(bool use_inl_dev_sso);
     162                 :            : int __roc_api roc_nix_inl_dev_cpt_release(void);
     163                 :            : 
     164                 :            : /* NIX Inline Inbound API */
     165                 :            : int __roc_api roc_nix_inl_inb_init(struct roc_nix *roc_nix);
     166                 :            : int __roc_api roc_nix_inl_inb_fini(struct roc_nix *roc_nix);
     167                 :            : bool __roc_api roc_nix_inl_inb_is_enabled(struct roc_nix *roc_nix);
     168                 :            : uintptr_t __roc_api roc_nix_inl_inb_sa_base_get(struct roc_nix *roc_nix,
     169                 :            :                                                 bool inl_dev_sa);
     170                 :            : uint32_t __roc_api roc_nix_inl_inb_spi_range(struct roc_nix *roc_nix,
     171                 :            :                                              bool inl_dev_sa, uint32_t *min,
     172                 :            :                                              uint32_t *max);
     173                 :            : uint32_t __roc_api roc_nix_inl_inb_sa_sz(struct roc_nix *roc_nix,
     174                 :            :                                          bool inl_dev_sa);
     175                 :            : uintptr_t __roc_api roc_nix_inl_inb_sa_get(struct roc_nix *roc_nix,
     176                 :            :                                            bool inl_dev_sa, uint32_t spi);
     177                 :            : void __roc_api roc_nix_inb_mode_set(struct roc_nix *roc_nix, bool use_inl_dev);
     178                 :            : void __roc_api roc_nix_inl_inb_set(struct roc_nix *roc_nix, bool ena);
     179                 :            : int __roc_api roc_nix_inl_dev_rq_get(struct roc_nix_rq *rq, bool ena);
     180                 :            : int __roc_api roc_nix_inl_dev_rq_put(struct roc_nix_rq *rq);
     181                 :            : bool __roc_api roc_nix_inb_is_with_inl_dev(struct roc_nix *roc_nix);
     182                 :            : struct roc_nix_rq *__roc_api roc_nix_inl_dev_rq(struct roc_nix *roc_nix);
     183                 :            : int __roc_api roc_nix_inl_inb_tag_update(struct roc_nix *roc_nix,
     184                 :            :                                          uint32_t tag_const, uint8_t tt);
     185                 :            : int __roc_api roc_nix_reassembly_configure(uint32_t max_wait_time,
     186                 :            :                                            uint16_t max_frags);
     187                 :            : int __roc_api roc_nix_inl_ts_pkind_set(struct roc_nix *roc_nix, bool ts_ena,
     188                 :            :                                        bool inb_inl_dev);
     189                 :            : int __roc_api roc_nix_inl_rq_ena_dis(struct roc_nix *roc_nix, bool ena);
     190                 :            : int __roc_api roc_nix_inl_meta_aura_check(struct roc_nix *roc_nix, struct roc_nix_rq *rq);
     191                 :            : 
     192                 :            : /* NIX Inline Outbound API */
     193                 :            : int __roc_api roc_nix_inl_outb_init(struct roc_nix *roc_nix);
     194                 :            : int __roc_api roc_nix_inl_outb_fini(struct roc_nix *roc_nix);
     195                 :            : bool __roc_api roc_nix_inl_outb_is_enabled(struct roc_nix *roc_nix);
     196                 :            : uintptr_t __roc_api roc_nix_inl_outb_sa_base_get(struct roc_nix *roc_nix);
     197                 :            : struct roc_cpt_lf *__roc_api
     198                 :            : roc_nix_inl_outb_lf_base_get(struct roc_nix *roc_nix);
     199                 :            : uint16_t __roc_api roc_nix_inl_outb_sso_pffunc_get(struct roc_nix *roc_nix);
     200                 :            : int __roc_api roc_nix_inl_cb_register(roc_nix_inl_sso_work_cb_t cb, void *args);
     201                 :            : int __roc_api roc_nix_inl_cb_unregister(roc_nix_inl_sso_work_cb_t cb,
     202                 :            :                                         void *args);
     203                 :            : int __roc_api roc_nix_inl_outb_soft_exp_poll_switch(struct roc_nix *roc_nix,
     204                 :            :                                                     bool poll);
     205                 :            : uint64_t *__roc_api roc_nix_inl_outb_ring_base_get(struct roc_nix *roc_nix);
     206                 :            : void __roc_api roc_nix_inl_meta_pool_cb_register(roc_nix_inl_meta_pool_cb_t cb);
     207                 :            : void __roc_api roc_nix_inl_custom_meta_pool_cb_register(roc_nix_inl_custom_meta_pool_cb_t cb);
     208                 :            : 
     209                 :            : /* NIX Inline/Outbound API */
     210                 :            : enum roc_nix_inl_sa_sync_op {
     211                 :            :         ROC_NIX_INL_SA_OP_FLUSH,
     212                 :            :         ROC_NIX_INL_SA_OP_FLUSH_INVAL,
     213                 :            :         ROC_NIX_INL_SA_OP_RELOAD,
     214                 :            : };
     215                 :            : 
     216                 :            : int __roc_api roc_nix_inl_sa_sync(struct roc_nix *roc_nix, void *sa, bool inb,
     217                 :            :                                   enum roc_nix_inl_sa_sync_op op);
     218                 :            : int __roc_api roc_nix_inl_ctx_write(struct roc_nix *roc_nix, void *sa_dptr,
     219                 :            :                                     void *sa_cptr, bool inb, uint16_t sa_len);
     220                 :            : void __roc_api roc_nix_inl_outb_cpt_lfs_dump(struct roc_nix *roc_nix, FILE *file);
     221                 :            : uint64_t __roc_api roc_nix_inl_eng_caps_get(struct roc_nix *roc_nix);
     222                 :            : 
     223                 :            : #endif /* _ROC_NIX_INL_H_ */

Generated by: LCOV version 1.14