?? wlanproto.h
字號(hào):
IS_ATHEROS_OUI((_np)->oui) && \
((_np)->ouiType == ATH_OUI_TYPE_CAP) && \
((_np)->version == ATH_OUI_VER_CAP))
typedef struct wlanAthXRParamIe {
A_UINT8 elementID;
A_UINT8 length;
A_UINT8 oui[3];
A_UINT8 ouiType;
A_UINT16 version;
A_UINT16 info;
WLAN_MACADDR baseBssid;
WLAN_MACADDR xrBssid;
A_UINT16 baseBeaconInterval;
A_UINT16 xrBeaconInterval;
ATHADVCAP_INFO baseBssAdvCapinfo;
ATHADVCAP_INFO xrBssAdvCapinfo;
} __ATTRIB_PACK ATH_XR_PARAM_IE;
#define VALID_ATH_XR_PARAM_ELEMENT(_np) \
( ((_np)->elementID == ELE_VENDOR_PRIVATE) && \
((_np)->length >= 6) && \
IS_ATHEROS_OUI((_np)->oui) && \
((_np)->ouiType == ATH_OUI_TYPE_XR) && \
((_np)->version == ATH_OUI_VER_XR))
typedef struct WMEv1AcRecord {
#ifdef BIG_ENDIAN
A_UINT8 rsrv : 1,
aci : 2,
acm : 1,
aifs : 4;
A_UINT8 logCwMax : 4,
logCwMin : 4;
#else
A_UINT8 aifs : 4,
acm : 1,
aci : 2,
rsrv : 1;
A_UINT8 logCwMin : 4,
logCwMax : 4;
#endif
A_UINT16 txOpLimit;
} __ATTRIB_PACK WMEv1_AC_RECORD, CCXV2_AC_RECORD;
#define TXOP_TO_US(_txOp) ((A_UINT32)(_txOp) << 5)
#define US_TO_TXOP(_us) ((A_UINT16)((A_UINT32)(_us) >> 5))
#define LOG_TO_CW(_log) ((1 << (A_UINT32)(_log)) - 1)
typedef enum {
ACI_BE = 0x0,
ACI_BK = 0x1,
ACI_Vi = 0x2,
ACI_Vo = 0x3,
ACI_MAX = 0x4
} WMEv1_ACI;
typedef struct WMEv1Param {
A_UINT8 info;
A_UINT8 _pad; /* for now */
WMEv1_AC_RECORD ac[ACI_MAX];
} __ATTRIB_PACK WMEv1_PARAM;
#define WMEv1_OUI_TYPE 2
#define WMEv1_TSPEC_OUI_SUBTYPE 2
#define WMEv1_PARAM_OUI_SUBTYPE 1
#define WMEv1_SHORT_OUI_SUBTYPE 0
#define WMEv1_PARAM_OUI_VERSION 1
#define WMEv1_TSPEC_OUI_VERSION 1
typedef struct WMEv1ParamIe {
A_UINT8 elementID;
A_UINT8 length;
A_UINT8 oui[3];
A_UINT8 ouiType;
A_UINT8 ouiSubType;
A_UINT8 version;
WMEv1_PARAM info;
} __ATTRIB_PACK WMEv1_PARAM_IE, ATH_WME_PARAM_IE;
#define VALID_WMEv1_PARAM_IE(_np) ( \
((_np)->elementID == ELE_VENDOR_PRIVATE) && \
((_np)->length >= (FIELD_OFFSET(WMEv1_PARAM_IE, info) - \
FIELD_OFFSET(WMEv1_PARAM_IE, oui[0]))) && \
((_np)->oui[0] == 0x00) && \
((_np)->oui[1] == 0x50) && \
((_np)->oui[2] == 0xf2) && \
((_np)->ouiType == WMEv1_OUI_TYPE) && \
((_np)->ouiSubType == WMEv1_PARAM_OUI_SUBTYPE) && \
((_np)->version == WMEv1_PARAM_OUI_VERSION) \
)
#define VALID_WMEv1_SHORT_IE(_np) ( \
((_np)->elementID == ELE_VENDOR_PRIVATE) && \
((_np)->length >= (FIELD_OFFSET(WMEv1_PARAM_IE, info.info) - \
FIELD_OFFSET(WMEv1_PARAM_IE, oui[0]))) && \
((_np)->oui[0] == 0x00) && \
((_np)->oui[1] == 0x50) && \
((_np)->oui[2] == 0xf2) && \
((_np)->ouiType == WMEv1_OUI_TYPE) && \
((_np)->ouiSubType == WMEv1_SHORT_OUI_SUBTYPE) && \
((_np)->version == WMEv1_PARAM_OUI_VERSION) \
)
#define VALID_CCX_WMEv1_PARAM_IE(_np) ( \
((_np)->elementID == ELE_VENDOR_PRIVATE) && \
((_np)->length >= (FIELD_OFFSET(WMEv1_PARAM_IE, info) - \
FIELD_OFFSET(WMEv1_PARAM_IE, oui[0]))) && \
IS_AIRONET_OUI((_np)->oui) && \
((_np)->ouiType == WMEv1_OUI_TYPE) && \
((_np)->ouiSubType == WMEv1_PARAM_OUI_SUBTYPE) && \
((_np)->version == WMEv1_PARAM_OUI_VERSION) \
)
#define VALID_WMEv1_TSPEC_ELEMENT(_np) ( \
((_np)->elementID == ELE_VENDOR_PRIVATE) && \
((_np)->length >= (FIELD_OFFSET(WMEv1_TSPEC_ELEMENT, body.endMarker) - \
FIELD_OFFSET(WMEv1_TSPEC_ELEMENT, oui[0]))) && \
((_np)->oui[0] == 0x00) && \
((_np)->oui[1] == 0x50) && \
((_np)->oui[2] == 0xf2) && \
((_np)->ouiType == WMEv1_OUI_TYPE) && \
((_np)->ouiSubType == WMEv1_TSPEC_OUI_SUBTYPE) && \
((_np)->version == WMEv1_TSPEC_OUI_VERSION) \
)
#define VALID_ATH_WME_PARAM_IE(_np) ( \
((_np)->elementID == ELE_VENDOR_PRIVATE) && \
((_np)->length >= (FIELD_OFFSET(ATH_WME_PARAM_IE, info) - \
FIELD_OFFSET(ATH_WME_PARAM_IE, oui[0]))) && \
IS_ATHEROS_OUI((_np)->oui) && \
((_np)->ouiType == ATH_OUI_TYPE_WME) && \
((_np)->ouiSubType == ATH_OUI_SUBTYPE_WME_PARAM) && \
((_np)->version == ATH_OUI_VERSION_WME_PARAM) \
)
#define WME_MGT_NOTIF_CAT_CODE 17
typedef enum {
WME_MGT_NOTIF_ACTION_SETUP_REQ = 0,
WME_MGT_NOTIF_ACTION_SETUP_RESP = 1,
WME_MGT_NOTIF_ACTION_TEARDOWN = 2,
WME_MGT_NOTIF_ACTION_MAX = 3
} WME_MGT_NOTIF_ACTION_CODE;
typedef enum {
WME_MGT_NOTIF_DIALOG_TEARDOWN = 0,
WME_MGT_NOTIF_DIALOG_SETUP = 1
} WME_MGT_NOTIF_DIALOG_TOKEN;
typedef enum {
WME_MGT_NOTIF_STATUS_ADM_ACCEPTED = 0,
WME_MGT_NOTIF_STATUS_INV_PARAM = 1,
WME_MGT_NOTIF_STATUS_RESERVED = 2,
WME_MGT_NOTIF_STATUS_REFUSED = 3,
WME_ACTION_MAX = 4
} WME_MGT_NOTIF_STATUS_CODE;
#ifdef BIG_ENDIAN
typedef struct wmeV1TspecTSInfo {
A_UINT8 one:1,
direction:2,
tid:4,
reserved1:1;
A_UINT8 reserved2:2,
dot1Dtag:3,
psb:1,
reserved3:1,
zero:1;
A_UINT8 reserved5:7,
reserved4:1;
} __ATTRIB_PACK WMEv1_TSPEC_TSINFO;
#else
typedef struct wmeV1TspecTSInfo {
A_UINT8 reserved1:1,
tid:4,
direction:2,
one:1;
A_UINT8 zero:1,
reserved3:1,
psb:1,
dot1Dtag:3,
reserved2:2;
A_UINT8 reserved4:1,
reserved5:7;
} __ATTRIB_PACK WMEv1_TSPEC_TSINFO;
#endif
typedef struct WMEv1TspecBody {
WMEv1_TSPEC_TSINFO tsInfo;
A_UINT16 nominalMsduSize;
A_UINT16 maxMsduSize;
A_UINT32 minSrvInternal;
A_UINT32 maxSrvInternal;
A_UINT32 inactivityInterval;
A_UINT32 suspensionInterval;
A_UINT32 srvStartTime;
A_UINT32 minDataRate;
A_UINT32 meanDataRate;
A_UINT32 peakDataRate;
A_UINT32 maxBurstSize;
A_UINT32 delayBound;
A_UINT32 minPhyRate;
A_UINT16 surplusBwAllow;
A_UINT16 mediumTime;
A_UINT8 endMarker; /* not in spec but used internally */
} __ATTRIB_PACK WMEv1_TSPEC_BODY;
typedef struct wlanWmeV1TspecElement {
A_UINT8 elementID; /* 1 byte element ID */
A_UINT8 length; /* Length field */
A_UINT8 oui[3];
A_UINT8 ouiType;
A_UINT8 ouiSubType;
A_UINT8 version;
WMEv1_TSPEC_BODY body;
} __ATTRIB_PACK WMEv1_TSPEC_ELEMENT;
typedef enum {
WME_TSPEC_DIR_UPLINK = 0x0,
WME_TSPEC_DIR_DNLINK = 0x1,
WME_TSPEC_DIR_RESERVED = 0x2,
WME_TSPEC_DIR_BIDIR = 0x3
} WME_TSPEC_DIRECTION;
typedef enum {
WME_TSPEC_PSB_LEGACY = 0x0,
WME_TSPEC_PSB_TRIGGERED = 0x1
} WME_TSPEC_PSB;
typedef struct wlanWPAie {
A_UINT8 elementID;
A_UINT8 length;
A_UINT8 oui[3];
A_UINT8 ouiType;
A_UINT16 version;
A_UINT32 mCipher[1]; /* group key selection */
A_UINT16 uCipherCount; /* count of pairwise key ciphers */
A_UINT32 uCiphers[ELE_UCSE_SIZE/4]; /* ciphers 1-6 array of 4 octets */
A_UINT16 authSelectorCount; /* authentication selector count */
A_UINT32 authSelectors[ELE_AUTHSE_SIZE/4];/* selectors 4*n octets */
A_UINT16 caps; /* Capabilities */
} __ATTRIB_PACK WPA_IE;
/* mCipher, uCipherCount, at least 1 uCipher, authCount, at least 1 AKM */
#define MIN_WPAIE_ELELEN \
(FIELD_OFFSET(WPA_IE, uCiphers) - 2 + \
(1*sizeof(A_UINT32)) + sizeof(A_UINT16) + \
(1*sizeof(A_UINT32)))
#define VALID_WPA_ELEMENT(_wpaep) \
( ((_wpaep)->elementID == ELE_VENDOR_PRIVATE) && \
((_wpaep)->length >= MIN_WPAIE_ELELEN) && \
((_wpaep)->oui[0] == 0x00) && \
((_wpaep)->oui[1] == 0x50) && \
((_wpaep)->oui[2] == 0xF2) && \
((_wpaep)->ouiType == WPA_OUI_TYPE) && \
((_wpaep)->version == WPAIE_VERSION) )
typedef struct wlanUcseSet {
A_UINT16 uCipherCount; /* Length field */
A_UINT32 uCiphers[ELE_UCSE_SIZE/4]; /* ciphers 1-6 array of 4 octets */
} __ATTRIB_PACK UCSE_SET;
#define VALID_UCSE_ELEMENT(_ucsep) \
( ((_ucsep)->uCipherCount >= 1) \
&& ((_ucsep)->uCipherCount <= (ELE_UCSE_SIZE/4)))
#define VALID_CIPHER_OUI(_ucsep) \
( ((_ucsep & 0xffffff) == ATH_OUI) || \
((_ucsep & 0xffffff) == WPA_OUI) || \
((_ucsep & 0xffffff) == AIRONET_OUI))
typedef struct wlanmcseSet {
A_UINT32 mCipher[1];
} __ATTRIB_PACK MCSE_SET;
#define VALID_MCSE_ELEMENT(_mcsep) \
(TRUE)
typedef struct wlanAuthseSet {
A_UINT16 authSelectorCount; /* Length field */
A_UINT32 authSelectors[ELE_AUTHSE_SIZE/4]; /* selectors 4*n octets */
} __ATTRIB_PACK AUTHSE_SET;
#define VALID_AUTHSE_ELEMENT(_authcsep) \
( ((_authcsep)->authSelectorCount >= 1) \
&& ((_authcsep)->authSelectorCount <= (ELE_AUTHSE_SIZE/4)))
#define VALID_AUTH_OUI(_ucsep) \
( ((_ucsep & 0xffffff) == ATH_OUI) || \
((_ucsep & 0xffffff) == WPA_OUI) || \
((_ucsep & 0xffffff) == AIRONET_OUI))
typedef enum ccxIeType {
CCX_RM_OUI_TYPE_V1 = 1,
AIRONET_CCX_OPTION = 3,
CCX_QOS_MSG = 4,
} CCX_IE_TYPE;
typedef enum wpaMsgNum {
WPA_MSG1 = 1,
WPA_MSG2,
WPA_MSG3,
WPA_MSG4,
} WPA_MSGNUM;
typedef struct wlanAironetIE {
A_UINT8 elementID; /* 1 byte element ID */
A_UINT8 length; /* Length field */
A_UINT8 load;
A_UINT8 hops;
A_UINT8 devType;
A_UINT8 refresh;
#define AIE_DEVICETYPE 0x66
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -