NetSim Source Code Help
Loading...
Searching...
No Matches
IEEE802_11.h
Go to the documentation of this file.
1/************************************************************************************
2* Copyright (C) 2021 *
3* TETCOS, Bangalore. India *
4* *
5* Tetcos owns the intellectual property rights in the Product and its content. *
6* The copying, redistribution, reselling or publication of any or all of the *
7* Product or its content without express prior written consent of Tetcos is *
8* prohibited. Ownership and / or any other right relating to the software and all *
9* intellectual property rights therein shall remain at all times with Tetcos. *
10* *
11* This source code is licensed per the NetSim license agreement. *
12* *
13* No portion of this source code may be used as the basis for a derivative work, *
14* or used, for any purpose other than its intended use per the NetSim license *
15* agreement. *
16* *
17* This source code and the algorithms contained within it are confidential trade *
18* secrets of TETCOS and may not be used as the basis for any other software, *
19* hardware, product or service. *
20* *
21* Author: Shashi Kant Suman *
22* *
23* ----------------------------------------------------------------------------------*/
24#ifndef _NETSIM_IEEE802_11_H_
25#define _NETSIM_IEEE802_11_H_
26#ifdef __cplusplus
27extern "C" {
28#endif
29#ifndef _NO_DEFAULT_LINKER_
30//For MSVC compiler. For GCC link via Linker command
31#pragma comment(lib,"IEEE802.11.lib")
32#pragma comment(lib,"Metrics.lib")
33#pragma comment(lib,"NetworkStack.lib")
34#pragma comment(lib,"Mobility.lib")
35#pragma comment(lib,"PropagationModel.lib")
36#endif
37
38#pragma region LOG_MACRO
39//#define IEEE802_11_LOG
40//#define IEEE802_11_BACKOFF_LOG
41#pragma endregion
42
43//#define _RECALCULATE_RX_SENSITIVITY_BASED_ON_PEP_
44
45#include "IEEE802_11_enum.h"
46#include "IEEE802_11_EDCAF.h"
47
48// Control frame data rate RTS and CTS
49#define CONTRL_FRAME_RATE_11B 1 ///< Control frame data rate for IEEE 802.11b in Mbps
50#define CONTRL_FRAME_RATE_11A_AND_G 6 ///< Control frame data rate for IEEE 802.11a/g in Mbps
51#define CONTRL_FRAME_RATE_11P 3 ///< Control frame data rate for IEEE 802.11p in Mbps
52
53
54 /// Page 2341 Enumerated types used in Mac and MLME service primitives
55 typedef enum
56 {
62
63 /// Enumeration for WLAN PHY protocols
64 typedef enum
65 {
74
75 /// page-1534 16.4.8.5 CCA, and 17.4.8.5 CCA IEEE802.11-2012
76 typedef enum
77 {
78 ED_ONLY=1, // CCA Mode 1: Energy above threshold.
79 CS_ONLY, // CCA Mode 2: CS only.
80 ED_and_CS, // CCA Mode 3: CS with energy above threshold.
81 CS_WITH_TIMER, // CCA Mode 4: CS with timer.
82 HR_CS_and_ED, // CCA Mode 5: A combination of CS and energy above threshold.
84
85 /// Page-382 of IEEE Std 802.11-2012 Table 8-1—Valid type and subtype combinations
87 {
89 CONTROL = 0x1,
90 DATA = 0x2,
91 RESERVED = 0x3,
92 };
93
94 /// Page-382 of IEEE Std 802.11-2012 Table 8-1—Valid type and subtype combinations
96 {
105 Beacon = 0x8,
106 ATIM = 0x9,
110 Action = 0xD,
113 };
114
115 /// Page-383 of IEEE Std 802.11-2012 Table 8-1—Valid type and subtype combinations
117 {
118 Reserved = 0x0,
128 };
129
130 /// Page-383 of IEEE Std 802.11-2012 Table 8-1—Valid type and subtype combinations
132 {
133 Data=0x0,
149 };
150
151 /// Enumeration for 802.11 MAC states
152 typedef enum
153 {
172 {
173 "MAC_IDLE",
174 "WAIT_FOR_NAV",
175 "WAIT_FOR_DIFS",
176 "WAIT_FOR_AIFS",
177 "BACKING_OFF",
178 "TRANSMITTING_MPDU",
179 "TRANSMITTING_BROADCAST",
180 "TRANSMITTING_ACK",
181 "TRANSMITTING_RTS",
182 "TRANSMITTING_CTS",
183 "WAIT_FOR_DATA",
184 "WAIT_FOR_CTS",
185 "WAIT_FOR_ACK",
186 "WAIT_FOR_BLOCKACK",
187 "OFF"
188 "LAST"
189 };
190
191 typedef enum
192 {
198
199 typedef enum
200 {
204#define IEEE802_11_MEDIUM_ACCESS_PROTOCOL_DEFAULT _strdup("DCF")
205
206 /** Structure for metrics */
207 typedef struct stru_802_11_Metrics
208 {
218
219 typedef struct stru_802_11_Mac_Var
220 {
224
225 //Config parameter
232
233 // Mac aggregation
237
238 //EDCA
242 double txopTime;
243
244 //CSMA/CA
247 double dNAV;
251
254
255 //Buffer
258
259 //BSS
267
269
270 // Event Id.
271 struct
272 {
273 long long int backoff;
274 long long int difsEnd;
275 long long int aifsEnd;
276 long long int ackTimeOut;
277 long long int ctsTimeout;
279
280 //Metrics
282
284
285#define IEEE802_11_CURR_MAC IEEE802_11_MAC(pstruEventDetails->nDeviceId,pstruEventDetails->nInterfaceId)
286#define isDCF(mac) (mac->mediumAccessProtocol == DCF)
287#define isEDCAF(mac) (mac->mediumAccessProtocol == EDCAF)
288
290 {
298
299#define PPROPAGATION_INFO_ALLOC() (struct stru_propagation_info_for_list*)list_alloc(sizeof(struct stru_propagation_info_for_list),offsetof(struct stru_propagation_info_for_list,ele))
300#define PPROPAGATION_INFO_ADD(info,e) (LIST_ADD_LAST(&(info),(e)))
301#define PPROPAGATION_INFO_NEXT(entity) (LIST_NEXT(entity))
302#define PPROPAGATION_INFO_REMOVE(ls, mem) (LIST_FREE((void**)(ls),(mem)))
303
307
308 //Useful macro
309#define isSTAIdle(macVar,phyVar) (macVar->currMacState == IEEE802_11_MACSTATE_MAC_IDLE && phyVar->radio.radioState == RX_ON_IDLE)
310#define isCurrSTAIdle isSTAIdle(IEEE802_11_CURR_MAC,IEEE802_11_CURR_PHY)
311#define isSTAIdlebyId(devid,ifid) isSTAIdle(IEEE802_11_MAC(devid,ifid),IEEE802_11_PHY(devid,ifid))
312#define isCurrSTAMediumIdle() (isMediumIdle(pstruEventDetails->nDeviceId, pstruEventDetails->nInterfaceId))
313 //Function prototype
314 //Mesh BSS
317
318 //Infrastructure BSS
321
322 //Mac
327 void fn_NetSim_IEE802_11_MacReInit(NETSIM_ID nDeviceId,NETSIM_ID nInterfaceId);
331 double calculate_nav(NETSIM_ID d, NETSIM_ID i, NetSim_PACKET* packet);
333
334 //CSMA/CA
353
354
355 //Mac Frame
357 double getAckSize(void* phy);
358 double getCTSSize();
359 double getRTSSize();
360 double getMacOverhead(void* phy, double size);
362 NETSIM_ID i,
363 double rtsduration);
365 bool is_first_packet(NetSim_PACKET* packet);
370 void fn_NetSim_IEEE802_11_Add_MAC_Header(NETSIM_ID nDeviceId,NETSIM_ID nInterfaceId, NetSim_PACKET *pstruPacket,unsigned int i);
371 void set_blockack_bitmap(NetSim_PACKET* ackPacket,NetSim_PACKET* packet);
375
376 //RTS CTS
383
384 //Rate adaptation
387 void packet_recv_notify(NETSIM_ID devid,NETSIM_ID ifid,NETSIM_ID rcvid);
388 void packet_drop_notify(NETSIM_ID devid,NETSIM_ID ifid,NETSIM_ID rcvid);
389 unsigned int get_rate_index(NETSIM_ID devid,NETSIM_ID ifid,NETSIM_ID rcvid);
390
391 //Lib function prototype
392 _declspec(dllexport) int fn_NetSim_IEEE802_11_FreePacket(NetSim_PACKET* pstruPacket);
394
395 //MINSTREL
396 void InitMinstrel(NETSIM_ID nDevId,NETSIM_ID nifid);
397 void Minstrel_Init(NETSIM_ID nDevId,NETSIM_ID nifid);
398 void Ht_InitMinstrel(NETSIM_ID nDevId,NETSIM_ID nifid);
400 void DoReportDataOk(NETSIM_ID dev,NETSIM_ID ifid,NETSIM_ID recv);
404 void FreeMinstrel(NETSIM_ID nDevId, NETSIM_ID nifid);
405 void DoReportAmpduStatus(NETSIM_ID devid,NETSIM_ID ifid,NETSIM_ID recvid,UINT success,UINT failed);
408 void Minstrel_ReportDataFailed(NETSIM_ID nDevId,NETSIM_ID nifid,NETSIM_ID recvid);
411 void HT_Minstrel_Free(NETSIM_ID nDevId, NETSIM_ID nifid);
412
413 //IEEE1609 Interface
414 PIEEE802_11_MAC_VAR IEEE802_11_MAC(NETSIM_ID ndeviceId, NETSIM_ID nInterfaceId);
415 void SET_IEEE802_11_MAC(NETSIM_ID ndeviceId, NETSIM_ID nInterfaceId, PIEEE802_11_MAC_VAR mac);
416 bool isIEEE802_11_Configure(NETSIM_ID ndeviceId, NETSIM_ID nInterfaceId);
417 bool validate_processing_time(double time, NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId);
418 NetSim_PACKET* get_from_queue(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, UINT nPacketRequire, UINT* nPacketCount);
419 NETSIM_ID add_to_queue(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NetSim_PACKET* packet);
420 void readd_to_queue(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NetSim_PACKET* packet);
421 bool isPacketInQueue(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId);
422
423 //Medium
425 NETSIM_ID in,
426 bool status, NetSim_PACKET*);
428 NETSIM_ID in);
430 NETSIM_ID in);
432 NETSIM_ID txif,
433 NETSIM_ID rx,
434 NETSIM_ID rxif,
435 double time);
437
438 //Log
439 bool isIEEE802_11_log();
440 void print_ieee802_11_log(char* format, ...);
442 void print_ieee802_11_Backoff_log(char* format, ...);
443
444 //Packet header
447
448 //EDCAF
449 void ieee802_11_edcaf_set_txop_time(PIEEE802_11_MAC_VAR mac, double currTime);
452
453#ifdef __cplusplus
454}
455#endif
456#endif //_NETSIM_IEEE802_11_H_
unsigned int NETSIM_ID
Definition: Animation.h:45
NetSim_PACKET * fn_NetSim_IEEE802_11_CreateCTSPacket(NetSim_PACKET *data)
enum_802_11_FrameControl_Type
Page-382 of IEEE Std 802.11-2012 Table 8-1—Valid type and subtype combinations.
Definition: IEEE802_11.h:87
@ MANAGEMENT
Definition: IEEE802_11.h:88
@ DATA
Definition: IEEE802_11.h:90
@ CONTROL
Definition: IEEE802_11.h:89
@ RESERVED
Definition: IEEE802_11.h:91
void fn_NetSim_IEEE802_11_MacOut()
int fn_NetSim_IEEE802_11_FreePacket(NetSim_PACKET *pstruPacket)
Definition: IEEE802_11.c:94
IEEE802_11_RATE_ADAPTATION
Definition: IEEE802_11.h:192
@ RATEADAPTATION_FIXED
Definition: IEEE802_11.h:196
@ RATEADAPTATION_DISABLE
Definition: IEEE802_11.h:193
@ RATEADAPTATION_GENERIC
Definition: IEEE802_11.h:195
@ RATEADAPTATION_MINSTREL
Definition: IEEE802_11.h:194
bool is_more_fragment_coming(NetSim_PACKET *packet)
IEEE802_11_CCAMODE
page-1534 16.4.8.5 CCA, and 17.4.8.5 CCA IEEE802.11-2012
Definition: IEEE802_11.h:77
@ ED_and_CS
Definition: IEEE802_11.h:80
@ HR_CS_and_ED
Definition: IEEE802_11.h:82
@ CS_ONLY
Definition: IEEE802_11.h:79
@ ED_ONLY
Definition: IEEE802_11.h:78
@ CS_WITH_TIMER
Definition: IEEE802_11.h:81
PIEEE802_11_MAC_VAR IEEE802_11_MAC(NETSIM_ID ndeviceId, NETSIM_ID nInterfaceId)
bool fn_NetSim_IEEE802_11_CSMACA_CheckRetryLimit(PIEEE802_11_MAC_VAR mac, UINT frameLength)
Definition: CSMACA.c:646
BOOL Minstrel_DoNeedDataSend(NETSIM_ID nDevId, NETSIM_ID nifid, NETSIM_ID recvid)
Definition: Minstrel.c:99
BOOL DoNeedDataRetransmission(NETSIM_ID dev, NETSIM_ID ifid, NETSIM_ID recv)
Definition: Minstrel.c:688
double getAckSize(void *phy)
void ieee802_11_edcaf_set_txop_time(PIEEE802_11_MAC_VAR mac, double currTime)
void ieee802_11_hdr_copy(NetSim_PACKET *src, NetSim_PACKET *dest)
void SET_IEEE802_11_MAC(NETSIM_ID ndeviceId, NETSIM_ID nInterfaceId, PIEEE802_11_MAC_VAR mac)
IEEE802_11_MAC_STATE
Enumeration for 802.11 MAC states.
Definition: IEEE802_11.h:153
@ IEEE802_11_MACSTATE_BACKING_OFF
Definition: IEEE802_11.h:158
@ IEEE802_11_MACSTATE_Wait_BlockACK
Definition: IEEE802_11.h:167
@ IEEE802_11_MACSTATE_Wait_DATA
Definition: IEEE802_11.h:164
@ IEEE802_11_MACSTATE_Wait_AIFS
Definition: IEEE802_11.h:157
@ IEEE802_11_MACSTATE_Wait_ACK
Definition: IEEE802_11.h:166
@ IEEE802_11_MACSTATE_TXing_CTS
Definition: IEEE802_11.h:163
@ IEEE802_11_MACSTATE_WF_NAV
Definition: IEEE802_11.h:155
@ IEEE802_11_MACSTATE_Txing_BroadCast
Definition: IEEE802_11.h:160
@ IEEE802_11_MACSTATE_MAC_IDLE
Definition: IEEE802_11.h:154
@ IEEE802_11_MACSTATE_LAST
Definition: IEEE802_11.h:169
@ IEEE802_11_MACSTATE_TXing_MPDU
Definition: IEEE802_11.h:159
@ IEEE802_11_MACSTATE_TXing_RTS
Definition: IEEE802_11.h:162
@ IEEE802_11_MACSTATE_Wait_DIFS
Definition: IEEE802_11.h:156
@ IEEE802_11_MACSTATE_TXing_ACK
Definition: IEEE802_11.h:161
@ IEEE802_11_MACSTATE_OFF
Definition: IEEE802_11.h:168
@ IEEE802_11_MACSTATE_Wait_CTS
Definition: IEEE802_11.h:165
void fn_NetSim_IEEE802_11_Add_MAC_Header(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NetSim_PACKET *pstruPacket, unsigned int i)
bool is_first_packet(NetSim_PACKET *packet)
void DoReportDataFailed(NETSIM_ID dev, NETSIM_ID ifid, NETSIM_ID recv)
Definition: Minstrel.c:326
void fn_NetSim_IEEE802_11_RTS_CTS_Init()
Definition: RTS_CTS.c:98
void packet_recv_notify(NETSIM_ID devid, NETSIM_ID ifid, NETSIM_ID rcvid)
void fn_NetSim_IEE802_11_MacReInit(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId)
unsigned int get_rate_index(NETSIM_ID devid, NETSIM_ID ifid, NETSIM_ID rcvid)
double calculate_nav(NETSIM_ID d, NETSIM_ID i, NetSim_PACKET *packet)
void fn_NetSim_Process_CtrlPacket()
struct stru_802_11_Metrics * PIEEE802_11_METRICS
IEEE802_11_BSS_TYPE
Page 2341 Enumerated types used in Mac and MLME service primitives.
Definition: IEEE802_11.h:56
@ INFRASTRUCTURE
Definition: IEEE802_11.h:57
@ MESH
Definition: IEEE802_11.h:59
@ INDEPENDENT
Definition: IEEE802_11.h:58
@ ANY_BSS
Definition: IEEE802_11.h:60
void Generic_Rate_adaptation_init(NETSIM_ID nDevId, NETSIM_ID nifid)
void fn_NetSim_IEEE802_11_RTS_CTS_SendCTS()
Definition: RTS_CTS.c:129
double getMacOverhead(void *phy, double size)
bool isPacketforsameInfrastructureBSS(PIEEE802_11_MAC_VAR mac, NetSim_PACKET *packet)
bool isMacReceivingState(PIEEE802_11_MAC_VAR mac)
NetSim_PACKET * fn_NetSim_IEEE802_11_CreateAckPacket(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NetSim_PACKET *data, double time)
int fn_NetSim_IEEE802_11_CSMACA_CheckNAV()
Definition: CSMACA.c:131
void Ht_InitMinstrel(NETSIM_ID nDevId, NETSIM_ID nifid)
Definition: Minstrel_ht.c:40
void Minstrel_Init(NETSIM_ID nDevId, NETSIM_ID nifid)
Definition: Minstrel.c:80
bool isIEEE802_11_Configure(NETSIM_ID ndeviceId, NETSIM_ID nInterfaceId)
void DoReportAmpduStatus(NETSIM_ID devid, NETSIM_ID ifid, NETSIM_ID recvid, UINT success, UINT failed)
Definition: Minstrel_ht.c:210
enum_802_11_Management_Frame_SubType
Page-382 of IEEE Std 802.11-2012 Table 8-1—Valid type and subtype combinations.
Definition: IEEE802_11.h:96
@ Beacon
Definition: IEEE802_11.h:105
@ AssociationRequest
Definition: IEEE802_11.h:97
@ ProbeResponse
Definition: IEEE802_11.h:102
@ ATIM
Definition: IEEE802_11.h:106
@ ReassociationRequest
Definition: IEEE802_11.h:99
@ Action
Definition: IEEE802_11.h:110
@ Disassociation
Definition: IEEE802_11.h:107
@ TimingAdvertisement
Definition: IEEE802_11.h:103
@ ReassociationResponse
Definition: IEEE802_11.h:100
@ ActionNoAck
Definition: IEEE802_11.h:111
@ Deauthentication
Definition: IEEE802_11.h:109
@ Authentication
Definition: IEEE802_11.h:108
@ Reserved_1
Definition: IEEE802_11.h:104
@ ProbeRequest
Definition: IEEE802_11.h:101
@ AssociationResponse
Definition: IEEE802_11.h:98
@ Reserved_2
Definition: IEEE802_11.h:112
int fn_NetSim_IEEE802_11_CSMACA_SendBlockACK()
Definition: CSMACA.c:680
bool validate_processing_time(double time, NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId)
IEEE802_11_PROTOCOL
Enumeration for WLAN PHY protocols.
Definition: IEEE802_11.h:65
@ IEEE_802_11ac
Definition: IEEE802_11.h:72
@ IEEE_802_11b
Definition: IEEE802_11.h:67
@ IEEE_802_11e
Definition: IEEE802_11.h:71
@ IEEE_802_11n
Definition: IEEE802_11.h:70
@ IEEE_802_11g
Definition: IEEE802_11.h:68
@ IEEE_802_11p
Definition: IEEE802_11.h:69
@ IEEE_802_11a
Definition: IEEE802_11.h:66
void packet_drop_notify(NETSIM_ID devid, NETSIM_ID ifid, NETSIM_ID rcvid)
NetSim_PACKET * get_from_queue(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, UINT nPacketRequire, UINT *nPacketCount)
struct stru_propagation_info_for_list propagation_info_for_list
struct stru_802_11_Metrics IEEE802_11_METRICS
bool isIEEE802_11_log()
Definition: IEEE802_11.c:169
bool isPacketInQueue(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId)
NetSim_PACKET * fn_NetSim_IEEE802_11_CreateRTSPacket(NetSim_PACKET *data, double duration)
int fn_NetSim_IEEE802_11_CSMACA_SendACK()
Definition: CSMACA.c:369
void fn_NetSim_IEEE802_11_CSMA_AckTimeOut()
Definition: CSMACA.c:584
void DoReportDataOk(NETSIM_ID dev, NETSIM_ID ifid, NETSIM_ID recv)
Definition: Minstrel.c:310
struct stru_802_11_Mac_Var IEEE802_MAC_VAR
void IEEE802_11_Change_Mac_State(PIEEE802_11_MAC_VAR mac, IEEE802_11_MAC_STATE state)
void fn_NetSim_IEEE802_11_CSMA_UpdateNAV(NETSIM_ID d, NETSIM_ID in, NetSim_PACKET *packet)
Definition: CSMACA.c:721
NetSim_PACKET * fn_NetSim_IEEE802_11_CreateBlockAckPacket(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NetSim_PACKET *data, double time)
void fn_NetSim_IEEE802_11_CSMACA_DIFSEnd()
Definition: CSMACA.c:185
void fn_NetSim_802_11_InfrastructureBSS_UpdateReceiver(NetSim_PACKET *packet)
NETSIM_ID get_recv_interface_id(NetSim_PACKET *packet)
double calculate_CTS_duration(NETSIM_ID d, NETSIM_ID i, double rtsduration)
Definition: RTS_CTS.c:68
void fn_NetSim_802_11_MeshBSS_UpdateReceiver(NetSim_PACKET *packet)
Definition: MeshBSS.c:48
void fn_NetSim_IEEE802_11_RTS_CTS_AddCTSTimeOut(NetSim_PACKET *packet, NETSIM_ID devId, NETSIM_ID devIf)
Definition: RTS_CTS.c:153
PPROPAGATION_INFO find_propagation_info(NETSIM_ID t, NETSIM_ID ti, NETSIM_ID r, NETSIM_ID ri)
enum_802_11_Control_Frame_SubType
Page-383 of IEEE Std 802.11-2012 Table 8-1—Valid type and subtype combinations.
Definition: IEEE802_11.h:117
@ PS_Poll
Definition: IEEE802_11.h:122
@ ACK
Definition: IEEE802_11.h:125
@ CF_End
Definition: IEEE802_11.h:126
@ Reserved
Definition: IEEE802_11.h:118
@ CF_End_Plus_CF_Ack
Definition: IEEE802_11.h:127
@ CTS
Definition: IEEE802_11.h:124
@ ControlWrapper
Definition: IEEE802_11.h:119
@ BlockAckRequest
Definition: IEEE802_11.h:120
@ RTS
Definition: IEEE802_11.h:123
@ BlockAck
Definition: IEEE802_11.h:121
void ieee802_11_csmaca_aifs_failed(PIEEE802_11_MAC_VAR mac)
Definition: CSMACA.c:170
void fn_NetSim_IEEE802_11_SendToPhy()
double getCTSSize()
void packetSentNotify(NETSIM_ID d, NETSIM_ID in, NetSim_PACKET *packet)
int fn_NetSim_IEEE802_11_Finish_F()
BOOL Ht_DoNeedDataRetransmission(NETSIM_ID devid, NETSIM_ID ifid, NETSIM_ID recvid)
Definition: Minstrel_ht.c:702
void FreeMinstrel(NETSIM_ID nDevId, NETSIM_ID nifid)
Definition: Minstrel.c:738
bool isMacIdle(PIEEE802_11_MAC_VAR mac)
struct stru_802_11_Phy_Parameters_HT getTxRate(NETSIM_ID devid, NETSIM_ID ifid, NETSIM_ID recvid)
Definition: Minstrel_ht.c:762
void HT_Minstrel_Free(NETSIM_ID nDevId, NETSIM_ID nifid)
Definition: Minstrel_ht.c:780
void DoReportFinalDataFailed(NETSIM_ID dev, NETSIM_ID ifid, NETSIM_ID recv)
Definition: Minstrel.c:674
void fn_NetSim_IEEE802_11_CSMACA_AddAckTimeOut(NetSim_PACKET *packet, NETSIM_ID devId, NETSIM_ID devIf)
Definition: CSMACA.c:546
void free_rate_adaptation_data(void *phy)
bool ieee802_11_edcaf_is_txop_timer_set(PIEEE802_11_MAC_VAR mac, double currTime)
NETSIM_ID get_send_interface_id(NetSim_PACKET *packet)
void fn_NetSim_IEEE802_11_CSMACA_ProcessAck()
Definition: CSMACA.c:391
void medium_change_callbackHandler(NETSIM_ID d, NETSIM_ID in, bool status, NetSim_PACKET *)
IEEE802_11_MEDIUM_ACCESS_PROTOCOL
Definition: IEEE802_11.h:200
@ DCF
Definition: IEEE802_11.h:201
@ EDCAF
Definition: IEEE802_11.h:202
void ieee802_11_csmaca_pause_backoff(PIEEE802_11_MAC_VAR mac)
Definition: CSMACA.c:359
bool medium_isRadioIdleHandler(NETSIM_ID d, NETSIM_ID in)
bool isIEEE802_11_CtrlPacket(NetSim_PACKET *packet)
double getRTSSize()
void readd_to_queue(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NetSim_PACKET *packet)
void ieee802_11_csmaca_difs_failed(PIEEE802_11_MAC_VAR mac)
Definition: CSMACA.c:164
void fn_NetSim_IEEE802_11_Timer()
Definition: IEEE802_11.c:152
bool isMacTransmittingState(PIEEE802_11_MAC_VAR mac)
bool isPacketforsameMeshBSS(PIEEE802_11_MAC_VAR mac, NetSim_PACKET *packet)
Definition: MeshBSS.c:62
bool fn_NetSim_IEEE802_11_CSMACA_CS()
Definition: CSMACA.c:118
void fn_NetSim_IEEE802_11_RTS_CTS_ProcessCTS()
Definition: RTS_CTS.c:219
void print_ieee802_11_Backoff_log(char *format,...)
void fn_NetSim_IEEE802_11_RTS_CTS_ProcessRTS()
Definition: RTS_CTS.c:118
UINT get_minstrel_rate_index(NETSIM_ID dev, NETSIM_ID ifid, NETSIM_ID recv)
Definition: Minstrel.c:768
void InitMinstrel(NETSIM_ID nDevId, NETSIM_ID nifid)
Definition: Minstrel.c:175
bool fn_NetSim_IEEE802_11_CSMACA_Backoff()
Definition: CSMACA.c:282
void ieee802_11_edcaf_unset_txop_time(PIEEE802_11_MAC_VAR mac)
void fn_NetSim_IEEE802_11_CSMACA_AIFSEnd()
Definition: CSMACA.c:203
struct stru_802_11_Mac_Var * PIEEE802_11_MAC_VAR
enum_802_11_Data_Frame_SubType
Page-383 of IEEE Std 802.11-2012 Table 8-1—Valid type and subtype combinations.
Definition: IEEE802_11.h:132
@ Data_Plus_CFPoll
Definition: IEEE802_11.h:135
@ QoS_CFPoll
Definition: IEEE802_11.h:147
@ CF_Poll
Definition: IEEE802_11.h:139
@ QoSData_Plus_CFAck
Definition: IEEE802_11.h:142
@ Data_Plus_CFAck
Definition: IEEE802_11.h:134
@ QoS_Data
Definition: IEEE802_11.h:141
@ CF_Ack
Definition: IEEE802_11.h:138
@ noData
Definition: IEEE802_11.h:137
@ QoSData_Plus_CFAck_Plus_CFPoll
Definition: IEEE802_11.h:144
@ QoS_Null
Definition: IEEE802_11.h:145
@ QoS_CFAck_Plus_CFPoll
Definition: IEEE802_11.h:148
@ Data
Definition: IEEE802_11.h:133
@ Data_Plus_CFAck_Plus_CFPoll
Definition: IEEE802_11.h:136
@ CFAck_Plus_CFPoll
Definition: IEEE802_11.h:140
@ Reserved_4
Definition: IEEE802_11.h:146
@ QoSData_Plus_CFPoll
Definition: IEEE802_11.h:143
NETSIM_ID add_to_queue(NETSIM_ID nDeviceId, NETSIM_ID nInterfaceId, NetSim_PACKET *packet)
void fn_NetSim_IEEE802_11_RTS_CTS_CTSTimeOut()
Definition: RTS_CTS.c:191
struct stru_propagation_info_for_list * ptrpropagation_info_for_list
void Minstrel_ReportDataFailed(NETSIM_ID nDevId, NETSIM_ID nifid, NETSIM_ID recvid)
Definition: Minstrel.c:119
int fn_NetSim_IEEE802_11_CSMACA_Init()
Definition: CSMACA.c:48
int fn_NetSim_IEEE802_11_MacIn()
bool medium_isTransmitterBusyHandler(NETSIM_ID d, NETSIM_ID in)
double medium_getRxPowerHandler(NETSIM_ID tx, NETSIM_ID txif, NETSIM_ID rx, NETSIM_ID rxif, double time)
void fn_NetSim_IEEE802_11_CSMACA_ProcessBlockAck()
Definition: CSMACA.c:448
static char strIEEE802_11_MAC_STATE[IEEE802_11_MACSTATE_LAST][48]
Definition: IEEE802_11.h:171
void print_ieee802_11_log(char *format,...)
void ieee802_11_free_hdr(NetSim_PACKET *packet)
void Minstrel_ReportFinalDataFailed(NETSIM_ID nDevId, NETSIM_ID nifid, NETSIM_ID recvid)
Definition: Minstrel.c:147
bool isieee802_11_Backoff_log()
Definition: IEEE802_11.c:178
void set_blockack_bitmap(NetSim_PACKET *ackPacket, NetSim_PACKET *packet)
void fn_NetSim_IEEE802_11_CSMACA_IncreaseCW(PIEEE802_11_MAC_VAR mac)
Definition: CSMACA.c:671
#define MAX_AC_CATEGORY
BOOL
Definition: Linux.h:62
#define UINT
Definition: Linux.h:38
#define _declspec(dllexport)
This function is used to trigger the update.
Definition: Linux.h:41
Definition: List.h:43
IEEE802_11_MAC_STATE prevMacState
Definition: IEEE802_11.h:246
NETSIM_ID interfaceId
Definition: IEEE802_11.h:222
NETSIM_ID * devIdsinBSS
Definition: IEEE802_11.h:265
long long int ctsTimeout
Definition: IEEE802_11.h:277
double dPacketProcessingEndTime
Definition: IEEE802_11.h:268
double dBackOffStartTime
Definition: IEEE802_11.h:248
UINT nNumberOfAggregatedPackets
Definition: IEEE802_11.h:235
NETSIM_ID parentInterfaceId
Definition: IEEE802_11.h:223
IEEE802_11_RATE_ADAPTATION rate_adaptationAlgo
Definition: IEEE802_11.h:227
long long int backoff
Definition: IEEE802_11.h:273
long long int aifsEnd
Definition: IEEE802_11.h:275
IEEE802_11_MEDIUM_ACCESS_PROTOCOL mediumAccessProtocol
Definition: IEEE802_11.h:231
PNETSIM_MACADDRESS BSSId
Definition: IEEE802_11.h:261
IEEE802_11_MAC_STATE currMacState
Definition: IEEE802_11.h:245
NetSim_PACKET * blockAckPacket
Definition: IEEE802_11.h:236
NETSIM_ID nAPInterfaceId
Definition: IEEE802_11.h:263
NetSim_PACKET * waitingforCTS
Definition: IEEE802_11.h:257
ptrDOT11EDCATABLE currEdcaTable
Definition: IEEE802_11.h:241
DOT11EDCATABLE dot11EdcaTable[MAX_AC_CATEGORY]
Definition: IEEE802_11.h:240
long long int ackTimeOut
Definition: IEEE802_11.h:276
NetSim_PACKET * currentProcessingPacket
Definition: IEEE802_11.h:256
IEEE802_11_METRICS metrics
Definition: IEEE802_11.h:281
struct stru_802_11_Mac_Var::@0 EVENTID
IEEE802_11_BSS_TYPE BSSType
Definition: IEEE802_11.h:226
long long int difsEnd
Definition: IEEE802_11.h:274
NETSIM_ID * devIfinBSS
Definition: IEEE802_11.h:266
NETSIM_ID deviceId
Definition: IEEE802_11.h:221
Data structure for physical layer parameters.
PPROPAGATION_INFO Propagation_Info
Definition: IEEE802_11.h:295