aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/vt6656/rxtx.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
index fd3c59824152..2fd71c3c06cb 100644
--- a/drivers/staging/vt6656/rxtx.c
+++ b/drivers/staging/vt6656/rxtx.c
@@ -101,7 +101,7 @@ static void *s_vGetFreeContext(struct vnt_private *pDevice);
101static void s_vGenerateTxParameter(struct vnt_private *pDevice, 101static void s_vGenerateTxParameter(struct vnt_private *pDevice,
102 u8 byPktType, u16 wCurrentRate, void *pTxBufHead, void *pvRrvTime, 102 u8 byPktType, u16 wCurrentRate, void *pTxBufHead, void *pvRrvTime,
103 void *pvRTS, void *pvCTS, u32 cbFrameSize, int bNeedACK, u32 uDMAIdx, 103 void *pvRTS, void *pvCTS, u32 cbFrameSize, int bNeedACK, u32 uDMAIdx,
104 struct ethhdr *psEthHeader); 104 struct ethhdr *psEthHeader, bool need_rts);
105 105
106static u32 s_uFillDataHead(struct vnt_private *pDevice, 106static u32 s_uFillDataHead(struct vnt_private *pDevice,
107 u8 byPktType, u16 wCurrentRate, void *pTxDataHead, u32 cbFrameLength, 107 u8 byPktType, u16 wCurrentRate, void *pTxDataHead, u32 cbFrameLength,
@@ -829,7 +829,7 @@ static void s_vFillCTSHead(struct vnt_private *pDevice, u32 uDMAIdx,
829static void s_vGenerateTxParameter(struct vnt_private *pDevice, 829static void s_vGenerateTxParameter(struct vnt_private *pDevice,
830 u8 byPktType, u16 wCurrentRate, void *pTxBufHead, void *pvRrvTime, 830 u8 byPktType, u16 wCurrentRate, void *pTxBufHead, void *pvRrvTime,
831 void *pvRTS, void *pvCTS, u32 cbFrameSize, int bNeedACK, u32 uDMAIdx, 831 void *pvRTS, void *pvCTS, u32 cbFrameSize, int bNeedACK, u32 uDMAIdx,
832 struct ethhdr *psEthHeader) 832 struct ethhdr *psEthHeader, bool need_rts)
833{ 833{
834 u32 cbMACHdLen = WLAN_HDR_ADDR3_LEN; /* 24 */ 834 u32 cbMACHdLen = WLAN_HDR_ADDR3_LEN; /* 24 */
835 u16 wFifoCtl; 835 u16 wFifoCtl;
@@ -854,8 +854,7 @@ static void s_vGenerateTxParameter(struct vnt_private *pDevice,
854 cbMACHdLen = WLAN_HDR_ADDR3_LEN + 6; 854 cbMACHdLen = WLAN_HDR_ADDR3_LEN + 6;
855 855
856 if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) { 856 if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) {
857 857 if (need_rts) {
858 if (pvRTS != NULL) { //RTS_need
859 //Fill RsvTime 858 //Fill RsvTime
860 struct vnt_rrv_time_rts *pBuf = 859 struct vnt_rrv_time_rts *pBuf =
861 (struct vnt_rrv_time_rts *)pvRrvTime; 860 (struct vnt_rrv_time_rts *)pvRrvTime;
@@ -891,8 +890,7 @@ static void s_vGenerateTxParameter(struct vnt_private *pDevice,
891 } 890 }
892 } 891 }
893 else if (byPktType == PK_TYPE_11A) { 892 else if (byPktType == PK_TYPE_11A) {
894 893 if (need_rts) {
895 if (pvRTS != NULL) {//RTS_need, non PCF mode
896 //Fill RsvTime 894 //Fill RsvTime
897 struct vnt_rrv_time_ab *pBuf = 895 struct vnt_rrv_time_ab *pBuf =
898 (struct vnt_rrv_time_ab *)pvRrvTime; 896 (struct vnt_rrv_time_ab *)pvRrvTime;
@@ -903,8 +901,7 @@ static void s_vGenerateTxParameter(struct vnt_private *pDevice,
903 //Fill RTS 901 //Fill RTS
904 s_vFillRTSHead(pDevice, byPktType, pvRTS, cbFrameSize, bNeedACK, 902 s_vFillRTSHead(pDevice, byPktType, pvRTS, cbFrameSize, bNeedACK,
905 psEthHeader, wCurrentRate, byFBOption); 903 psEthHeader, wCurrentRate, byFBOption);
906 } 904 } else {
907 else if (pvRTS == NULL) {//RTS_needless, non PCF mode
908 //Fill RsvTime 905 //Fill RsvTime
909 struct vnt_rrv_time_ab *pBuf = 906 struct vnt_rrv_time_ab *pBuf =
910 (struct vnt_rrv_time_ab *)pvRrvTime; 907 (struct vnt_rrv_time_ab *)pvRrvTime;
@@ -913,8 +910,7 @@ static void s_vGenerateTxParameter(struct vnt_private *pDevice,
913 } 910 }
914 } 911 }
915 else if (byPktType == PK_TYPE_11B) { 912 else if (byPktType == PK_TYPE_11B) {
916 913 if (need_rts) {
917 if ((pvRTS != NULL)) {//RTS_need, non PCF mode
918 //Fill RsvTime 914 //Fill RsvTime
919 struct vnt_rrv_time_ab *pBuf = 915 struct vnt_rrv_time_ab *pBuf =
920 (struct vnt_rrv_time_ab *)pvRrvTime; 916 (struct vnt_rrv_time_ab *)pvRrvTime;
@@ -953,7 +949,8 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType,
953 u32 cb802_1_H_len; 949 u32 cb802_1_H_len;
954 u32 cbIVlen = 0, cbICVlen = 0, cbMIClen = 0, cbMACHdLen = 0; 950 u32 cbIVlen = 0, cbICVlen = 0, cbMIClen = 0, cbMACHdLen = 0;
955 u32 cbFCSlen = 4, cbMICHDR = 0; 951 u32 cbFCSlen = 4, cbMICHDR = 0;
956 int bNeedACK, bRTS; 952 int bNeedACK;
953 bool bRTS = false;
957 u8 *pbyType, *pbyMacHdr, *pbyIVHead, *pbyPayloadHead, *pbyTxBufferAddr; 954 u8 *pbyType, *pbyMacHdr, *pbyIVHead, *pbyPayloadHead, *pbyTxBufferAddr;
958 u8 abySNAP_RFC1042[ETH_ALEN] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00}; 955 u8 abySNAP_RFC1042[ETH_ALEN] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00};
959 u8 abySNAP_Bridgetunnel[ETH_ALEN] 956 u8 abySNAP_Bridgetunnel[ETH_ALEN]
@@ -1236,7 +1233,7 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType,
1236 //Fill FIFO,RrvTime,RTS,and CTS 1233 //Fill FIFO,RrvTime,RTS,and CTS
1237 s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, 1234 s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate,
1238 (void *)pbyTxBufferAddr, pvRrvTime, pvRTS, pvCTS, 1235 (void *)pbyTxBufferAddr, pvRrvTime, pvRTS, pvCTS,
1239 cbFrameSize, bNeedACK, uDMAIdx, psEthHeader); 1236 cbFrameSize, bNeedACK, uDMAIdx, psEthHeader, bRTS);
1240 //Fill DataHead 1237 //Fill DataHead
1241 uDuration = s_uFillDataHead(pDevice, byPktType, wCurrentRate, pvTxDataHd, cbFrameSize, uDMAIdx, bNeedACK, 1238 uDuration = s_uFillDataHead(pDevice, byPktType, wCurrentRate, pvTxDataHd, cbFrameSize, uDMAIdx, bNeedACK,
1242 byFBOption); 1239 byFBOption);
@@ -1640,7 +1637,7 @@ CMD_STATUS csMgmt_xmit(struct vnt_private *pDevice,
1640 1637
1641 //Fill FIFO,RrvTime,RTS,and CTS 1638 //Fill FIFO,RrvTime,RTS,and CTS
1642 s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, pbyTxBufferAddr, pvRrvTime, pvRTS, pCTS, 1639 s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, pbyTxBufferAddr, pvRrvTime, pvRTS, pCTS,
1643 cbFrameSize, bNeedACK, TYPE_TXDMA0, &sEthHeader); 1640 cbFrameSize, bNeedACK, TYPE_TXDMA0, &sEthHeader, false);
1644 1641
1645 //Fill DataHead 1642 //Fill DataHead
1646 uDuration = s_uFillDataHead(pDevice, byPktType, wCurrentRate, pvTxDataHd, cbFrameSize, TYPE_TXDMA0, bNeedACK, 1643 uDuration = s_uFillDataHead(pDevice, byPktType, wCurrentRate, pvTxDataHd, cbFrameSize, TYPE_TXDMA0, bNeedACK,
@@ -2051,7 +2048,7 @@ void vDMA0_tx_80211(struct vnt_private *pDevice, struct sk_buff *skb)
2051 2048
2052 //Fill FIFO,RrvTime,RTS,and CTS 2049 //Fill FIFO,RrvTime,RTS,and CTS
2053 s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, pbyTxBufferAddr, pvRrvTime, pvRTS, pvCTS, 2050 s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, pbyTxBufferAddr, pvRrvTime, pvRTS, pvCTS,
2054 cbFrameSize, bNeedACK, TYPE_TXDMA0, &sEthHeader); 2051 cbFrameSize, bNeedACK, TYPE_TXDMA0, &sEthHeader, false);
2055 2052
2056 //Fill DataHead 2053 //Fill DataHead
2057 uDuration = s_uFillDataHead(pDevice, byPktType, wCurrentRate, pvTxDataHd, cbFrameSize, TYPE_TXDMA0, bNeedACK, 2054 uDuration = s_uFillDataHead(pDevice, byPktType, wCurrentRate, pvTxDataHd, cbFrameSize, TYPE_TXDMA0, bNeedACK,