openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

ulink_pack.h (1961B)


      1 /* 
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2019 Broadcom Inc. All rights reserved.
      6  *
      7  * File:        ulink_pack.h
      8  * Purpose:     Interface to pack and unpack routines common to
      9  *              SDK and uKernel for:
     10  *              - ULINK control message 
     11  *
     12  *              This is to be shared between SDK host and uKernel.
     13  */
     14 
     15 
     16 #ifndef   _SOC_SHARED_ULINK_PACK_H_
     17 #define   _SOC_SHARED_ULINK_PACK_H_
     18 
     19 #ifdef BCM_UKERNEL
     20 /* Build for uKernel not SDK */
     21 #include "sdk_typedefs.h"
     22 #else
     23 #include <sal/types.h>
     24 #endif
     25 
     26 #define UL_MAX_NUM_PORTS                  256
     27 #define UL_PBMP_PORT_MAX                  UL_MAX_NUM_PORTS 
     28 #define UL_PBMP_WORD_WIDTH                32
     29 #define UL_PBMP_BYTE_WIDTH                8
     30 #define UL_PBMP_WBIT(port)                (1U<<((port) % UL_PBMP_WORD_WIDTH))
     31 #define UL_PBMP_WENT(port)                ((port)/UL_PBMP_WORD_WIDTH)
     32 #define UL_PBMP_WORD_GET(bm, word)        (bm[(word)])
     33 
     34 #define UL_PBMP_WIDTH     (((UL_PBMP_PORT_MAX + 32 - 1)/32)*32)
     35 
     36 #define UL_PBMP_WORD_MAX      \
     37     ((UL_PBMP_WIDTH + UL_PBMP_WORD_WIDTH-1) / UL_PBMP_WORD_WIDTH)
     38 
     39 #define UL_PBMP_ENTRY(bm, port)   \
     40     (UL_PBMP_WORD_GET(bm, UL_PBMP_WENT(port)))
     41 #define UL_PBMP_MEMBER(bm, port)  \
     42     ((UL_PBMP_ENTRY(bm, port) & UL_PBMP_WBIT(port)) != 0)
     43 
     44 #define UL_PBMP_ASSIGN(dst, src)  (dst) = (src)
     45 
     46 typedef struct __attribute__ ((__packed__)) _soc_ulink_pbm_msg {
     47     uint8 flags;         /* Not used currently */
     48     uint8 words;         /* Number of pbits words valid in message */
     49     uint32 pbits[UL_PBMP_WORD_MAX]; /* PBMP of link up ports */
     50 } soc_ulink_pbm_msg_t;
     51 
     52 #define UC_LINK_DMA_BUFFER_LEN      sizeof(soc_ulink_pbm_msg_t)
     53 
     54 extern uint8 *
     55 shr_ulink_pbm_unpack(uint8 *bufp, soc_ulink_pbm_msg_t *msg);
     56 
     57 extern uint8 *
     58 shr_ulink_pbm_pack(uint8 *bufp, soc_ulink_pbm_msg_t *msg);
     59 
     60 #endif /* _SOC_SHARED_OLP_PACK_H_ */
     61 
     62