trunk.h (1889B)
1 /** \file include/shared/trunk.h 2 * 3 * 4 * This file contains definitions for papi to use in context of 5 * the trunk module. 6 */ 7 8 /* 9 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 10 * 11 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 12 */ 13 14 #ifndef _SHR_TRUNK_H 15 #define _SHR_TRUNK_H 16 17 #define _SHR_TRUNK_ID_BIT 25 18 #define _SHR_TRUNK_STACKING_BIT 24 19 #define _SHR_TRUNK_ID_MASK 1 << _SHR_TRUNK_ID_BIT 20 #define _SHR_TRUNK_STACKING_MASK 1 << _SHR_TRUNK_STACKING_BIT 21 #define _SHR_TRUNK_POOL_BITS 3 22 #define _SHR_TRUNK_POOL_OFFSET 17 23 #define _SHR_TRUNK_GROUP_BITS 17 24 #define _SHR_TRUNK_GROUP_OFFSET 0 25 26 #define _SHR_TRUNK_ID_SET(trunk_id, pool, group) \ 27 (trunk_id = (_SHR_TRUNK_ID_MASK) | \ 28 ((pool) << (_SHR_TRUNK_POOL_OFFSET)) | \ 29 ((group) << (_SHR_TRUNK_GROUP_OFFSET))) 30 31 #define _SHR_TRUNK_ID_POOL_GET(pool, trunk_id) \ 32 (pool = ((trunk_id) & ((1 << (_SHR_TRUNK_POOL_OFFSET + _SHR_TRUNK_POOL_BITS)) - 1)) >> (_SHR_TRUNK_POOL_OFFSET)) 33 34 #define _SHR_TRUNK_ID_GROUP_GET(group, trunk_id) \ 35 (group = ((trunk_id) & ((1 << (_SHR_TRUNK_GROUP_OFFSET + _SHR_TRUNK_GROUP_BITS)) - 1)) >> (_SHR_TRUNK_GROUP_OFFSET)) 36 37 #define _SHR_TRUNK_ID_IS_VALID(trunk_id) \ 38 (((trunk_id) & (_SHR_TRUNK_ID_MASK)) != 0) 39 40 #define _SHR_TRUNK_STACKING_ID_SET(trunk_id, peer_tm_domain) \ 41 (trunk_id = ((peer_tm_domain) | (_SHR_TRUNK_ID_MASK) | (_SHR_TRUNK_STACKING_MASK))) 42 43 #define _SHR_TRUNK_ID_IS_STACKING(trunk_id) \ 44 ((((trunk_id) & (_SHR_TRUNK_STACKING_MASK)) != 0) && (((trunk_id) & (_SHR_TRUNK_ID_MASK)) != 0)) 45 46 #define _SHR_TRUNK_STACKING_PEER_TMD_GET(peer_tm_domain, trunk_id) \ 47 ((peer_tm_domain) = ((peer_tm_domain) & ( ~((_SHR_TRUNK_ID_MASK) | (_SHR_TRUNK_STACKING_MASK)) ))) 48 49 #endif /* _SHR_TRUNK_H */