rcpu.h (2389B)
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-2020 Broadcom Inc. All rights reserved. 6 */ 7 8 #ifndef _BCM_INT_RCPU_H 9 #define _BCM_INT_RCPU_H 10 11 #include <soc/rcpu.h> 12 13 #ifdef INCLUDE_RCPU 14 15 extern int _bcm_esw_rcpu_init(int unit); 16 extern int _bcm_esw_rcpu_deinit(int unit); 17 extern int _bcm_rcpu_tx(int unit, bcm_pkt_t *pkt, void *cookie); 18 extern int _bcm_rcpu_tx_list(int unit, bcm_pkt_t *pkt, 19 bcm_pkt_cb_f all_done_cb, void *cookie); 20 extern int _bcm_rcpu_tx_array(int unit, bcm_pkt_t **pkt, int count, 21 bcm_pkt_cb_f all_done_cb, void *cookie); 22 extern int 23 _bcm_esw_rcpu_tocpu_rx(int unit, uint8 *pkt, int pkt_len, rcpu_encap_info_t *info); 24 25 typedef struct bcm_rcpu_cfg_s { 26 soc_rcpu_cfg_t rcpu_cfg; 27 soc_pbmp_t pbmp; /* remote CMIC RX port bitmap */ 28 uint32 dot1pri[8]; /* 802.1p priority to be used for each COS */ 29 uint32 mh_tc[8]; /* Module header traffic class to be used for each COS */ 30 uint32 cpu_tc[8]; /* CPU traffic class to be used for each COS */ 31 } bcm_rcpu_cfg_t; 32 33 #define RCPU_MAX_BUF_LEN (RX_PKT_SIZE_DFLT + 32 + 64) 34 35 #define BCM_RCPU_CFG(_unit) (&BCM_RCPU_CONTROL(_unit)->cfg) 36 37 #define BCM_RCPU_CFG_LMAC(_unit) \ 38 BCM_RCPU_CONTROL(_unit)->cfg.rcpu_cfg.dst_mac 39 #define BCM_RCPU_CFG_SRC_MAC(_unit) \ 40 BCM_RCPU_CONTROL(_unit)->cfg.rcpu_cfg.src_mac 41 42 #define BCM_RCPU_F_INITED 0x10000 43 44 typedef struct bcm_rcpu_control_s { 45 bcm_rcpu_cfg_t cfg; 46 sal_mutex_t lock; 47 uint32 flags; 48 } _bcm_rcpu_control_t; 49 50 #define BCM_RCPU_MAX_UNITS BCM_UNITS_MAX 51 extern _bcm_rcpu_control_t *_bcm_rcpu_control[BCM_RCPU_MAX_UNITS]; 52 53 #define BCM_RCPU_CONTROL(_unit) _bcm_rcpu_control[_unit] 54 #define BCM_RCPU_UNIT_VALID(_unit) ((_unit) >= 0 && \ 55 (_unit) < BCM_RCPU_MAX_UNITS && \ 56 BCM_RCPU_CONTROL(_unit) != 0) 57 58 #define RCPU_UNIT_LOCK(unit) sal_mutex_take(BCM_RCPU_CONTROL((unit))->lock, \ 59 sal_mutex_FOREVER) 60 #define RCPU_UNIT_UNLOCK(unit) sal_mutex_give(BCM_RCPU_CONTROL((unit))->lock) 61 62 #define BCM_RCPU_RX_PRIO BCM_RX_PRIO_MAX 63 64 #endif /* INCLUDE_RCPU */ 65 66 #endif /* _BCM_INT_RCPU_H */ 67