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