blob: ea12684a2b1daf7ead126e15aa732e3d380652fa [file] [log] [blame]
#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
// history -- 01/14/03' created
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#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.
//
/////////////////////////////////////////////////////////////
// PD43 20030829 Modifiled
//#define SUCCESS 0
#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
///////////////////////////////////////////// added by ws 04/19/04
#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_JOIN_FAIL 4
//#define MLMEMSG_AUTHEN_FAIL 18
#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
{
//NDIS_PACKET MLME_Packet;
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;
struct _Reason_Code {
u8 peerMACaddr[MAC_ADDR_LENGTH];
u16 wReasonCode;
};
typedef struct _Reason_Code MLME_DEAUTHREQ_PARA, *psMLME_DEAUTHREQ_PARA;
typedef struct _Reason_Code MLME_DISASSOCREQ_PARA, *psMLME_DISASSOCREQ_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