linux/drivers/staging/rtl8723bs/include/wlan_bssdef.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/******************************************************************************
   3 *
   4 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
   5 *
   6 ******************************************************************************/
   7#ifndef __WLAN_BSSDEF_H__
   8#define __WLAN_BSSDEF_H__
   9
  10
  11#define MAX_IE_SZ       768
  12
  13
  14#define NDIS_802_11_LENGTH_SSID         32
  15#define NDIS_802_11_LENGTH_RATES        8
  16#define NDIS_802_11_LENGTH_RATES_EX     16
  17
  18typedef unsigned char   NDIS_802_11_MAC_ADDRESS[6];
  19typedef unsigned char   NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES];        /*  Set of 8 data rates */
  20typedef unsigned char   NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX];  /*  Set of 16 data rates */
  21
  22struct ndis_802_11_ssid {
  23        u32  SsidLength;
  24        u8  Ssid[32];
  25};
  26
  27enum NDIS_802_11_NETWORK_TYPE {
  28        Ndis802_11FH,
  29        Ndis802_11DS,
  30        Ndis802_11OFDM5,
  31        Ndis802_11OFDM24,
  32        Ndis802_11NetworkTypeMax    /*  not a real type, defined as an upper bound */
  33};
  34
  35struct ndis_802_11_conf_fh {
  36        u32 Length;             /*  Length of structure */
  37        u32 HopPattern;         /*  As defined by 802.11, MSB set */
  38        u32 HopSet;             /*  to one if non-802.11 */
  39        u32 DwellTime;          /*  units are Kusec */
  40};
  41
  42/*
  43        FW will only save the channel number in DSConfig.
  44        ODI Handler will convert the channel number to freq. number.
  45*/
  46struct ndis_802_11_conf {
  47        u32 Length;             /*  Length of structure */
  48        u32 BeaconPeriod;       /*  units are Kusec */
  49        u32 ATIMWindow;         /*  units are Kusec */
  50        u32 DSConfig;           /*  Frequency, units are kHz */
  51        struct ndis_802_11_conf_fh    FHConfig;
  52};
  53
  54enum NDIS_802_11_NETWORK_INFRASTRUCTURE {
  55        Ndis802_11IBSS,
  56        Ndis802_11Infrastructure,
  57        Ndis802_11AutoUnknown,
  58        Ndis802_11InfrastructureMax,     /*  Not a real value, defined as upper bound */
  59        Ndis802_11APMode,
  60};
  61
  62struct ndis_802_11_fix_ie {
  63        u8  Timestamp[8];
  64        u16  BeaconInterval;
  65        u16  Capabilities;
  66};
  67
  68struct ndis_80211_var_ie {
  69        u8  ElementID;
  70        u8  Length;
  71        u8  data[1];
  72};
  73
  74/* Length is the 4 bytes multiples of the sum of
  75 * sizeof (NDIS_802_11_MAC_ADDRESS) + 2 +
  76 * sizeof (struct ndis_802_11_ssid) + sizeof (u32) +
  77 * sizeof (long) + sizeof (enum NDIS_802_11_NETWORK_TYPE) +
  78 * sizeof (struct ndis_802_11_conf) + sizeof (NDIS_802_11_RATES_EX) + IELength
  79 *
  80 * Except for IELength, all other fields are fixed length. Therefore, we can
  81 * define a macro to present the partial sum.
  82 */
  83enum NDIS_802_11_AUTHENTICATION_MODE {
  84        Ndis802_11AuthModeOpen,
  85        Ndis802_11AuthModeShared,
  86        Ndis802_11AuthModeAutoSwitch,
  87        Ndis802_11AuthModeWPA,
  88        Ndis802_11AuthModeWPAPSK,
  89        Ndis802_11AuthModeWPANone,
  90        Ndis802_11AuthModeWAPI,
  91        Ndis802_11AuthModeMax   /*  Not a real mode, defined as upper bound */
  92};
  93
  94enum NDIS_802_11_WEP_STATUS {
  95        Ndis802_11WEPEnabled,
  96        Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
  97        Ndis802_11WEPDisabled,
  98        Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
  99        Ndis802_11WEPKeyAbsent,
 100        Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
 101        Ndis802_11WEPNotSupported,
 102        Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
 103        Ndis802_11Encryption2Enabled,
 104        Ndis802_11Encryption2KeyAbsent,
 105        Ndis802_11Encryption3Enabled,
 106        Ndis802_11Encryption3KeyAbsent,
 107        Ndis802_11_EncrypteionWAPI
 108};
 109
 110#define NDIS_802_11_AI_REQFI_CAPABILITIES      1
 111#define NDIS_802_11_AI_REQFI_LISTENINTERVAL    2
 112#define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS  4
 113
 114#define NDIS_802_11_AI_RESFI_CAPABILITIES      1
 115#define NDIS_802_11_AI_RESFI_STATUSCODE        2
 116#define NDIS_802_11_AI_RESFI_ASSOCIATIONID     4
 117
 118struct ndis_802_11_ai_reqfi {
 119        u16 Capabilities;
 120        u16 ListenInterval;
 121        NDIS_802_11_MAC_ADDRESS  CurrentAPAddress;
 122};
 123
 124struct ndis_801_11_ai_resfi {
 125        u16 Capabilities;
 126        u16 StatusCode;
 127        u16 AssociationId;
 128};
 129
 130typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION
 131{
 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_801_11_ai_resfi    ResponseFixedIEs;
 139    u32                   ResponseIELength;
 140    u32                   OffsetResponseIEs;
 141} NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
 142
 143enum NDIS_802_11_RELOAD_DEFAULTS {
 144        Ndis802_11ReloadWEPKeys
 145};
 146
 147
 148/*  Key mapping keys require a BSSID */
 149typedef struct _NDIS_802_11_KEY
 150{
 151    u32           Length;             /*  Length of this structure */
 152    u32           KeyIndex;
 153    u32           KeyLength;          /*  length of key in bytes */
 154    NDIS_802_11_MAC_ADDRESS BSSID;
 155    unsigned long long KeyRSC;
 156    u8           KeyMaterial[32];     /*  variable length depending on above field */
 157} NDIS_802_11_KEY, *PNDIS_802_11_KEY;
 158
 159typedef struct _NDIS_802_11_REMOVE_KEY
 160{
 161    u32                   Length;        /*  Length of this structure */
 162    u32                   KeyIndex;
 163    NDIS_802_11_MAC_ADDRESS BSSID;
 164} NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY;
 165
 166struct ndis_802_11_wep {
 167        u32 Length;        /*  Length of this structure */
 168        u32 KeyIndex;      /*  0 is the per-client key, 1-N are the global keys */
 169        u32 KeyLength;     /*  length of key in bytes */
 170        u8 KeyMaterial[16];/*  variable length depending on above field */
 171};
 172
 173/*  mask for authentication/integrity fields */
 174#define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS        0x0f
 175#define NDIS_802_11_AUTH_REQUEST_REAUTH                 0x01
 176#define NDIS_802_11_AUTH_REQUEST_KEYUPDATE              0x02
 177#define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR         0x06
 178#define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR            0x0E
 179
 180/*  MIC check time, 60 seconds. */
 181#define MIC_CHECK_TIME  60000000
 182
 183#ifndef Ndis802_11APMode
 184#define Ndis802_11APMode (Ndis802_11InfrastructureMax+1)
 185#endif
 186
 187struct wlan_phy_info {
 188        u8 SignalStrength;/* in percentage) */
 189        u8 SignalQuality;/* in percentage) */
 190        u8 Optimum_antenna;  /* for Antenna diversity */
 191        u8 Reserved_0;
 192};
 193
 194struct wlan_bcn_info {
 195        /* these infor get from rtw_get_encrypt_info when
 196         * * translate scan to UI */
 197        u8 encryp_protocol;/* ENCRYP_PROTOCOL_E: OPEN/WEP/WPA/WPA2/WAPI */
 198        int group_cipher; /* WPA/WPA2 group cipher */
 199        int pairwise_cipher;/* WPA/WPA2/WEP pairwise cipher */
 200        int is_8021x;
 201
 202        /* bwmode 20/40 and ch_offset UP/LOW */
 203        unsigned short  ht_cap_info;
 204        unsigned char ht_info_infos_0;
 205};
 206
 207/* temporally add #pragma pack for structure alignment issue of
 208*   struct wlan_bssid_ex and get_wlan_bssid_ex_sz()
 209*/
 210struct wlan_bssid_ex {
 211        u32  Length;
 212        NDIS_802_11_MAC_ADDRESS  MacAddress;
 213        u8  Reserved[2];/* 0]: IS beacon frame */
 214        struct ndis_802_11_ssid  Ssid;
 215        u32  Privacy;
 216        long  Rssi;/* in dBM, raw data , get from PHY) */
 217        enum NDIS_802_11_NETWORK_TYPE  NetworkTypeInUse;
 218        struct ndis_802_11_conf  Configuration;
 219        enum NDIS_802_11_NETWORK_INFRASTRUCTURE  InfrastructureMode;
 220        NDIS_802_11_RATES_EX  SupportedRates;
 221        struct wlan_phy_info PhyInfo;
 222        u32  IELength;
 223        u8  IEs[MAX_IE_SZ];     /* timestamp, beacon interval, and capability information) */
 224} __packed;
 225
 226__inline  static uint get_wlan_bssid_ex_sz(struct wlan_bssid_ex *bss)
 227{
 228        return (sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + bss->IELength);
 229}
 230
 231struct  wlan_network {
 232        struct list_head        list;
 233        int     network_type;   /* refer to ieee80211.h for WIRELESS_11A/B/G */
 234        int     fixed;                  /*  set to fixed when not to be removed as site-surveying */
 235        unsigned long   last_scanned; /* timestamp for the network */
 236        int     aid;                    /* will only be valid when a BSS is joinned. */
 237        int     join_res;
 238        struct wlan_bssid_ex    network; /* must be the last item */
 239        struct wlan_bcn_info    BcnInfo;
 240};
 241
 242enum VRTL_CARRIER_SENSE {
 243    DISABLE_VCS,
 244    ENABLE_VCS,
 245    AUTO_VCS
 246};
 247
 248enum VCS_TYPE {
 249    NONE_VCS,
 250    RTS_CTS,
 251    CTS_TO_SELF
 252};
 253
 254#define PWR_CAM 0
 255#define PWR_MINPS 1
 256#define PWR_MAXPS 2
 257#define PWR_UAPSD 3
 258#define PWR_VOIP 4
 259
 260enum UAPSD_MAX_SP {
 261        NO_LIMIT,
 262       TWO_MSDU,
 263       FOUR_MSDU,
 264       SIX_MSDU
 265};
 266
 267#define NUM_PRE_AUTH_KEY 16
 268#define NUM_PMKID_CACHE NUM_PRE_AUTH_KEY
 269
 270#endif /* ifndef WLAN_BSSDEF_H_ */
 271