The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/ncsw/Peripherals/BM/bm.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /******************************************************************************
    2 
    3  © 1995-2003, 2004, 2005-2011 Freescale Semiconductor, Inc.
    4  All rights reserved.
    5 
    6  This is proprietary source code of Freescale Semiconductor Inc.,
    7  and its use is subject to the NetComm Device Drivers EULA.
    8  The copyright notice above does not evidence any actual or intended
    9  publication of such source code.
   10 
   11  ALTERNATIVELY, redistribution and use in source and binary forms, with
   12  or without modification, are permitted provided that the following
   13  conditions are met:
   14      * Redistributions of source code must retain the above copyright
   15        notice, this list of conditions and the following disclaimer.
   16      * Redistributions in binary form must reproduce the above copyright
   17        notice, this list of conditions and the following disclaimer in the
   18        documentation and/or other materials provided with the distribution.
   19      * Neither the name of Freescale Semiconductor nor the
   20        names of its contributors may be used to endorse or promote products
   21        derived from this software without specific prior written permission.
   22 
   23  THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
   24  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   25  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   26  DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
   27  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   28  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   29  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   30  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   31  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   32  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   33  *
   34 
   35  **************************************************************************/
   36 /******************************************************************************
   37  @File          bm.h
   38 
   39  @Description   BM header
   40 *//***************************************************************************/
   41 #ifndef __BM_H
   42 #define __BM_H
   43 
   44 #include "xx_common.h"
   45 #include "bm_ext.h"
   46 #include "mm_ext.h"
   47 
   48 #include "bman_private.h"
   49 #include "bm_ipc.h"
   50 
   51 
   52 #define __ERR_MODULE__  MODULE_BM
   53 
   54 #define BM_NUM_OF_POOLS             64
   55 #define BM_NUM_OF_PM                8
   56 
   57 /**************************************************************************//**
   58  @Description       Exceptions
   59 *//***************************************************************************/
   60 #define BM_EX_INVALID_COMMAND       0x00000010
   61 #define BM_EX_FBPR_THRESHOLD        0x00000008
   62 #define BM_EX_MULTI_ECC             0x00000004
   63 #define BM_EX_SINGLE_ECC            0x00000002
   64 #define BM_EX_POOLS_AVAIL_STATE     0x00000001
   65 
   66 #define GET_EXCEPTION_FLAG(bitMask, exception)                          \
   67 switch(exception){                                                      \
   68     case e_BM_EX_INVALID_COMMAND:                                       \
   69         bitMask = BM_EX_INVALID_COMMAND; break;                         \
   70     case e_BM_EX_FBPR_THRESHOLD:                                        \
   71         bitMask = BM_EX_FBPR_THRESHOLD; break;                          \
   72     case e_BM_EX_SINGLE_ECC:                                            \
   73         bitMask = BM_EX_SINGLE_ECC; break;                              \
   74     case e_BM_EX_MULTI_ECC:                                             \
   75         bitMask = BM_EX_MULTI_ECC; break;                               \
   76     default: bitMask = 0;break;                                         \
   77 }
   78 
   79 /**************************************************************************//**
   80  @Description       defaults
   81 *//***************************************************************************/
   82 /* BM defaults */
   83 #define DEFAULT_exceptions                  (BM_EX_INVALID_COMMAND      |\
   84                                             BM_EX_FBPR_THRESHOLD        |\
   85                                             BM_EX_MULTI_ECC             |\
   86                                             BM_EX_SINGLE_ECC            )
   87 
   88 #define DEFAULT_fbprThreshold               0
   89 /* BM-Portal defaults */
   90 #define DEFAULT_memAttr                     MEMORY_ATTR_CACHEABLE
   91 
   92 /* BM-Pool defaults */
   93 #define DEFAULT_dynamicBpid                 TRUE
   94 #define DEFAULT_useDepletion                FALSE
   95 #define DEFAULT_useStockpile                FALSE
   96 #define DEFAULT_numOfBufsPerCmd             8
   97 
   98 /**************************************************************************//**
   99  @Description       Memory Mapped Registers
  100 *//***************************************************************************/
  101 
  102 #if defined(__MWERKS__) && !defined(__GNUC__)
  103 #pragma pack(push,1)
  104 #endif /* defined(__MWERKS__) && ... */
  105 #define MEM_MAP_START
  106 
  107 typedef _Packed struct
  108 {
  109     /* BMan Buffer Pool Configuration & Status Registers */
  110     volatile uint32_t   swdet[BM_NUM_OF_POOLS];     /**< S/W Portal depletion entry threshold */
  111     volatile uint32_t   hwdet[BM_NUM_OF_POOLS];     /**< H/W Portal depletion entry threshold */
  112     volatile uint32_t   swdxt[BM_NUM_OF_POOLS];     /**< S/W Portal depletion exit threshold */
  113     volatile uint32_t   hwdxt[BM_NUM_OF_POOLS];     /**< H/W Portal depletion exit threshold */
  114     volatile uint32_t   sdcnt[BM_NUM_OF_POOLS];     /**< S/W Portal depletion count */
  115     volatile uint32_t   hdcnt[BM_NUM_OF_POOLS];     /**< H/W Portal depletion count */
  116     volatile uint32_t   content[BM_NUM_OF_POOLS];   /**< Snapshot of buffer count in Pool */
  117     volatile uint32_t   hdptr[BM_NUM_OF_POOLS];     /**< Head Pointer for Pool's FBPR list. */
  118 
  119     /* Free Buffer Proxy Record (FBPR) Manager Query Registers */
  120     volatile uint32_t   fbpr_fpc;                   /**< FBPR Free Pool Count */
  121     volatile uint32_t   fbpr_fp_lwit;               /**< FBPR Free Pool Low Watermark Interrupt Threshold  */
  122     volatile uint8_t    res1[248];                  /**< reserved */
  123 
  124     /* Performance Monitor (PM) Configuration Register */
  125     volatile uint32_t   cmd_pm_cfg[BM_NUM_OF_PM];   /**< BMan Command Performance Monitor configuration registers. */
  126     volatile uint32_t   fl_pm_cfg[BM_NUM_OF_PM];    /**< BMan Free List Performance Monitor configuration registers */
  127     volatile uint8_t    res2[192];                  /**< reserved */
  128 
  129     /* BMan Error Capture Registers */
  130     volatile uint32_t   ecsr;                       /**< BMan Error Capture Status Register */
  131     volatile uint32_t   ecir;                       /**< BMan Error Capture Information Register */
  132     volatile uint32_t   eadr;                       /**< BMan Error Capture Address Register */
  133     volatile uint8_t    res3[4];                    /**< reserved */
  134     volatile uint32_t   edata[8];                   /**< BMan ECC Error Data Register */
  135     volatile uint32_t   sbet;                       /**< BMan Single Bit ECC Error Threshold Register */
  136     volatile uint32_t   efcr;                       /**< BMan Error Fetch Capture Register */
  137     volatile uint32_t   efar;                       /**< BMan Error Fetch Address Register */
  138     volatile uint8_t    res4[68];                   /**< reserved */
  139     volatile uint32_t   sbec0;                      /**< BMan Single Bit ECC Error Count 0 Register */
  140     volatile uint32_t   sbec1;                      /**< BMan Single Bit ECC Error Count 1 Register */
  141     volatile uint8_t    res5[368];                  /**< reserved */
  142 
  143     /* BMan ID/Revision Registers */
  144     volatile uint32_t   ip_rev_1;                   /**< BMan IP Block Revision 1 register */
  145     volatile uint32_t   ip_rev_2;                   /**< BMan IP Block Revision 2 register */
  146 
  147     /* CoreNet Initiator Interface Memory Window Configuration Registers */
  148     volatile uint32_t   fbpr_bare;                  /**< Data Structure Extended Base Address Register */
  149     volatile uint32_t   fbpr_bar;                   /**< Data Structure Base Address Register */
  150     volatile uint8_t    res6[8];                    /**< reserved */
  151     volatile uint32_t   fbpr_ar;                    /**< Data Structure Attributes Register */
  152     volatile uint8_t    res7[240];                  /**< reserved */
  153     volatile uint32_t   srcidr;                     /**< BMan Source ID Register */
  154     volatile uint32_t   liodnr;                     /**< BMan Logical I/O Device Number Register */
  155     volatile uint8_t    res8[244];                  /**< reserved */
  156 
  157     /* BMan Interrupt and Error Registers */
  158     volatile uint32_t   err_isr;                    /**< BMan Error Interrupt Status Register */
  159     volatile uint32_t   err_ier;                    /**< BMan Error Interrupt Enable Register */
  160     volatile uint32_t   err_isdr;                   /**< BMan Error Interrupt Status Disable Register */
  161     volatile uint32_t   err_iir;                    /**< BMan Error Interrupt Inhibit Register */
  162     volatile uint32_t   err_ifr;                    /**< BMan Error Interrupt Force Register */
  163 } _PackedType t_BmRegs;
  164 
  165 #define MEM_MAP_END
  166 #if defined(__MWERKS__) && !defined(__GNUC__)
  167 #pragma pack(pop)
  168 #endif /* defined(__MWERKS__) && ... */
  169 
  170 /**************************************************************************//**
  171  @Description       General defines
  172 *//***************************************************************************/
  173 #define MODULE_NAME_SIZE            30
  174 
  175 #define FBPR_ENTRY_SIZE             64 /* 64 bytes */
  176 
  177 /* Compilation constants */
  178 #define RCR_THRESH      2    /* reread h/w CI when running out of space */
  179 #define RCR_ITHRESH     4    /* if RCR congests, interrupt threshold */
  180 
  181 /* Lock/unlock portals, subject to "UNLOCKED" flag */
  182 #define NCSW_PLOCK(p) ((t_BmPortal*)(p))->irq_flags = XX_DisableAllIntr()
  183 #define PUNLOCK(p) XX_RestoreAllIntr(((t_BmPortal*)(p))->irq_flags)
  184 
  185 #define BM_RCR_RING         0
  186 #define BM_NUM_OF_RINGS     1
  187 
  188 /**************************************************************************//**
  189  @Description       Register defines
  190 *//***************************************************************************/
  191 
  192 /* masks */
  193 #define REV1_MAJOR_MASK             0x0000FF00
  194 #define REV1_MINOR_MASK             0x000000FF
  195 
  196 #define REV2_INTEG_MASK             0x00FF0000
  197 #define REV2_ERR_MASK               0x0000FF00
  198 #define REV2_CFG_MASK               0x000000FF
  199 
  200 #define AR_PRIORITY                 0x40000000
  201 #define AR_SIZE_MASK                0x0000003f
  202 
  203 /* shifts */
  204 #define REV1_MAJOR_SHIFT            8
  205 #define REV1_MINOR_SHIFT            0
  206 
  207 #define REV2_INTEG_SHIFT            16
  208 #define REV2_ERR_SHIFT              8
  209 #define REV2_CFG_SHIFT              0
  210 
  211 #define AR_SIZE_SHIFT               0
  212 
  213 typedef uint8_t bmRingType_t;
  214 typedef uint8_t (t_BmUpdateCb)(struct bm_portal *p_BmPortalLow);
  215 typedef void    (t_BmPrefetchCb)(struct bm_portal *p_BmPortalLow);
  216 typedef void    (t_BmCommitCb)(struct bm_portal *p_BmPortalLow, uint8_t myverb);
  217 
  218 typedef struct {
  219     bool                        useStockpile;       /**<  */
  220     bool                        dynamicBpid;        /**< boolean indicates use of dynamic Bpid */
  221     bool                        useDepletion;       /**< boolean indicates use of depletion */
  222     uint32_t                    depletionThresholds[MAX_DEPLETION_THRESHOLDS];      /**< depletion-entry/exit thresholds, if useThresholds is set. NB:
  223                                                          this is only allowed if useThresholds is used and
  224                                                          when run in the control plane (which controls Bman CCSR) */
  225 } t_BmPoolDriverParams;
  226 
  227 typedef struct BmPool {
  228     uint8_t                     bpid;           /**< index of the buffer pool to encapsulate (0-63) */
  229     t_Handle                    h_Bm;
  230     t_Handle                    h_BmPortal;
  231     bool                        shadowMode;
  232     uint32_t                    numOfBuffers;   /**< Number of buffers use by this pool */
  233     t_BufferPoolInfo            bufferPoolInfo; /**< Data buffers pool information */
  234     uint32_t                    flags;          /**< bit-mask of BMAN_POOL_FLAG_*** options */
  235     t_Handle                    h_App;          /**< opaque user value passed as a parameter to 'cb' */
  236     t_BmDepletionCallback       *f_Depletion;   /**< depletion-entry/exit callback, if BMAN_POOL_FLAG_DEPLETION is set */
  237     uint32_t                    swDepletionCount;
  238     uint32_t                    hwDepletionCount;
  239     /* stockpile state - NULL unless BMAN_POOL_FLAG_STOCKPILE is set */
  240     struct bm_buffer            *sp;
  241     uint16_t                    spFill;
  242     uint8_t                     spBufsCmd;
  243     uint16_t                    spMaxBufs;
  244     uint16_t                    spMinBufs;
  245     bool                        noBuffCtxt;
  246 
  247     t_BmPoolDriverParams        *p_BmPoolDriverParams;
  248 } t_BmPool;
  249 
  250 typedef struct {
  251     t_BmUpdateCb            *f_BmUpdateCb;
  252     t_BmPrefetchCb          *f_BmPrefetchCb;
  253     t_BmCommitCb            *f_BmCommitCb;
  254 } t_BmPortalCallbacks;
  255 
  256 typedef struct {
  257     uint32_t                hwExtStructsMemAttr;
  258     struct bman_depletion   mask;
  259 } t_BmPortalDriverParams;
  260 
  261 typedef struct {
  262     t_Handle                h_Bm;
  263     struct bm_portal        *p_BmPortalLow;
  264     t_BmPortalCallbacks     cbs[BM_NUM_OF_RINGS];
  265     uintptr_t               irq;
  266     int                     cpu; /* This is used for any "core-affine" portals, ie. default portals
  267                                   * associated to the corresponding cpu. -1 implies that there is no core
  268                                   * affinity configured. */
  269     struct bman_depletion   pools[2];   /**< 2-element array. pools[0] is mask, pools[1] is snapshot. */
  270     uint32_t                flags;        /**< BMAN_PORTAL_FLAG_*** - static, caller-provided */
  271     uint32_t                irq_flags;
  272     int                     thresh_set;
  273     uint32_t                slowpoll;
  274     uint32_t                rcrProd;   /**< The wrap-around rcr_[prod|cons] counters are used to support BMAN_RELEASE_FLAG_WAIT_SYNC. */
  275     uint32_t                rcrCons;
  276     /**< 64-entry hash-table of pool objects that are tracking depletion
  277      * entry/exit (ie. BMAN_POOL_FLAG_DEPLETION). This isn't fast-path, so
  278      * we're not fussy about cache-misses and so forth - whereas the above
  279      * members should all fit in one cacheline.
  280      * BTW, with BM_MAX_NUM_OF_POOLS entries in the hash table and BM_MAX_NUM_OF_POOLS buffer pools to track,
  281      * you'll never guess the hash-function ... */
  282     t_BmPool                *depletionPoolsTable[BM_MAX_NUM_OF_POOLS];
  283     t_BmPortalDriverParams  *p_BmPortalDriverParams;
  284 } t_BmPortal;
  285 
  286 typedef struct {
  287     uint8_t                     partBpidBase;
  288     uint8_t                     partNumOfPools;
  289     uint32_t                    totalNumOfBuffers;      /**< total number of buffers */
  290     uint32_t                    fbprMemPartitionId;
  291     uint32_t                    fbprThreshold;
  292     uint16_t                    liodn;
  293 } t_BmDriverParams;
  294 
  295 typedef struct {
  296     uint8_t                     guestId;
  297     t_Handle                    h_BpidMm;
  298     t_Handle                    h_SpinLock;
  299     t_Handle                    h_Portals[DPAA_MAX_NUM_OF_SW_PORTALS];
  300     t_Handle                    h_Session;
  301     char                        moduleName[MODULE_NAME_SIZE];
  302     t_BmRegs                    *p_BmRegs;
  303     void                        *p_FbprBase;
  304     uint32_t                    exceptions;
  305     t_BmExceptionsCallback      *f_Exception;
  306     t_Handle                    h_App;
  307     uintptr_t                   errIrq;                 /**< error interrupt line; NO_IRQ if interrupts not used */
  308     t_BmDriverParams            *p_BmDriverParams;
  309 } t_Bm;
  310 
  311 static __inline__ void BmSetPortalHandle(t_Handle h_Bm, t_Handle h_Portal, e_DpaaSwPortal portalId)
  312 {
  313     ASSERT_COND(!((t_Bm*)h_Bm)->h_Portals[portalId] || !h_Portal);
  314     ((t_Bm*)h_Bm)->h_Portals[portalId] = h_Portal;
  315 }
  316 
  317 static __inline__ t_Handle BmGetPortalHandle(t_Handle h_Bm)
  318 {
  319     t_Bm *p_Bm = (t_Bm*)h_Bm;
  320     ASSERT_COND(p_Bm);
  321     return p_Bm->h_Portals[CORE_GetId()];
  322 }
  323 
  324 static __inline__ uint8_t BmUpdate(t_BmPortal *p_BmPortal, bmRingType_t type)
  325 {
  326     return p_BmPortal->cbs[type].f_BmUpdateCb(p_BmPortal->p_BmPortalLow);
  327 }
  328 
  329 static __inline__ void BmPrefetch(t_BmPortal *p_BmPortal, bmRingType_t type)
  330 {
  331     if (p_BmPortal->cbs[type].f_BmPrefetchCb)
  332         p_BmPortal->cbs[type].f_BmPrefetchCb(p_BmPortal->p_BmPortalLow);
  333 }
  334 
  335 static __inline__ void BmCommit(t_BmPortal *p_BmPortal, bmRingType_t type, uint8_t myverb)
  336 {
  337     p_BmPortal->cbs[type].f_BmCommitCb(p_BmPortal->p_BmPortalLow, myverb);
  338 }
  339 
  340 static __inline__ uint32_t BmBpidGet(t_Bm *p_Bm, bool force, uint32_t base)
  341 {
  342     uint64_t ans, size = 1;
  343     uint64_t alignment = 1;
  344 
  345     if (force)
  346     {
  347         if (MM_InRange(p_Bm->h_BpidMm, (uint64_t)base))
  348         {
  349             ans = MM_GetForce(p_Bm->h_BpidMm,
  350                               base,
  351                               size,
  352                               "BM BPID MEM");
  353             ans = base;
  354         }
  355         else if (p_Bm->h_Session)
  356         {
  357             t_BmIpcMsg              msg;
  358             t_BmIpcReply            reply;
  359             uint32_t                replyLength;
  360             t_BmIpcBpidParams       ipcBpid;
  361             t_Error                 errCode = E_OK;
  362 
  363             memset(&msg, 0, sizeof(t_BmIpcMsg));
  364             memset(&reply, 0, sizeof(t_BmIpcReply));
  365             ipcBpid.bpid        = (uint8_t)base;
  366             msg.msgId           = BM_FORCE_BPID;
  367             memcpy(msg.msgBody, &ipcBpid, sizeof(t_BmIpcBpidParams));
  368             replyLength = sizeof(uint32_t) + sizeof(uint32_t);
  369             if ((errCode = XX_IpcSendMessage(p_Bm->h_Session,
  370                                              (uint8_t*)&msg,
  371                                              sizeof(msg.msgId) + sizeof(t_BmIpcBpidParams),
  372                                              (uint8_t*)&reply,
  373                                              &replyLength,
  374                                              NULL,
  375                                              NULL)) != E_OK)
  376             {
  377                 REPORT_ERROR(MAJOR, errCode, NO_MSG);
  378                 return (uint32_t)ILLEGAL_BASE;
  379             }
  380             if (replyLength != (sizeof(uint32_t) + sizeof(uint32_t)))
  381             {
  382                 REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch"));
  383                 return (uint32_t)ILLEGAL_BASE;
  384             }
  385             memcpy((uint8_t*)&ans, reply.replyBody, sizeof(uint32_t));
  386         }
  387         else
  388         {
  389             DBG(WARNING, ("No Ipc - can't validate bpid."));
  390             ans = base;
  391         }
  392     }
  393     else
  394         ans = MM_Get(p_Bm->h_BpidMm,
  395                      size,
  396                      alignment,
  397                      "BM BPID MEM");
  398     KASSERT(ans < UINT32_MAX, ("Oops, %jx > UINT32_MAX!\n", (uintmax_t)ans));
  399     return (uint32_t)ans;
  400 }
  401 
  402 static __inline__ t_Error BmBpidPut(t_Bm *p_Bm, uint32_t base)
  403 {
  404     if (MM_InRange(p_Bm->h_BpidMm, (uint64_t)base))
  405     {
  406         if (MM_Put(p_Bm->h_BpidMm, (uint64_t)base) != base)
  407             return E_OK;
  408         else
  409             return ERROR_CODE(E_NOT_FOUND);
  410     }
  411     else if (p_Bm->h_Session)
  412     {
  413         t_BmIpcMsg              msg;
  414         t_BmIpcBpidParams       ipcBpid;
  415         t_Error                 errCode = E_OK;
  416 
  417         memset(&msg, 0, sizeof(t_BmIpcMsg));
  418         ipcBpid.bpid        = (uint8_t)base;
  419         msg.msgId           = BM_PUT_BPID;
  420         memcpy(msg.msgBody, &ipcBpid, sizeof(t_BmIpcBpidParams));
  421         if ((errCode = XX_IpcSendMessage(p_Bm->h_Session,
  422                                          (uint8_t*)&msg,
  423                                          sizeof(msg.msgId) + sizeof(t_BmIpcBpidParams),
  424                                          NULL,
  425                                          NULL,
  426                                          NULL,
  427                                          NULL)) != E_OK)
  428             RETURN_ERROR(MAJOR, errCode, NO_MSG);
  429     }
  430     else
  431         DBG(WARNING, ("No Ipc - can't validate bpid."));
  432     return E_OK;
  433 }
  434 
  435 /****************************************/
  436 /*       Inter-Module functions        */
  437 /****************************************/
  438 typedef enum e_BmInterModuleCounters {
  439     e_BM_IM_COUNTERS_FBPR = 0,
  440     e_BM_IM_COUNTERS_POOL_CONTENT,
  441     e_BM_IM_COUNTERS_POOL_SW_DEPLETION,
  442     e_BM_IM_COUNTERS_POOL_HW_DEPLETION
  443 } e_BmInterModuleCounters;
  444 
  445 
  446 t_Error BmSetPoolThresholds(t_Handle h_Bm, uint8_t bpid, const uint32_t *thresholds);
  447 t_Error BmUnSetPoolThresholds(t_Handle h_Bm, uint8_t bpid);
  448 uint8_t BmPortalAcquire(t_Handle h_BmPortal, uint8_t bpid, struct bm_buffer *bufs, uint8_t num);
  449 t_Error BmPortalRelease(t_Handle h_BmPortal, uint8_t bpid, struct bm_buffer *bufs, uint8_t num, uint32_t flags);
  450 t_Error BmPortalQuery(t_Handle h_BmPortal, struct bman_depletion *p_Pools, bool depletion);
  451 uint32_t BmGetCounter(t_Handle h_Bm, e_BmInterModuleCounters counter, uint8_t bpid);
  452 t_Error BmGetRevision(t_Handle h_Bm, t_BmRevisionInfo *p_BmRevisionInfo);
  453 
  454 
  455 #endif /* __BM_H */

Cache object: 5ecb450001fcff068ce6e7c59f93202a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.