179 lines
6.5 KiB
C
179 lines
6.5 KiB
C
/* dot11SmeEssLib.h - Contains the main definitions for Ess Mode. */
|
|
|
|
/* Copyright 2004-2006 Wind River Systems, Inc. */
|
|
|
|
/*
|
|
Modification History
|
|
--------------------
|
|
02c,31oct08,mry fix for defect WIND00139450
|
|
02b,11dec06,tfo Fix various roaming issues.
|
|
02a,25aug04,rb Wind River Wireless Ethernet Driver 2.0 FCS
|
|
*/
|
|
|
|
#ifndef __INCdot11SmeEssLibh
|
|
#define __INCdot11SmeEssLibh
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
#include "vxWorks.h"
|
|
|
|
/**************************************************************************
|
|
* DOT11_ESS_SM - State machine for the ESS SME
|
|
***************************************************************************/
|
|
typedef struct /* DOT11_ESS_SM */
|
|
{
|
|
STATUS (*resetReqProcess)(DOT11_FW * pDot11);
|
|
STATUS (*joinReqProcess)(DOT11_FW * pDot11);
|
|
STATUS (*bssDiscoveredProcess)(DOT11_FW * pDot11);
|
|
STATUS (*authSuccessProcess)(DOT11_FW * pDot11);
|
|
STATUS (*authTimeoutProcess)(DOT11_FW * pDot11);
|
|
STATUS (*authFailProcess)(DOT11_FW * pDot11);
|
|
STATUS (*assocSuccessProcess)(DOT11_FW * pDot11);
|
|
STATUS (*assocFailProcess)(DOT11_FW * pDot11);
|
|
STATUS (*assocTimeoutProcess)(DOT11_FW * pDot11);
|
|
STATUS (*deauthProcess)(DOT11_FW * pDot11);
|
|
STATUS (*disassocProcess)(DOT11_FW * pDot11);
|
|
STATUS (*lqNoSignalProcess)(DOT11_FW * pDot11);
|
|
STATUS (*lqProbationProcess)(DOT11_FW * pDot11);
|
|
STATUS (*lqMakeDoProcess)(DOT11_FW * pDot11);
|
|
STATUS (*sharedKeyProcess)(DOT11_FW * pDot11);
|
|
|
|
SEM_ID smLockSem;
|
|
MSG_Q_ID eventQueue;
|
|
int currentState;
|
|
int stateTaskId;
|
|
|
|
} DOT11_ESS_SM;
|
|
|
|
#define DOT11_ESS_STATE_TASK_NAME "tEssState%d"
|
|
#define DOT11_ESS_STATE_TASK_PRI 66
|
|
#define DOT11_ESS_STATE_TASK_STACK (4 * 1024)
|
|
#define DOT11_ESS_STATE_MAX_MSG 64
|
|
#define DOT11_ESS_STATE_TASK_SHUTDOWN_TIME ((sysClkRateGet() / 50) + 2)
|
|
#define DOT11_ESS_STATE_LOCK_TIME (sysClkRateGet() / 4)
|
|
|
|
/*****************************************************************************
|
|
* DOT11_ESS_EVENTS - Events that drive the ESS state machine
|
|
*****************************************************************************/
|
|
|
|
/* RESET_REQ - can be called from any state. Will bring the device back to the
|
|
NO_ESS state */
|
|
#define DOT11_ESS_RESET_REQ 1
|
|
|
|
/* JOIN_REQ - called from any state. Used to join a new BSS. Will move the
|
|
SM to the SEARCHING state */
|
|
#define DOT11_ESS_JOIN_REQ 2
|
|
|
|
/* BSS_DISCOVERED - generated from the SCANNING or LINK_PROB states when a new
|
|
BSS matching the scanning criteria has been found */
|
|
#define DOT11_ESS_BSS_DISCOVERED 3
|
|
|
|
/* AUTH_SUCCESS - Generated from the AUTHENTICATING state when the
|
|
authentication was successful */
|
|
#define DOT11_ESS_AUTH_SUCCESS 4
|
|
|
|
/* TIMEOUT - Generated from the AUTHENTICATING or ASSOCIATING states when the
|
|
station failed to complete assoc or auth in the specified time */
|
|
#define DOT11_ESS_AUTH_TIMEOUT 5
|
|
|
|
/* AUTH_FAIL - Generated by the AUTHENTICATING state when the AP denies the
|
|
station authentication */
|
|
#define DOT11_ESS_AUTH_FAIL 6
|
|
|
|
/* ASSOC_SUCCESS - Generated by the ASSOCIATING state when the station
|
|
completes association successfully */
|
|
#define DOT11_ESS_ASSOC_SUCCESS 7
|
|
|
|
/* ASSOC_FAIL - Generated by the ASSOCIATING state when the station is denied
|
|
association */
|
|
#define DOT11_ESS_ASSOC_FAIL 8
|
|
|
|
/* ASSOC_TIMEOUT - Generated by the ASSOCIATING state when the AP does not
|
|
respond*/
|
|
#define DOT11_ESS_ASSOC_TIMEOUT 9
|
|
|
|
/* DEAUTH - Generated in response to a user request to de-authenticate the
|
|
station. If associated, a deassociation occurs before the actual
|
|
deauthentication packet is sent out. */
|
|
#define DOT11_ESS_DEAUTH 10
|
|
|
|
/* DISASSOC - Generated in response to a user request to disassociate the
|
|
station. */
|
|
#define DOT11_ESS_DISASSOC 11
|
|
|
|
/* LQ_NO_SIGNAL - Generated in the CONNECTED state when the station has not
|
|
received a packet (or beacon) from the AP in a set time period. */
|
|
#define DOT11_ESS_LQ_NO_SIGNAL 12
|
|
|
|
/* LQ_PROBATION - Generated in the CONNECTED state when the average signal
|
|
level drops below a set threshold */
|
|
#define DOT11_ESS_LQ_PROBATION 13
|
|
|
|
/* LQ_MAKE_DO - Generated in the LINK_PROB state when a stronger AP in the ESS
|
|
cannot be found */
|
|
#define DOT11_ESS_LQ_MAKE_DO 14
|
|
|
|
/* SHUTDOWN - a pseudo-event that shuts down the ESS state machine and frees
|
|
all resources used by it */
|
|
#define DOT11_ESS_SHUTDOWN 15
|
|
|
|
/* DOT11_ESS_SKA - generated from ATHENTICATING state when shared key
|
|
is being used. It signifies the receipt of stage 2, and triggers the
|
|
transmittion of stage 3. */
|
|
#define DOT11_ESS_SKA 16
|
|
|
|
|
|
/*****************************************************************************
|
|
* DOT11_ESS_STATES - Possible states for the ESS SM
|
|
*****************************************************************************/
|
|
typedef enum
|
|
{
|
|
SME_ESS_NOESS = 0, /* Base initialized state. Not operational */
|
|
SME_ESS_SCANNING, /* Looking for a specific ESS or any ESS */
|
|
SME_ESS_AUTHENTICATING,/* Chose an ESS - sent auth seq 1 */
|
|
SME_ESS_AUTH_SHARED, /* In the middle of a SKA exchange, sent #3 */
|
|
SME_ESS_ASSOCIATING, /* Authenticated. Send Assoc Req. */
|
|
SME_ESS_CONNECTED, /* Authenticated and associated. Fully connected*/
|
|
SME_ESS_LINK_PROB, /* Looking for better AP. Still connectect to old*/
|
|
SNE_ESS_STATES_MAX
|
|
} SME_ESS_STATE;
|
|
|
|
/*****************************************************************************
|
|
* DOT11_ESS_SCAN_MESSAGES - Messages passed to the ESS Scan task
|
|
******************************************************************************/
|
|
#define DOT11_ESS_SCAN_MAX_MSGS 16
|
|
#define DOT11_ESS_SCAN_TASK_PRI (DOT11_ESS_STATE_TASK_PRI + 1)
|
|
#define DOT11_ESS_SCAN_TASK_STACK 4096
|
|
#define DOT11_ESS_SCAN_TASK_NAME "tDot11Scan%d"
|
|
#define DOT11_ESS_SCAN_TASK_EXIT_WAIT (sysClkRateGet() / 2)
|
|
#define DOT11_ESS_SCAN_WAIT (sysClkRateGet() / 4)
|
|
|
|
/* This is the amount of time that is required between probation periods.
|
|
If the device tried to enter probation more frequently than this, the
|
|
event will be dropped */
|
|
#define DOT11_ESS_PROBATION_MIN_DELAY (sysClkRateGet() * 30)
|
|
|
|
#define DOT11_ESS_PROBATION_RESCAN_WAIT ((sysClkRateGet() / 100) + 1)
|
|
|
|
typedef enum
|
|
{
|
|
DOT11_ESS_SCAN_START,
|
|
DOT11_ESS_SCAN_STOP,
|
|
DOT11_ESS_PROB_START,
|
|
DOT11_ESS_PROB_STOP,
|
|
DOT11_ESS_EXIT
|
|
} DOT11_ESS_SCAN_MESSAGE;
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
#endif /* __INCdot11SmeEssLibh */
|
|
|
|
|
|
|
|
|
|
|
|
|