diff options
-rw-r--r-- | drivers/staging/vt6656/rxtx.c | 25 |
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); | |||
101 | static void s_vGenerateTxParameter(struct vnt_private *pDevice, | 101 | static 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 | ||
106 | static u32 s_uFillDataHead(struct vnt_private *pDevice, | 106 | static 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, | |||
829 | static void s_vGenerateTxParameter(struct vnt_private *pDevice, | 829 | static 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, |