From bzolnier@gmail.com Fri Jul 10 15:59:55 2009 From: Bartlomiej Zolnierkiewicz Date: Fri, 03 Jul 2009 16:06:47 +0200 Subject: Staging: rtl8192su: remove USB_TX_DRIVER_AGGREGATION_ENABLE ifdefs To: "Greg Kroah-Hartman" Cc: Bartlomiej Zolnierkiewicz , linux-kernel@vger.kernel.org Message-ID: <20090703140647.7303.99932.sendpatchset@localhost.localdomain> From: Bartlomiej Zolnierkiewicz Signed-off-by: Bartlomiej Zolnierkiewicz Signed-off-by: Greg Kroah-Hartman --- drivers/staging/rtl8192su/Makefile | 1 drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c | 8 drivers/staging/rtl8192su/ieee80211/rtl819x_HT.h | 3 drivers/staging/rtl8192su/ieee80211/rtl819x_HTProc.c | 3 drivers/staging/rtl8192su/r8192U.h | 31 - drivers/staging/rtl8192su/r8192U_core.c | 327 ---------------- drivers/staging/rtl8192su/r819xU_HTType.h | 3 7 files changed, 376 deletions(-) --- a/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c +++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c @@ -2237,11 +2237,7 @@ void ieee80211_softmac_xmit(struct ieee8 #if 1 /* if xmit available, just xmit it immediately, else just insert it to the wait queue */ for(i = 0; i < txb->nr_frags; i++) { -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - if ((skb_queue_len(&ieee->skb_drv_aggQ[queue_index]) != 0) || -#else if ((skb_queue_len(&ieee->skb_waitQ[queue_index]) != 0) || -#endif (!ieee->check_nic_enough_desc(ieee->dev,queue_index))||\ (ieee->queue_stop)) { /* insert the skb packet to the wait queue */ @@ -2250,11 +2246,7 @@ void ieee80211_softmac_xmit(struct ieee8 * */ //printk("error:no descriptor left@queue_index %d, %d, %d\n", queue_index, skb_queue_len(&ieee->skb_waitQ[queue_index]), ieee->check_nic_enough_desc(ieee->dev,queue_index)); //ieee80211_stop_queue(ieee); -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - skb_queue_tail(&ieee->skb_drv_aggQ[queue_index], txb->fragments[i]); -#else skb_queue_tail(&ieee->skb_waitQ[queue_index], txb->fragments[i]); -#endif }else{ ieee->softmac_data_hard_start_xmit( txb->fragments[i], --- a/drivers/staging/rtl8192su/ieee80211/rtl819x_HT.h +++ b/drivers/staging/rtl8192su/ieee80211/rtl819x_HT.h @@ -324,9 +324,6 @@ typedef struct _RT_HIGH_THROUGHPUT{ u8 RxReorderPendingTime; u16 RxReorderDropCounter; -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - u8 UsbTxAggrNum; -#endif // Add for Broadcom(Linksys) IOT. Joseph u8 bIsPeerBcm; --- a/drivers/staging/rtl8192su/ieee80211/rtl819x_HTProc.c +++ b/drivers/staging/rtl8192su/ieee80211/rtl819x_HTProc.c @@ -102,9 +102,6 @@ void HTUpdateDefaultSetting(struct ieee8 pHTInfo->RxReorderWinSize = 64; pHTInfo->RxReorderPendingTime = 30; -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - pHTInfo->UsbTxAggrNum = 4; -#endif } --- a/drivers/staging/rtl8192su/Makefile +++ b/drivers/staging/rtl8192su/Makefile @@ -12,7 +12,6 @@ EXTRA_CFLAGS += -DRTL8190_Download_Firmw EXTRA_CFLAGS += -DRTL8192S_PREPARE_FOR_NORMAL_RELEASE EXTRA_CFLAGS += -DRTL8192SU_DISABLE_IQK=1 -#EXTRA_CFLAGS += -DUSB_TX_DRIVER_AGGREGATION_ENABLE=0 #EXTRA_CFLAGS += -DRTL8192SU_DISABLE_CCK_RATE=0 EXTRA_CFLAGS += -DRTL8192S_DISABLE_FW_DM=0 EXTRA_CFLAGS += -DDISABLE_BB_RF=0 --- a/drivers/staging/rtl8192su/r8192U_core.c +++ b/drivers/staging/rtl8192su/r8192U_core.c @@ -2163,249 +2163,6 @@ int rtl8192_hard_start_xmit(struct sk_bu void rtl8192_try_wake_queue(struct net_device *dev, int pri); -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE -u16 DrvAggr_PaddingAdd(struct net_device *dev, struct sk_buff *skb) -{ - u16 PaddingNum = 256 - ((skb->len + TX_PACKET_DRVAGGR_SUBFRAME_SHIFT_BYTES) % 256); - return (PaddingNum&0xff); -} - -u8 MRateToHwRate8190Pci(u8 rate); -u8 QueryIsShort(u8 TxHT, u8 TxRate, cb_desc *tcb_desc); -u8 MapHwQueueToFirmwareQueue(u8 QueueID); -struct sk_buff *DrvAggr_Aggregation(struct net_device *dev, struct ieee80211_drv_agg_txb *pSendList) -{ - struct ieee80211_device *ieee = netdev_priv(dev); - struct r8192_priv *priv = ieee80211_priv(dev); - cb_desc *tcb_desc = NULL; - u8 i; - u32 TotalLength; - struct sk_buff *skb; - struct sk_buff *agg_skb; - tx_desc_819x_usb_aggr_subframe *tx_agg_desc = NULL; - tx_fwinfo_819x_usb *tx_fwinfo = NULL; - - // - // Local variable initialization. - // - /* first skb initialization */ - skb = pSendList->tx_agg_frames[0]; - TotalLength = skb->len; - - /* Get the total aggregation length including the padding space and - * sub frame header. - */ - for(i = 1; i < pSendList->nr_drv_agg_frames; i++) { - TotalLength += DrvAggr_PaddingAdd(dev, skb); - skb = pSendList->tx_agg_frames[i]; - TotalLength += (skb->len + TX_PACKET_DRVAGGR_SUBFRAME_SHIFT_BYTES); - } - - /* allocate skb to contain the aggregated packets */ - agg_skb = dev_alloc_skb(TotalLength + ieee->tx_headroom); - memset(agg_skb->data, 0, agg_skb->len); - skb_reserve(agg_skb, ieee->tx_headroom); - -// RT_DEBUG_DATA(COMP_SEND, skb->cb, sizeof(skb->cb)); - /* reserve info for first subframe Tx descriptor to be set in the tx function */ - skb = pSendList->tx_agg_frames[0]; - tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); - tcb_desc->drv_agg_enable = 1; - tcb_desc->pkt_size = skb->len; - tcb_desc->DrvAggrNum = pSendList->nr_drv_agg_frames; - printk("DrvAggNum = %d\n", tcb_desc->DrvAggrNum); -// RT_DEBUG_DATA(COMP_SEND, skb->cb, sizeof(skb->cb)); -// printk("========>skb->data ======> \n"); -// RT_DEBUG_DATA(COMP_SEND, skb->data, skb->len); - memcpy(agg_skb->cb, skb->cb, sizeof(skb->cb)); - memcpy(skb_put(agg_skb,skb->len),skb->data,skb->len); - - for(i = 1; i < pSendList->nr_drv_agg_frames; i++) { - /* push the next sub frame to be 256 byte aline */ - skb_put(agg_skb,DrvAggr_PaddingAdd(dev,skb)); - - /* Subframe drv Tx descriptor and firmware info setting */ - skb = pSendList->tx_agg_frames[i]; - tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); - tx_agg_desc = (tx_desc_819x_usb_aggr_subframe *)agg_skb->tail; - tx_fwinfo = (tx_fwinfo_819x_usb *)(agg_skb->tail + sizeof(tx_desc_819x_usb_aggr_subframe)); - - memset(tx_fwinfo,0,sizeof(tx_fwinfo_819x_usb)); - /* DWORD 0 */ - tx_fwinfo->TxHT = (tcb_desc->data_rate&0x80)?1:0; - tx_fwinfo->TxRate = MRateToHwRate8190Pci(tcb_desc->data_rate); - tx_fwinfo->EnableCPUDur = tcb_desc->bTxEnableFwCalcDur; - tx_fwinfo->Short = QueryIsShort(tx_fwinfo->TxHT, tx_fwinfo->TxRate, tcb_desc); - if(tcb_desc->bAMPDUEnable) {//AMPDU enabled - tx_fwinfo->AllowAggregation = 1; - /* DWORD 1 */ - tx_fwinfo->RxMF = tcb_desc->ampdu_factor; - tx_fwinfo->RxAMD = tcb_desc->ampdu_density&0x07;//ampdudensity - } else { - tx_fwinfo->AllowAggregation = 0; - /* DWORD 1 */ - tx_fwinfo->RxMF = 0; - tx_fwinfo->RxAMD = 0; - } - - /* Protection mode related */ - tx_fwinfo->RtsEnable = (tcb_desc->bRTSEnable)?1:0; - tx_fwinfo->CtsEnable = (tcb_desc->bCTSEnable)?1:0; - tx_fwinfo->RtsSTBC = (tcb_desc->bRTSSTBC)?1:0; - tx_fwinfo->RtsHT = (tcb_desc->rts_rate&0x80)?1:0; - tx_fwinfo->RtsRate = MRateToHwRate8190Pci((u8)tcb_desc->rts_rate); - tx_fwinfo->RtsSubcarrier = (tx_fwinfo->RtsHT==0)?(tcb_desc->RTSSC):0; - tx_fwinfo->RtsBandwidth = (tx_fwinfo->RtsHT==1)?((tcb_desc->bRTSBW)?1:0):0; - tx_fwinfo->RtsShort = (tx_fwinfo->RtsHT==0)?(tcb_desc->bRTSUseShortPreamble?1:0):\ - (tcb_desc->bRTSUseShortGI?1:0); - - /* Set Bandwidth and sub-channel settings. */ - if(priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20_40) - { - if(tcb_desc->bPacketBW) { - tx_fwinfo->TxBandwidth = 1; - tx_fwinfo->TxSubCarrier = 0; //By SD3's Jerry suggestion, use duplicated mode - } else { - tx_fwinfo->TxBandwidth = 0; - tx_fwinfo->TxSubCarrier = priv->nCur40MhzPrimeSC; - } - } else { - tx_fwinfo->TxBandwidth = 0; - tx_fwinfo->TxSubCarrier = 0; - } - - /* Fill Tx descriptor */ - memset(tx_agg_desc, 0, sizeof(tx_desc_819x_usb_aggr_subframe)); - /* DWORD 0 */ - //tx_agg_desc->LINIP = 0; - //tx_agg_desc->CmdInit = 1; - tx_agg_desc->Offset = sizeof(tx_fwinfo_819x_usb) + 8; - /* already raw data, need not to substract header length */ - tx_agg_desc->PktSize = skb->len & 0xffff; - - /*DWORD 1*/ - tx_agg_desc->SecCAMID= 0; - tx_agg_desc->RATid = tcb_desc->RATRIndex; -#if 0 - /* Fill security related */ - if( pTcb->bEncrypt && !Adapter->MgntInfo.SecurityInfo.SWTxEncryptFlag) - { - EncAlg = SecGetEncryptionOverhead( - Adapter, - &EncryptionMPDUHeadOverhead, - &EncryptionMPDUTailOverhead, - NULL, - NULL, - FALSE, - FALSE); - //2004/07/22, kcwu, EncryptionMPDUHeadOverhead has been added in previous code - //MPDUOverhead = EncryptionMPDUHeadOverhead + EncryptionMPDUTailOverhead; - MPDUOverhead = EncryptionMPDUTailOverhead; - tx_agg_desc->NoEnc = 0; - RT_TRACE(COMP_SEC, DBG_LOUD, ("******We in the loop SecCAMID is %d SecDescAssign is %d The Sec is %d********\n",tx_agg_desc->SecCAMID,tx_agg_desc->SecDescAssign,EncAlg)); - //CamDumpAll(Adapter); - } - else -#endif - { - //MPDUOverhead = 0; - tx_agg_desc->NoEnc = 1; - } -#if 0 - switch(EncAlg){ - case NO_Encryption: - tx_agg_desc->SecType = 0x0; - break; - case WEP40_Encryption: - case WEP104_Encryption: - tx_agg_desc->SecType = 0x1; - break; - case TKIP_Encryption: - tx_agg_desc->SecType = 0x2; - break; - case AESCCMP_Encryption: - tx_agg_desc->SecType = 0x3; - break; - default: - tx_agg_desc->SecType = 0x0; - break; - } -#else - tx_agg_desc->SecType = 0x0; -#endif - - if (tcb_desc->bHwSec) { - switch (priv->ieee80211->pairwise_key_type) - { - case KEY_TYPE_WEP40: - case KEY_TYPE_WEP104: - tx_agg_desc->SecType = 0x1; - tx_agg_desc->NoEnc = 0; - break; - case KEY_TYPE_TKIP: - tx_agg_desc->SecType = 0x2; - tx_agg_desc->NoEnc = 0; - break; - case KEY_TYPE_CCMP: - tx_agg_desc->SecType = 0x3; - tx_agg_desc->NoEnc = 0; - break; - case KEY_TYPE_NA: - tx_agg_desc->SecType = 0x0; - tx_agg_desc->NoEnc = 1; - break; - } - } - - tx_agg_desc->QueueSelect = MapHwQueueToFirmwareQueue(tcb_desc->queue_index); - tx_agg_desc->TxFWInfoSize = sizeof(tx_fwinfo_819x_usb); - - tx_agg_desc->DISFB = tcb_desc->bTxDisableRateFallBack; - tx_agg_desc->USERATE = tcb_desc->bTxUseDriverAssingedRate; - - tx_agg_desc->OWN = 1; - - //DWORD 2 - /* According windows driver, it seems that there no need to fill this field */ - //tx_agg_desc->TxBufferSize= (u32)(skb->len - USB_HWDESC_HEADER_LEN); - - /* to fill next packet */ - skb_put(agg_skb,TX_PACKET_DRVAGGR_SUBFRAME_SHIFT_BYTES); - memcpy(skb_put(agg_skb,skb->len),skb->data,skb->len); - } - - for(i = 0; i < pSendList->nr_drv_agg_frames; i++) { - dev_kfree_skb_any(pSendList->tx_agg_frames[i]); - } - - return agg_skb; -} - -/* NOTE: - This function return a list of PTCB which is proper to be aggregate with the input TCB. - If no proper TCB is found to do aggregation, SendList will only contain the input TCB. -*/ -u8 DrvAggr_GetAggregatibleList(struct net_device *dev, struct sk_buff *skb, - struct ieee80211_drv_agg_txb *pSendList) -{ - struct ieee80211_device *ieee = netdev_priv(dev); - PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; - u16 nMaxAggrNum = pHTInfo->UsbTxAggrNum; - cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); - u8 QueueID = tcb_desc->queue_index; - - do { - pSendList->tx_agg_frames[pSendList->nr_drv_agg_frames++] = skb; - if(pSendList->nr_drv_agg_frames >= nMaxAggrNum) { - break; - } - - } while((skb = skb_dequeue(&ieee->skb_drv_aggQ[QueueID]))); - - RT_TRACE(COMP_AMSDU, "DrvAggr_GetAggregatibleList, nAggrTcbNum = %d \n", pSendList->nr_drv_agg_frames); - return pSendList->nr_drv_agg_frames; -} -#endif static void rtl8192_tx_isr(struct urb *tx_urb) { @@ -2490,54 +2247,6 @@ static void rtl8192_tx_isr(struct urb *t return; //modified by david to avoid further processing AMSDU } -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - else if ((skb_queue_len(&priv->ieee80211->skb_drv_aggQ[queue_index])!= 0)&&\ - (!(priv->ieee80211->queue_stop))) { - // Tx Driver Aggregation process - /* The driver will aggregation the packets according to the following stets - * 1. check whether there's tx irq available, for it's a completion return - * function, it should contain enough tx irq; - * 2. check pakcet type; - * 3. intialize sendlist, check whether the to-be send packet no greater than 1 - * 4. aggregation the packets, and fill firmware info and tx desc to it, etc. - * 5. check whehter the packet could be sent, otherwise just insert to wait head - * */ - skb = skb_dequeue(&priv->ieee80211->skb_drv_aggQ[queue_index]); - if(!check_nic_enough_desc(dev, queue_index)) { - skb_queue_head(&(priv->ieee80211->skb_drv_aggQ[queue_index]), skb); - return; - } - - { - /*TODO*/ - /* - u8* pHeader = skb->data; - - if(IsMgntQosData(pHeader) || - IsMgntQData_Ack(pHeader) || - IsMgntQData_Poll(pHeader) || - IsMgntQData_Poll_Ack(pHeader) - ) - */ - { - struct ieee80211_drv_agg_txb SendList; - - memset(&SendList, 0, sizeof(struct ieee80211_drv_agg_txb)); - if(DrvAggr_GetAggregatibleList(dev, skb, &SendList) > 1) { - skb = DrvAggr_Aggregation(dev, &SendList); - -#if 0 - printk("=============>to send aggregated packet!\n"); - RT_DEBUG_DATA(COMP_SEND, skb->cb, sizeof(skb->cb)); - printk("\n=================skb->len = %d\n", skb->len); - RT_DEBUG_DATA(COMP_SEND, skb->data, skb->len); -#endif - } - } - priv->ieee80211->softmac_hard_start_xmit(skb, dev); - } - } -#endif } } @@ -3343,12 +3052,6 @@ short rtl8192SU_tx(struct net_device *de tx_desc->TxSubCarrier = 0; } -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - if (tcb_desc->drv_agg_enable) - { - //tx_desc->Tx_INFO_RSVD = (tcb_desc->DrvAggrNum & 0x1f) << 1; //92su del - } -#endif //memset(tx_desc, 0, sizeof(tx_desc_819x_usb)); /* DWORD 0 */ @@ -3356,11 +3059,6 @@ short rtl8192SU_tx(struct net_device *de //tx_desc->CmdInit = 1; //92su del tx_desc->Offset = USB_HWDESC_HEADER_LEN; -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - if (tcb_desc->drv_agg_enable) { - tx_desc->PktSize = tcb_desc->pkt_size;//FIXLZM - } else -#endif { tx_desc->PktSize = (skb->len - USB_HWDESC_HEADER_LEN) & 0xffff; } @@ -3469,11 +3167,6 @@ short rtl8192SU_tx(struct net_device *de #endif tx_desc->OWN = 1; -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - if (tcb_desc->drv_agg_enable) { - tx_desc->TxBufferSize = tcb_desc->pkt_size + sizeof(tx_fwinfo_819x_usb); - } else -#endif { //DWORD 2 //tx_desc->TxBufferSize = (u32)(skb->len - USB_HWDESC_HEADER_LEN); @@ -3653,12 +3346,6 @@ short rtl8192_tx(struct net_device *dev, tx_fwinfo->TxSubCarrier = 0; } -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - if (tcb_desc->drv_agg_enable) - { - tx_fwinfo->Tx_INFO_RSVD = (tcb_desc->DrvAggrNum & 0x1f) << 1; - } -#endif /* Fill Tx descriptor */ memset(tx_desc, 0, sizeof(tx_desc_819x_usb)); /* DWORD 0 */ @@ -3666,11 +3353,6 @@ short rtl8192_tx(struct net_device *dev, tx_desc->CmdInit = 1; tx_desc->Offset = sizeof(tx_fwinfo_819x_usb) + 8; -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - if (tcb_desc->drv_agg_enable) { - tx_desc->PktSize = tcb_desc->pkt_size; - } else -#endif { tx_desc->PktSize = (skb->len - TX_PACKET_SHIFT_BYTES) & 0xffff; } @@ -3766,11 +3448,6 @@ short rtl8192_tx(struct net_device *dev, #endif tx_desc->OWN = 1; -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - if (tcb_desc->drv_agg_enable) { - tx_desc->TxBufferSize = tcb_desc->pkt_size + sizeof(tx_fwinfo_819x_usb); - } else -#endif { //DWORD 2 tx_desc->TxBufferSize = (u32)(skb->len - USB_HWDESC_HEADER_LEN); @@ -8017,11 +7694,7 @@ TxCheckStuck(struct net_device *dev) if(QueueID == TXCMD_QUEUE) continue; #if 1 -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - if((skb_queue_len(&priv->ieee80211->skb_waitQ[QueueID]) == 0) && (skb_queue_len(&priv->ieee80211->skb_aggQ[QueueID]) == 0) && (skb_queue_len(&priv->ieee80211->skb_drv_aggQ[QueueID]) == 0)) -#else if((skb_queue_len(&priv->ieee80211->skb_waitQ[QueueID]) == 0) && (skb_queue_len(&priv->ieee80211->skb_aggQ[QueueID]) == 0)) -#endif continue; #endif --- a/drivers/staging/rtl8192su/r8192U.h +++ b/drivers/staging/rtl8192su/r8192U.h @@ -465,30 +465,6 @@ typedef struct _tx_desc_819x_usb { }tx_desc_819x_usb, *ptx_desc_819x_usb; #endif -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE -typedef struct _tx_desc_819x_usb_aggr_subframe { - //DWORD 0 - u16 PktSize; - u8 Offset; - u8 TxFWInfoSize; - - //DWORD 1 - u8 RATid:3; - u8 DISFB:1; - u8 USERATE:1; - u8 MOREFRAG:1; - u8 NoEnc:1; - u8 PIFS:1; - u8 QueueSelect:5; - u8 NoACM:1; - u8 Reserved1:2; - u8 SecCAMID:5; - u8 SecDescAssign:1; - u8 SecType:2; - u8 PacketID:7; - u8 OWN:1; -}tx_desc_819x_usb_aggr_subframe, *ptx_desc_819x_usb_aggr_subframe; -#endif #ifdef RTL8192SU @@ -868,17 +844,10 @@ typedef struct rx_drvinfo_819x_usb{ //#define TX_PACKET_SHIFT_BYTES (USB_HWDESC_HEADER_LEN + sizeof(tx_fwinfo_819x_usb)) #define MAX_FRAGMENT_COUNT 8 #ifdef RTL8192U -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE -#define MAX_TRANSMIT_BUFFER_SIZE 32000 -#else #define MAX_TRANSMIT_BUFFER_SIZE 8000 -#endif #else #define MAX_TRANSMIT_BUFFER_SIZE (1600+(MAX_802_11_HEADER_LENGTH+ENCRYPTION_MAX_OVERHEAD)*MAX_FRAGMENT_COUNT) #endif -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE -#define TX_PACKET_DRVAGGR_SUBFRAME_SHIFT_BYTES (sizeof(tx_desc_819x_usb_aggr_subframe) + sizeof(tx_fwinfo_819x_usb)) -#endif #define scrclng 4 // octets for crc32 (FCS, ICV) typedef enum rf_optype --- a/drivers/staging/rtl8192su/r819xU_HTType.h +++ b/drivers/staging/rtl8192su/r819xU_HTType.h @@ -293,9 +293,6 @@ typedef struct _RT_HIGH_THROUGHPUT{ u8 RxReorderPendingTime; u16 RxReorderDropCounter; -#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - u8 UsbTxAggrNum; -#endif // Add for Broadcom(Linksys) IOT. Joseph u8 bIsPeerBcm;