/** @file wlpd.h
|
*
|
* @brief RX and TX packet descriptor
|
*
|
* Copyright (C) 2014-2017, Marvell International Ltd.
|
*
|
* This software file (the "File") is distributed by Marvell International
|
* Ltd. under the terms of the GNU General Public License Version 2, June 1991
|
* (the "License"). You may use, redistribute and/or modify this File in
|
* accordance with the terms and conditions of the License, a copy of which
|
* is available by writing to the Free Software Foundation, Inc.,
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
|
* worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
*
|
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
|
* IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
|
* ARE EXPRESSLY DISCLAIMED. The License provides additional details about
|
* this warranty disclaimer.
|
*/
|
|
/******************************************************
|
Change log:
|
03/07/2014: Initial version
|
******************************************************/
|
#ifndef WLPD_H__
|
#define WLPD_H__
|
|
/** include files **/
|
#include "packetType.h"
|
#include "wltypes.h"
|
|
/** @defgroup PacketTypes Tx Rx Data Packet Types
|
* Functions exported by wlpd.h
|
* @{
|
*/
|
|
/*****************************************************************************/
|
typedef MLAN_PACK_START struct {
|
UINT8 tdlsPkt:1;
|
UINT8 rsvd:7;
|
} MLAN_PACK_END rxFlags_t;
|
/**
|
*** @brief Enumeration of action to be take for returned Rx Packets.
|
**/
|
|
/**
|
*** @brief Receive Packet Descriptor
|
**/
|
typedef MLAN_PACK_START struct RxPD_t {
|
/* TODO: Port EMBEDDED_TCPIP and VISTA_802_11_DRIVER_INTERFACE
|
members to W8786 */
|
UINT8 RxBSSType;
|
UINT8 RxBSSNum;
|
UINT16 RxPacketLength; //!< Rx Packet Length
|
SINT16 RxPacketOffset; //!< Offset to the Rx Data
|
UINT16 RxPacketType;
|
UINT16 SeqNum;
|
UINT8 userPriority;
|
UINT8 RxRate; // LG 0-3 (11b), 5-12(11g), HT :MCS# (11n)
|
SINT8 SNR;
|
SINT8 RxSQ2; // defined to RxNF
|
UINT8 RxHTInfo; // [Bit o] RxRate format : Legacy = 0 , HT =1
|
//[Bit 1] HT Bandwidth :BW20 =0 , BW40 = 1
|
//[Bit 2] HT Guard Interval : LGI = 0, SGI = 1
|
#if defined(VISTA_802_11_DRIVER_INTERFACE) || defined(SNIFFER_MODE_ENABLE)
|
UINT8 PacketType;
|
UINT8 NumFragments;
|
UINT8 EncryptionStatus;
|
#else
|
UINT8 Reserved2[3];
|
#endif
|
rxFlags_t flags;
|
UINT8 Reserved3;
|
} MLAN_PACK_END RxPD_t;
|
|
#define PACKET_TYPE_802_3 0
|
#define PACKET_TYPE_802_11 1
|
#define PACKET_TYPE_802_11_QOS 2
|
#define PACKET_TYPE_802_11_MRVL_MESH 3
|
#define PACKET_TYPE_TDLS 4
|
|
#define MESH_FWD_PACKET_MASK (1 << 0)
|
#define MESH_OLPC_PKT_MASK (1 << 1)
|
|
#define PACKET_DECRYPTED 0
|
#define PACKET_NOT_DECRYPTED 1
|
|
#if defined(VISTA_802_11_DRIVER_INTERFACE)
|
|
#define PACKET_NO_DECRYPT_NEEDED 2
|
#define MAGIC_PACKET_MARKER_BITMASK (1<<3)
|
#define COALESCED_PACKET_MARKER_BITMASK (1<<2)
|
|
#endif
|
|
#define RxNF RxSQ2
|
|
// Since Small Debug print and Myung's Debug Facility both use
|
// PKT_TYPE_DEBUG rx pkt, the following debug header is required to distinguish
|
// Small Debug from Myung's.
|
//
|
typedef MLAN_PACK_START struct {
|
UINT8 dbg_type;
|
UINT8 reserve[3];
|
} MLAN_PACK_END to_host_dbg_hdr_t;
|
#define DBG_TYPE_SMALL 2
|
|
/* The following fields have been added for Null frame handling
|
in Power Save Mode.
|
*/
|
typedef MLAN_PACK_START struct {
|
UINT8 nullPkt:1;
|
UINT8 overRideFwPM:1;
|
UINT8 pmVal:1;
|
UINT8 lastTxPkt:1;
|
UINT8 tdlsPkt:1;
|
UINT8 rsvd:3;
|
} MLAN_PACK_END wcb_flags_t;
|
|
/**
|
*** @brief Transmit Packet Descriptor
|
**/
|
typedef MLAN_PACK_START struct {
|
/* TODO: Port EMBEDDED_TCPIP and VISTA_802_11_DRIVER_INTERFACE
|
members to W8786 */
|
UINT8 TxBSSType;
|
UINT8 TxBSSNum;
|
UINT16 TxPacketLength; //!< Tx Packet Length
|
UINT16 TxPacketOffset; //!< Offset to Tx Data
|
UINT16 TxPacketType; //!< Tx Packet Type
|
UINT32 TxControl; //b3-0: RateID; b4:HostRateCtrl;
|
//b11-8: RetryLimit; b12:HostRetryCtrl;
|
//b14-13: Ack Policy, 10 ACK_IMMD
|
// 11 NO_ACK 0x ACK_PER_FRM
|
UINT8 userPriority;
|
wcb_flags_t flags; // These BitFields are for Null Frame Handling and
|
// other Power Save requirements.
|
UINT8 PktDelay_2ms; /* Driver queue delay used in stats and MSDU
|
** lifetime expiry calcs; value is represented
|
** by 2ms units (ms bit shifted by 1)
|
*/
|
#ifdef VISTA_802_11_DRIVER_INTERFACE
|
/* Include Packet type for NWF */
|
UINT8 PacketType;
|
UINT8 EncrOpt;
|
#else
|
UINT8 Reserved[2];
|
#endif
|
UINT8 TxTokenId;
|
|
} MLAN_PACK_END wcb_t;
|
|
// Encryption Option is an 8 bit field
|
#define ENCR_OPT_NORMAL 0x00 // Normal packet. Follows Enc rules in FW
|
#define ENCR_OPT_FORCE_PTEXT 0x01 // Force plain text. No encryption.
|
#define ENCR_OPT_FW_KEY_MAP 0x02 // Encrypt using key mapping table in FW
|
#define ENCR_OPT_PTEXT_80211_PKT 0x03 // No encryption for 802.11 pkt
|
|
/*@}*/
|
|
#endif /* _WLPD_H_ */
|