2007-02-10 12:25:27 -02:00
/* Copyright (C) 2006, Red Hat, Inc. */
2007-11-15 18:05:47 -05:00
# ifndef _LBS_ASSOC_H_
# define _LBS_ASSOC_H_
2007-02-10 12:25:27 -02:00
2009-10-22 15:30:48 +02:00
# include "defs.h"
# include "host.h"
struct lbs_private ;
/*
* In theory , the IE is limited to the IE length , 255 ,
* but in practice 64 bytes are enough .
*/
# define MAX_WPA_IE_LEN 64
struct lbs_802_11_security {
u8 WPAenabled ;
u8 WPA2enabled ;
u8 wep_enabled ;
u8 auth_mode ;
u32 key_mgmt ;
} ;
/** Current Basic Service Set State Structure */
struct current_bss_params {
/** bssid */
u8 bssid [ ETH_ALEN ] ;
/** ssid */
u8 ssid [ IEEE80211_MAX_SSID_LEN + 1 ] ;
u8 ssid_len ;
/** band */
u8 band ;
2009-10-22 15:30:50 +02:00
/** channel is directly in priv->channel */
2009-10-22 15:30:48 +02:00
/** zero-terminated array of supported data rates */
u8 rates [ MAX_RATES + 1 ] ;
} ;
/**
* @ brief Structure used to store information for each beacon / probe response
*/
struct bss_descriptor {
u8 bssid [ ETH_ALEN ] ;
u8 ssid [ IEEE80211_MAX_SSID_LEN + 1 ] ;
u8 ssid_len ;
u16 capability ;
u32 rssi ;
u32 channel ;
u16 beaconperiod ;
__le16 atimwindow ;
/* IW_MODE_AUTO, IW_MODE_ADHOC, IW_MODE_INFRA */
u8 mode ;
/* zero-terminated array of supported data rates */
u8 rates [ MAX_RATES + 1 ] ;
unsigned long last_scanned ;
union ieee_phy_param_set phy ;
union ieee_ss_param_set ss ;
u8 wpa_ie [ MAX_WPA_IE_LEN ] ;
size_t wpa_ie_len ;
u8 rsn_ie [ MAX_WPA_IE_LEN ] ;
size_t rsn_ie_len ;
u8 mesh ;
struct list_head list ;
} ;
/** Association request
*
* Encapsulates all the options that describe a specific assocation request
* or configuration of the wireless card ' s radio , mode , and security settings .
*/
struct assoc_request {
# define ASSOC_FLAG_SSID 1
# define ASSOC_FLAG_CHANNEL 2
# define ASSOC_FLAG_BAND 3
# define ASSOC_FLAG_MODE 4
# define ASSOC_FLAG_BSSID 5
# define ASSOC_FLAG_WEP_KEYS 6
# define ASSOC_FLAG_WEP_TX_KEYIDX 7
# define ASSOC_FLAG_WPA_MCAST_KEY 8
# define ASSOC_FLAG_WPA_UCAST_KEY 9
# define ASSOC_FLAG_SECINFO 10
# define ASSOC_FLAG_WPA_IE 11
unsigned long flags ;
u8 ssid [ IEEE80211_MAX_SSID_LEN + 1 ] ;
u8 ssid_len ;
u8 channel ;
u8 band ;
u8 mode ;
u8 bssid [ ETH_ALEN ] __attribute__ ( ( aligned ( 2 ) ) ) ;
/** WEP keys */
struct enc_key wep_keys [ 4 ] ;
u16 wep_tx_keyidx ;
/** WPA keys */
struct enc_key wpa_mcast_key ;
struct enc_key wpa_unicast_key ;
struct lbs_802_11_security secinfo ;
/** WPA Information Elements*/
u8 wpa_ie [ MAX_WPA_IE_LEN ] ;
u8 wpa_ie_len ;
/* BSS to associate with for infrastructure of Ad-Hoc join */
struct bss_descriptor bss ;
} ;
extern u8 lbs_bg_rates [ MAX_RATES ] ;
2007-02-10 12:25:27 -02:00
2007-11-15 18:05:47 -05:00
void lbs_association_worker ( struct work_struct * work ) ;
2007-12-08 20:04:36 +00:00
struct assoc_request * lbs_get_association_request ( struct lbs_private * priv ) ;
2007-05-30 12:14:34 -04:00
2008-08-21 21:46:59 -04:00
int lbs_adhoc_stop ( struct lbs_private * priv ) ;
2008-04-02 16:27:10 +02:00
int lbs_cmd_80211_deauthenticate ( struct lbs_private * priv ,
2008-08-21 17:46:18 -04:00
u8 bssid [ ETH_ALEN ] , u16 reason ) ;
2008-04-02 16:27:10 +02:00
2009-10-22 15:30:51 +02:00
int lbs_cmd_802_11_rssi ( struct lbs_private * priv ,
struct cmd_ds_command * cmd ) ;
int lbs_ret_802_11_rssi ( struct lbs_private * priv ,
struct cmd_ds_command * resp ) ;
int lbs_cmd_bcn_ctrl ( struct lbs_private * priv ,
struct cmd_ds_command * cmd ,
u16 cmd_action ) ;
int lbs_ret_802_11_bcn_ctrl ( struct lbs_private * priv ,
struct cmd_ds_command * resp ) ;
int lbs_cmd_802_11_set_wep ( struct lbs_private * priv , uint16_t cmd_action ,
struct assoc_request * assoc ) ;
int lbs_cmd_802_11_enable_rsn ( struct lbs_private * priv , uint16_t cmd_action ,
uint16_t * enable ) ;
int lbs_cmd_802_11_key_material ( struct lbs_private * priv , uint16_t cmd_action ,
struct assoc_request * assoc ) ;
2007-11-15 18:05:47 -05:00
# endif /* _LBS_ASSOC_H */