⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wlanproto.h

📁 Atheros AP Test with Agilent N4010A source code
💻 H
📖 第 1 页 / 共 5 页
字号:
            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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -