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

staging: vt6656: desc.h Remove typedef struct tagSMICHDRHead to new structure in rxtx.h

To new structure.
typedef struct tagSMICHDRHead -> struct vnt_mic_hdr

This is only needed by rxtc.c so moved to rxtx.h

The new structure is the same size as the old but
contains the members as pointer referenced in
rxtx.c s_vFillTxKey
u8 id
*pMICHDR = 0x59;
u8 tx_priority;
*((u8 *)(pMICHDR+1)) = 0; // TxPriority
u8 mic_addr2[6];
memcpy(pMICHDR+2, &(pMACHeader->addr2[0]), 6);
__be32 tsc_47_16;
pMICHDR+8 = HIBYTE(HIWORD(pTransmitKey->dwTSC47_16));
pMICHDR+9 = LOBYTE(HIWORD(pTransmitKey->dwTSC47_16));
pMICHDR+10 = HIBYTE(LOWORD(pTransmitKey->dwTSC47_16));
pMICHDR+11 = LOBYTE(LOWORD(pTransmitKey->dwTSC47_16));
__be16 tsc_15_0;
pMICHDR+12 = HIBYTE(pTransmitKey->wTSC15_0);
pMICHDR+13 = LOBYTE(pTransmitKey->wTSC15_0);
__be16 payload_len;
pMICHDR+14 = HIBYTE(wPayloadLen);
pMICHDR+15 = LOBYTE(wPayloadLen);
__be16 hlen;
pMICHDR+16 = 0; // HLEN[15:8]
pMICHDR+17 = 28; // HLEN[7:0]
__le16 frame_control;
memcpy(pMICHDR+18, (u8 *)&wValue, 2); // MSKFRACTL
u8 addr1[6];
memcpy(pMICHDR+20, &(pMACHeader->addr1[0]), 6);
u8 addr2[6];
memcpy(pMICHDR+26, &(pMACHeader->addr2[0]), 6);
u8 addr3[6];
memcpy(pMICHDR+32, &(pMACHeader->addr3[0]), 6);
__le16 seq_ctrl;
memcpy(pMICHDR+38, (u8 *)&wValue, 2); // MSKSEQCTL
u8 addr4[6];
memcpy(pMICHDR+40, &(pMACHeader->addr4[0]), 6);
u16 packing; /* packing to 48 bytes */

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
5a5d6a80 f115e76a

