staging: vt6656: csBeacon_xmit merge structures.
authorMalcolm Priestley <tvboxspy@gmail.com>
Sun, 24 Nov 2013 13:25:25 +0000 (13:25 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Nov 2013 20:41:43 +0000 (12:41 -0800)
Merge structures typedef struct tagSTxShortBufHead and the members of
struct vnt_tx_datahead_ab to form single structure vnt_tx_short_buf_head.

Remove the duplicate members in struct vnt_beacon_buffer already in
typedef struct tagSTxShortBufHead.

This removes the need for any pointer arithmetic.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/vt6656/desc.h
drivers/staging/vt6656/rxtx.c
drivers/staging/vt6656/rxtx.h

index afe7074c3037e37614121f12077b277fa86cecde..7c6dd5f52295608e170ab31028c71002575b9c2e 100644 (file)
 /*
  * TX FIFO header
  */
-
-typedef struct tagSTxShortBufHead {
-    u16    wFIFOCtl;
-    u16    wTimeStamp;
-} __attribute__ ((__packed__))
-STxShortBufHead, *PSTxShortBufHead;
-typedef const STxShortBufHead *PCSTxShortBufHead;
-
 typedef struct tagSBEACONCtl {
        u32 BufReady:1;
        u32 TSF:15;
index a95575fdd408fabe967fad869577bbd2a62ea634..a45604a4f81c8e89df1289a9dd4228c0a93c6890 100644 (file)
@@ -1643,12 +1643,10 @@ CMD_STATUS csBeacon_xmit(struct vnt_private *pDevice,
        struct vnt_tx_mgmt *pPacket)
 {
        struct vnt_beacon_buffer *pTX_Buffer;
+       struct vnt_tx_short_buf_head *short_head;
        u32 cbFrameSize = pPacket->cbMPDULen + WLAN_FCS_LEN;
        u32 cbHeaderSize = 0;
-       u16 wTxBufSize = sizeof(STxShortBufHead);
-       PSTxShortBufHead pTxBufHead;
        struct ieee80211_hdr *pMACHeader;
-       struct vnt_tx_datahead_ab *pTxDataHead;
        u16 wCurrentRate;
        u32 cbFrameBodySize;
        u32 cbReqCount;
@@ -1664,39 +1662,40 @@ CMD_STATUS csBeacon_xmit(struct vnt_private *pDevice,
     }
 
        pTX_Buffer = (struct vnt_beacon_buffer *)&pContext->Data[0];
-    pbyTxBufferAddr = (u8 *)&(pTX_Buffer->wFIFOCtl);
+       short_head = &pTX_Buffer->short_head;
+       pbyTxBufferAddr = (u8 *)&short_head->fifo_ctl;
 
     cbFrameBodySize = pPacket->cbPayloadLen;
 
-    pTxBufHead = (PSTxShortBufHead) pbyTxBufferAddr;
-    wTxBufSize = sizeof(STxShortBufHead);
+       cbHeaderSize = sizeof(struct vnt_tx_short_buf_head);
 
-    if (pDevice->byBBType == BB_TYPE_11A) {
-        wCurrentRate = RATE_6M;
-       pTxDataHead = (struct vnt_tx_datahead_ab *)
-                       (pbyTxBufferAddr + wTxBufSize);
-        //Get SignalField,ServiceField,Length
-       BBvCalculateParameter(pDevice, cbFrameSize, wCurrentRate, PK_TYPE_11A,
-                                                       &pTxDataHead->ab);
-        //Get Duration and TimeStampOff
-       pTxDataHead->wDuration = s_uGetDataDuration(pDevice,
-                                               PK_TYPE_11A, false);
-       pTxDataHead->wTimeStampOff = vnt_time_stamp_off(pDevice, wCurrentRate);
-       cbHeaderSize = wTxBufSize + sizeof(struct vnt_tx_datahead_ab);
-    } else {
-        wCurrentRate = RATE_1M;
-        pTxBufHead->wFIFOCtl |= FIFOCTL_11B;
-       pTxDataHead = (struct vnt_tx_datahead_ab *)
-                               (pbyTxBufferAddr + wTxBufSize);
-        //Get SignalField,ServiceField,Length
-       BBvCalculateParameter(pDevice, cbFrameSize, wCurrentRate, PK_TYPE_11B,
-                                                       &pTxDataHead->ab);
-        //Get Duration and TimeStampOff
-       pTxDataHead->wDuration = s_uGetDataDuration(pDevice,
+       if (pDevice->byBBType == BB_TYPE_11A) {
+               wCurrentRate = RATE_6M;
+
+               /* Get SignalField,ServiceField,Length */
+               BBvCalculateParameter(pDevice, cbFrameSize, wCurrentRate,
+                       PK_TYPE_11A, &short_head->ab);
+
+               /* Get Duration and TimeStampOff */
+               short_head->duration = s_uGetDataDuration(pDevice,
+                                                       PK_TYPE_11A, false);
+               short_head->time_stamp_off =
+                               vnt_time_stamp_off(pDevice, wCurrentRate);
+       } else {
+               wCurrentRate = RATE_1M;
+               short_head->fifo_ctl |= FIFOCTL_11B;
+
+               /* Get SignalField,ServiceField,Length */
+               BBvCalculateParameter(pDevice, cbFrameSize, wCurrentRate,
+                                       PK_TYPE_11B, &short_head->ab);
+
+               /* Get Duration and TimeStampOff */
+               short_head->duration = s_uGetDataDuration(pDevice,
                                                PK_TYPE_11B, false);
-       pTxDataHead->wTimeStampOff = vnt_time_stamp_off(pDevice, wCurrentRate);
-       cbHeaderSize = wTxBufSize + sizeof(struct vnt_tx_datahead_ab);
-    }
+               short_head->time_stamp_off =
+                       vnt_time_stamp_off(pDevice, wCurrentRate);
+       }
+
 
     //Generate Beacon Header
     pMACHeader = (struct ieee80211_hdr *)(pbyTxBufferAddr + cbHeaderSize);
index eecbe890027e50976461925022ac87e8dac9dfc8..bb21ad6ae226ea2436e91bde5efcc0c3c6e73cde 100644 (file)
@@ -230,12 +230,19 @@ struct vnt_tx_buffer {
        union vnt_tx_head tx_head;
 } __packed;
 
+struct vnt_tx_short_buf_head {
+       u16 fifo_ctl;
+       u16 time_stamp;
+       struct vnt_phy_field ab;
+       u16 duration;
+       u16 time_stamp_off;
+} __packed;
+
 struct vnt_beacon_buffer {
        u8 byType;
        u8 byPKTNO;
        u16 wTxByteCount;
-       u16 wFIFOCtl;
-       u16 wTimeStamp;
+       struct vnt_tx_short_buf_head short_head;
 } __packed;
 
 void vDMA0_tx_80211(struct vnt_private *, struct sk_buff *skb);