aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2009-07-03 10:06:40 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-09-15 15:01:37 -0400
commitdb28336458f7f86c9c1b977e0235dd8baac93253 (patch)
treef8a4018a53ad910ffa3ca12aa2b85449bd83bbb8
parenta7e3c1d62124ca5de34aebd0451fa211d410ef93 (diff)
Staging: rtl8192su: remove USB_RX_AGGREGATION_SUPPORT ifdefs
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/staging/rtl8192su/Makefile1
-rw-r--r--drivers/staging/rtl8192su/ieee80211/rtl819x_HT.h6
-rw-r--r--drivers/staging/rtl8192su/ieee80211/rtl819x_HTProc.c15
-rw-r--r--drivers/staging/rtl8192su/r8192U.h32
-rw-r--r--drivers/staging/rtl8192su/r8192U_core.c471
-rw-r--r--drivers/staging/rtl8192su/r8192U_dm.c98
-rw-r--r--drivers/staging/rtl8192su/r819xU_HTType.h6
7 files changed, 0 insertions, 629 deletions
diff --git a/drivers/staging/rtl8192su/Makefile b/drivers/staging/rtl8192su/Makefile
index 11cf9f182e0..c51889d7e9a 100644
--- a/drivers/staging/rtl8192su/Makefile
+++ b/drivers/staging/rtl8192su/Makefile
@@ -12,7 +12,6 @@ EXTRA_CFLAGS += -DRTL8190_Download_Firmware_From_Header=1
12EXTRA_CFLAGS += -DRTL8192S_PREPARE_FOR_NORMAL_RELEASE 12EXTRA_CFLAGS += -DRTL8192S_PREPARE_FOR_NORMAL_RELEASE
13EXTRA_CFLAGS += -DRTL8192SU_DISABLE_IQK=1 13EXTRA_CFLAGS += -DRTL8192SU_DISABLE_IQK=1
14 14
15#EXTRA_CFLAGS += -DUSB_RX_AGGREGATION_SUPPORT=0
16#EXTRA_CFLAGS += -DUSB_TX_DRIVER_AGGREGATION_ENABLE=0 15#EXTRA_CFLAGS += -DUSB_TX_DRIVER_AGGREGATION_ENABLE=0
17#EXTRA_CFLAGS += -DRTL8192SU_DISABLE_CCK_RATE=0 16#EXTRA_CFLAGS += -DRTL8192SU_DISABLE_CCK_RATE=0
18EXTRA_CFLAGS += -DRTL8192S_DISABLE_FW_DM=0 17EXTRA_CFLAGS += -DRTL8192S_DISABLE_FW_DM=0
diff --git a/drivers/staging/rtl8192su/ieee80211/rtl819x_HT.h b/drivers/staging/rtl8192su/ieee80211/rtl819x_HT.h
index 16a7462d7df..22a3d450287 100644
--- a/drivers/staging/rtl8192su/ieee80211/rtl819x_HT.h
+++ b/drivers/staging/rtl8192su/ieee80211/rtl819x_HT.h
@@ -327,12 +327,6 @@ typedef struct _RT_HIGH_THROUGHPUT{
327#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE 327#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE
328 u8 UsbTxAggrNum; 328 u8 UsbTxAggrNum;
329#endif 329#endif
330#ifdef USB_RX_AGGREGATION_SUPPORT
331 u8 UsbRxFwAggrEn;
332 u8 UsbRxFwAggrPageNum;
333 u8 UsbRxFwAggrPacketNum;
334 u8 UsbRxFwAggrTimeout;
335#endif
336 330
337 // Add for Broadcom(Linksys) IOT. Joseph 331 // Add for Broadcom(Linksys) IOT. Joseph
338 u8 bIsPeerBcm; 332 u8 bIsPeerBcm;
diff --git a/drivers/staging/rtl8192su/ieee80211/rtl819x_HTProc.c b/drivers/staging/rtl8192su/ieee80211/rtl819x_HTProc.c
index d263cdfca6d..eca9ac27c2c 100644
--- a/drivers/staging/rtl8192su/ieee80211/rtl819x_HTProc.c
+++ b/drivers/staging/rtl8192su/ieee80211/rtl819x_HTProc.c
@@ -105,21 +105,6 @@ void HTUpdateDefaultSetting(struct ieee80211_device* ieee)
105#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE 105#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE
106 pHTInfo->UsbTxAggrNum = 4; 106 pHTInfo->UsbTxAggrNum = 4;
107#endif 107#endif
108#ifdef USB_RX_AGGREGATION_SUPPORT
109#ifdef RTL8192SU
110 pHTInfo->UsbRxFwAggrEn = 1;
111 pHTInfo->UsbRxFwAggrPageNum = 16;
112 pHTInfo->UsbRxFwAggrPacketNum = 8;
113 pHTInfo->UsbRxFwAggrTimeout = 4; ////usb rx FW aggregation timeout threshold.It's in units of 64us
114 // For page size of receive packet buffer.
115 pHTInfo->UsbRxPageSize= 128;
116#else
117 pHTInfo->UsbRxFwAggrEn = 1;
118 pHTInfo->UsbRxFwAggrPageNum = 24;
119 pHTInfo->UsbRxFwAggrPacketNum = 8;
120 pHTInfo->UsbRxFwAggrTimeout = 16; ////usb rx FW aggregation timeout threshold.It's in units of 64us
121#endif
122#endif
123 108
124 109
125} 110}
diff --git a/drivers/staging/rtl8192su/r8192U.h b/drivers/staging/rtl8192su/r8192U.h
index 222b615499e..c5bf13ec333 100644
--- a/drivers/staging/rtl8192su/r8192U.h
+++ b/drivers/staging/rtl8192su/r8192U.h
@@ -693,11 +693,7 @@ typedef struct rx_desc_819x_usb{
693 //DWORD 2 693 //DWORD 2
694 u16 Seq:12; 694 u16 Seq:12;
695 u16 Frag:4; 695 u16 Frag:4;
696#ifdef USB_RX_AGGREGATION_SUPPORT
697 u8 UsbAggPktNum;//:8;
698#else
699 u8 NextPktLen;//:8; 696 u8 NextPktLen;//:8;
700#endif
701 u8 Rsvd0:6; 697 u8 Rsvd0:6;
702 u8 NextIND:1; 698 u8 NextIND:1;
703 u8 Rsvd1:1; 699 u8 Rsvd1:1;
@@ -751,27 +747,6 @@ typedef struct rx_desc_819x_usb{
751}rx_desc_819x_usb, *prx_desc_819x_usb; 747}rx_desc_819x_usb, *prx_desc_819x_usb;
752#endif 748#endif
753 749
754#ifdef USB_RX_AGGREGATION_SUPPORT
755typedef struct _rx_desc_819x_usb_aggr_subframe{
756 //DOWRD 0
757 u16 Length:14;
758 u16 CRC32:1;
759 u16 ICV:1;
760 u8 Offset;
761 u8 RxDrvInfoSize;
762 //DOWRD 1
763 u8 Shift:2;
764 u8 PHYStatus:1;
765 u8 SWDec:1;
766 u8 Reserved1:4;
767 u8 Reserved2;
768 u16 Reserved3;
769 //DWORD 2
770 //u4Byte Reserved3;
771 //DWORD 3
772 //u4Byte BufferAddress;
773}rx_desc_819x_usb_aggr_subframe, *prx_desc_819x_usb_aggr_subframe;
774#endif
775 750
776#ifdef RTL8192SU 751#ifdef RTL8192SU
777// 752//
@@ -1896,13 +1871,6 @@ typedef struct r8192_priv
1896//#endif 1871//#endif
1897 1872
1898 1873
1899#ifdef USB_RX_AGGREGATION_SUPPORT
1900 bool bCurrentRxAggrEnable;
1901 bool bForcedUsbRxAggr;
1902 u32 ForcedUsbRxAggrInfo;
1903 u32 LastUsbRxAggrInfoSetting;
1904 u32 RegUsbRxAggrInfo;
1905#endif
1906 1874
1907 1875
1908 1876
diff --git a/drivers/staging/rtl8192su/r8192U_core.c b/drivers/staging/rtl8192su/r8192U_core.c
index efcc5d1c5d4..19ed783a8ce 100644
--- a/drivers/staging/rtl8192su/r8192U_core.c
+++ b/drivers/staging/rtl8192su/r8192U_core.c
@@ -1601,12 +1601,6 @@ static void rtl8192_rx_isr(struct urb *urb);
1601u32 get_rxpacket_shiftbytes_819xusb(struct ieee80211_rx_stats *pstats) 1601u32 get_rxpacket_shiftbytes_819xusb(struct ieee80211_rx_stats *pstats)
1602{ 1602{
1603 1603
1604#ifdef USB_RX_AGGREGATION_SUPPORT
1605 if (pstats->bisrxaggrsubframe)
1606 return (sizeof(rx_desc_819x_usb) + pstats->RxDrvInfoSize
1607 + pstats->RxBufShift + 8);
1608 else
1609#endif
1610 return (sizeof(rx_desc_819x_usb) + pstats->RxDrvInfoSize 1604 return (sizeof(rx_desc_819x_usb) + pstats->RxDrvInfoSize
1611 + pstats->RxBufShift); 1605 + pstats->RxBufShift);
1612 1606
@@ -6780,20 +6774,6 @@ void rtl8192_hwconfig(struct net_device* dev)
6780} 6774}
6781 6775
6782#ifdef RTL8192SU 6776#ifdef RTL8192SU
6783#ifdef USB_RX_AGGREGATION_SUPPORT
6784u8 rtl8192SU_MapRxPageSizeToIdx(u16 RxPktSize )
6785{
6786 switch(RxPktSize)
6787 {
6788 case 64: return 0; break;
6789 case 128 : return 1; break;
6790 case 256: return 2; break;
6791 case 512: return 3; break;
6792 case 1024: return 4; break;
6793 default: return 0; // We use 64bytes in defult.
6794 }
6795}
6796#endif
6797 6777
6798// 6778//
6799// Description: 6779// Description:
@@ -6951,165 +6931,8 @@ static void rtl8192SU_MacConfigBeforeFwDownloadASIC(struct net_device *dev)
6951 6931
6952 RT_TRACE(COMP_INIT, "<---MacConfigBeforeFwDownloadASIC()\n"); 6932 RT_TRACE(COMP_INIT, "<---MacConfigBeforeFwDownloadASIC()\n");
6953} 6933}
6954#ifdef USB_RX_AGGREGATION_SUPPORT
6955void rtl8192SU_HalUsbRxAggr8192SUsb(struct net_device *dev, bool Value)
6956{
6957 struct r8192_priv *priv = ieee80211_priv((struct net_device *)dev);
6958 PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo;;
6959 6934
6960 6935
6961 //
6962 // <Roger_Notes> We decrease Rx page aggregated threshold in B/G mode.
6963 // 2008.10.29
6964 //
6965 if(priv->ieee80211->mode == WIRELESS_MODE_B || priv->ieee80211->mode == WIRELESS_MODE_G)
6966 {// Overwrite current settings to disable Rx Aggregation.
6967 Value = false;
6968 }
6969
6970 // Alway set Rx Aggregation to Disable if current platform is Win2K USB 1.1, by Emily
6971 //if(PLATFORM_LIMITED_RX_BUF_SIZE(Adapter))
6972 // Value = FALSE;
6973
6974 // Always set Rx Aggregation to Disable if connected AP is Realtek AP, by Joseph
6975 //if(pHTInfo->bCurrentRT2RTAggregation)
6976 // Value = FALSE;
6977
6978 // The RX aggregation may be enabled/disabled dynamically according current traffic stream.
6979 //Enable Rx aggregation if downlink traffic is busier than uplink traffic. by Guangan
6980 if(priv->bCurrentRxAggrEnable != Value)
6981 {
6982 priv->bCurrentRxAggrEnable = Value;
6983 //Adapter->HalFunc.SetHwRegHandler(Adapter, HW_VAR_USB_RX_AGGR, (pu1Byte)&pHalData->bCurrentRxAggrEnable);
6984 {
6985 //u8 Setting = ((pu1Byte)(val))[0];
6986 u8 Setting = priv->bCurrentRxAggrEnable
6987 u32 ulValue;
6988
6989 if(Setting==0)
6990 {
6991 //
6992 // <Roger_Notes> Reduce aggregated page threshold to 0x01 and set minimal threshold 0x0a.
6993 // i.e., disable Rx aggregation.
6994 //
6995 ulValue = 0x0001000a;
6996 }
6997 else
6998 {
6999 //PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo;
7000 //HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
7001
7002 if (priv->bForcedUsbRxAggr)
7003 {// Using forced settings.
7004 ulValue = priv->ForcedUsbRxAggrInfo;
7005 }
7006 else
7007 {// Using default settings.
7008
7009 ulValue = (pHTInfo->UsbRxFwAggrEn<<24) | (pHTInfo->UsbRxFwAggrPageNum<<16) |
7010 (pHTInfo->UsbRxFwAggrPacketNum<<8) | (pHTInfo->UsbRxFwAggrTimeout);
7011 }
7012 }
7013
7014 write_nic_byte(dev, RXDMA_AGG_PG_TH, (u8)((ulValue&0xff0000)>>16));
7015 write_nic_byte_E(dev, USB_RX_AGG_TIMEOUT, (u8)(ulValue&0xff));
7016
7017 priv->LastUsbRxAggrInfoSetting = ulValue;
7018
7019 RT_TRACE(COMP_HT|COMP_RECV, "Set HW_VAR_USB_RX_AGGR: ulValue(%#x)\n", ulValue);
7020 }
7021 RT_TRACE(COMP_RECV, "HalUsbRxAggr8192SUsb() : Set RxAggregation to %s\n", Value?"ON":"OFF");
7022 }
7023
7024}
7025#endif
7026
7027#ifdef USB_RX_AGGREGATION_SUPPORT
7028void rtl8192SU_HalUsbRxAggr8192SUsb(struct net_device *dev, bool Value)
7029{
7030 struct r8192_priv *priv = ieee80211_priv((struct net_device *)dev);
7031 PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo;;
7032
7033
7034 //
7035 // <Roger_Notes> We decrease Rx page aggregated threshold in B/G mode.
7036 // 2008.10.29
7037 //
7038 if((priv->ieee80211->mode & WIRELESS_MODE_B) || (priv->ieee80211->mode & WIRELESS_MODE_G))
7039 {// Overwrite current settings to disable Rx Aggregation.
7040 Value = false;
7041 }
7042
7043 // Alway set Rx Aggregation to Disable if current platform is Win2K USB 1.1, by Emily
7044 //if(PLATFORM_LIMITED_RX_BUF_SIZE(Adapter))
7045 // Value = FALSE;
7046
7047 // Always set Rx Aggregation to Disable if connected AP is Realtek AP, by Joseph
7048 //if(pHTInfo->bCurrentRT2RTAggregation)
7049 // Value = FALSE;
7050
7051 // The RX aggregation may be enabled/disabled dynamically according current traffic stream.
7052 //Enable Rx aggregation if downlink traffic is busier than uplink traffic. by Guangan
7053 if(priv->bCurrentRxAggrEnable != Value)
7054 {
7055 priv->bCurrentRxAggrEnable = Value;
7056 //Adapter->HalFunc.SetHwRegHandler(Adapter, HW_VAR_USB_RX_AGGR, (pu1Byte)&pHalData->bCurrentRxAggrEnable);
7057 {
7058 //u8 Setting = ((pu1Byte)(val))[0];
7059 u8 Setting = priv->bCurrentRxAggrEnable
7060 u32 ulValue;
7061
7062 if(Setting==0)
7063 {
7064 //
7065 // <Roger_Notes> Reduce aggregated page threshold to 0x01 and set minimal threshold 0x0a.
7066 // i.e., disable Rx aggregation.
7067 //
7068 ulValue = 0x0001000a;
7069 }
7070 else
7071 {
7072 //PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo;
7073 //HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
7074
7075 if (priv->bForcedUsbRxAggr)
7076 {// Using forced settings.
7077 ulValue = priv->ForcedUsbRxAggrInfo;
7078 }
7079 else
7080 {// Using default settings.
7081
7082 ulValue = (pHTInfo->UsbRxFwAggrEn<<24) | (pHTInfo->UsbRxFwAggrPageNum<<16) |
7083 (pHTInfo->UsbRxFwAggrPacketNum<<8) | (pHTInfo->UsbRxFwAggrTimeout);
7084 }
7085 }
7086
7087 write_nic_byte(dev, RXDMA_AGG_PG_TH, (u8)((ulValue&0xff0000)>>16));
7088 write_nic_byte_E(dev, USB_RX_AGG_TIMEOUT, (u8)(ulValue&0xff));
7089
7090 priv->LastUsbRxAggrInfoSetting = ulValue;
7091
7092 RT_TRACE(COMP_HT|COMP_RECV, "Set HW_VAR_USB_RX_AGGR: ulValue(%#x)\n", ulValue);
7093 }
7094 RT_TRACE(COMP_RECV, "HalUsbRxAggr8192SUsb() : Set RxAggregation to %s\n", Value?"ON":"OFF");
7095 }
7096
7097}
7098
7099u8 rtl8192SU_MapRxPageSizeToIdx(u16 RxPktSize )
7100{
7101 switch(RxPktSize)
7102 {
7103 case 64: return 0; break;
7104 case 128 : return 1; break;
7105 case 256: return 2; break;
7106 case 512: return 3; break;
7107 case 1024: return 4; break;
7108 default: return 0; // We use 64bytes in defult.
7109 }
7110}
7111#endif
7112
7113#if 0 6936#if 0
7114static void rtl8192SU_SetHwRegAmpduMinSpace(struct net_device *dev, u8 MinSpaceCfg) 6937static void rtl8192SU_SetHwRegAmpduMinSpace(struct net_device *dev, u8 MinSpaceCfg)
7115{ 6938{
@@ -7224,19 +7047,6 @@ static void rtl8192SU_MacConfigAfterFwDownload(struct net_device *dev)
7224#endif 7047#endif
7225#endif 7048#endif
7226 7049
7227#ifdef USB_RX_AGGREGATION_SUPPORT
7228 // Size of Tx/Rx packet buffer.
7229 tmpU1b = read_nic_byte(dev, PBP);
7230 RxPageCfg = rtl8192SU_MapRxPageSizeToIdx(priv->ieee80211->pHTInfo.UsbRxPageSize);
7231 write_nic_byte(dev, PBP, tmpU1b|RxPageCfg); // Set page size of Rx packet buffer to 128 bytes.
7232 tmpU1b = read_nic_byte(dev, RXDMA);
7233
7234 write_nic_byte(dev, RXDMA, tmpU1b|RXDMA_AGG_EN); // Rx aggregation enable.
7235 //PlatformIOWrite1Byte(Adapter, RXDMA_AGG_PG_TH, 0x14); // Set page size of RxDMA aggregation threshold, default: 20.
7236 //write_nic_byte(dev, RXDMA_AGG_PG_TH, 0x40); // By Scott's suggestion, 2008.09.30.//92su del
7237 //write_nic_byte(dev, USB_RX_AGG_TIMEOUT, RXDMA_AGG_TIMEOUT_17_4_MS); // Set aggregation time-out to 17ms/4.
7238 rtl8192SU_HalUsbRxAggr8192SUsb(dev, true);
7239#endif
7240 7050
7241 // Fix the RX FIFO issue(USB error), Rivesed by Roger, 2008-06-14 7051 // Fix the RX FIFO issue(USB error), Rivesed by Roger, 2008-06-14
7242 tmpU1b = read_nic_byte_E(dev, 0x5C); 7052 tmpU1b = read_nic_byte_E(dev, 0x5C);
@@ -7961,23 +7771,6 @@ bool rtl8192_adapter_start(struct net_device *dev)
7961 for (i=0; i<QOS_QUEUE_NUM; i++) 7771 for (i=0; i<QOS_QUEUE_NUM; i++)
7962 write_nic_dword(dev, WDCAPARA_ADD[i], DEFAULT_EDCA); 7772 write_nic_dword(dev, WDCAPARA_ADD[i], DEFAULT_EDCA);
7963 } 7773 }
7964#ifdef USB_RX_AGGREGATION_SUPPORT
7965 //3 For usb rx firmware aggregation control
7966 if(priv->ResetProgress == RESET_TYPE_NORESET)
7967 {
7968 u32 ulValue;
7969 PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo;
7970 ulValue = (pHTInfo->UsbRxFwAggrEn<<24) | (pHTInfo->UsbRxFwAggrPageNum<<16) |
7971 (pHTInfo->UsbRxFwAggrPacketNum<<8) | (pHTInfo->UsbRxFwAggrTimeout);
7972 /*
7973 * If usb rx firmware aggregation is enabled,
7974 * when anyone of three threshold conditions above is reached,
7975 * firmware will send aggregated packet to driver.
7976 */
7977 write_nic_dword(dev, 0x1a8, ulValue);
7978 priv->bCurrentRxAggrEnable = true;
7979 }
7980#endif
7981 7774
7982 rtl8192_phy_configmac(dev); 7775 rtl8192_phy_configmac(dev);
7983 7776
@@ -10496,11 +10289,6 @@ void rtl8192SU_query_rxdesc_status(struct sk_buff *skb, struct ieee80211_rx_stat
10496 //pu1Byte pDesc = (pu1Byte)pDescIn; 10289 //pu1Byte pDesc = (pu1Byte)pDescIn;
10497 //PRX_DRIVER_INFO_8192S pDrvInfo; 10290 //PRX_DRIVER_INFO_8192S pDrvInfo;
10498 10291
10499#ifdef USB_RX_AGGREGATION_SUPPORT//FIXLZM
10500 //if (bIsRxAggrSubframe)
10501 rx_desc_819x_usb_aggr_subframe *desc = (rx_desc_819x_usb_aggr_subframe *)skb->data;
10502 else
10503#endif
10504 rx_desc_819x_usb *desc = (rx_desc_819x_usb *)skb->data; 10292 rx_desc_819x_usb *desc = (rx_desc_819x_usb *)skb->data;
10505 10293
10506 if(0) 10294 if(0)
@@ -10637,19 +10425,6 @@ void query_rxdesc_status(struct sk_buff *skb, struct ieee80211_rx_stats *stats,
10637 // 10425 //
10638 //Get Rx Descriptor Information 10426 //Get Rx Descriptor Information
10639 // 10427 //
10640#ifdef USB_RX_AGGREGATION_SUPPORT
10641 if (bIsRxAggrSubframe)
10642 {
10643 rx_desc_819x_usb_aggr_subframe *desc = (rx_desc_819x_usb_aggr_subframe *)skb->data;
10644 stats->Length = desc->Length ;
10645 stats->RxDrvInfoSize = desc->RxDrvInfoSize;
10646 stats->RxBufShift = 0; //RxBufShift = 2 in RxDesc, but usb didn't shift bytes in fact.
10647 stats->bICV = desc->ICV;
10648 stats->bCRC = desc->CRC32;
10649 stats->bHwError = stats->bCRC|stats->bICV;
10650 stats->Decrypted = !desc->SWDec;//RTL8190 set this bit to indicate that Hw does not decrypt packet
10651 } else
10652#endif
10653 { 10428 {
10654 rx_desc_819x_usb *desc = (rx_desc_819x_usb *)skb->data; 10429 rx_desc_819x_usb *desc = (rx_desc_819x_usb *)skb->data;
10655 10430
@@ -10738,12 +10513,6 @@ void query_rxdesc_status(struct sk_buff *skb, struct ieee80211_rx_stats *stats,
10738 skb_pull(skb,stats->RxBufShift + stats->RxDrvInfoSize); 10513 skb_pull(skb,stats->RxBufShift + stats->RxDrvInfoSize);
10739 } 10514 }
10740 10515
10741#ifdef USB_RX_AGGREGATION_SUPPORT
10742 /* for the rx aggregated sub frame, the redundant space truelly contained in the packet */
10743 if(bIsRxAggrSubframe) {
10744 skb_pull(skb, 8);
10745 }
10746#endif
10747 /* for debug 2008.5.29 */ 10516 /* for debug 2008.5.29 */
10748#if 0 10517#if 0
10749 { 10518 {
@@ -10906,27 +10675,6 @@ void rtl8192SU_rx_nomal(struct sk_buff* skb)
10906 struct ieee80211_hdr_1addr *ieee80211_hdr = NULL; 10675 struct ieee80211_hdr_1addr *ieee80211_hdr = NULL;
10907 bool unicast_packet = false; 10676 bool unicast_packet = false;
10908 10677
10909#ifdef USB_RX_AGGREGATION_SUPPORT
10910 struct sk_buff *agg_skb = NULL;
10911 u32 TotalLength = 0;//Total packet length for all aggregated packets.
10912 u32 TempDWord = 0;
10913 u32 PacketLength = 0;// Per-packet length include size of RxDesc.
10914 u32 PacketOccupiedLendth = 0;
10915 u8 TempByte = 0;
10916 u32 PacketShiftBytes = 0;
10917 rx_desc_819x_usb_aggr_subframe *RxDescr = NULL;
10918 u8 PaddingBytes = 0;
10919 //add just for testing
10920 u8 testing;
10921
10922 u8 TotalAggPkt = 0;
10923 PRT_HIGH_THROUGHPUT pHTInfo =priv-> ieee80211->pHTInfo;
10924 u16 RxPageSize = pHTInfo->UsbRxPageSize;
10925
10926 stats->nTotalAggPkt = 0;
10927 //stats->bIsRxAggrSubframe = FALSE;
10928
10929#endif
10930 //printk("**********skb->len = %d\n", skb->len); 10678 //printk("**********skb->len = %d\n", skb->len);
10931 /* 20 is for ps-poll */ 10679 /* 20 is for ps-poll */
10932 if((skb->len >=(20 + sizeof(rx_desc_819x_usb))) && (skb->len < RX_URB_SIZE)) { 10680 if((skb->len >=(20 + sizeof(rx_desc_819x_usb))) && (skb->len < RX_URB_SIZE)) {
@@ -10936,14 +10684,6 @@ void rtl8192SU_rx_nomal(struct sk_buff* skb)
10936 /* TODO */ 10684 /* TODO */
10937 10685
10938 /* hardware related info */ 10686 /* hardware related info */
10939#ifdef USB_RX_AGGREGATION_SUPPORT
10940 TotalAggPkt = stats->nTotalAggPkt;
10941 PacketLength = stats->Length + GetRxPacketShiftBytes8192SU(&stats, false);
10942
10943 agg_skb = skb;
10944 skb = dev_alloc_skb(PacketLength);
10945 memcpy(skb_put(skb,PacketLength),agg_skb->data,PacketLength);
10946#endif
10947 priv->stats.rxoktotal++; //YJ,test,090108 10687 priv->stats.rxoktotal++; //YJ,test,090108
10948 10688
10949 /* Process the MPDU recevied */ 10689 /* Process the MPDU recevied */
@@ -10971,106 +10711,6 @@ void rtl8192SU_rx_nomal(struct sk_buff* skb)
10971 } 10711 }
10972 10712
10973 //up is firs pkt, follow is next and next 10713 //up is firs pkt, follow is next and next
10974#ifdef USB_RX_AGGREGATION_SUPPORT
10975 //
10976 // The following operations are for processing Rx aggregated packets.
10977 //
10978 if(TotalAggPkt>0)
10979 TotalAggPkt--;
10980
10981 while ( TotalAggPkt>0 )
10982 {// More aggregated packets need to process.
10983
10984 u8 tmpCRC = 0, tmpICV = 0;
10985
10986 //Page size must align to multiple of 128-Bytes.
10987 if((PacketLength%RxPageSize) != 0)
10988 //PacketLength = ((PacketLength/RxPageSize)+1)*RxPageSize;
10989 PacketLength = ((PacketLength>>7)+1)*RxPageSize; // RxPageSize is 128bytes as default.
10990
10991 // Current total packet occupied length in this buffer.
10992 PacketOccupiedLendth += PacketLength;
10993
10994#if (defined (RTL8192SU_FPGA_2MAC_VERIFICATION)||defined (RTL8192SU_ASIC_VERIFICATION))
10995 //if(PacketOccupiedLendth>pContext->BufLenUsed)
10996 if(PacketOccupiedLendth>skb->len)
10997 {
10998 RT_TRACE(COMP_RECV, "(1)HalUsbInMpduComplete8192SUsb(): pRtRfdStatus->Length(%#x)!!\n", stats->Length);
10999 RT_TRACE(COMP_RECV, "(1)HalUsbInMpduComplete8192SUsb(): Invalid PacketOccupiedLendth(%#x)!!, BufLenUsed(%#x)\n", PacketOccupiedLendth, stats->BufLenUsed);
11000 break;
11001 }
11002#endif
11003
11004 skb_pull(agg_skb, PacketLength);
11005
11006 //
11007 // Process the MPDU recevied.
11008 //
11009 //RT_TRACE(COMP_RECV,"%s:aggred pkt,total_len = %d\n",__FUNCTION__,agg_skb->len);
11010 RxDescr = (rx_desc_819x_usb_aggr_subframe *)(agg_skb->data);
11011
11012#if 0//92SU del
11013 tmpCRC = RxDescr->CRC32;
11014 tmpICV = RxDescr->ICV;
11015 memcpy(agg_skb->data, &agg_skb->data[44], 2);
11016 RxDescr->CRC32 = tmpCRC;
11017 RxDescr->ICV = tmpICV;
11018#endif
11019 memset(&stats, 0, sizeof(struct ieee80211_rx_stats));
11020 stats.signal = 0;
11021 stats.noise = -98;
11022 stats.rate = 0;
11023 stats.freq = IEEE80211_24GHZ_BAND;
11024
11025 rtl8192SU_query_rxdesc_status(agg_skb, &stats, true);
11026 //PacketLength = stats.Length;
11027 PacketLength = stats.Length + GetRxPacketShiftBytes8192SU(&stats, true);
11028
11029#if (defined (RTL8192SU_FPGA_2MAC_VERIFICATION)||defined (RTL8192SU_ASIC_VERIFICATION))
11030 if((PacketOccupiedLendth+PacketLength)>skb->len)
11031 {
11032 RT_TRACE(COMP_RECV, "(2)HalUsbInMpduComplete8192SUsb(): Invalid PacketOccupiedLendth(%#x)+PacketLength(%#x)!!, BufLenUsed(%#x)\n",
11033 PacketOccupiedLendth, PacketLength, pContext->BufLenUsed);
11034 break;
11035 }
11036#endif
11037
11038 if(PacketLength > agg_skb->len) {
11039 break;
11040 }
11041
11042 /* Process the MPDU recevied */
11043 skb = dev_alloc_skb(PacketLength);
11044 memcpy(skb_put(skb,PacketLength),agg_skb->data, PacketLength);
11045 skb_trim(skb, skb->len - 4/*sCrcLng*/);
11046
11047 rx_pkt_len = skb->len;
11048 ieee80211_hdr = (struct ieee80211_hdr_1addr *)skb->data;
11049 unicast_packet = false;
11050 if(is_broadcast_ether_addr(ieee80211_hdr->addr1)) {
11051 //TODO
11052 }else if(is_multicast_ether_addr(ieee80211_hdr->addr1)){
11053 //TODO
11054 }else {
11055 /* unicast packet */
11056 unicast_packet = true;
11057 }
11058 if(!ieee80211_rx(priv->ieee80211,skb, &stats)) {
11059 dev_kfree_skb_any(skb);
11060 } else {
11061 priv->stats.rxoktotal++;
11062 if(unicast_packet) {
11063 priv->stats.rxbytesunicast += rx_pkt_len;
11064 }
11065 }
11066
11067 TotalAggPkt--;
11068
11069 skb_pull(agg_skb, TempDWord);
11070 }
11071
11072 dev_kfree_skb(agg_skb);
11073#endif
11074 } 10714 }
11075 else 10715 else
11076 { 10716 {
@@ -11083,12 +10723,6 @@ void rtl8192SU_rx_nomal(struct sk_buff* skb)
11083#else 10723#else
11084u32 GetRxPacketShiftBytes819xUsb(struct ieee80211_rx_stats *Status, bool bIsRxAggrSubframe) 10724u32 GetRxPacketShiftBytes819xUsb(struct ieee80211_rx_stats *Status, bool bIsRxAggrSubframe)
11085{ 10725{
11086#ifdef USB_RX_AGGREGATION_SUPPORT
11087 if (bIsRxAggrSubframe)
11088 return (sizeof(rx_desc_819x_usb) + Status->RxDrvInfoSize
11089 + Status->RxBufShift + 8);
11090 else
11091#endif
11092 return (sizeof(rx_desc_819x_usb) + Status->RxDrvInfoSize 10726 return (sizeof(rx_desc_819x_usb) + Status->RxDrvInfoSize
11093 + Status->RxBufShift); 10727 + Status->RxBufShift);
11094} 10728}
@@ -11108,44 +10742,13 @@ void rtl8192_rx_nomal(struct sk_buff* skb)
11108 u32 rx_pkt_len = 0; 10742 u32 rx_pkt_len = 0;
11109 struct ieee80211_hdr_1addr *ieee80211_hdr = NULL; 10743 struct ieee80211_hdr_1addr *ieee80211_hdr = NULL;
11110 bool unicast_packet = false; 10744 bool unicast_packet = false;
11111#ifdef USB_RX_AGGREGATION_SUPPORT
11112 struct sk_buff *agg_skb = NULL;
11113 u32 TotalLength = 0;
11114 u32 TempDWord = 0;
11115 u32 PacketLength = 0;
11116 u32 PacketOccupiedLendth = 0;
11117 u8 TempByte = 0;
11118 u32 PacketShiftBytes = 0;
11119 rx_desc_819x_usb_aggr_subframe *RxDescr = NULL;
11120 u8 PaddingBytes = 0;
11121 //add just for testing
11122 u8 testing;
11123
11124#endif
11125 10745
11126 /* 20 is for ps-poll */ 10746 /* 20 is for ps-poll */
11127 if((skb->len >=(20 + sizeof(rx_desc_819x_usb))) && (skb->len < RX_URB_SIZE)) { 10747 if((skb->len >=(20 + sizeof(rx_desc_819x_usb))) && (skb->len < RX_URB_SIZE)) {
11128#ifdef USB_RX_AGGREGATION_SUPPORT
11129 TempByte = *(skb->data + sizeof(rx_desc_819x_usb));
11130#endif
11131 /* first packet should not contain Rx aggregation header */ 10748 /* first packet should not contain Rx aggregation header */
11132 query_rxdesc_status(skb, &stats, false); 10749 query_rxdesc_status(skb, &stats, false);
11133 /* TODO */ 10750 /* TODO */
11134 /* hardware related info */ 10751 /* hardware related info */
11135#ifdef USB_RX_AGGREGATION_SUPPORT
11136 if (TempByte & BIT0) {
11137 agg_skb = skb;
11138 //TotalLength = agg_skb->len - 4; /*sCrcLng*/
11139 TotalLength = stats.Length - 4; /*sCrcLng*/
11140 //RT_TRACE(COMP_RECV, "%s:first aggregated packet!Length=%d\n",__FUNCTION__,TotalLength);
11141 /* though the head pointer has passed this position */
11142 TempDWord = *(u32 *)(agg_skb->data - 4);
11143 PacketLength = (u16)(TempDWord & 0x3FFF); /*sCrcLng*/
11144 skb = dev_alloc_skb(PacketLength);
11145 memcpy(skb_put(skb,PacketLength),agg_skb->data,PacketLength);
11146 PacketShiftBytes = GetRxPacketShiftBytes819xUsb(&stats, false);
11147 }
11148#endif
11149 /* Process the MPDU recevied */ 10752 /* Process the MPDU recevied */
11150 skb_trim(skb, skb->len - 4/*sCrcLng*/); 10753 skb_trim(skb, skb->len - 4/*sCrcLng*/);
11151 10754
@@ -11169,80 +10772,6 @@ void rtl8192_rx_nomal(struct sk_buff* skb)
11169 priv->stats.rxbytesunicast += rx_pkt_len; 10772 priv->stats.rxbytesunicast += rx_pkt_len;
11170 } 10773 }
11171 } 10774 }
11172#ifdef USB_RX_AGGREGATION_SUPPORT
11173 testing = 1;
11174 // (PipeIndex == 0) && (TempByte & BIT0) => TotalLength > 0.
11175 if (TotalLength > 0) {
11176 PacketOccupiedLendth = PacketLength + (PacketShiftBytes + 8);
11177 if ((PacketOccupiedLendth & 0xFF) != 0)
11178 PacketOccupiedLendth = (PacketOccupiedLendth & 0xFFFFFF00) + 256;
11179 PacketOccupiedLendth -= 8;
11180 TempDWord = PacketOccupiedLendth - PacketShiftBytes; /*- PacketLength */
11181 if (agg_skb->len > TempDWord)
11182 skb_pull(agg_skb, TempDWord);
11183 else
11184 agg_skb->len = 0;
11185
11186 while (agg_skb->len>=GetRxPacketShiftBytes819xUsb(&stats, true)) {
11187 u8 tmpCRC = 0, tmpICV = 0;
11188 //RT_TRACE(COMP_RECV,"%s:aggred pkt,total_len = %d\n",__FUNCTION__,agg_skb->len);
11189 RxDescr = (rx_desc_819x_usb_aggr_subframe *)(agg_skb->data);
11190 tmpCRC = RxDescr->CRC32;
11191 tmpICV = RxDescr->ICV;
11192 memcpy(agg_skb->data, &agg_skb->data[44], 2);
11193 RxDescr->CRC32 = tmpCRC;
11194 RxDescr->ICV = tmpICV;
11195
11196 memset(&stats, 0, sizeof(struct ieee80211_rx_stats));
11197 stats.signal = 0;
11198 stats.noise = -98;
11199 stats.rate = 0;
11200 stats.freq = IEEE80211_24GHZ_BAND;
11201 query_rxdesc_status(agg_skb, &stats, true);
11202 PacketLength = stats.Length;
11203
11204 if(PacketLength > agg_skb->len) {
11205 break;
11206 }
11207 /* Process the MPDU recevied */
11208 skb = dev_alloc_skb(PacketLength);
11209 memcpy(skb_put(skb,PacketLength),agg_skb->data, PacketLength);
11210 skb_trim(skb, skb->len - 4/*sCrcLng*/);
11211
11212 rx_pkt_len = skb->len;
11213 ieee80211_hdr = (struct ieee80211_hdr_1addr *)skb->data;
11214 unicast_packet = false;
11215 if(is_broadcast_ether_addr(ieee80211_hdr->addr1)) {
11216 //TODO
11217 }else if(is_multicast_ether_addr(ieee80211_hdr->addr1)){
11218 //TODO
11219 }else {
11220 /* unicast packet */
11221 unicast_packet = true;
11222 }
11223 if(!ieee80211_rx(priv->ieee80211,skb, &stats)) {
11224 dev_kfree_skb_any(skb);
11225 } else {
11226 priv->stats.rxoktotal++;
11227 if(unicast_packet) {
11228 priv->stats.rxbytesunicast += rx_pkt_len;
11229 }
11230 }
11231 /* should trim the packet which has been copied to target skb */
11232 skb_pull(agg_skb, PacketLength);
11233 PacketShiftBytes = GetRxPacketShiftBytes819xUsb(&stats, true);
11234 PacketOccupiedLendth = PacketLength + PacketShiftBytes;
11235 if ((PacketOccupiedLendth & 0xFF) != 0) {
11236 PaddingBytes = 256 - (PacketOccupiedLendth & 0xFF);
11237 if (agg_skb->len > PaddingBytes)
11238 skb_pull(agg_skb, PaddingBytes);
11239 else
11240 agg_skb->len = 0;
11241 }
11242 }
11243 dev_kfree_skb(agg_skb);
11244 }
11245#endif
11246 } else { 10775 } else {
11247 priv->stats.rxurberr++; 10776 priv->stats.rxurberr++;
11248 printk("actual_length:%d\n", skb->len); 10777 printk("actual_length:%d\n", skb->len);
diff --git a/drivers/staging/rtl8192su/r8192U_dm.c b/drivers/staging/rtl8192su/r8192U_dm.c
index 7902f623f8f..ef1dcc2e88f 100644
--- a/drivers/staging/rtl8192su/r8192U_dm.c
+++ b/drivers/staging/rtl8192su/r8192U_dm.c
@@ -315,98 +315,6 @@ extern void deinit_hal_dm(struct net_device *dev)
315} 315}
316 316
317 317
318#ifdef USB_RX_AGGREGATION_SUPPORT
319void dm_CheckRxAggregation(struct net_device *dev) {
320 struct r8192_priv *priv = ieee80211_priv((struct net_device *)dev);
321 PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo;
322 static unsigned long lastTxOkCnt = 0;
323 static unsigned long lastRxOkCnt = 0;
324 unsigned long curTxOkCnt = 0;
325 unsigned long curRxOkCnt = 0;
326
327/*
328 if (pHalData->bForcedUsbRxAggr) {
329 if (pHalData->ForcedUsbRxAggrInfo == 0) {
330 if (pHalData->bCurrentRxAggrEnable) {
331 Adapter->HalFunc.HalUsbRxAggrHandler(Adapter, FALSE);
332 }
333 } else {
334 if (!pHalData->bCurrentRxAggrEnable || (pHalData->ForcedUsbRxAggrInfo != pHalData->LastUsbRxAggrInfoSetting)) {
335 Adapter->HalFunc.HalUsbRxAggrHandler(Adapter, TRUE);
336 }
337 }
338 return;
339 }
340
341*/
342#ifdef RTL8192SU
343 if (priv->bForcedUsbRxAggr) {
344 if (priv->ForcedUsbRxAggrInfo == 0) {
345 if (priv->bCurrentRxAggrEnable) {
346 //Adapter->HalFunc.HalUsbRxAggrHandler(Adapter, FALSE);
347 write_nic_dword(dev, 0x1a8, 0);
348 priv->bCurrentRxAggrEnable = false;
349 }
350 } else {
351 if (!priv->bCurrentRxAggrEnable || (priv->ForcedUsbRxAggrInfo != priv->LastUsbRxAggrInfoSetting)) {
352 u32 ulValue;
353 ulValue = (pHTInfo->UsbRxFwAggrEn<<24) | (pHTInfo->UsbRxFwAggrPageNum<<16) |
354 (pHTInfo->UsbRxFwAggrPacketNum<<8) | (pHTInfo->UsbRxFwAggrTimeout);
355 /*
356 * If usb rx firmware aggregation is enabled,
357 * when anyone of three threshold conditions above is reached,
358 * firmware will send aggregated packet to driver.
359 */
360 write_nic_dword(dev, 0x1a8, ulValue);
361 priv->bCurrentRxAggrEnable = true;
362 }
363 }
364 return;
365 }
366
367 if((priv->ieee80211->mode & WIRELESS_MODE_B) || (priv->ieee80211->mode & WIRELESS_MODE_G))
368 {
369 if (priv->bCurrentRxAggrEnable)
370 {
371 RT_TRACE(COMP_RECV, "dm_CheckRxAggregation() : Disable Rx Aggregation!!\n");
372 write_nic_dword(dev, 0x1a8, 0);
373 priv->bCurrentRxAggrEnable = false;
374 return;
375 }
376 }
377#endif
378
379 curTxOkCnt = priv->stats.txbytesunicast - lastTxOkCnt;
380 curRxOkCnt = priv->stats.rxbytesunicast - lastRxOkCnt;
381
382 if((curTxOkCnt + curRxOkCnt) < 15000000) {
383 return;
384 }
385
386 if(curTxOkCnt > 4*curRxOkCnt) {
387 if (priv->bCurrentRxAggrEnable) {
388 write_nic_dword(dev, 0x1a8, 0);
389 priv->bCurrentRxAggrEnable = false;
390 }
391 }else{
392 if (!priv->bCurrentRxAggrEnable && !pHTInfo->bCurrentRT2RTAggregation) {
393 u32 ulValue;
394 ulValue = (pHTInfo->UsbRxFwAggrEn<<24) | (pHTInfo->UsbRxFwAggrPageNum<<16) |
395 (pHTInfo->UsbRxFwAggrPacketNum<<8) | (pHTInfo->UsbRxFwAggrTimeout);
396 /*
397 * If usb rx firmware aggregation is enabled,
398 * when anyone of three threshold conditions above is reached,
399 * firmware will send aggregated packet to driver.
400 */
401 write_nic_dword(dev, 0x1a8, ulValue);
402 priv->bCurrentRxAggrEnable = true;
403 }
404 }
405
406 lastTxOkCnt = priv->stats.txbytesunicast;
407 lastRxOkCnt = priv->stats.rxbytesunicast;
408} // dm_CheckEdcaTurbo
409#endif
410 318
411 319
412#ifdef RTL8192SU 320#ifdef RTL8192SU
@@ -438,9 +346,6 @@ extern void hal_dm_watchdog(struct net_device *dev)
438 //if (IS_HARDWARE_TYPE_8192S(dev)) 346 //if (IS_HARDWARE_TYPE_8192S(dev))
439 return; 347 return;
440 348
441#ifdef USB_RX_AGGREGATION_SUPPORT
442 dm_CheckRxAggregation(dev);
443#endif
444#ifdef TO_DO_LIST 349#ifdef TO_DO_LIST
445 if(Adapter->MgntInfo.mActingAsAp) 350 if(Adapter->MgntInfo.mActingAsAp)
446 { 351 {
@@ -490,9 +395,6 @@ extern void hal_dm_watchdog(struct net_device *dev)
490 dm_check_pbc_gpio(dev); 395 dm_check_pbc_gpio(dev);
491 dm_send_rssi_tofw(dev); 396 dm_send_rssi_tofw(dev);
492 dm_ctstoself(dev); 397 dm_ctstoself(dev);
493#ifdef USB_RX_AGGREGATION_SUPPORT
494 dm_CheckRxAggregation(dev);
495#endif
496} //HalDmWatchDog 398} //HalDmWatchDog
497#endif 399#endif
498 400
diff --git a/drivers/staging/rtl8192su/r819xU_HTType.h b/drivers/staging/rtl8192su/r819xU_HTType.h
index 2994aa0876a..4ccfcc1910c 100644
--- a/drivers/staging/rtl8192su/r819xU_HTType.h
+++ b/drivers/staging/rtl8192su/r819xU_HTType.h
@@ -296,12 +296,6 @@ typedef struct _RT_HIGH_THROUGHPUT{
296#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE 296#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE
297 u8 UsbTxAggrNum; 297 u8 UsbTxAggrNum;
298#endif 298#endif
299#ifdef USB_RX_AGGREGATION_SUPPORT
300 u8 UsbRxFwAggrEn;
301 u8 UsbRxFwAggrPageNum;
302 u8 UsbRxFwAggrPacketNum;
303 u8 UsbRxFwAggrTimeout;
304#endif
305 299
306 // Add for Broadcom(Linksys) IOT. Joseph 300 // Add for Broadcom(Linksys) IOT. Joseph
307 u8 bIsPeerBcm; 301 u8 bIsPeerBcm;