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

📄 ieee80211_i.h

📁 linux 内核源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
	struct ieee80211_hw hw;	const struct ieee80211_ops *ops;	/* List of registered struct ieee80211_hw_mode */	struct list_head modes_list;	struct net_device *mdev; /* wmaster# - "master" 802.11 device */	int open_count;	int monitors;	unsigned int filter_flags; /* FIF_* */	struct iw_statistics wstats;	u8 wstats_flags;	int tx_headroom; /* required headroom for hardware/radiotap */	enum {		IEEE80211_DEV_UNINITIALIZED = 0,		IEEE80211_DEV_REGISTERED,		IEEE80211_DEV_UNREGISTERED,	} reg_state;	/* Tasklet and skb queue to process calls from IRQ mode. All frames	 * added to skb_queue will be processed, but frames in	 * skb_queue_unreliable may be dropped if the total length of these	 * queues increases over the limit. */#define IEEE80211_IRQSAFE_QUEUE_LIMIT 128	struct tasklet_struct tasklet;	struct sk_buff_head skb_queue;	struct sk_buff_head skb_queue_unreliable;	/* Station data structures */	rwlock_t sta_lock; /* protects STA data structures */	int num_sta; /* number of stations in sta_list */	struct list_head sta_list;	struct sta_info *sta_hash[STA_HASH_SIZE];	struct timer_list sta_cleanup;	unsigned long state[NUM_TX_DATA_QUEUES];	struct ieee80211_tx_stored_packet pending_packet[NUM_TX_DATA_QUEUES];	struct tasklet_struct tx_pending_tasklet;	/* number of interfaces with corresponding IFF_ flags */	atomic_t iff_allmultis, iff_promiscs;	struct rate_control_ref *rate_ctrl;	/* Supported and basic rate filters for different modes. These are	 * pointers to -1 terminated lists and rates in 100 kbps units. */	int *supp_rates[NUM_IEEE80211_MODES];	int *basic_rates[NUM_IEEE80211_MODES];	int rts_threshold;	int fragmentation_threshold;	int short_retry_limit; /* dot11ShortRetryLimit */	int long_retry_limit; /* dot11LongRetryLimit */	struct crypto_blkcipher *wep_tx_tfm;	struct crypto_blkcipher *wep_rx_tfm;	u32 wep_iv;	int bridge_packets; /* bridge packets between associated stations and			     * deliver multicast frames both back to wireless			     * media and to the local net stack */	ieee80211_rx_handler *rx_pre_handlers;	ieee80211_rx_handler *rx_handlers;	ieee80211_tx_handler *tx_handlers;	struct list_head interfaces;	int sta_scanning;	int scan_channel_idx;	enum { SCAN_SET_CHANNEL, SCAN_SEND_PROBE } scan_state;	unsigned long last_scan_completed;	struct delayed_work scan_work;	struct net_device *scan_dev;	struct ieee80211_channel *oper_channel, *scan_channel;	struct ieee80211_hw_mode *oper_hw_mode, *scan_hw_mode;	u8 scan_ssid[IEEE80211_MAX_SSID_LEN];	size_t scan_ssid_len;	struct list_head sta_bss_list;	struct ieee80211_sta_bss *sta_bss_hash[STA_HASH_SIZE];	spinlock_t sta_bss_lock;#define IEEE80211_SCAN_MATCH_SSID BIT(0)#define IEEE80211_SCAN_WPA_ONLY BIT(1)#define IEEE80211_SCAN_EXTRA_INFO BIT(2)	int scan_flags;	/* SNMP counters */	/* dot11CountersTable */	u32 dot11TransmittedFragmentCount;	u32 dot11MulticastTransmittedFrameCount;	u32 dot11FailedCount;	u32 dot11RetryCount;	u32 dot11MultipleRetryCount;	u32 dot11FrameDuplicateCount;	u32 dot11ReceivedFragmentCount;	u32 dot11MulticastReceivedFrameCount;	u32 dot11TransmittedFrameCount;	u32 dot11WEPUndecryptableCount;#ifdef CONFIG_MAC80211_LEDS	int tx_led_counter, rx_led_counter;	struct led_trigger *tx_led, *rx_led, *assoc_led;	char tx_led_name[32], rx_led_name[32], assoc_led_name[32];#endif	u32 channel_use;	u32 channel_use_raw;#ifdef CONFIG_MAC80211_DEBUGFS	struct work_struct sta_debugfs_add;#endif#ifdef CONFIG_MAC80211_DEBUG_COUNTERS	/* TX/RX handler statistics */	unsigned int tx_handlers_drop;	unsigned int tx_handlers_queued;	unsigned int tx_handlers_drop_unencrypted;	unsigned int tx_handlers_drop_fragment;	unsigned int tx_handlers_drop_wep;	unsigned int tx_handlers_drop_not_assoc;	unsigned int tx_handlers_drop_unauth_port;	unsigned int rx_handlers_drop;	unsigned int rx_handlers_queued;	unsigned int rx_handlers_drop_nullfunc;	unsigned int rx_handlers_drop_defrag;	unsigned int rx_handlers_drop_short;	unsigned int rx_handlers_drop_passive_scan;	unsigned int tx_expand_skb_head;	unsigned int tx_expand_skb_head_cloned;	unsigned int rx_expand_skb_head;	unsigned int rx_expand_skb_head2;	unsigned int rx_handlers_fragments;	unsigned int tx_status_drop;	unsigned int wme_rx_queue[NUM_RX_DATA_QUEUES];	unsigned int wme_tx_queue[NUM_RX_DATA_QUEUES];#define I802_DEBUG_INC(c) (c)++#else /* CONFIG_MAC80211_DEBUG_COUNTERS */#define I802_DEBUG_INC(c) do { } while (0)#endif /* CONFIG_MAC80211_DEBUG_COUNTERS */	int total_ps_buffered; /* total number of all buffered unicast and				* multicast packets for power saving stations				*/	int wifi_wme_noack_test;	unsigned int wmm_acm; /* bit field of ACM bits (BIT(802.1D tag)) */	unsigned int enabled_modes; /* bitfield of allowed modes;				      * (1 << MODE_*) */	unsigned int hw_modes; /* bitfield of supported hardware modes;				* (1 << MODE_*) */#ifdef CONFIG_MAC80211_DEBUGFS	struct local_debugfsdentries {		struct dentry *channel;		struct dentry *frequency;		struct dentry *antenna_sel_tx;		struct dentry *antenna_sel_rx;		struct dentry *bridge_packets;		struct dentry *rts_threshold;		struct dentry *fragmentation_threshold;		struct dentry *short_retry_limit;		struct dentry *long_retry_limit;		struct dentry *total_ps_buffered;		struct dentry *mode;		struct dentry *wep_iv;		struct dentry *modes;		struct dentry *statistics;		struct local_debugfsdentries_statsdentries {			struct dentry *transmitted_fragment_count;			struct dentry *multicast_transmitted_frame_count;			struct dentry *failed_count;			struct dentry *retry_count;			struct dentry *multiple_retry_count;			struct dentry *frame_duplicate_count;			struct dentry *received_fragment_count;			struct dentry *multicast_received_frame_count;			struct dentry *transmitted_frame_count;			struct dentry *wep_undecryptable_count;			struct dentry *num_scans;#ifdef CONFIG_MAC80211_DEBUG_COUNTERS			struct dentry *tx_handlers_drop;			struct dentry *tx_handlers_queued;			struct dentry *tx_handlers_drop_unencrypted;			struct dentry *tx_handlers_drop_fragment;			struct dentry *tx_handlers_drop_wep;			struct dentry *tx_handlers_drop_not_assoc;			struct dentry *tx_handlers_drop_unauth_port;			struct dentry *rx_handlers_drop;			struct dentry *rx_handlers_queued;			struct dentry *rx_handlers_drop_nullfunc;			struct dentry *rx_handlers_drop_defrag;			struct dentry *rx_handlers_drop_short;			struct dentry *rx_handlers_drop_passive_scan;			struct dentry *tx_expand_skb_head;			struct dentry *tx_expand_skb_head_cloned;			struct dentry *rx_expand_skb_head;			struct dentry *rx_expand_skb_head2;			struct dentry *rx_handlers_fragments;			struct dentry *tx_status_drop;			struct dentry *wme_tx_queue;			struct dentry *wme_rx_queue;#endif			struct dentry *dot11ACKFailureCount;			struct dentry *dot11RTSFailureCount;			struct dentry *dot11FCSErrorCount;			struct dentry *dot11RTSSuccessCount;		} stats;		struct dentry *stations;		struct dentry *keys;	} debugfs;#endif};static inline struct ieee80211_local *hw_to_local(	struct ieee80211_hw *hw){	return container_of(hw, struct ieee80211_local, hw);}static inline struct ieee80211_hw *local_to_hw(	struct ieee80211_local *local){	return &local->hw;}enum ieee80211_link_state_t {	IEEE80211_LINK_STATE_XOFF = 0,	IEEE80211_LINK_STATE_PENDING,};struct sta_attribute {	struct attribute attr;	ssize_t (*show)(const struct sta_info *, char *buf);	ssize_t (*store)(struct sta_info *, const char *buf, size_t count);};static inline void __bss_tim_set(struct ieee80211_if_ap *bss, u16 aid){	/*	 * This format has been mandated by the IEEE specifications,	 * so this line may not be changed to use the __set_bit() format.	 */	bss->tim[aid / 8] |= (1 << (aid % 8));}static inline void bss_tim_set(struct ieee80211_local *local,			       struct ieee80211_if_ap *bss, u16 aid){	read_lock_bh(&local->sta_lock);	__bss_tim_set(bss, aid);	read_unlock_bh(&local->sta_lock);}static inline void __bss_tim_clear(struct ieee80211_if_ap *bss, u16 aid){	/*	 * This format has been mandated by the IEEE specifications,	 * so this line may not be changed to use the __clear_bit() format.	 */	bss->tim[aid / 8] &= ~(1 << (aid % 8));}static inline void bss_tim_clear(struct ieee80211_local *local,				 struct ieee80211_if_ap *bss, u16 aid){	read_lock_bh(&local->sta_lock);	__bss_tim_clear(bss, aid);	read_unlock_bh(&local->sta_lock);}/** * ieee80211_is_erp_rate - Check if a rate is an ERP rate * @phymode: The PHY-mode for this rate (MODE_IEEE80211...) * @rate: Transmission rate to check, in 100 kbps * * Check if a given rate is an Extended Rate PHY (ERP) rate. */static inline int ieee80211_is_erp_rate(int phymode, int rate){	if (phymode == MODE_IEEE80211G) {		if (rate != 10 && rate != 20 &&		    rate != 55 && rate != 110)			return 1;	}	return 0;}static inline int ieee80211_bssid_match(const u8 *raddr, const u8 *addr){	return compare_ether_addr(raddr, addr) == 0 ||	       is_broadcast_ether_addr(raddr);}/* ieee80211.c */int ieee80211_hw_config(struct ieee80211_local *local);int ieee80211_if_config(struct net_device *dev);int ieee80211_if_config_beacon(struct net_device *dev);void ieee80211_prepare_rates(struct ieee80211_local *local,			     struct ieee80211_hw_mode *mode);void ieee80211_tx_set_iswep(struct ieee80211_txrx_data *tx);int ieee80211_if_update_wds(struct net_device *dev, u8 *remote_addr);void ieee80211_if_setup(struct net_device *dev);struct ieee80211_rate *ieee80211_get_rate(struct ieee80211_local *local,					  int phymode, int hwrate);/* ieee80211_ioctl.c */extern const struct iw_handler_def ieee80211_iw_handler_def;/* Least common multiple of the used rates (in 100 kbps). This is used to * calculate rate_inv values for each rate so that only integers are needed. */#define CHAN_UTIL_RATE_LCM 95040/* 1 usec is 1/8 * (95040/10) = 1188 */#define CHAN_UTIL_PER_USEC 1188/* Amount of bits to shift the result right to scale the total utilization * to values that will not wrap around 32-bit integers. */#define CHAN_UTIL_SHIFT 9/* Theoretical maximum of channel utilization counter in 10 ms (stat_time=1): * (CHAN_UTIL_PER_USEC * 10000) >> CHAN_UTIL_SHIFT = 23203. So dividing the * raw value with about 23 should give utilization in 10th of a percentage * (1/1000). However, utilization is only estimated and not all intervals * between frames etc. are calculated. 18 seems to give numbers that are closer * to the real maximum. */#define CHAN_UTIL_PER_10MS 18#define CHAN_UTIL_HDR_LONG (202 * CHAN_UTIL_PER_USEC)#define CHAN_UTIL_HDR_SHORT (40 * CHAN_UTIL_PER_USEC)/* ieee80211_ioctl.c */int ieee80211_set_compression(struct ieee80211_local *local,			      struct net_device *dev, struct sta_info *sta);int ieee80211_set_channel(struct ieee80211_local *local, int channel, int freq);/* ieee80211_sta.c */void ieee80211_sta_timer(unsigned long data);void ieee80211_sta_work(struct work_struct *work);void ieee80211_sta_scan_work(struct work_struct *work);void ieee80211_sta_rx_mgmt(struct net_device *dev, struct sk_buff *skb,			   struct ieee80211_rx_status *rx_status);int ieee80211_sta_set_ssid(struct net_device *dev, char *ssid, size_t len);int ieee80211_sta_get_ssid(struct net_device *dev, char *ssid, size_t *len);int ieee80211_sta_set_bssid(struct net_device *dev, u8 *bssid);int ieee80211_sta_req_scan(struct net_device *dev, u8 *ssid, size_t ssid_len);void ieee80211_sta_req_auth(struct net_device *dev,			    struct ieee80211_if_sta *ifsta);int ieee80211_sta_scan_results(struct net_device *dev, char *buf, size_t len);void ieee80211_sta_rx_scan(struct net_device *dev, struct sk_buff *skb,			   struct ieee80211_rx_status *rx_status);void ieee80211_rx_bss_list_init(struct net_device *dev);void ieee80211_rx_bss_list_deinit(struct net_device *dev);int ieee80211_sta_set_extra_ie(struct net_device *dev, char *ie, size_t len);struct sta_info * ieee80211_ibss_add_sta(struct net_device *dev,					 struct sk_buff *skb, u8 *bssid,					 u8 *addr);int ieee80211_sta_deauthenticate(struct net_device *dev, u16 reason);int ieee80211_sta_disassociate(struct net_device *dev, u16 reason);void ieee80211_erp_info_change_notify(struct net_device *dev, u8 changes);void ieee80211_reset_erp_info(struct net_device *dev);/* ieee80211_iface.c */int ieee80211_if_add(struct net_device *dev, const char *name,		     struct net_device **new_dev, int type);void ieee80211_if_set_type(struct net_device *dev, int type);void ieee80211_if_reinit(struct net_device *dev);void __ieee80211_if_del(struct ieee80211_local *local,			struct ieee80211_sub_if_data *sdata);int ieee80211_if_remove(struct net_device *dev, const char *name, int id);void ieee80211_if_free(struct net_device *dev);void ieee80211_if_sdata_init(struct ieee80211_sub_if_data *sdata);/* regdomain.c */void ieee80211_regdomain_init(void);void ieee80211_set_default_regdomain(struct ieee80211_hw_mode *mode);/* rx handling */extern ieee80211_rx_handler ieee80211_rx_pre_handlers[];extern ieee80211_rx_handler ieee80211_rx_handlers[];/* tx handling */extern ieee80211_tx_handler ieee80211_tx_handlers[];void ieee80211_clear_tx_pending(struct ieee80211_local *local);void ieee80211_tx_pending(unsigned long data);int ieee80211_master_start_xmit(struct sk_buff *skb, struct net_device *dev);int ieee80211_monitor_start_xmit(struct sk_buff *skb, struct net_device *dev);int ieee80211_subif_start_xmit(struct sk_buff *skb, struct net_device *dev);/* utility functions/constants */extern void *mac80211_wiphy_privid; /* for wiphy privid */extern const unsigned char rfc1042_header[6];extern const unsigned char bridge_tunnel_header[6];u8 *ieee80211_get_bssid(struct ieee80211_hdr *hdr, size_t len);int ieee80211_is_eapol(const struct sk_buff *skb);int ieee80211_frame_duration(struct ieee80211_local *local, size_t len,			     int rate, int erp, int short_preamble);void mac80211_ev_michael_mic_failure(struct net_device *dev, int keyidx,				     struct ieee80211_hdr *hdr);#endif /* IEEE80211_I_H */

⌨️ 快捷键说明

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