Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96417235 authored by Malcolm Priestley's avatar Malcolm Priestley Committed by Greg Kroah-Hartman
Browse files

staging: vt6655: rxtx create new structure vnt_tx_short_buf_head for csBeacon_xmit



This is a merger of PSTxDataHead_ab and PSTxShortBufHead of which typedef struct tagSTxShortBufHead
is removed.

This is formed as fifo_ctl, time_stamp, struct vnt_phy_field, duration and time_stamp_off.

Replacing stuctures in csBeacon_xmit and doing endian correction where necessary.

Signed-off-by: default avatarMalcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 09a903b5
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -483,13 +483,6 @@ typedef struct tagSTxBufHead {
STxBufHead, *PSTxBufHead;
typedef const STxBufHead *PCSTxBufHead;

typedef struct tagSTxShortBufHead {
	unsigned short wFIFOCtl;
	unsigned short wTimeStamp;
} __attribute__ ((__packed__))
STxShortBufHead, *PSTxShortBufHead;
typedef const STxShortBufHead *PCSTxShortBufHead;

//
// Tx data header
//
+20 −17
Original line number Diff line number Diff line
@@ -2334,13 +2334,12 @@ CMD_STATUS csBeacon_xmit(struct vnt_private *pDevice, PSTxMgmtPacket pPacket)
	unsigned char *pbyBuffer = (unsigned char *)pDevice->tx_beacon_bufs;
	unsigned int cbFrameSize = pPacket->cbMPDULen + WLAN_FCS_LEN;
	unsigned int cbHeaderSize = 0;
	unsigned short wTxBufSize = sizeof(STxShortBufHead);
	PSTxShortBufHead pTxBufHead = (PSTxShortBufHead) pbyBuffer;
	PSTxDataHead_ab  pTxDataHead = (PSTxDataHead_ab) (pbyBuffer + wTxBufSize);
	struct vnt_tx_short_buf_head *short_head =
				(struct vnt_tx_short_buf_head *)pbyBuffer;
	PS802_11Header   pMACHeader;
	unsigned short wCurrentRate;

	memset(pTxBufHead, 0, wTxBufSize);
	memset(short_head, 0, sizeof(*short_head));

	if (pDevice->eCurrentPHYType == PHY_TYPE_11A) {
		wCurrentRate = RATE_6M;
@@ -2353,26 +2352,30 @@ CMD_STATUS csBeacon_xmit(struct vnt_private *pDevice, PSTxMgmtPacket pPacket)
	//Set Preamble type always long
	pDevice->byPreambleType = PREAMBLE_LONG;

	//Set FIFOCTL_GENINT

	pTxBufHead->wFIFOCtl |= FIFOCTL_GENINT;
	/* Set FIFOCTL_GENINT */
	short_head->fifo_ctl |= cpu_to_le16(FIFOCTL_GENINT);

	//Set packet type & Get Duration
	/* Set packet type & Get Duration */
	if (byPktType == PK_TYPE_11A) {//0000 0000 0000 0000
		pTxDataHead->wDuration = cpu_to_le16((unsigned short)s_uGetDataDuration(pDevice, DATADUR_A, cbFrameSize, byPktType,
											wCurrentRate, false, 0, 0, 1, AUTO_FB_NONE));
		short_head->duration =
			cpu_to_le16((u16)s_uGetDataDuration(pDevice, DATADUR_A,
				    cbFrameSize, byPktType, wCurrentRate, false,
				    0, 0, 1, AUTO_FB_NONE));
	} else if (byPktType == PK_TYPE_11B) {//0000 0001 0000 0000
		pTxBufHead->wFIFOCtl |= FIFOCTL_11B;
		pTxDataHead->wDuration = cpu_to_le16((unsigned short)s_uGetDataDuration(pDevice, DATADUR_B, cbFrameSize, byPktType,
											wCurrentRate, false, 0, 0, 1, AUTO_FB_NONE));
		short_head->fifo_ctl |= cpu_to_le16(FIFOCTL_11B);

		short_head->duration =
			cpu_to_le16((u16)s_uGetDataDuration(pDevice, DATADUR_B,
				    cbFrameSize, byPktType, wCurrentRate, false,
				    0, 0, 1, AUTO_FB_NONE));
	}

	vnt_get_phy_field(pDevice, cbFrameSize,
			  wCurrentRate, byPktType, &pTxDataHead->ab);
			  wCurrentRate, byPktType, &short_head->ab);

	//Get TimeStampOff
	pTxDataHead->wTimeStampOff = cpu_to_le16(wTimeStampOff[pDevice->byPreambleType%2][wCurrentRate%MAX_RATE]);
	cbHeaderSize = wTxBufSize + sizeof(STxDataHead_ab);
	/* Get TimeStampOff */
	short_head->time_stamp_off = cpu_to_le16(wTimeStampOff[pDevice->byPreambleType%2][wCurrentRate%MAX_RATE]);
	cbHeaderSize = sizeof(struct vnt_tx_short_buf_head);

	//Generate Beacon Header
	pMACHeader = (PS802_11Header)(pbyBuffer + cbHeaderSize);
+8 −0
Original line number Diff line number Diff line
@@ -56,6 +56,14 @@ struct vnt_mic_hdr {
	u16 packing; /* packing to 48 bytes */
} __packed;

struct vnt_tx_short_buf_head {
	__le16 fifo_ctl;
	u16 time_stamp;
	struct vnt_phy_field ab;
	__le16 duration;
	__le16 time_stamp_off;
} __packed;

void
vGenerateMACHeader(
	struct vnt_private *,