diff options
-rw-r--r-- | drivers/staging/vt6656/rxtx.c | 72 | ||||
-rw-r--r-- | drivers/staging/vt6656/rxtx.h | 7 |
2 files changed, 32 insertions, 47 deletions
diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c index 2a9deb6273fc..7b05ee8b702c 100644 --- a/drivers/staging/vt6656/rxtx.c +++ b/drivers/staging/vt6656/rxtx.c | |||
@@ -100,8 +100,8 @@ static void *s_vGetFreeContext(struct vnt_private *pDevice); | |||
100 | 100 | ||
101 | static void s_vGenerateTxParameter(struct vnt_private *pDevice, | 101 | static void s_vGenerateTxParameter(struct vnt_private *pDevice, |
102 | u8 byPktType, u16 wCurrentRate, struct vnt_tx_buffer *tx_buffer, | 102 | u8 byPktType, u16 wCurrentRate, struct vnt_tx_buffer *tx_buffer, |
103 | void *pvRrvTime, void *rts_cts, u32 cbFrameSize, int bNeedACK, | 103 | void *rts_cts, u32 cbFrameSize, int bNeedACK, u32 uDMAIdx, |
104 | u32 uDMAIdx, struct ethhdr *psEthHeader, bool need_rts); | 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, |
@@ -841,8 +841,8 @@ static void s_vFillCTSHead(struct vnt_private *pDevice, u32 uDMAIdx, | |||
841 | 841 | ||
842 | static void s_vGenerateTxParameter(struct vnt_private *pDevice, | 842 | static void s_vGenerateTxParameter(struct vnt_private *pDevice, |
843 | u8 byPktType, u16 wCurrentRate, struct vnt_tx_buffer *tx_buffer, | 843 | u8 byPktType, u16 wCurrentRate, struct vnt_tx_buffer *tx_buffer, |
844 | void *pvRrvTime, void *rts_cts, u32 cbFrameSize, int bNeedACK, | 844 | void *rts_cts, u32 cbFrameSize, int bNeedACK, u32 uDMAIdx, |
845 | u32 uDMAIdx, struct ethhdr *psEthHeader, bool need_rts) | 845 | struct ethhdr *psEthHeader, bool need_rts) |
846 | { | 846 | { |
847 | struct vnt_tx_fifo_head *pFifoHead = &tx_buffer->fifo_head; | 847 | struct vnt_tx_fifo_head *pFifoHead = &tx_buffer->fifo_head; |
848 | union vnt_tx_data_head *head = rts_cts; | 848 | union vnt_tx_data_head *head = rts_cts; |
@@ -861,7 +861,7 @@ static void s_vGenerateTxParameter(struct vnt_private *pDevice, | |||
861 | byFBOption = AUTO_FB_1; | 861 | byFBOption = AUTO_FB_1; |
862 | } | 862 | } |
863 | 863 | ||
864 | if (!pvRrvTime) | 864 | if (!pFifoHead) |
865 | return; | 865 | return; |
866 | 866 | ||
867 | if (pDevice->bLongHeader) | 867 | if (pDevice->bLongHeader) |
@@ -870,8 +870,8 @@ static void s_vGenerateTxParameter(struct vnt_private *pDevice, | |||
870 | if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) { | 870 | if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) { |
871 | if (need_rts) { | 871 | if (need_rts) { |
872 | //Fill RsvTime | 872 | //Fill RsvTime |
873 | struct vnt_rrv_time_rts *pBuf = | 873 | struct vnt_rrv_time_rts *pBuf = &tx_buffer->tx_head.rts; |
874 | (struct vnt_rrv_time_rts *)pvRrvTime; | 874 | |
875 | pBuf->wRTSTxRrvTime_aa = s_uGetRTSCTSRsvTime(pDevice, 2, | 875 | pBuf->wRTSTxRrvTime_aa = s_uGetRTSCTSRsvTime(pDevice, 2, |
876 | byPktType, cbFrameSize, wCurrentRate); | 876 | byPktType, cbFrameSize, wCurrentRate); |
877 | pBuf->wRTSTxRrvTime_ba = s_uGetRTSCTSRsvTime(pDevice, 1, | 877 | pBuf->wRTSTxRrvTime_ba = s_uGetRTSCTSRsvTime(pDevice, 1, |
@@ -889,8 +889,8 @@ static void s_vGenerateTxParameter(struct vnt_private *pDevice, | |||
889 | } | 889 | } |
890 | else {//RTS_needless, PCF mode | 890 | else {//RTS_needless, PCF mode |
891 | //Fill RsvTime | 891 | //Fill RsvTime |
892 | struct vnt_rrv_time_cts *pBuf = | 892 | struct vnt_rrv_time_cts *pBuf = &tx_buffer->tx_head.cts; |
893 | (struct vnt_rrv_time_cts *)pvRrvTime; | 893 | |
894 | pBuf->wTxRrvTime_a = vnt_rxtx_rsvtime_le16(pDevice, byPktType, | 894 | pBuf->wTxRrvTime_a = vnt_rxtx_rsvtime_le16(pDevice, byPktType, |
895 | cbFrameSize, wCurrentRate, bNeedACK); | 895 | cbFrameSize, wCurrentRate, bNeedACK); |
896 | pBuf->wTxRrvTime_b = vnt_rxtx_rsvtime_le16(pDevice, | 896 | pBuf->wTxRrvTime_b = vnt_rxtx_rsvtime_le16(pDevice, |
@@ -906,8 +906,8 @@ static void s_vGenerateTxParameter(struct vnt_private *pDevice, | |||
906 | else if (byPktType == PK_TYPE_11A) { | 906 | else if (byPktType == PK_TYPE_11A) { |
907 | if (need_rts) { | 907 | if (need_rts) { |
908 | //Fill RsvTime | 908 | //Fill RsvTime |
909 | struct vnt_rrv_time_ab *pBuf = | 909 | struct vnt_rrv_time_ab *pBuf = &tx_buffer->tx_head.ab; |
910 | (struct vnt_rrv_time_ab *)pvRrvTime; | 910 | |
911 | pBuf->wRTSTxRrvTime = s_uGetRTSCTSRsvTime(pDevice, 2, | 911 | pBuf->wRTSTxRrvTime = s_uGetRTSCTSRsvTime(pDevice, 2, |
912 | byPktType, cbFrameSize, wCurrentRate); | 912 | byPktType, cbFrameSize, wCurrentRate); |
913 | pBuf->wTxRrvTime = vnt_rxtx_rsvtime_le16(pDevice, byPktType, | 913 | pBuf->wTxRrvTime = vnt_rxtx_rsvtime_le16(pDevice, byPktType, |
@@ -917,8 +917,8 @@ static void s_vGenerateTxParameter(struct vnt_private *pDevice, | |||
917 | bNeedACK, psEthHeader, wCurrentRate, byFBOption); | 917 | bNeedACK, psEthHeader, wCurrentRate, byFBOption); |
918 | } else { | 918 | } else { |
919 | //Fill RsvTime | 919 | //Fill RsvTime |
920 | struct vnt_rrv_time_ab *pBuf = | 920 | struct vnt_rrv_time_ab *pBuf = &tx_buffer->tx_head.ab; |
921 | (struct vnt_rrv_time_ab *)pvRrvTime; | 921 | |
922 | pBuf->wTxRrvTime = vnt_rxtx_rsvtime_le16(pDevice, PK_TYPE_11A, | 922 | pBuf->wTxRrvTime = vnt_rxtx_rsvtime_le16(pDevice, PK_TYPE_11A, |
923 | cbFrameSize, wCurrentRate, bNeedACK); | 923 | cbFrameSize, wCurrentRate, bNeedACK); |
924 | } | 924 | } |
@@ -926,8 +926,8 @@ static void s_vGenerateTxParameter(struct vnt_private *pDevice, | |||
926 | else if (byPktType == PK_TYPE_11B) { | 926 | else if (byPktType == PK_TYPE_11B) { |
927 | if (need_rts) { | 927 | if (need_rts) { |
928 | //Fill RsvTime | 928 | //Fill RsvTime |
929 | struct vnt_rrv_time_ab *pBuf = | 929 | struct vnt_rrv_time_ab *pBuf = &tx_buffer->tx_head.ab; |
930 | (struct vnt_rrv_time_ab *)pvRrvTime; | 930 | |
931 | pBuf->wRTSTxRrvTime = s_uGetRTSCTSRsvTime(pDevice, 0, | 931 | pBuf->wRTSTxRrvTime = s_uGetRTSCTSRsvTime(pDevice, 0, |
932 | byPktType, cbFrameSize, wCurrentRate); | 932 | byPktType, cbFrameSize, wCurrentRate); |
933 | pBuf->wTxRrvTime = vnt_rxtx_rsvtime_le16(pDevice, PK_TYPE_11B, | 933 | pBuf->wTxRrvTime = vnt_rxtx_rsvtime_le16(pDevice, PK_TYPE_11B, |
@@ -938,8 +938,8 @@ static void s_vGenerateTxParameter(struct vnt_private *pDevice, | |||
938 | } | 938 | } |
939 | else { //RTS_needless, non PCF mode | 939 | else { //RTS_needless, non PCF mode |
940 | //Fill RsvTime | 940 | //Fill RsvTime |
941 | struct vnt_rrv_time_ab *pBuf = | 941 | struct vnt_rrv_time_ab *pBuf = &tx_buffer->tx_head.ab; |
942 | (struct vnt_rrv_time_ab *)pvRrvTime; | 942 | |
943 | pBuf->wTxRrvTime = vnt_rxtx_rsvtime_le16(pDevice, PK_TYPE_11B, | 943 | pBuf->wTxRrvTime = vnt_rxtx_rsvtime_le16(pDevice, PK_TYPE_11B, |
944 | cbFrameSize, wCurrentRate, bNeedACK); | 944 | cbFrameSize, wCurrentRate, bNeedACK); |
945 | } | 945 | } |
@@ -972,7 +972,6 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType, | |||
972 | = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0xF8}; | 972 | = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0xF8}; |
973 | u32 uDuration; | 973 | u32 uDuration; |
974 | u32 cbHeaderLength = 0, uPadding = 0; | 974 | u32 cbHeaderLength = 0, uPadding = 0; |
975 | void *pvRrvTime; | ||
976 | struct vnt_mic_hdr *pMICHDR; | 975 | struct vnt_mic_hdr *pMICHDR; |
977 | void *rts_cts = NULL; | 976 | void *rts_cts = NULL; |
978 | void *pvTxDataHd; | 977 | void *pvTxDataHd; |
@@ -981,7 +980,8 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType, | |||
981 | u32 dwMICKey0, dwMICKey1, dwMIC_Priority; | 980 | u32 dwMICKey0, dwMICKey1, dwMIC_Priority; |
982 | u32 *pdwMIC_L, *pdwMIC_R; | 981 | u32 *pdwMIC_L, *pdwMIC_R; |
983 | int bSoftWEP = false; | 982 | int bSoftWEP = false; |
984 | pvRrvTime = pMICHDR = pvTxDataHd = NULL; | 983 | |
984 | pMICHDR = pvTxDataHd = NULL; | ||
985 | 985 | ||
986 | if (bNeedEncryption && pTransmitKey->pvKeyTable) { | 986 | if (bNeedEncryption && pTransmitKey->pvKeyTable) { |
987 | if (((PSKeyTable)pTransmitKey->pvKeyTable)->bSoftWEP == true) | 987 | if (((PSKeyTable)pTransmitKey->pvKeyTable)->bSoftWEP == true) |
@@ -1108,8 +1108,6 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType, | |||
1108 | if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) {//802.11g packet | 1108 | if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) {//802.11g packet |
1109 | if (byFBOption == AUTO_FB_NONE) { | 1109 | if (byFBOption == AUTO_FB_NONE) { |
1110 | if (bRTS == true) {//RTS_need | 1110 | if (bRTS == true) {//RTS_need |
1111 | pvRrvTime = (struct vnt_rrv_time_rts *) | ||
1112 | (pbyTxBufferAddr + wTxBufSize); | ||
1113 | pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + | 1111 | pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + |
1114 | sizeof(struct vnt_rrv_time_rts)); | 1112 | sizeof(struct vnt_rrv_time_rts)); |
1115 | rts_cts = (struct vnt_rts_g *) (pbyTxBufferAddr + wTxBufSize + | 1113 | rts_cts = (struct vnt_rts_g *) (pbyTxBufferAddr + wTxBufSize + |
@@ -1122,8 +1120,6 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType, | |||
1122 | sizeof(struct vnt_tx_datahead_g); | 1120 | sizeof(struct vnt_tx_datahead_g); |
1123 | } | 1121 | } |
1124 | else { //RTS_needless | 1122 | else { //RTS_needless |
1125 | pvRrvTime = (struct vnt_rrv_time_cts *) | ||
1126 | (pbyTxBufferAddr + wTxBufSize); | ||
1127 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + | 1123 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + |
1128 | sizeof(struct vnt_rrv_time_cts)); | 1124 | sizeof(struct vnt_rrv_time_cts)); |
1129 | rts_cts = (struct vnt_cts *) (pbyTxBufferAddr + wTxBufSize + | 1125 | rts_cts = (struct vnt_cts *) (pbyTxBufferAddr + wTxBufSize + |
@@ -1138,8 +1134,6 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType, | |||
1138 | } else { | 1134 | } else { |
1139 | // Auto Fall Back | 1135 | // Auto Fall Back |
1140 | if (bRTS == true) {//RTS_need | 1136 | if (bRTS == true) {//RTS_need |
1141 | pvRrvTime = (struct vnt_rrv_time_rts *)(pbyTxBufferAddr + | ||
1142 | wTxBufSize); | ||
1143 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + | 1137 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + |
1144 | sizeof(struct vnt_rrv_time_rts)); | 1138 | sizeof(struct vnt_rrv_time_rts)); |
1145 | rts_cts = (struct vnt_rts_g_fb *)(pbyTxBufferAddr + wTxBufSize + | 1139 | rts_cts = (struct vnt_rts_g_fb *)(pbyTxBufferAddr + wTxBufSize + |
@@ -1152,8 +1146,6 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType, | |||
1152 | sizeof(struct vnt_tx_datahead_g_fb); | 1146 | sizeof(struct vnt_tx_datahead_g_fb); |
1153 | } | 1147 | } |
1154 | else if (bRTS == false) { //RTS_needless | 1148 | else if (bRTS == false) { //RTS_needless |
1155 | pvRrvTime = (struct vnt_rrv_time_cts *) | ||
1156 | (pbyTxBufferAddr + wTxBufSize); | ||
1157 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + | 1149 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + |
1158 | sizeof(struct vnt_rrv_time_cts)); | 1150 | sizeof(struct vnt_rrv_time_cts)); |
1159 | rts_cts = (struct vnt_cts_fb *) (pbyTxBufferAddr + wTxBufSize + | 1151 | rts_cts = (struct vnt_cts_fb *) (pbyTxBufferAddr + wTxBufSize + |
@@ -1170,8 +1162,6 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType, | |||
1170 | else {//802.11a/b packet | 1162 | else {//802.11a/b packet |
1171 | if (byFBOption == AUTO_FB_NONE) { | 1163 | if (byFBOption == AUTO_FB_NONE) { |
1172 | if (bRTS == true) {//RTS_need | 1164 | if (bRTS == true) {//RTS_need |
1173 | pvRrvTime = (struct vnt_rrv_time_ab *) (pbyTxBufferAddr + | ||
1174 | wTxBufSize); | ||
1175 | pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + | 1165 | pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + |
1176 | sizeof(struct vnt_rrv_time_ab)); | 1166 | sizeof(struct vnt_rrv_time_ab)); |
1177 | rts_cts = (struct vnt_rts_ab *) (pbyTxBufferAddr + wTxBufSize + | 1167 | rts_cts = (struct vnt_rts_ab *) (pbyTxBufferAddr + wTxBufSize + |
@@ -1184,8 +1174,6 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType, | |||
1184 | sizeof(struct vnt_tx_datahead_ab); | 1174 | sizeof(struct vnt_tx_datahead_ab); |
1185 | } | 1175 | } |
1186 | else if (bRTS == false) { //RTS_needless, no MICHDR | 1176 | else if (bRTS == false) { //RTS_needless, no MICHDR |
1187 | pvRrvTime = (struct vnt_rrv_time_ab *)(pbyTxBufferAddr + | ||
1188 | wTxBufSize); | ||
1189 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + | 1177 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + |
1190 | sizeof(struct vnt_rrv_time_ab)); | 1178 | sizeof(struct vnt_rrv_time_ab)); |
1191 | pvTxDataHd = (struct vnt_tx_datahead_ab *)(pbyTxBufferAddr + | 1179 | pvTxDataHd = (struct vnt_tx_datahead_ab *)(pbyTxBufferAddr + |
@@ -1196,8 +1184,6 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType, | |||
1196 | } else { | 1184 | } else { |
1197 | // Auto Fall Back | 1185 | // Auto Fall Back |
1198 | if (bRTS == true) {//RTS_need | 1186 | if (bRTS == true) {//RTS_need |
1199 | pvRrvTime = (struct vnt_rrv_time_ab *)(pbyTxBufferAddr + | ||
1200 | wTxBufSize); | ||
1201 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + | 1187 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + |
1202 | sizeof(struct vnt_rrv_time_ab)); | 1188 | sizeof(struct vnt_rrv_time_ab)); |
1203 | rts_cts = (struct vnt_rts_a_fb *)(pbyTxBufferAddr + wTxBufSize + | 1189 | rts_cts = (struct vnt_rts_a_fb *)(pbyTxBufferAddr + wTxBufSize + |
@@ -1210,8 +1196,6 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType, | |||
1210 | sizeof(struct vnt_tx_datahead_a_fb); | 1196 | sizeof(struct vnt_tx_datahead_a_fb); |
1211 | } | 1197 | } |
1212 | else if (bRTS == false) { //RTS_needless | 1198 | else if (bRTS == false) { //RTS_needless |
1213 | pvRrvTime = (struct vnt_rrv_time_ab *)(pbyTxBufferAddr + | ||
1214 | wTxBufSize); | ||
1215 | pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + | 1199 | pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + |
1216 | sizeof(struct vnt_rrv_time_ab)); | 1200 | sizeof(struct vnt_rrv_time_ab)); |
1217 | pvTxDataHd = (struct vnt_tx_datahead_a_fb *)(pbyTxBufferAddr + | 1201 | pvTxDataHd = (struct vnt_tx_datahead_a_fb *)(pbyTxBufferAddr + |
@@ -1236,7 +1220,7 @@ static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType, | |||
1236 | 1220 | ||
1237 | //Fill FIFO,RrvTime,RTS,and CTS | 1221 | //Fill FIFO,RrvTime,RTS,and CTS |
1238 | s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, | 1222 | s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, |
1239 | tx_buffer, pvRrvTime, rts_cts, | 1223 | tx_buffer, rts_cts, |
1240 | cbFrameSize, bNeedACK, uDMAIdx, psEthHeader, bRTS); | 1224 | cbFrameSize, bNeedACK, uDMAIdx, psEthHeader, bRTS); |
1241 | //Fill DataHead | 1225 | //Fill DataHead |
1242 | uDuration = s_uFillDataHead(pDevice, byPktType, wCurrentRate, pvTxDataHd, cbFrameSize, uDMAIdx, bNeedACK, | 1226 | uDuration = s_uFillDataHead(pDevice, byPktType, wCurrentRate, pvTxDataHd, cbFrameSize, uDMAIdx, bNeedACK, |
@@ -1474,7 +1458,7 @@ CMD_STATUS csMgmt_xmit(struct vnt_private *pDevice, | |||
1474 | struct ethhdr sEthHeader; | 1458 | struct ethhdr sEthHeader; |
1475 | u8 byPktType, *pbyTxBufferAddr; | 1459 | u8 byPktType, *pbyTxBufferAddr; |
1476 | void *rts_cts = NULL; | 1460 | void *rts_cts = NULL; |
1477 | void *pvTxDataHd, *pvRrvTime, *pMICHDR; | 1461 | void *pvTxDataHd, *pMICHDR; |
1478 | u32 uDuration, cbReqCount, cbHeaderSize, cbFrameBodySize, cbFrameSize; | 1462 | u32 uDuration, cbReqCount, cbHeaderSize, cbFrameBodySize, cbFrameSize; |
1479 | int bNeedACK, bIsPSPOLL = false; | 1463 | int bNeedACK, bIsPSPOLL = false; |
1480 | u32 cbIVlen = 0, cbICVlen = 0, cbMIClen = 0, cbFCSlen = 4; | 1464 | u32 cbIVlen = 0, cbICVlen = 0, cbMIClen = 0, cbFCSlen = 4; |
@@ -1606,8 +1590,6 @@ CMD_STATUS csMgmt_xmit(struct vnt_private *pDevice, | |||
1606 | 1590 | ||
1607 | //Set RrvTime/RTS/CTS Buffer | 1591 | //Set RrvTime/RTS/CTS Buffer |
1608 | if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) {//802.11g packet | 1592 | if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) {//802.11g packet |
1609 | |||
1610 | pvRrvTime = (struct vnt_rrv_time_cts *) (pbyTxBufferAddr + wTxBufSize); | ||
1611 | pMICHDR = NULL; | 1593 | pMICHDR = NULL; |
1612 | rts_cts = (struct vnt_cts *) (pbyTxBufferAddr + wTxBufSize + | 1594 | rts_cts = (struct vnt_cts *) (pbyTxBufferAddr + wTxBufSize + |
1613 | sizeof(struct vnt_rrv_time_cts)); | 1595 | sizeof(struct vnt_rrv_time_cts)); |
@@ -1617,7 +1599,6 @@ CMD_STATUS csMgmt_xmit(struct vnt_private *pDevice, | |||
1617 | sizeof(struct vnt_cts) + sizeof(struct vnt_tx_datahead_g); | 1599 | sizeof(struct vnt_cts) + sizeof(struct vnt_tx_datahead_g); |
1618 | } | 1600 | } |
1619 | else { // 802.11a/b packet | 1601 | else { // 802.11a/b packet |
1620 | pvRrvTime = (struct vnt_rrv_time_ab *) (pbyTxBufferAddr + wTxBufSize); | ||
1621 | pMICHDR = NULL; | 1602 | pMICHDR = NULL; |
1622 | pvTxDataHd = (struct vnt_tx_datahead_ab *) (pbyTxBufferAddr + | 1603 | pvTxDataHd = (struct vnt_tx_datahead_ab *) (pbyTxBufferAddr + |
1623 | wTxBufSize + sizeof(struct vnt_rrv_time_ab)); | 1604 | wTxBufSize + sizeof(struct vnt_rrv_time_ab)); |
@@ -1638,7 +1619,7 @@ CMD_STATUS csMgmt_xmit(struct vnt_private *pDevice, | |||
1638 | 1619 | ||
1639 | /* Fill FIFO,RrvTime,RTS,and CTS */ | 1620 | /* Fill FIFO,RrvTime,RTS,and CTS */ |
1640 | s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, | 1621 | s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, |
1641 | pTX_Buffer, pvRrvTime, rts_cts, | 1622 | pTX_Buffer, rts_cts, |
1642 | cbFrameSize, bNeedACK, TYPE_TXDMA0, &sEthHeader, false); | 1623 | cbFrameSize, bNeedACK, TYPE_TXDMA0, &sEthHeader, false); |
1643 | 1624 | ||
1644 | //Fill DataHead | 1625 | //Fill DataHead |
@@ -1847,7 +1828,7 @@ void vDMA0_tx_80211(struct vnt_private *pDevice, struct sk_buff *skb) | |||
1847 | u16 wTxBufSize; | 1828 | u16 wTxBufSize; |
1848 | u32 cbMacHdLen; | 1829 | u32 cbMacHdLen; |
1849 | struct ethhdr sEthHeader; | 1830 | struct ethhdr sEthHeader; |
1850 | void *pvRrvTime, *pMICHDR; | 1831 | void *pMICHDR; |
1851 | u32 wCurrentRate = RATE_1M; | 1832 | u32 wCurrentRate = RATE_1M; |
1852 | PUWLAN_80211HDR p80211Header; | 1833 | PUWLAN_80211HDR p80211Header; |
1853 | u32 uNodeIndex = 0; | 1834 | u32 uNodeIndex = 0; |
@@ -1858,7 +1839,7 @@ void vDMA0_tx_80211(struct vnt_private *pDevice, struct sk_buff *skb) | |||
1858 | u32 cbExtSuppRate = 0; | 1839 | u32 cbExtSuppRate = 0; |
1859 | struct vnt_usb_send_context *pContext; | 1840 | struct vnt_usb_send_context *pContext; |
1860 | 1841 | ||
1861 | pvRrvTime = pMICHDR = pvTxDataHd = NULL; | 1842 | pMICHDR = pvTxDataHd = NULL; |
1862 | 1843 | ||
1863 | if(skb->len <= WLAN_HDR_ADDR3_LEN) { | 1844 | if(skb->len <= WLAN_HDR_ADDR3_LEN) { |
1864 | cbFrameBodySize = 0; | 1845 | cbFrameBodySize = 0; |
@@ -2017,7 +1998,6 @@ void vDMA0_tx_80211(struct vnt_private *pDevice, struct sk_buff *skb) | |||
2017 | //the rest of pTxBufHead->wFragCtl:FragTyp will be set later in s_vFillFragParameter() | 1998 | //the rest of pTxBufHead->wFragCtl:FragTyp will be set later in s_vFillFragParameter() |
2018 | 1999 | ||
2019 | if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) {//802.11g packet | 2000 | if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) {//802.11g packet |
2020 | pvRrvTime = (struct vnt_rrv_time_cts *) (pbyTxBufferAddr + wTxBufSize); | ||
2021 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + | 2001 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + |
2022 | sizeof(struct vnt_rrv_time_cts)); | 2002 | sizeof(struct vnt_rrv_time_cts)); |
2023 | rts_cts = (struct vnt_cts *) (pbyTxBufferAddr + wTxBufSize + | 2003 | rts_cts = (struct vnt_cts *) (pbyTxBufferAddr + wTxBufSize + |
@@ -2030,8 +2010,6 @@ void vDMA0_tx_80211(struct vnt_private *pDevice, struct sk_buff *skb) | |||
2030 | 2010 | ||
2031 | } | 2011 | } |
2032 | else {//802.11a/b packet | 2012 | else {//802.11a/b packet |
2033 | |||
2034 | pvRrvTime = (struct vnt_rrv_time_ab *) (pbyTxBufferAddr + wTxBufSize); | ||
2035 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + | 2013 | pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + |
2036 | sizeof(struct vnt_rrv_time_ab)); | 2014 | sizeof(struct vnt_rrv_time_ab)); |
2037 | pvTxDataHd = (struct vnt_tx_datahead_ab *)(pbyTxBufferAddr + | 2015 | pvTxDataHd = (struct vnt_tx_datahead_ab *)(pbyTxBufferAddr + |
@@ -2052,7 +2030,7 @@ void vDMA0_tx_80211(struct vnt_private *pDevice, struct sk_buff *skb) | |||
2052 | 2030 | ||
2053 | /* Fill FIFO,RrvTime,RTS,and CTS */ | 2031 | /* Fill FIFO,RrvTime,RTS,and CTS */ |
2054 | s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, | 2032 | s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, |
2055 | pTX_Buffer, pvRrvTime, rts_cts, | 2033 | pTX_Buffer, rts_cts, |
2056 | cbFrameSize, bNeedACK, TYPE_TXDMA0, &sEthHeader, false); | 2034 | cbFrameSize, bNeedACK, TYPE_TXDMA0, &sEthHeader, false); |
2057 | 2035 | ||
2058 | //Fill DataHead | 2036 | //Fill DataHead |
diff --git a/drivers/staging/vt6656/rxtx.h b/drivers/staging/vt6656/rxtx.h index 137e62d47472..78b7b749ef96 100644 --- a/drivers/staging/vt6656/rxtx.h +++ b/drivers/staging/vt6656/rxtx.h | |||
@@ -180,6 +180,12 @@ union vnt_tx_data_head { | |||
180 | struct vnt_cts_fb cts_g_fb; | 180 | struct vnt_cts_fb cts_g_fb; |
181 | }; | 181 | }; |
182 | 182 | ||
183 | union vnt_tx_head { | ||
184 | struct vnt_rrv_time_rts rts; | ||
185 | struct vnt_rrv_time_cts cts; | ||
186 | struct vnt_rrv_time_ab ab; | ||
187 | }; | ||
188 | |||
183 | struct vnt_tx_fifo_head { | 189 | struct vnt_tx_fifo_head { |
184 | u32 adwTxKey[4]; | 190 | u32 adwTxKey[4]; |
185 | u16 wFIFOCtl; | 191 | u16 wFIFOCtl; |
@@ -193,6 +199,7 @@ struct vnt_tx_buffer { | |||
193 | u8 byPKTNO; | 199 | u8 byPKTNO; |
194 | u16 wTxByteCount; | 200 | u16 wTxByteCount; |
195 | struct vnt_tx_fifo_head fifo_head; | 201 | struct vnt_tx_fifo_head fifo_head; |
202 | union vnt_tx_head tx_head; | ||
196 | } __packed; | 203 | } __packed; |
197 | 204 | ||
198 | struct vnt_beacon_buffer { | 205 | struct vnt_beacon_buffer { |