📄 hostap_wlan.h
字号:
#ifndef HOSTAP_WLAN_H#define HOSTAP_WLAN_H#include "hostap_config.h"#ifdef __KERNEL__#include "hostap_compat.h"#endif#include "hostap_crypt.h"#include "hostap_common.h"#define MAX_PARM_DEVICES 8#define PARM_MIN_MAX "1-" __MODULE_STRING(MAX_PARM_DEVICES)#define DEF_INTS -1, -1, -1, -1, -1, -1, -1#define GET_INT_PARM(var,idx) var[var[idx] < 0 ? 0 : idx]/* Specific skb->protocol value that indicates that the packet already contains * txdesc header. * FIX: This might need own value that would be allocated especially for Prism2 * txdesc; ETH_P_CONTROL is commented as "Card specific control frames". * However, these skb's should have only minimal path in the kernel side since * prism2_send_mgmt() sends these with dev_queue_xmit() to prism2_tx(). */#define ETH_P_HOSTAP ETH_P_CONTROL#ifndef ARPHRD_IEEE80211#define ARPHRD_IEEE80211 801#endif#ifndef ARPHRD_IEEE80211_PRISM#define ARPHRD_IEEE80211_PRISM 802#endif/* ARPHRD_IEEE80211_PRISM uses a bloated version of Prism2 RX frame header * (from linux-wlan-ng) */struct linux_wlan_ng_val { u32 did; u16 status, len; u32 data;} __attribute__ ((packed));struct linux_wlan_ng_prism_hdr { u32 msgcode, msglen; char devname[16]; struct linux_wlan_ng_val hosttime, mactime, channel, rssi, sq, signal, noise, rate, istx, frmlen;} __attribute__ ((packed));struct linux_wlan_ng_cap_hdr { u32 version; u32 length; u64 mactime; u64 hosttime; u32 phytype; u32 channel; u32 datarate; u32 antenna; u32 priority; u32 ssi_type; s32 ssi_signal; s32 ssi_noise; u32 preamble; u32 encoding;} __attribute__ ((packed));#define LWNG_CAP_DID_BASE (4 | (1 << 6)) /* section 4, group 1 */#define LWNG_CAPHDR_VERSION 0x80211001struct hfa384x_rx_frame { /* HFA384X RX frame descriptor */ u16 status; /* HFA384X_RX_STATUS_ flags */ u32 time; /* timestamp, 1 microsecond resolution */ u8 silence; /* 27 .. 154; seems to be 0 */ u8 signal; /* 27 .. 154 */ u8 rate; /* 10, 20, 55, or 110 */ u8 rxflow; u32 reserved; /* 802.11 */ u16 frame_control; u16 duration_id; u8 addr1[6]; u8 addr2[6]; u8 addr3[6]; u16 seq_ctrl; u8 addr4[6]; u16 data_len; /* 802.3 */ u8 dst_addr[6]; u8 src_addr[6]; u16 len; /* followed by frame data; max 2304 bytes */} __attribute__ ((packed));struct hfa384x_tx_frame { /* HFA384X TX frame descriptor */ u16 status; /* HFA384X_TX_STATUS_ flags */ u16 reserved1; u16 reserved2; u32 sw_support; u8 retry_count; /* not yet implemented */ u8 tx_rate; /* Host AP only; 0 = firmware, or 10, 20, 55, 110 */ u16 tx_control; /* HFA384X_TX_CTRL_ flags */ /* 802.11 */ u16 frame_control; /* parts not used */ u16 duration_id; u8 addr1[6]; u8 addr2[6]; /* filled by firmware */ u8 addr3[6]; u16 seq_ctrl; /* filled by firmware */ u8 addr4[6]; u16 data_len; /* 802.3 */ u8 dst_addr[6]; u8 src_addr[6]; u16 len; /* followed by frame data; max 2304 bytes */} __attribute__ ((packed));struct hfa384x_rid_hdr{ u16 len; u16 rid;} __attribute__ ((packed));/* Macro for converting signal levels (range 27 .. 154) to wireless ext * dBm value with some accuracy */#define HFA384X_LEVEL_TO_dBm(v) 0x100 + (v) * 100 / 255 - 100#define HFA384X_LEVEL_TO_dBm_sign(v) (v) * 100 / 255 - 100struct hfa384x_scan_request { u16 channel_list; u16 txrate; /* HFA384X_RATES_* */} __attribute__ ((packed));struct hfa384x_hostscan_request { u16 channel_list; u16 txrate; u16 target_ssid_len; u8 target_ssid[32];} __attribute__ ((packed));struct hfa384x_join_request { u8 bssid[6]; u16 channel;} __attribute__ ((packed));struct hfa384x_info_frame { u16 len; u16 type;} __attribute__ ((packed));struct hfa384x_comm_tallies { u16 tx_unicast_frames; u16 tx_multicast_frames; u16 tx_fragments; u16 tx_unicast_octets; u16 tx_multicast_octets; u16 tx_deferred_transmissions; u16 tx_single_retry_frames; u16 tx_multiple_retry_frames; u16 tx_retry_limit_exceeded; u16 tx_discards; u16 rx_unicast_frames; u16 rx_multicast_frames; u16 rx_fragments; u16 rx_unicast_octets; u16 rx_multicast_octets; u16 rx_fcs_errors; u16 rx_discards_no_buffer; u16 tx_discards_wrong_sa; u16 rx_discards_wep_undecryptable; u16 rx_message_in_msg_fragments; u16 rx_message_in_bad_msg_fragments;} __attribute__ ((packed));struct hfa384x_comm_tallies32 { u32 tx_unicast_frames; u32 tx_multicast_frames; u32 tx_fragments; u32 tx_unicast_octets; u32 tx_multicast_octets; u32 tx_deferred_transmissions; u32 tx_single_retry_frames; u32 tx_multiple_retry_frames; u32 tx_retry_limit_exceeded; u32 tx_discards; u32 rx_unicast_frames; u32 rx_multicast_frames; u32 rx_fragments; u32 rx_unicast_octets; u32 rx_multicast_octets; u32 rx_fcs_errors; u32 rx_discards_no_buffer; u32 tx_discards_wrong_sa; u32 rx_discards_wep_undecryptable; u32 rx_message_in_msg_fragments; u32 rx_message_in_bad_msg_fragments;} __attribute__ ((packed));struct hfa384x_scan_result_hdr { u16 reserved; u16 scan_reason;#define HFA384X_SCAN_IN_PROGRESS 0 /* no results available yet */#define HFA384X_SCAN_HOST_INITIATED 1#define HFA384X_SCAN_FIRMWARE_INITIATED 2#define HFA384X_SCAN_INQUIRY_FROM_HOST 3} __attribute__ ((packed));#define HFA384X_SCAN_MAX_RESULTS 32struct hfa384x_scan_result { u16 chid; u16 anl; u16 sl; u8 bssid[6]; u16 beacon_interval; u16 capability; u16 ssid_len; u8 ssid[32]; u8 sup_rates[10]; u16 rate;} __attribute__ ((packed));struct hfa384x_hostscan_result { u16 chid; u16 anl; u16 sl; u8 bssid[6]; u16 beacon_interval; u16 capability; u16 ssid_len; u8 ssid[32]; u8 sup_rates[10]; u16 rate; u16 atim;} __attribute__ ((packed));struct comm_tallies_sums { unsigned int tx_unicast_frames; unsigned int tx_multicast_frames; unsigned int tx_fragments; unsigned int tx_unicast_octets; unsigned int tx_multicast_octets; unsigned int tx_deferred_transmissions; unsigned int tx_single_retry_frames; unsigned int tx_multiple_retry_frames; unsigned int tx_retry_limit_exceeded; unsigned int tx_discards; unsigned int rx_unicast_frames; unsigned int rx_multicast_frames; unsigned int rx_fragments; unsigned int rx_unicast_octets; unsigned int rx_multicast_octets; unsigned int rx_fcs_errors; unsigned int rx_discards_no_buffer; unsigned int tx_discards_wrong_sa; unsigned int rx_discards_wep_undecryptable; unsigned int rx_message_in_msg_fragments; unsigned int rx_message_in_bad_msg_fragments;};struct hfa384x_regs { u16 cmd; u16 evstat; u16 offset0; u16 offset1; u16 swsupport0;};#if defined(PRISM2_PCCARD) || defined(PRISM2_PLX)/* I/O ports for HFA384X Controller access */#define HFA384X_CMD_OFF 0x00#define HFA384X_PARAM0_OFF 0x02#define HFA384X_PARAM1_OFF 0x04#define HFA384X_PARAM2_OFF 0x06#define HFA384X_STATUS_OFF 0x08#define HFA384X_RESP0_OFF 0x0A#define HFA384X_RESP1_OFF 0x0C#define HFA384X_RESP2_OFF 0x0E#define HFA384X_INFOFID_OFF 0x10#define HFA384X_CONTROL_OFF 0x14#define HFA384X_SELECT0_OFF 0x18#define HFA384X_SELECT1_OFF 0x1A#define HFA384X_OFFSET0_OFF 0x1C#define HFA384X_OFFSET1_OFF 0x1E#define HFA384X_RXFID_OFF 0x20#define HFA384X_ALLOCFID_OFF 0x22#define HFA384X_TXCOMPLFID_OFF 0x24#define HFA384X_SWSUPPORT0_OFF 0x28#define HFA384X_SWSUPPORT1_OFF 0x2A#define HFA384X_SWSUPPORT2_OFF 0x2C#define HFA384X_EVSTAT_OFF 0x30#define HFA384X_INTEN_OFF 0x32#define HFA384X_EVACK_OFF 0x34#define HFA384X_DATA0_OFF 0x36#define HFA384X_DATA1_OFF 0x38#define HFA384X_AUXPAGE_OFF 0x3A#define HFA384X_AUXOFFSET_OFF 0x3C#define HFA384X_AUXDATA_OFF 0x3E#endif /* PRISM2_PCCARD || PRISM2_PLX */#ifdef PRISM2_PCI/* Memory addresses for ISL3874 controller access */#define HFA384X_CMD_OFF 0x00#define HFA384X_PARAM0_OFF 0x04#define HFA384X_PARAM1_OFF 0x08#define HFA384X_PARAM2_OFF 0x0C#define HFA384X_STATUS_OFF 0x10#define HFA384X_RESP0_OFF 0x14#define HFA384X_RESP1_OFF 0x18#define HFA384X_RESP2_OFF 0x1C#define HFA384X_INFOFID_OFF 0x20#define HFA384X_CONTROL_OFF 0x28#define HFA384X_SELECT0_OFF 0x30#define HFA384X_SELECT1_OFF 0x34#define HFA384X_OFFSET0_OFF 0x38#define HFA384X_OFFSET1_OFF 0x3C#define HFA384X_RXFID_OFF 0x40#define HFA384X_ALLOCFID_OFF 0x44#define HFA384X_TXCOMPLFID_OFF 0x48#define HFA384X_PCICOR_OFF 0x4C#define HFA384X_SWSUPPORT0_OFF 0x50#define HFA384X_SWSUPPORT1_OFF 0x54#define HFA384X_SWSUPPORT2_OFF 0x58#define HFA384X_PCIHCR_OFF 0x5C#define HFA384X_EVSTAT_OFF 0x60#define HFA384X_INTEN_OFF 0x64#define HFA384X_EVACK_OFF 0x68#define HFA384X_DATA0_OFF 0x6C#define HFA384X_DATA1_OFF 0x70#define HFA384X_AUXPAGE_OFF 0x74#define HFA384X_AUXOFFSET_OFF 0x78#define HFA384X_AUXDATA_OFF 0x7C#define HFA384X_PCI_M0_ADDRH_OFF 0x80#define HFA384X_PCI_M0_ADDRL_OFF 0x84#define HFA384X_PCI_M0_LEN_OFF 0x88#define HFA384X_PCI_M0_CTL_OFF 0x8C#define HFA384X_PCI_STATUS_OFF 0x98#define HFA384X_PCI_M1_ADDRH_OFF 0xA0#define HFA384X_PCI_M1_ADDRL_OFF 0xA4#define HFA384X_PCI_M1_LEN_OFF 0xA8#define HFA384X_PCI_M1_CTL_OFF 0xAC/* PCI bus master control bits (these are undocumented; based on guessing and * experimenting..) */#define HFA384X_PCI_CTL_FROM_BAP (BIT(5) | BIT(1) | BIT(0))#define HFA384X_PCI_CTL_TO_BAP (BIT(5) | BIT(0))#endif /* PRISM2_PCI *//* Command codes for CMD reg. */#define HFA384X_CMDCODE_INIT 0x00#define HFA384X_CMDCODE_ENABLE 0x01#define HFA384X_CMDCODE_DISABLE 0x02#define HFA384X_CMDCODE_ALLOC 0x0A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -