/**************************************************************************** Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED. This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT be copied by any method or incorporated into another program without the express written consent of Aerospace C.Power. This Information or any portion thereof remains the property of Aerospace C.Power. The Information contained herein is believed to be accurate and Aerospace C.Power assumes no responsibility or liability for its use in any way and conveys no license or title under any patent or copyright and makes no representation or warranty that this Information is free from patent or copyright infringement. ****************************************************************************/ #ifndef PLC_MAC_CFG_H #define PLC_MAC_CFG_H #ifdef __cplusplus extern "C" { #endif #define MAX_PDEV_NUM 1 #if PLC_SUPPORT_DBG_PKT_MODE #define MAX_VDEV_NUM 2 #else #define MAX_VDEV_NUM 1 #endif /* max wireless pdev num */ #define MAX_RF_PDEV_NUM 1 /* max wireless vdev num */ #define MAX_RF_VDEV_NUM 1 #define PLC_SG_MAX_MSDU_SIZE 2076 //2048 /* * TODO: resv value, to be refined later * sizeof(rx_mpdu_start) + \ * sizeof(rx_mpdu_end) + \ * sizeof(rx_pb_start) + \ * sizeof(rx_pb_end) */ #define PLC_HW_RX_DESC_SIZE (16 << 2) /* this should include FC length */ #define PLC_RX_BUF_RESV_SIZE (PLC_HW_RX_DESC_SIZE) #define PLC_RX_BUF_DATA_LEN (PLC_FC_LEN + PLC_SG_MAX_MSDU_SIZE) #define PLC_HW_RX_BUF_SIZE (PLC_RX_BUF_RESV_SIZE + PLC_SG_MAX_MSDU_SIZE) #define MAC_BCAST_DEF_RETRY_CNT (1) #define MAC_BCAST_MAX_RETRY_CNT (5) /* default retry cnt for mac layer */ #define MAC_DEF_RETRY_CNT (5) #define MAC_UCAST_MAX_RETRY_CNT (5) /* default retry cnt for cco bcn, 0 means not retry, try once */ #define PLC_BCN_DEF_CCO_RETRY_CNT (1) /* default retry cnt for sta bcn, 0 means not retry, try once */ #define PLC_BCN_DEF_STA_RETRY_CNT (1) /* default retry cnt for iot sunsonal cco bcn, 0 means not retry, try once */ #define PLC_BCN_DEF_CCO_RETRY_CNT_IOT_SUNSONAL (2) /* default retry cnt for iot sunsonal sta sta bcn, 0 means not retry, try once */ #define PLC_BCN_DEF_STA_RETRY_CNT_IOT_SUNSONAL (2) /* default retry cnt for detect pkt */ #define PLC_BCN_DEF_DETECT_RETRY_CNT (1) /* rf retry cnt */ #define MAC_RF_BCAST_DEF_RETRY_CNT (1) #define MAC_RF_BCAST_MAX_RETRY_CNT (3) #define MAC_RF_DEF_RETRY_CNT (3) #define MAC_RF_UCAST_MAX_RETRY_CNT (3) /* RIFS config */ #define MAC_MIN_SOF_SACK_RIFS_TMR 400 #define MAC_MAX_SOF_SACK_RIFS_TMR 2300 #define MAC_FORCE_RIFS_US 400 /*final tx_rifs = MAC_FORCE_RIFS_US + MAC_TX_ADDTION_RIFS_US */ #define MAC_TX_ADDTION_RIFS_US 100 /*final rx_rifs = MAC_FORCE_RIFS_US + MAC_RX_ADDTION_RIFS_US */ #define MAC_RX_ADDTION_RIFS_US 1900 /* Note: for cert mode, final rifs >= 900 */ /*final cert_tx_rifs = MAC_FORCE_RIFS_US + MAC_CERT_TX_ADDTION_RIFS_US */ #define MAC_CERT_TX_ADDTION_RIFS_US 500 /*final cert_rx_rifs = MAC_FORCE_RIFS_US + MAC_CERT_RX_ADDTION_RIFS_US */ #define MAC_CERT_RX_ADDTION_RIFS_US 1900 /* for special rifs addtion. */ #define MAC_SPECIAL_RIFS_US 1000 /* final rifs = MAC_SPECIAL_RIFS_US + MAC_SPECIAL_TX_ADDTION_RIFS_US */ #define MAC_SPECIAL_TX_ADDTION_RIFS_US 0 /* final rifs = MAC_SPECIAL_RIFS_US + MAC_SPECIAL_RX_ADDTION_RIFS_US */ #define MAC_SPECIAL_RX_ADDTION_RIFS_US 1300 /* final rifs = MAC_SPECIAL_RIFS_US + MAC_SPECIAL_CERT_TX_ADDTION_RIFS_US */ #define MAC_SPECIAL_CERT_TX_ADDTION_RIFS_US 0 /* final rifs = MAC_SPECIAL_RIFS_US + MAC_SPECIAL_CERT_RX_ADDTION_RIFS_US */ #define MAC_SPECIAL_CERT_RX_ADDTION_RIFS_US 1300 /* CIFS config */ #define MAC_MIN_SOF_CIFS_TMR 350 #define MAC_MAX_SOF_CIFS_TMR 1000 #define MAC_FORCE_CIFS_US 400 #define MAC_SPECIAL_CIFS_US 400 //TODO: check the final value /*********************rf mac ifs configuration****************************/ /* the macros indicate the time of backoff */ /* define rf mac eifs 70ms */ #define RF_MAC_EIFS_US (70000) /* define rf mac cifs 800us */ #define RF_MAC_CIFS_US (800) /* define rf mac bifs 800us */ #define RF_MAC_BIFS_US (800) /* define rf mac rifs 800 - 2300us */ #define RF_MAC_TX_RIFS_US (900) /* define rf mac rifs 800 - 2300us */ #define RF_MAC_RX_RIFS_US (2300) /* define rf mac rx sack certification margin, 1000us */ #define RF_MAC_RX_SACK_CERT_MARGIN (1000) /* spg rf cifs */ #define SPG_RF_MAC_CIFS_US (1600) /* spg rf bifs */ #define SPG_RF_MAC_BIFS_US (1600) /* spg rf rifs 1600 ~ 5000us */ #define SPG_RF_MAC_TX_RIFS_US (1700) /* spg rf rifs 1600 ~ 5000us */ #define SPG_RF_MAC_RX_RIFS_US (5000) /* mac zc config */ /* CCO support max ntb count */ #define MAC_ZC_NTB_SUPPORT_CNT_CCO (12000) #if RUN_IN_PSRAM /* STA support max ntb count */ #define MAC_ZC_NTB_SUPPORT_CNT_STA (3000) /* STA 3phase support max ntb count */ #define MAC_ZC_NTB_SUPPORT_CNT_STA_3P (9000) #else /* STA support max ntb count */ #define MAC_ZC_NTB_SUPPORT_CNT_STA (1902) /* STA 3phase support max ntb count */ #define MAC_ZC_NTB_SUPPORT_CNT_STA_3P (1902) #endif /* Note the max buffer size for per phase. * for 50HZ system. full period collect. per phase buffer max count = 8400. */ #define MAC_ZC_BUF_PER_PHASE_MAX (4200) //(8400) /* ring buffer max size for cco */ #define MAC_ZC_BUF_SIZE_MAX_CCO (MAC_ZC_BUF_PER_PHASE_MAX * 3) /* ring buffer max size for sta */ #define MAC_ZC_BUF_SIZE_MAX_STA MAC_ZC_BUF_PER_PHASE_MAX /* ring buffer max size for 3phase sta */ #define MAC_ZC_BUF_SIZE_MAX_STA_3P (MAC_ZC_BUF_PER_PHASE_MAX * 3) /* mpdu payload symbol number max */ #define MAC_MPDU_PL_SYMBOL_NUM_SG_SPG 511 #define MAC_MPDU_PL_SYMBOL_NUM_I1901 787 #ifdef __cplusplus } #endif #endif // !PLC_MAC_CFG_H