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

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-2019 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