root/drivers/net/ethernet/netronome/nfp/nfp_abi.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
   2 /* Copyright (C) 2018 Netronome Systems, Inc. */
   3 
   4 #ifndef __NFP_ABI__
   5 #define __NFP_ABI__ 1
   6 
   7 #include <linux/types.h>
   8 
   9 #define NFP_MBOX_SYM_NAME               "_abi_nfd_pf%u_mbox"
  10 #define NFP_MBOX_SYM_MIN_SIZE           16 /* When no data needed */
  11 
  12 #define NFP_MBOX_CMD            0x00
  13 #define NFP_MBOX_RET            0x04
  14 #define NFP_MBOX_DATA_LEN       0x08
  15 #define NFP_MBOX_RESERVED       0x0c
  16 #define NFP_MBOX_DATA           0x10
  17 
  18 /**
  19  * enum nfp_mbox_cmd - PF mailbox commands
  20  *
  21  * @NFP_MBOX_NO_CMD:    null command
  22  * Used to indicate previous command has finished.
  23  *
  24  * @NFP_MBOX_POOL_GET:  get shared buffer pool info/config
  25  * Input  - struct nfp_shared_buf_pool_id
  26  * Output - struct nfp_shared_buf_pool_info_get
  27  *
  28  * @NFP_MBOX_POOL_SET:  set shared buffer pool info/config
  29  * Input  - struct nfp_shared_buf_pool_info_set
  30  * Output - None
  31  *
  32  * @NFP_MBOX_PCIE_ABM_ENABLE:   enable PCIe-side advanced buffer management
  33  * Enable advanced buffer management of the PCIe block.  If ABM is disabled
  34  * PCIe block maintains a very short queue of buffers and does tail drop.
  35  * ABM allows more advanced buffering and priority control.
  36  * Input  - None
  37  * Output - None
  38  *
  39  * @NFP_MBOX_PCIE_ABM_DISABLE:  disable PCIe-side advanced buffer management
  40  * Input  - None
  41  * Output - None
  42  */
  43 enum nfp_mbox_cmd {
  44         NFP_MBOX_NO_CMD                 = 0x00,
  45 
  46         NFP_MBOX_POOL_GET               = 0x01,
  47         NFP_MBOX_POOL_SET               = 0x02,
  48 
  49         NFP_MBOX_PCIE_ABM_ENABLE        = 0x03,
  50         NFP_MBOX_PCIE_ABM_DISABLE       = 0x04,
  51 };
  52 
  53 #define NFP_SHARED_BUF_COUNT_SYM_NAME   "_abi_nfd_pf%u_sb_cnt"
  54 #define NFP_SHARED_BUF_TABLE_SYM_NAME   "_abi_nfd_pf%u_sb_tbl"
  55 
  56 /**
  57  * struct nfp_shared_buf - NFP shared buffer description
  58  * @id:                         numerical user-visible id of the shared buffer
  59  * @size:                       size in bytes of the buffer
  60  * @ingress_pools_count:        number of ingress pools
  61  * @egress_pools_count:         number of egress pools
  62  * @ingress_tc_count:           number of ingress trafic classes
  63  * @egress_tc_count:            number of egress trafic classes
  64  * @pool_size_unit:             pool size may be in credits, each credit is
  65  *                              @pool_size_unit bytes
  66  */
  67 struct nfp_shared_buf {
  68         __le32 id;
  69         __le32 size;
  70         __le16 ingress_pools_count;
  71         __le16 egress_pools_count;
  72         __le16 ingress_tc_count;
  73         __le16 egress_tc_count;
  74 
  75         __le32 pool_size_unit;
  76 };
  77 
  78 /**
  79  * struct nfp_shared_buf_pool_id - shared buffer pool identification
  80  * @shared_buf:         shared buffer id
  81  * @pool:               pool index
  82  */
  83 struct nfp_shared_buf_pool_id {
  84         __le32 shared_buf;
  85         __le32 pool;
  86 };
  87 
  88 /**
  89  * struct nfp_shared_buf_pool_info_get - struct devlink_sb_pool_info mirror
  90  * @pool_type:          one of enum devlink_sb_pool_type
  91  * @size:               pool size in units of SB's @pool_size_unit
  92  * @threshold_type:     one of enum devlink_sb_threshold_type
  93  */
  94 struct nfp_shared_buf_pool_info_get {
  95         __le32 pool_type;
  96         __le32 size;
  97         __le32 threshold_type;
  98 };
  99 
 100 /**
 101  * struct nfp_shared_buf_pool_info_set - packed args of sb_pool_set
 102  * @id:                 pool identification info
 103  * @size:               pool size in units of SB's @pool_size_unit
 104  * @threshold_type:     one of enum devlink_sb_threshold_type
 105  */
 106 struct nfp_shared_buf_pool_info_set {
 107         struct nfp_shared_buf_pool_id id;
 108         __le32 size;
 109         __le32 threshold_type;
 110 };
 111 
 112 #endif

/* [<][>][^][v][top][bottom][index][help] */