+31 -25
-12
drivers/staging/vt6656/desc.h
··· 163 163 STxShortBufHead, *PSTxShortBufHead; 164 164 typedef const STxShortBufHead *PCSTxShortBufHead; 165 165 166 - /* 167 - * MICHDR data header 168 - */ 169 - typedef struct tagSMICHDRHead { 170 - u32 adwHDR0[4]; 171 - u32 adwHDR1[4]; 172 - u32 adwHDR2[4]; 173 - } __attribute__ ((__packed__)) 174 - SMICHDRHead, *PSMICHDRHead; 175 - 176 - typedef const SMICHDRHead *PCSMICHDRHead; 177 - 178 166 typedef struct tagSBEACONCtl { 179 167 u32 BufReady:1; 180 168 u32 TSF:15;
+13 -13
drivers/staging/vt6656/rxtx.c
··· 1004 1004 u32 uDuration; 1005 1005 u32 cbHeaderLength = 0, uPadding = 0; 1006 1006 void *pvRrvTime; 1007 - PSMICHDRHead pMICHDR; 1007 + struct vnt_mic_hdr *pMICHDR; 1008 1008 void *pvRTS; 1009 1009 void *pvCTS; 1010 1010 void *pvTxDataHd; ··· 1121 1121 if (pTransmitKey->byCipherSuite == KEY_CTL_CCMP) { 1122 1122 cbIVlen = 8;//RSN Header 1123 1123 cbICVlen = 8;//MIC 1124 - cbMICHDR = sizeof(SMICHDRHead); 1124 + cbMICHDR = sizeof(struct vnt_mic_hdr); 1125 1125 } 1126 1126 if (bSoftWEP == false) { 1127 1127 //MAC Header should be padding 0 to DW alignment. ··· 1146 1146 if (bRTS == true) {//RTS_need 1147 1147 pvRrvTime = (struct vnt_rrv_time_rts *) 1148 1148 (pbyTxBufferAddr + wTxBufSize); 1149 - pMICHDR = (PSMICHDRHead)(pbyTxBufferAddr + wTxBufSize + 1149 + pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + 1150 1150 sizeof(struct vnt_rrv_time_rts)); 1151 1151 pvRTS = (struct vnt_rts_g *) (pbyTxBufferAddr + wTxBufSize + 1152 1152 sizeof(struct vnt_rrv_time_rts) + cbMICHDR); ··· 1161 1161 else { //RTS_needless 1162 1162 pvRrvTime = (struct vnt_rrv_time_cts *) 1163 1163 (pbyTxBufferAddr + wTxBufSize); 1164 - pMICHDR = (PSMICHDRHead) (pbyTxBufferAddr + wTxBufSize + 1164 + pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 1165 1165 sizeof(struct vnt_rrv_time_cts)); 1166 1166 pvRTS = NULL; 1167 1167 pvCTS = (struct vnt_cts *) (pbyTxBufferAddr + wTxBufSize + ··· 1178 1178 if (bRTS == true) {//RTS_need 1179 1179 pvRrvTime = (struct vnt_rrv_time_rts *)(pbyTxBufferAddr + 1180 1180 wTxBufSize); 1181 - pMICHDR = (PSMICHDRHead) (pbyTxBufferAddr + wTxBufSize + 1181 + pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 1182 1182 sizeof(struct vnt_rrv_time_rts)); 1183 1183 pvRTS = (struct vnt_rts_g_fb *) (pbyTxBufferAddr + wTxBufSize + 1184 1184 sizeof(struct vnt_rrv_time_rts) + cbMICHDR); ··· 1193 1193 else if (bRTS == false) { //RTS_needless 1194 1194 pvRrvTime = (struct vnt_rrv_time_cts *) 1195 1195 (pbyTxBufferAddr + wTxBufSize); 1196 - pMICHDR = (PSMICHDRHead) (pbyTxBufferAddr + wTxBufSize + 1196 + pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 1197 1197 sizeof(struct vnt_rrv_time_cts)); 1198 1198 pvRTS = NULL; 1199 1199 pvCTS = (struct vnt_cts_fb *) (pbyTxBufferAddr + wTxBufSize + ··· 1212 1212 if (bRTS == true) {//RTS_need 1213 1213 pvRrvTime = (struct vnt_rrv_time_ab *) (pbyTxBufferAddr + 1214 1214 wTxBufSize); 1215 - pMICHDR = (PSMICHDRHead)(pbyTxBufferAddr + wTxBufSize + 1215 + pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + 1216 1216 sizeof(struct vnt_rrv_time_ab)); 1217 1217 pvRTS = (struct vnt_rts_ab *) (pbyTxBufferAddr + wTxBufSize + 1218 1218 sizeof(struct vnt_rrv_time_ab) + cbMICHDR); ··· 1227 1227 else if (bRTS == false) { //RTS_needless, no MICHDR 1228 1228 pvRrvTime = (struct vnt_rrv_time_ab *)(pbyTxBufferAddr + 1229 1229 wTxBufSize); 1230 - pMICHDR = (PSMICHDRHead) (pbyTxBufferAddr + wTxBufSize + 1230 + pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 1231 1231 sizeof(struct vnt_rrv_time_ab)); 1232 1232 pvRTS = NULL; 1233 1233 pvCTS = NULL; ··· 1241 1241 if (bRTS == true) {//RTS_need 1242 1242 pvRrvTime = (struct vnt_rrv_time_ab *)(pbyTxBufferAddr + 1243 1243 wTxBufSize); 1244 - pMICHDR = (PSMICHDRHead) (pbyTxBufferAddr + wTxBufSize + 1244 + pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 1245 1245 sizeof(struct vnt_rrv_time_ab)); 1246 1246 pvRTS = (struct vnt_rts_a_fb *) (pbyTxBufferAddr + wTxBufSize + 1247 1247 sizeof(struct vnt_rrv_time_ab) + cbMICHDR); ··· 1256 1256 else if (bRTS == false) { //RTS_needless 1257 1257 pvRrvTime = (struct vnt_rrv_time_ab *)(pbyTxBufferAddr + 1258 1258 wTxBufSize); 1259 - pMICHDR = (PSMICHDRHead)(pbyTxBufferAddr + wTxBufSize + 1259 + pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + 1260 1260 sizeof(struct vnt_rrv_time_ab)); 1261 1261 pvRTS = NULL; 1262 1262 pvCTS = NULL; ··· 2057 2057 else if (pDevice->eEncryptionStatus == Ndis802_11Encryption3Enabled) { 2058 2058 cbIVlen = 8;//RSN Header 2059 2059 cbICVlen = 8;//MIC 2060 - cbMICHDR = sizeof(SMICHDRHead); 2060 + cbMICHDR = sizeof(struct vnt_mic_hdr); 2061 2061 pTxBufHead->wFragCtl |= FRAGCTL_AES; 2062 2062 pDevice->bAES = true; 2063 2063 } ··· 2076 2076 2077 2077 if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) {//802.11g packet 2078 2078 pvRrvTime = (struct vnt_rrv_time_cts *) (pbyTxBufferAddr + wTxBufSize); 2079 - pMICHDR = (PSMICHDRHead) (pbyTxBufferAddr + wTxBufSize + 2079 + pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 2080 2080 sizeof(struct vnt_rrv_time_cts)); 2081 2081 pvRTS = NULL; 2082 2082 pvCTS = (struct vnt_cts *) (pbyTxBufferAddr + wTxBufSize + ··· 2091 2091 else {//802.11a/b packet 2092 2092 2093 2093 pvRrvTime = (struct vnt_rrv_time_ab *) (pbyTxBufferAddr + wTxBufSize); 2094 - pMICHDR = (PSMICHDRHead) (pbyTxBufferAddr + wTxBufSize + 2094 + pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + 2095 2095 sizeof(struct vnt_rrv_time_ab)); 2096 2096 pvRTS = NULL; 2097 2097 pvCTS = NULL;
+18
drivers/staging/vt6656/rxtx.h
··· 33 33 #include "wcmd.h" 34 34 #include "baseband.h" 35 35 36 + /* MIC HDR data header */ 37 + struct vnt_mic_hdr { 38 + u8 id; 39 + u8 tx_priority; 40 + u8 mic_addr2[6]; 41 + __be32 tsc_47_16; 42 + __be16 tsc_15_0; 43 + __be16 payload_len; 44 + __be16 hlen; 45 + __le16 frame_control; 46 + u8 addr1[6]; 47 + u8 addr2[6]; 48 + u8 addr3[6]; 49 + __le16 seq_ctrl; 50 + u8 addr4[6]; 51 + u16 packing; /* packing to 48 bytes */ 52 + } __packed; 53 + 36 54 /* RsvTime buffer header */ 37 55 struct vnt_rrv_time_rts { 38 56 u16 wRTSTxRrvTime_ba;