diff options
Diffstat (limited to 'wl1271/stad/src/Data_link/txCtrlServ.c')
-rw-r--r-- | wl1271/stad/src/Data_link/txCtrlServ.c | 233 |
1 files changed, 0 insertions, 233 deletions
diff --git a/wl1271/stad/src/Data_link/txCtrlServ.c b/wl1271/stad/src/Data_link/txCtrlServ.c deleted file mode 100644 index 0638eaa..0000000 --- a/wl1271/stad/src/Data_link/txCtrlServ.c +++ /dev/null @@ -1,233 +0,0 @@ -/* - * txCtrlServ.c - * - * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name Texas Instruments nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -/****************************************************************************/ -/* */ -/* MODULE: txCtrlServ.c */ -/* */ -/* PURPOSE: Tx services module, e.g. send-null packet. */ -/* A sub-module of TxCtrl module (uses it's object). */ -/* */ -/****************************************************************************/ - -#define __FILE_ID__ FILE_ID_58 -#include "paramOut.h" -#include "osApi.h" -#include "TWDriver.h" -#include "report.h" -#include "txCtrl.h" -#include "Ethernet.h" -#include "qosMngr_API.h" - - - -/*********************************************************************** - * txCtrlServ_buildNullFrame - *********************************************************************** - -DESCRIPTION: Build Null frame Function. - The function does the following: - - Builds Null Data Frame, considering current QoS mode. - -INPUT: hTxCtrl - Tx Ctrl module handle (the txServ uses the txCtrl object!!). - pFrame - A pointer to a buffer where the frame should be stored - pLength - A pointer to a placeholder for the frame length - -************************************************************************/ -TI_STATUS txCtrlServ_buildNullFrame(TI_HANDLE hTxCtrl, TI_UINT8* pFrame, TI_UINT32* pLength) -{ - txCtrl_t *pTxCtrl = (txCtrl_t *)hTxCtrl; - EHeaderConvertMode qosMode = pTxCtrl->headerConverMode; - dot11_header_t *pHeader; /* Note : there is no body for null frame */ - TI_STATUS status; - TI_UINT16 fc; - - pHeader = (dot11_header_t*)(pFrame); - - if (qosMode == HDR_CONVERT_QOS) - { - *pLength = WLAN_QOS_HDR_LEN; - SET_WLAN_WORD(&pHeader->qosControl, 0); /* We are using user priority 0 (BE) so no need for shift and endianess */ - } - else - { - *pLength = WLAN_HDR_LEN; - } - - - /* Set the Frame Control with Null Data type, QoS or non-QoS */ - if (qosMode == HDR_CONVERT_QOS) - fc = DOT11_FC_DATA_NULL_QOS | DOT11_FC_TO_DS; - else - fc = DOT11_FC_DATA_NULL_FUNCTION | DOT11_FC_TO_DS; - COPY_WLAN_WORD(&pHeader->fc, &fc); /* copy with endianess handling. */ - - /* copy destination mac address */ - status = ctrlData_getParamBssid(pTxCtrl->hCtrlData, CTRL_DATA_CURRENT_BSSID_PARAM, pHeader->address3); - if (status != TI_OK) - { - return TI_NOK; - } - - /* copy source mac address */ - status = ctrlData_getParamBssid(pTxCtrl->hCtrlData, CTRL_DATA_MAC_ADDRESS, pHeader->address2); - if (status != TI_OK) - { - return TI_NOK; - } - - /* copy BSSID (destination mac address) */ - MAC_COPY (pHeader->address1, pHeader->address3); - - return status; -} - - -/*********************************************************************** - * txCtrlServ_buildWlanHeader - *********************************************************************** - -DESCRIPTION: Build WLAN header from Ethernet header. - -INPUT: hTxCtrl - Tx Ctrl module handle (the txServ uses the txCtrl object!!). - pFrame - A pointer to a buffer where the frame should be stored - pLength - A pointer to a placeholder for the frame length - -************************************************************************/ -TI_STATUS txCtrlServ_buildWlanHeader(TI_HANDLE hTxCtrl, TI_UINT8* pFrame, TI_UINT32* pLength) -{ - txCtrl_t *pTxCtrl = (txCtrl_t *)hTxCtrl; - TI_STATUS status; - TMacAddr daBssid; - TMacAddr saBssid; - EQosProtocol qosProt; - ScanBssType_e currBssType; - TMacAddr currBssId; - TI_UINT32 headerLength; - TI_UINT16 headerFlags; - TI_BOOL currentPrivacyInvokedMode; - TI_UINT8 encryptionFieldSize; - TTxCtrlBlk tPktCtrlBlk; - dot11_header_t *pDot11Header = (dot11_header_t*)(tPktCtrlBlk.aPktHdr); - Wlan_LlcHeader_T *pWlanSnapHeader; - - /* - * If QoS is used, add two bytes padding before the header for 4-bytes alignment. - * Note that the header length doesn't include it, so the txCtrl detects the pad existence - * by checking if the header-length is a multiple of 4. - */ - qosMngr_getParamsActiveProtocol(pTxCtrl->hQosMngr, &qosProt); - - if (qosProt == QOS_WME) - { - headerLength = WLAN_QOS_HDR_LEN; - headerFlags = DOT11_FC_DATA_QOS | DOT11_FC_TO_DS; - pDot11Header->qosControl = 0; - } - else - { - headerLength = WLAN_HDR_LEN; - headerFlags = DOT11_FC_DATA | DOT11_FC_TO_DS; - } - - /* - * Handle encryption if needed (decision was done at RSN and is provided by TxCtrl): - * - Set WEP bit in header. - * - Add padding for FW security overhead: 4 bytes for TKIP, 8 for AES. - */ - txCtrlParams_getCurrentEncryptionInfo (hTxCtrl, - ¤tPrivacyInvokedMode, - &encryptionFieldSize); - if (currentPrivacyInvokedMode) - { - headerFlags |= DOT11_FC_WEP; - headerLength += encryptionFieldSize; - } - - COPY_WLAN_WORD (&pDot11Header->fc, &headerFlags); /* copy with endianess handling. */ - - /* Get the Destination MAC address */ - status = ctrlData_getParamBssid (pTxCtrl->hCtrlData, CTRL_DATA_CURRENT_BSSID_PARAM, daBssid); - if (status != TI_OK) - { - return TI_NOK; - } - - /* Get the Source MAC address */ - status = ctrlData_getParamBssid (pTxCtrl->hCtrlData, CTRL_DATA_MAC_ADDRESS, saBssid); - if (status != TI_OK) - { - return TI_NOK; - } - - /* receive BssId and Bss Type from control module */ - ctrlData_getCurrBssTypeAndCurrBssId (pTxCtrl->hCtrlData, &currBssId, &currBssType); - if (currBssType != BSS_INFRASTRUCTURE) - { - return TI_NOK; - } - - /* copy BSSID */ - MAC_COPY (pDot11Header->address1, currBssId); - /* copy source mac address */ - MAC_COPY (pDot11Header->address2, saBssid); - /* copy destination mac address*/ - MAC_COPY (pDot11Header->address3, daBssid); - - - /* Set the SNAP header pointer right after the other header parts handled above. */ - pWlanSnapHeader = (Wlan_LlcHeader_T *)&(tPktCtrlBlk.aPktHdr[headerLength]); - - pWlanSnapHeader->DSAP = SNAP_CHANNEL_ID; - pWlanSnapHeader->SSAP = SNAP_CHANNEL_ID; - pWlanSnapHeader->Control = LLC_CONTROL_UNNUMBERED_INFORMATION; - - /* add RFC1042. */ - pWlanSnapHeader->OUI[0] = SNAP_OUI_RFC1042_BYTE0; - pWlanSnapHeader->OUI[1] = SNAP_OUI_RFC1042_BYTE1; - pWlanSnapHeader->OUI[2] = SNAP_OUI_RFC1042_BYTE2; - - /* set ETH type to IP */ - pWlanSnapHeader->Type = HTOWLANS(ETHERTYPE_IP); - - /* Add the SNAP length to the total header length. */ - headerLength += sizeof(Wlan_LlcHeader_T); - - /* copy WLAN header */ - os_memoryCopy (pTxCtrl->hOs, pFrame, tPktCtrlBlk.aPktHdr, headerLength); - *pLength = headerLength; - - return TI_OK; -} - |