hc
2024-08-12 233ab1bd4c5697f5cdec94e60206e8c6ac609b4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/** @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_ */