189 lines
4.5 KiB
C
189 lines
4.5 KiB
C
#ifndef __WINBOND_MLME_H
|
|
#define __WINBOND_MLME_H
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/spinlock.h>
|
|
|
|
#include "mac_structures.h"
|
|
#include "mds_s.h"
|
|
|
|
/*
|
|
* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
* Mlme.h
|
|
* Define the related definitions of MLME module
|
|
*
|
|
* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
*/
|
|
|
|
#define AUTH_REJECT_REASON_CHALLENGE_FAIL 1
|
|
|
|
/* the state of MLME module */
|
|
#define INACTIVE 0x0
|
|
#define IDLE_SCAN 0x1
|
|
|
|
/* the state of MLME/ESS module */
|
|
#define STATE_1 0x2
|
|
#define AUTH_REQ 0x3
|
|
#define AUTH_WEP 0x4
|
|
#define STATE_2 0x5
|
|
#define ASSOC_REQ 0x6
|
|
#define STATE_3 0x7
|
|
|
|
/* the state of MLME/IBSS module */
|
|
#define IBSS_JOIN_SYNC 0x8
|
|
#define IBSS_AUTH_REQ 0x9
|
|
#define IBSS_AUTH_CHANLGE 0xa
|
|
#define IBSS_AUTH_WEP 0xb
|
|
#define IBSS_AUTH_IND 0xc
|
|
#define IBSS_STATE_2 0xd
|
|
|
|
|
|
|
|
/*
|
|
* =========================================
|
|
* depend on D5C(MAC timing control 03 register):
|
|
* MaxTxMSDULifeTime default 0x80000us
|
|
*/
|
|
#define AUTH_FAIL_TIMEOUT 550
|
|
#define ASSOC_FAIL_TIMEOUT 550
|
|
#define REASSOC_FAIL_TIMEOUT 550
|
|
|
|
/* MLME task global CONSTANTS, STRUCTURE, variables */
|
|
|
|
/* =========================================
|
|
* enum_ResultCode --
|
|
* Result code returned from MLME to SME.
|
|
* =========================================
|
|
*/
|
|
#define MLME_SUCCESS 0 /* follow spec. */
|
|
#define INVALID_PARAMETERS 1 /* Not following spec. */
|
|
#define NOT_SUPPPORTED 2
|
|
#define TIMEOUT 3
|
|
#define TOO_MANY_SIMULTANEOUS_REQUESTS 4
|
|
#define REFUSED 5
|
|
#define BSS_ALREADY_STARTED_OR_JOINED 6
|
|
#define TRANSMIT_FRAME_FAIL 7
|
|
#define NO_BSS_FOUND 8
|
|
#define RETRY 9
|
|
#define GIVE_UP 10
|
|
|
|
|
|
#define OPEN_AUTH 0
|
|
#define SHARE_AUTH 1
|
|
#define ANY_AUTH 2
|
|
#define WPA_AUTH 3 /* for WPA */
|
|
#define WPAPSK_AUTH 4
|
|
#define WPANONE_AUTH 5
|
|
#ifdef _WPA2_
|
|
#define WPA2_AUTH 6 /* for WPA2 */
|
|
#define WPA2PSK_AUTH 7
|
|
#endif /* end def _WPA2_ */
|
|
|
|
/*
|
|
* =========================================
|
|
* define the msg type of MLME module
|
|
* =========================================
|
|
*/
|
|
|
|
/* from SME */
|
|
#define MLMEMSG_AUTH_REQ 0x0b
|
|
#define MLMEMSG_DEAUTH_REQ 0x0c
|
|
#define MLMEMSG_ASSOC_REQ 0x0d
|
|
#define MLMEMSG_REASSOC_REQ 0x0e
|
|
#define MLMEMSG_DISASSOC_REQ 0x0f
|
|
#define MLMEMSG_START_IBSS_REQ 0x10
|
|
#define MLMEMSG_IBSS_NET_CFM 0x11
|
|
|
|
/* from RX */
|
|
#define MLMEMSG_RCV_MLMEFRAME 0x20
|
|
#define MLMEMSG_RCV_ASSOCRSP 0x22
|
|
#define MLMEMSG_RCV_REASSOCRSP 0x24
|
|
#define MLMEMSG_RCV_DISASSOC 0x2b
|
|
#define MLMEMSG_RCV_AUTH 0x2c
|
|
#define MLMEMSG_RCV_DEAUTH 0x2d
|
|
|
|
|
|
/* from TX callback */
|
|
#define MLMEMSG_TX_CALLBACK 0x40
|
|
#define MLMEMSG_ASSOCREQ_CALLBACK 0x41
|
|
#define MLMEMSG_REASSOCREQ_CALLBACK 0x43
|
|
#define MLMEMSG_DISASSOC_CALLBACK 0x4a
|
|
#define MLMEMSG_AUTH_CALLBACK 0x4c
|
|
#define MLMEMSG_DEAUTH_CALLBACK 0x4d
|
|
|
|
#define MLMEMSG_TIMEOUT 0x50
|
|
|
|
/*
|
|
* ==============================================
|
|
* Global data structures
|
|
* ==============================================
|
|
*/
|
|
#define MAX_NUM_TX_MMPDU 2
|
|
#define MAX_MMPDU_SIZE 1512
|
|
#define MAX_NUM_RX_MMPDU 6
|
|
|
|
|
|
/*
|
|
* ==============================================
|
|
* MACRO
|
|
* ==============================================
|
|
*/
|
|
#define boMLME_InactiveState(_AA_) (_AA_->wState == INACTIVE)
|
|
#define boMLME_IdleScanState(_BB_) (_BB_->wState == IDLE_SCAN)
|
|
#define boMLME_FoundSTAinfo(_CC_) (_CC_->wState >= IDLE_SCAN)
|
|
|
|
typedef struct _MLME_FRAME {
|
|
s8 *pMMPDU;
|
|
u16 len;
|
|
u8 DataType;
|
|
u8 IsInUsed;
|
|
|
|
spinlock_t MLMESpinLock;
|
|
|
|
u8 TxMMPDU[MAX_NUM_TX_MMPDU][MAX_MMPDU_SIZE];
|
|
u8 TxMMPDUInUse[(MAX_NUM_TX_MMPDU + 3) & ~0x03];
|
|
|
|
u16 wNumTxMMPDU;
|
|
u16 wNumTxMMPDUDiscarded;
|
|
|
|
u8 RxMMPDU[MAX_NUM_RX_MMPDU][MAX_MMPDU_SIZE];
|
|
u8 SaveRxBufSlotInUse[(MAX_NUM_RX_MMPDU + 3) & ~0x03];
|
|
|
|
u16 wNumRxMMPDU;
|
|
u16 wNumRxMMPDUDiscarded;
|
|
|
|
u16 wNumRxMMPDUInMLME; /* Number of the Rx MMPDU */
|
|
u16 reserved_1; /* in MLME. */
|
|
/* excluding the discarded */
|
|
} MLME_FRAME, *psMLME_FRAME;
|
|
|
|
typedef struct _AUTHREQ {
|
|
|
|
u8 peerMACaddr[MAC_ADDR_LENGTH];
|
|
u16 wAuthAlgorithm;
|
|
} MLME_AUTHREQ_PARA, *psMLME_AUTHREQ_PARA;
|
|
|
|
typedef struct _ASSOCREQ {
|
|
u8 PeerSTAAddr[MAC_ADDR_LENGTH];
|
|
u16 CapabilityInfo;
|
|
u16 ListenInterval;
|
|
} __attribute__ ((packed)) MLME_ASSOCREQ_PARA, *psMLME_ASSOCREQ_PARA;
|
|
|
|
typedef struct _REASSOCREQ {
|
|
u8 NewAPAddr[MAC_ADDR_LENGTH];
|
|
u16 CapabilityInfo;
|
|
u16 ListenInterval;
|
|
} __attribute__ ((packed)) MLME_REASSOCREQ_PARA, *psMLME_REASSOCREQ_PARA;
|
|
|
|
typedef struct _MLMECALLBACK {
|
|
u8 *psFramePtr;
|
|
u8 bResult;
|
|
} MLME_TXCALLBACK, *psMLME_TXCALLBACK;
|
|
|
|
typedef struct _RXDATA {
|
|
s32 FrameLength;
|
|
u8 __attribute__ ((packed)) *pbFramePtr;
|
|
} __attribute__ ((packed)) RXDATA, *psRXDATA;
|
|
|
|
#endif
|