31#define UPGT_CONFIG_INDEX 0
32#define UPGT_IFACE_INDEX 0
33#define UPGT_USB_TIMEOUT 1000
34#define UPGT_FIRMWARE_TIMEOUT 10
36#define UPGT_MEMADDR_FIRMWARE_START 0x00020000
37#define UPGT_MEMSIZE_FRAME_HEAD 0x0070
38#define UPGT_MEMSIZE_RX 0x3500
40#define UPGT_RX_MAXCOUNT 6
41#define UPGT_TX_MAXCOUNT 128
42#define UPGT_TX_STAT_INTERVAL 5
43#define UPGT_RX_MINSZ (sizeof(struct upgt_lmac_header) + 4)
46#define UPGT_DEVICE_ATTACHED (1 << 0)
51#define UPGT_LED_BLINK 2
56#define UPGT_FW_BLOCK_SIZE 256
58#define UPGT_BRA_FWTYPE_SIZE 4
59#define UPGT_BRA_FWTYPE_LM86 "LM86"
60#define UPGT_BRA_FWTYPE_LM87 "LM87"
66#define UPGT_BRA_TYPE_FW 0x80000001
67#define UPGT_BRA_TYPE_VERSION 0x80000002
68#define UPGT_BRA_TYPE_DEPIF 0x80000003
69#define UPGT_BRA_TYPE_EXPIF 0x80000004
70#define UPGT_BRA_TYPE_DESCR 0x80000101
71#define UPGT_BRA_TYPE_END 0xff0000ff
87#define UPGT_X2_SIGNATURE_SIZE 4
88#define UPGT_X2_SIGNATURE "x2 "
99#define UPGT_EEPROM_SIZE 8192
100#define UPGT_EEPROM_BLOCK_SIZE 1020
111#define UPGT_EEPROM_TYPE_END 0x0000
112#define UPGT_EEPROM_TYPE_NAME 0x0001
113#define UPGT_EEPROM_TYPE_SERIAL 0x0003
114#define UPGT_EEPROM_TYPE_MAC 0x0101
115#define UPGT_EEPROM_TYPE_HWRX 0x1001
116#define UPGT_EEPROM_TYPE_CHIP 0x1002
117#define UPGT_EEPROM_TYPE_FREQ3 0x1903
118#define UPGT_EEPROM_TYPE_FREQ4 0x1904
119#define UPGT_EEPROM_TYPE_FREQ5 0x1905
120#define UPGT_EEPROM_TYPE_FREQ6 0x1906
121#define UPGT_EEPROM_TYPE_OFF 0xffff
129#define UPGT_EEPROM_RX_CONST 0x88
167#define UPGT_H1_FLAGS_TX_MGMT 0x00
168#define UPGT_H1_FLAGS_TX_NO_CALLBACK 0x01
169#define UPGT_H1_FLAGS_TX_DATA 0x10
170#define UPGT_H1_TYPE_RX_DATA 0x00
171#define UPGT_H1_TYPE_RX_DATA_MGMT 0x04
172#define UPGT_H1_TYPE_TX_DATA 0x40
173#define UPGT_H1_TYPE_CTRL 0x80
181#define UPGT_H2_TYPE_TX_ACK_NO 0x0000
182#define UPGT_H2_TYPE_TX_ACK_YES 0x0001
183#define UPGT_H2_TYPE_MACFILTER 0x0000
184#define UPGT_H2_TYPE_CHANNEL 0x0001
185#define UPGT_H2_TYPE_TX_DONE 0x0008
186#define UPGT_H2_TYPE_STATS 0x000a
187#define UPGT_H2_TYPE_EEPROM 0x000c
188#define UPGT_H2_TYPE_LED 0x000d
189#define UPGT_H2_FLAGS_TX_ACK_NO 0x0101
190#define UPGT_H2_FLAGS_TX_ACK_YES 0x0707
213#define UPGT_FILTER_TYPE_NONE 0x0000
214#define UPGT_FILTER_TYPE_STA 0x0001
215#define UPGT_FILTER_TYPE_IBSS 0x0002
216#define UPGT_FILTER_TYPE_HOSTAP 0x0004
217#define UPGT_FILTER_TYPE_MONITOR 0x0010
218#define UPGT_FILTER_TYPE_RESET 0x0020
219#define UPGT_FILTER_UNKNOWN1 0x0002
220#define UPGT_FILTER_UNKNOWN2 0x0ca8
221#define UPGT_FILTER_UNKNOWN3 0xffff
222#define UPGT_FILTER_MONITOR_UNKNOWN1 0x0000
223#define UPGT_FILTER_MONITOR_UNKNOWN2 0x0000
224#define UPGT_FILTER_MONITOR_UNKNOWN3 0x0000
230 uint8_t
dst[IEEE80211_ADDR_LEN];
231 uint8_t
src[IEEE80211_ADDR_LEN];
258#define UPGT_CHANNEL_UNKNOWN1 0x0001
259#define UPGT_CHANNEL_UNKNOWN2 0x0000
260#define UPGT_CHANNEL_UNKNOWN3 0x48
277#define UPGT_LED_MODE_SET 0x0003
278#define UPGT_LED_ACTION_OFF 0x0002
279#define UPGT_LED_ACTION_ON 0x0003
280#define UPGT_LED_ACTION_TMP_DUR 100
310#define UPGT_TX_DESC_KEY_EXISTS 0x01
317#define UPGT_TX_DESC_TYPE_BEACON 0x00000000
318#define UPGT_TX_DESC_TYPE_PROBE 0x00000001
319#define UPGT_TX_DESC_TYPE_MGMT 0x00000002
320#define UPGT_TX_DESC_TYPE_DATA 0x00000004
321#define UPGT_TX_DESC_PAD3_SIZE 2
336#define UPGT_TX_DONE_DESC_STATUS_OK 0x0001
352 struct ieee80211_node *
ni;
367#define UPGT_MEMORY_MAX_PAGES 8
385#define UPGT_RX_RADIOTAP_PRESENT \
386 ((1 << IEEE80211_RADIOTAP_FLAGS) | \
387 (1 << IEEE80211_RADIOTAP_RATE) | \
388 (1 << IEEE80211_RADIOTAP_CHANNEL) | \
389 (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL))
399#define UPGT_TX_RADIOTAP_PRESENT \
400 ((1 << IEEE80211_RADIOTAP_FLAGS) | \
401 (1 << IEEE80211_RADIOTAP_RATE) | \
402 (1 << IEEE80211_RADIOTAP_CHANNEL))
410#define UPGT_STAT_INC(sc, var) (sc)->sc_stat.var++
411#define UPGT_STAT_DEC(sc, var) (sc)->sc_stat.var--
416 enum ieee80211_state, int);
418#define UPGT_VAP(vap) ((struct upgt_vap *)(vap))
430#define UPGT_FLAG_FWLOADED (1 << 0)
431#define UPGT_FLAG_INITDONE (1 << 1)
432#define UPGT_FLAG_DETACHED (1 << 2)
478#define UPGT_LOCK(sc) mtx_lock(&(sc)->sc_mtx)
479#define UPGT_UNLOCK(sc) mtx_unlock(&(sc)->sc_mtx)
480#define UPGT_ASSERT_LOCKED(sc) mtx_assert(&(sc)->sc_mtx, MA_OWNED)
struct upgt_rx_radiotap_header __aligned(8)
#define UPGT_MEMORY_MAX_PAGES
typedef STAILQ_HEAD(, upgt_data) upgt_datahead
struct upgt_fw_bra_option __packed
struct ieee80211_node * ni
STAILQ_ENTRY(upgt_data) next
uint32_t memaddr_space_start
uint32_t memaddr_space_end
struct upgt_lmac_freq4 freq4[8]
struct upgt_lmac_h2 header2
struct upgt_lmac_freq6 freq6
struct upgt_lmac_h1 header1
struct upgt_lmac_h2 header2
struct upgt_lmac_h1 header1
struct upgt_lmac_h2 header2
struct upgt_lmac_h1 header1
uint8_t src[IEEE80211_ADDR_LEN]
uint8_t dst[IEEE80211_ADDR_LEN]
struct upgt_eeprom_freq4_2 cmd
struct upgt_lmac_h1 header1
struct upgt_lmac_h2 header2
struct upgt_lmac_h1 header1
struct upgt_lmac_h2 header2
struct upgt_lmac_h1 header1
struct upgt_lmac_h1 header1
struct upgt_lmac_h2 header2
struct upgt_lmac_tx_desc_wep wep_key
struct upgt_lmac_h2 header2
struct upgt_lmac_h1 header1
struct upgt_memory_page page[UPGT_MEMORY_MAX_PAGES]
struct upgt_data sc_rx_data[UPGT_RX_MAXCOUNT]
struct usb_xfer * sc_xfer[UPGT_N_XFERS]
uint32_t sc_memaddr_frame_start
enum ieee80211_state sc_state
struct upgt_lmac_freq6 sc_eeprom_freq6[IEEE80211_CHAN_MAX]
uint8_t sc_cur_rateset[8]
upgt_datahead sc_rx_active
struct callout sc_watchdog_ch
upgt_datahead sc_tx_active
upgt_datahead sc_tx_pending
struct upgt_lmac_freq3 sc_eeprom_freq3[IEEE80211_CHAN_MAX]
struct upgt_lmac_freq4 sc_eeprom_freq4[IEEE80211_CHAN_MAX][8]
uint8_t sc_eeprom[2 *UPGT_EEPROM_SIZE] __aligned(4)
struct upgt_data sc_tx_data[UPGT_TX_MAXCOUNT]
uint32_t sc_memaddr_frame_end
uint8_t sc_eeprom_freq6_settings
uint32_t sc_memaddr_rx_start
struct upgt_memory sc_memory
struct upgt_tx_radiotap_header sc_txtap
struct upgt_rx_radiotap_header sc_rxtap
upgt_datahead sc_tx_inactive
upgt_datahead sc_rx_inactive
struct usb_device * sc_udev
struct ieee80211com sc_ic
int(* newstate)(struct ieee80211vap *, enum ieee80211_state, int)