Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

staging: vt6656: rxtx.c s_vGenerateTxParameter Create vnt_mic_hdr structure

Create double pointer to pass back vnt_mic_hdr address position
of relevant structure if need_mic is more than 0. Otherwise it
is NULL.

This replaces the pMICHDR void pointer with struct vnt_mic_hdr
and assignments in the calling functions.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Malcolm Priestley and committed by
Greg Kroah-Hartman
f0e0d505 56c60e4f

+28 -27
+28 -27
drivers/staging/vt6656/rxtx.c
··· 100 100 101 101 static void s_vGenerateTxParameter(struct vnt_private *pDevice, 102 102 u8 byPktType, u16 wCurrentRate, struct vnt_tx_buffer *tx_buffer, 103 + struct vnt_mic_hdr **mic_hdr, u32 need_mic, 103 104 void *rts_cts, u32 cbFrameSize, int bNeedACK, u32 uDMAIdx, 104 105 struct ethhdr *psEthHeader, bool need_rts); 105 106 ··· 842 841 843 842 static void s_vGenerateTxParameter(struct vnt_private *pDevice, 844 843 u8 byPktType, u16 wCurrentRate, struct vnt_tx_buffer *tx_buffer, 844 + struct vnt_mic_hdr **mic_hdr, u32 need_mic, 845 845 void *rts_cts, u32 cbFrameSize, int bNeedACK, u32 uDMAIdx, 846 846 struct ethhdr *psEthHeader, bool need_rts) 847 847 { ··· 885 883 pBuf->wTxRrvTime_b = vnt_rxtx_rsvtime_le16(pDevice, 886 884 PK_TYPE_11B, cbFrameSize, pDevice->byTopCCKBasicRate, 887 885 bNeedACK); 886 + if (need_mic) 887 + *mic_hdr = &tx_buffer->tx_head.tx_rts.tx.mic.hdr; 888 + 888 889 /* Fill RTS */ 889 890 s_vFillRTSHead(pDevice, byPktType, head, cbFrameSize, 890 891 bNeedACK, psEthHeader, wCurrentRate, byFBOption); ··· 903 898 pDevice->byTopCCKBasicRate, bNeedACK); 904 899 pBuf->wCTSTxRrvTime_ba = s_uGetRTSCTSRsvTime(pDevice, 3, 905 900 byPktType, cbFrameSize, wCurrentRate); 901 + 902 + if (need_mic) 903 + *mic_hdr = &tx_buffer->tx_head.tx_cts.tx.mic.hdr; 904 + 906 905 /* Fill CTS */ 907 906 s_vFillCTSHead(pDevice, uDMAIdx, byPktType, head, 908 907 cbFrameSize, bNeedACK, wCurrentRate, byFBOption); ··· 921 912 byPktType, cbFrameSize, wCurrentRate); 922 913 pBuf->wTxRrvTime = vnt_rxtx_rsvtime_le16(pDevice, byPktType, 923 914 cbFrameSize, wCurrentRate, bNeedACK); 915 + if (need_mic) 916 + *mic_hdr = &tx_buffer->tx_head.tx_ab.tx.mic.hdr; 917 + 924 918 /* Fill RTS */ 925 919 s_vFillRTSHead(pDevice, byPktType, head, cbFrameSize, 926 920 bNeedACK, psEthHeader, wCurrentRate, byFBOption); 927 921 } else { 928 922 //Fill RsvTime 929 923 struct vnt_rrv_time_ab *pBuf = &tx_buffer->tx_head.tx_ab.ab; 924 + 925 + if (need_mic) 926 + *mic_hdr = &tx_buffer->tx_head.tx_ab.tx.mic.hdr; 930 927 931 928 pBuf->wTxRrvTime = vnt_rxtx_rsvtime_le16(pDevice, PK_TYPE_11A, 932 929 cbFrameSize, wCurrentRate, bNeedACK); ··· 947 932 byPktType, cbFrameSize, wCurrentRate); 948 933 pBuf->wTxRrvTime = vnt_rxtx_rsvtime_le16(pDevice, PK_TYPE_11B, 949 934 cbFrameSize, wCurrentRate, bNeedACK); 935 + 936 + if (need_mic) 937 + *mic_hdr = &tx_buffer->tx_head.tx_ab.tx.mic.hdr; 938 + 950 939 /* Fill RTS */ 951 940 s_vFillRTSHead(pDevice, byPktType, head, cbFrameSize, 952 941 bNeedACK, psEthHeader, wCurrentRate, byFBOption); ··· 958 939 else { //RTS_needless, non PCF mode 959 940 //Fill RsvTime 960 941 struct vnt_rrv_time_ab *pBuf = &tx_buffer->tx_head.tx_ab.ab; 942 + 943 + if (need_mic) 944 + *mic_hdr = &tx_buffer->tx_head.tx_ab.tx.mic.hdr; 961 945 962 946 pBuf->wTxRrvTime = vnt_rxtx_rsvtime_le16(pDevice, PK_TYPE_11B, 963 947 cbFrameSize, wCurrentRate, bNeedACK); ··· 1130 1108 if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) {//802.11g packet 1131 1109 if (byFBOption == AUTO_FB_NONE) { 1132 1110 if (bRTS == true) {//RTS_need 1133 - pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + 1134 - sizeof(struct vnt_rrv_time_rts)); 1135 1111 rts_cts = (struct vnt_rts_g *) (pbyTxBufferAddr + wTxBufSize + 1136 1112 sizeof(struct vnt_rrv_time_rts) + cbMICHDR); 1137 1113 pvTxDataHd = (struct vnt_tx_datahead_g *) (pbyTxBufferAddr + ··· 1140 1120 sizeof(struct vnt_tx_datahead_g); 1141 1121 } 1142 1122 else { //RTS_needless 1143 - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 1144 - sizeof(struct vnt_rrv_time_cts)); 1145 1123 rts_cts = (struct vnt_cts *) (pbyTxBufferAddr + wTxBufSize + 1146 1124 sizeof(struct vnt_rrv_time_cts) + cbMICHDR); 1147 1125 pvTxDataHd = (struct vnt_tx_datahead_g *)(pbyTxBufferAddr + ··· 1152 1134 } else { 1153 1135 // Auto Fall Back 1154 1136 if (bRTS == true) {//RTS_need 1155 - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 1156 - sizeof(struct vnt_rrv_time_rts)); 1157 1137 rts_cts = (struct vnt_rts_g_fb *)(pbyTxBufferAddr + wTxBufSize + 1158 1138 sizeof(struct vnt_rrv_time_rts) + cbMICHDR); 1159 1139 pvTxDataHd = (struct vnt_tx_datahead_g_fb *) (pbyTxBufferAddr + ··· 1162 1146 sizeof(struct vnt_tx_datahead_g_fb); 1163 1147 } 1164 1148 else if (bRTS == false) { //RTS_needless 1165 - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 1166 - sizeof(struct vnt_rrv_time_cts)); 1167 1149 rts_cts = (struct vnt_cts_fb *) (pbyTxBufferAddr + wTxBufSize + 1168 1150 sizeof(struct vnt_rrv_time_cts) + cbMICHDR); 1169 1151 pvTxDataHd = (struct vnt_tx_datahead_g_fb *) (pbyTxBufferAddr + ··· 1176 1162 else {//802.11a/b packet 1177 1163 if (byFBOption == AUTO_FB_NONE) { 1178 1164 if (bRTS == true) {//RTS_need 1179 - pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + 1180 - sizeof(struct vnt_rrv_time_ab)); 1181 1165 rts_cts = (struct vnt_rts_ab *) (pbyTxBufferAddr + wTxBufSize + 1182 1166 sizeof(struct vnt_rrv_time_ab) + cbMICHDR); 1183 1167 pvTxDataHd = (struct vnt_tx_datahead_ab *)(pbyTxBufferAddr + ··· 1186 1174 sizeof(struct vnt_tx_datahead_ab); 1187 1175 } 1188 1176 else if (bRTS == false) { //RTS_needless, no MICHDR 1189 - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 1190 - sizeof(struct vnt_rrv_time_ab)); 1191 1177 pvTxDataHd = (struct vnt_tx_datahead_ab *)(pbyTxBufferAddr + 1192 1178 wTxBufSize + sizeof(struct vnt_rrv_time_ab) + cbMICHDR); 1193 1179 cbHeaderLength = wTxBufSize + sizeof(struct vnt_rrv_time_ab) + ··· 1194 1184 } else { 1195 1185 // Auto Fall Back 1196 1186 if (bRTS == true) {//RTS_need 1197 - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 1198 - sizeof(struct vnt_rrv_time_ab)); 1199 1187 rts_cts = (struct vnt_rts_a_fb *)(pbyTxBufferAddr + wTxBufSize + 1200 1188 sizeof(struct vnt_rrv_time_ab) + cbMICHDR); 1201 1189 pvTxDataHd = (struct vnt_tx_datahead_a_fb *)(pbyTxBufferAddr + ··· 1204 1196 sizeof(struct vnt_tx_datahead_a_fb); 1205 1197 } 1206 1198 else if (bRTS == false) { //RTS_needless 1207 - pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + 1208 - sizeof(struct vnt_rrv_time_ab)); 1209 1199 pvTxDataHd = (struct vnt_tx_datahead_a_fb *)(pbyTxBufferAddr + 1210 1200 wTxBufSize + sizeof(struct vnt_rrv_time_ab) + cbMICHDR); 1211 1201 cbHeaderLength = wTxBufSize + sizeof(struct vnt_rrv_time_ab) + ··· 1226 1220 1227 1221 //Fill FIFO,RrvTime,RTS,and CTS 1228 1222 s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, 1229 - tx_buffer, rts_cts, 1223 + tx_buffer, &pMICHDR, cbMICHDR, rts_cts, 1230 1224 cbFrameSize, bNeedACK, uDMAIdx, psEthHeader, bRTS); 1231 1225 //Fill DataHead 1232 1226 uDuration = s_uFillDataHead(pDevice, byPktType, wCurrentRate, pvTxDataHd, cbFrameSize, uDMAIdx, bNeedACK, ··· 1464 1458 struct ethhdr sEthHeader; 1465 1459 u8 byPktType, *pbyTxBufferAddr; 1466 1460 void *rts_cts = NULL; 1467 - void *pvTxDataHd, *pMICHDR; 1461 + void *pvTxDataHd; 1462 + struct vnt_mic_hdr *pMICHDR = NULL; 1468 1463 u32 uDuration, cbReqCount, cbHeaderSize, cbFrameBodySize, cbFrameSize; 1469 1464 int bNeedACK, bIsPSPOLL = false; 1470 1465 u32 cbIVlen = 0, cbICVlen = 0, cbMIClen = 0, cbFCSlen = 4; ··· 1597 1590 1598 1591 //Set RrvTime/RTS/CTS Buffer 1599 1592 if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) {//802.11g packet 1600 - pMICHDR = NULL; 1601 1593 rts_cts = (struct vnt_cts *) (pbyTxBufferAddr + wTxBufSize + 1602 1594 sizeof(struct vnt_rrv_time_cts)); 1603 1595 pvTxDataHd = (struct vnt_tx_datahead_g *)(pbyTxBufferAddr + wTxBufSize + ··· 1605 1599 sizeof(struct vnt_cts) + sizeof(struct vnt_tx_datahead_g); 1606 1600 } 1607 1601 else { // 802.11a/b packet 1608 - pMICHDR = NULL; 1609 1602 pvTxDataHd = (struct vnt_tx_datahead_ab *) (pbyTxBufferAddr + 1610 1603 wTxBufSize + sizeof(struct vnt_rrv_time_ab)); 1611 1604 cbHeaderSize = wTxBufSize + sizeof(struct vnt_rrv_time_ab) + ··· 1624 1619 1625 1620 /* Fill FIFO,RrvTime,RTS,and CTS */ 1626 1621 s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, 1627 - pTX_Buffer, rts_cts, 1622 + pTX_Buffer, &pMICHDR, 0, rts_cts, 1628 1623 cbFrameSize, bNeedACK, TYPE_TXDMA0, &sEthHeader, false); 1629 1624 1630 1625 //Fill DataHead ··· 1833 1828 u16 wTxBufSize; 1834 1829 u32 cbMacHdLen; 1835 1830 struct ethhdr sEthHeader; 1836 - void *pMICHDR; 1831 + struct vnt_mic_hdr *pMICHDR; 1837 1832 u32 wCurrentRate = RATE_1M; 1838 1833 PUWLAN_80211HDR p80211Header; 1839 1834 u32 uNodeIndex = 0; ··· 2003 1998 //the rest of pTxBufHead->wFragCtl:FragTyp will be set later in s_vFillFragParameter() 2004 1999 2005 2000 if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) {//802.11g packet 2006 - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 2007 - sizeof(struct vnt_rrv_time_cts)); 2008 2001 rts_cts = (struct vnt_cts *) (pbyTxBufferAddr + wTxBufSize + 2009 2002 sizeof(struct vnt_rrv_time_cts) + cbMICHDR); 2010 2003 pvTxDataHd = (struct vnt_tx_datahead_g *) (pbyTxBufferAddr + ··· 2013 2010 2014 2011 } 2015 2012 else {//802.11a/b packet 2016 - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 2017 - sizeof(struct vnt_rrv_time_ab)); 2018 2013 pvTxDataHd = (struct vnt_tx_datahead_ab *)(pbyTxBufferAddr + 2019 2014 wTxBufSize + sizeof(struct vnt_rrv_time_ab) + cbMICHDR); 2020 2015 cbHeaderSize = wTxBufSize + sizeof(struct vnt_rrv_time_ab) + cbMICHDR + ··· 2031 2030 2032 2031 /* Fill FIFO,RrvTime,RTS,and CTS */ 2033 2032 s_vGenerateTxParameter(pDevice, byPktType, wCurrentRate, 2034 - pTX_Buffer, rts_cts, 2033 + pTX_Buffer, &pMICHDR, cbMICHDR, rts_cts, 2035 2034 cbFrameSize, bNeedACK, TYPE_TXDMA0, &sEthHeader, false); 2036 2035 2037 2036 //Fill DataHead