linux/drivers/staging/rtl8712/wlan_bssdef.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/******************************************************************************
   3 *
   4 * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
   5 *
   6 * Modifications for inclusion into the Linux staging tree are
   7 * Copyright(c) 2010 Larry Finger. All rights reserved.
   8 *
   9 * Contact information:
  10 * WLAN FAE <wlanfae@realtek.com>
  11 * Larry Finger <Larry.Finger@lwfinger.net>
  12 *
  13 ******************************************************************************/
  14#ifndef __WLAN_BSSDEF_H__
  15#define __WLAN_BSSDEF_H__
  16
  17#define MAX_IE_SZ       768
  18
  19#define NDIS_802_11_LENGTH_SSID         32
  20#define NDIS_802_11_LENGTH_RATES        8
  21#define NDIS_802_11_LENGTH_RATES_EX     16
  22
  23struct ndis_802_11_ssid {
  24        u32 SsidLength;
  25        u8  Ssid[32];
  26};
  27
  28enum NDIS_802_11_NETWORK_TYPE {
  29        Ndis802_11FH,
  30        Ndis802_11DS,
  31        Ndis802_11OFDM5,
  32        Ndis802_11OFDM24,
  33        Ndis802_11NetworkTypeMax /* not a real type, defined as an upper bound*/
  34};
  35
  36struct NDIS_802_11_CONFIGURATION_FH {
  37        u32 Length;             /* Length of structure */
  38        u32 HopPattern;         /* As defined by 802.11, MSB set */
  39        u32 HopSet;             /* to one if non-802.11 */
  40        u32 DwellTime;          /* units are Kusec */
  41};
  42
  43/*
  44 * FW will only save the channel number in DSConfig.
  45 * ODI Handler will convert the channel number to freq. number.
  46 */
  47struct NDIS_802_11_CONFIGURATION {
  48        u32 Length;             /* Length of structure */
  49        u32 BeaconPeriod;       /* units are Kusec */
  50        u32 ATIMWindow;         /* units are Kusec */
  51        u32 DSConfig;           /* Frequency, units are kHz */
  52        struct NDIS_802_11_CONFIGURATION_FH FHConfig;
  53};
  54
  55enum NDIS_802_11_NETWORK_INFRASTRUCTURE {
  56        Ndis802_11IBSS,
  57        Ndis802_11Infrastructure,
  58        Ndis802_11AutoUnknown,
  59        Ndis802_11InfrastructureMax, /*Not a real value,defined as upper bound*/
  60        Ndis802_11APMode
  61};
  62
  63struct NDIS_802_11_FIXED_IEs {
  64        u8  Timestamp[8];
  65        u16 BeaconInterval;
  66        u16 Capabilities;
  67};
  68
  69struct wlan_bssid_ex {
  70        u32 Length;
  71        unsigned char  MacAddress[6];
  72        u8  Reserved[2];
  73        struct ndis_802_11_ssid  Ssid;
  74        __le32 Privacy;
  75        s32 Rssi;
  76        enum NDIS_802_11_NETWORK_TYPE  NetworkTypeInUse;
  77        struct NDIS_802_11_CONFIGURATION  Configuration;
  78        enum NDIS_802_11_NETWORK_INFRASTRUCTURE  InfrastructureMode;
  79        u8 rates[NDIS_802_11_LENGTH_RATES_EX];
  80        /* number of content bytes in EIs, which varies */
  81        u32 IELength;
  82        /*(timestamp, beacon interval, and capability information) */
  83        u8 IEs[MAX_IE_SZ];
  84};
  85
  86enum NDIS_802_11_AUTHENTICATION_MODE {
  87        Ndis802_11AuthModeOpen,
  88        Ndis802_11AuthModeShared,
  89        Ndis802_11AuthModeAutoSwitch,
  90        Ndis802_11AuthModeWPA,
  91        Ndis802_11AuthModeWPAPSK,
  92        Ndis802_11AuthModeWPANone,
  93        Ndis802_11AuthModeMax      /* Not a real mode, defined as upper bound */
  94};
  95
  96enum {
  97        Ndis802_11WEPEnabled,
  98        Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
  99        Ndis802_11WEPDisabled,
 100        Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
 101        Ndis802_11WEPKeyAbsent,
 102        Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
 103        Ndis802_11WEPNotSupported,
 104        Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
 105        Ndis802_11Encryption2Enabled,
 106        Ndis802_11Encryption2KeyAbsent,
 107        Ndis802_11Encryption3Enabled,
 108        Ndis802_11Encryption3KeyAbsent
 109};
 110
 111#define NDIS_802_11_AI_REQFI_CAPABILITIES      1
 112#define NDIS_802_11_AI_REQFI_LISTENINTERVAL    2
 113#define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS  4
 114
 115#define NDIS_802_11_AI_RESFI_CAPABILITIES      1
 116#define NDIS_802_11_AI_RESFI_STATUSCODE        2
 117#define NDIS_802_11_AI_RESFI_ASSOCIATIONID     4
 118
 119struct NDIS_802_11_AI_REQFI {
 120        u16 Capabilities;
 121        u16 ListenInterval;
 122        unsigned char CurrentAPAddress[6];
 123};
 124
 125struct NDIS_802_11_AI_RESFI {
 126        u16 Capabilities;
 127        u16 StatusCode;
 128        u16 AssociationId;
 129};
 130
 131struct NDIS_802_11_ASSOCIATION_INFORMATION {
 132        u32 Length;
 133        u16 AvailableRequestFixedIEs;
 134        struct NDIS_802_11_AI_REQFI RequestFixedIEs;
 135        u32 RequestIELength;
 136        u32 OffsetRequestIEs;
 137        u16 AvailableResponseFixedIEs;
 138        struct NDIS_802_11_AI_RESFI ResponseFixedIEs;
 139        u32 ResponseIELength;
 140        u32 OffsetResponseIEs;
 141};
 142
 143/* Key mapping keys require a BSSID*/
 144struct NDIS_802_11_KEY {
 145        u32 Length;                     /* Length of this structure */
 146        u32 KeyIndex;
 147        u32 KeyLength;                  /* length of key in bytes */
 148        unsigned char BSSID[6];
 149        unsigned long long KeyRSC;
 150        u8  KeyMaterial[32];            /* variable length */
 151};
 152
 153struct NDIS_802_11_REMOVE_KEY {
 154        u32 Length;                     /* Length of this structure */
 155        u32 KeyIndex;
 156        unsigned char BSSID[6];
 157};
 158
 159struct NDIS_802_11_WEP {
 160        u32 Length;               /* Length of this structure */
 161        u32 KeyIndex;             /* 0 is the per-client key,
 162                                   * 1-N are the global keys
 163                                   */
 164        u32 KeyLength;            /* length of key in bytes */
 165        u8  KeyMaterial[16];      /* variable length depending on above field */
 166};
 167
 168/* mask for authentication/integrity fields */
 169#define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS        0x0f
 170#define NDIS_802_11_AUTH_REQUEST_REAUTH                 0x01
 171#define NDIS_802_11_AUTH_REQUEST_KEYUPDATE              0x02
 172#define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR         0x06
 173#define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR            0x0E
 174
 175/* MIC check time, 60 seconds. */
 176#define MIC_CHECK_TIME  60000000
 177
 178#ifndef Ndis802_11APMode
 179#define Ndis802_11APMode (Ndis802_11InfrastructureMax + 1)
 180#endif
 181
 182struct  wlan_network {
 183        struct list_head list;
 184        int     network_type;   /*refer to ieee80211.h for WIRELESS_11A/B/G */
 185        int     fixed;          /* set to fixed when not to be removed asi
 186                                 * site-surveying
 187                                 */
 188        unsigned int    last_scanned; /*timestamp for the network */
 189        int     aid;            /*will only be valid when a BSS is joined. */
 190        int     join_res;
 191        struct wlan_bssid_ex network; /*must be the last item */
 192};
 193
 194enum VRTL_CARRIER_SENSE {
 195        DISABLE_VCS,
 196        ENABLE_VCS,
 197        AUTO_VCS
 198};
 199
 200enum VCS_TYPE {
 201        NONE_VCS,
 202        RTS_CTS,
 203        CTS_TO_SELF
 204};
 205
 206#define PWR_CAM 0
 207#define PWR_MINPS 1
 208#define PWR_MAXPS 2
 209#define PWR_UAPSD 3
 210#define PWR_VOIP 4
 211
 212enum UAPSD_MAX_SP {
 213        NO_LIMIT,
 214        TWO_MSDU,
 215        FOUR_MSDU,
 216        SIX_MSDU
 217};
 218
 219#define NUM_PRE_AUTH_KEY 16
 220#define NUM_PMKID_CACHE NUM_PRE_AUTH_KEY
 221
 222#endif /* #ifndef WLAN_BSSDEF_H_ */
 223
 224