 d0de37417e
			
		
	
	
	d0de37417e
	
	
	
		
			
			That's because the new cfg80211 implementation will provide cleaner implementations. No functional changes. Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
		
			
				
	
	
		
			155 lines
		
	
	
	
		
			3.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
	
		
			3.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Copyright (C) 2006, Red Hat, Inc. */
 | |
| 
 | |
| #ifndef _LBS_ASSOC_H_
 | |
| #define _LBS_ASSOC_H_
 | |
| 
 | |
| 
 | |
| #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;
 | |
| 	/** channel is directly in priv->channel */
 | |
| 	/** 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];
 | |
| 
 | |
| void lbs_association_worker(struct work_struct *work);
 | |
| struct assoc_request *lbs_get_association_request(struct lbs_private *priv);
 | |
| 
 | |
| int lbs_adhoc_stop(struct lbs_private *priv);
 | |
| 
 | |
| int lbs_cmd_80211_deauthenticate(struct lbs_private *priv,
 | |
| 				 u8 bssid[ETH_ALEN], u16 reason);
 | |
| 
 | |
| 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);
 | |
| 
 | |
| #endif /* _LBS_ASSOC_H */
 |