This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
en:users:drivers:wil6210 [2015/11/12 15:08] Vladimir Kondratiev wip - adjust for recent state of the driver (as in v4.3) |
en:users:drivers:wil6210 [2015/11/15 07:58] Vladimir Kondratiev |
||
---|---|---|---|
Line 15: | Line 15: | ||
wil6210 device, ''1ae9:0310'', has one 2Mb BAR; it supports MSI interrupt. | wil6210 device, ''1ae9:0310'', has one 2Mb BAR; it supports MSI interrupt. | ||
+ | |||
+ | Since 60GHz is emerging technology and hardware is completely new, driver provides lots of features | ||
+ | for experimenting, and can be used as researcher workbench. | ||
Line 23: | Line 26: | ||
wil6210 use cfg80211 framework, but not mac80211. | wil6210 use cfg80211 framework, but not mac80211. | ||
+ | ==== Firmware ==== | ||
- | ===== What works ===== | + | We need to get this publicly available... |
+ | |||
+ | Firmware has to be downloaded to the card; card will not work without firmware. | ||
+ | |||
+ | ==== What works ==== | ||
* managed mode, aka station. Fully functional. Require up-to-date wpa_supplicant. | * managed mode, aka station. Fully functional. Require up-to-date wpa_supplicant. | ||
* sniffer. May be configured to captures either only CP (control PHY) or all frames | * sniffer. May be configured to captures either only CP (control PHY) or all frames | ||
Line 30: | Line 38: | ||
* security. supported is GCMP, it is the only allowed cipher accordingly to the spec. | * security. supported is GCMP, it is the only allowed cipher accordingly to the spec. | ||
- | ==== iw commands supported ==== | + | ==== TODO ==== |
+ | * P2P and FST flows | ||
+ | * various offloads | ||
- | iw link: query link status. Report current MCS. | + | ==== Status ==== |
+ | * Basic support for 802.11ad merged into kernel 3.6 | ||
+ | * The driver merged into kernel 3.8. | ||
+ | * Patches for hostapd/wpa_supplicant submitted, some part is already merged. | ||
- | ===== Module parameters ===== | + | ==== iw commands supported ==== |
- | + | ||
- | ^ Parameter ^ Type ^ Default ^ Comment ^ | + | |
- | | use_msi | bool | true | Use MSI or INTx (pin) interrupt | | + | |
- | | mtu_max | uint | 1986 | Maximum supported MTU, [68..7912] | | + | |
- | | rx_ring_order | uint | 10 | Rx sing size is ''1 << order'', [5..15] | | + | |
- | | tx_ring_order | uint | 10 | Tx sing size is ''1 << order'', [5..15] | | + | |
- | | bcast_ring_order | uint | 7 | Broadcast Tx sing size is ''1 << order'', [5..15] | | + | |
- | | max_assoc_sta | uint | 8 | Max number of stations associated to the AP, [1..8] | | + | |
- | | agg_wsize | int | 0 | Window size for Tx Block Ack after connect; 0 - use default; < 0 - don't auto-establish. Writeable, new value used when new block ack established | | + | |
- | | rx_ring_overflow_thrsh | ushort | 0 | RX ring overflow threshold in descriptors. | | + | |
- | | no_fw_recovery | bool | false | disable automatic FW error recovery | | + | |
- | | debug_fw | bool | false | do not perform card reset. For FW debug | | + | |
- | | rx_align_2 | bool | false | align Rx buffers on 4*n+2 | | + | |
- | | rtap_include_phy_info | bool | false | Include PHY info in the radiotap header | | + | |
- | + | ||
- | + | ||
- | wil6210 support of interrupt handling modes: | + | |
- | + | ||
- | * MSI - MSI interrupt. This is the default mode. | + | |
- | * INTx - legacy pin interrupt. Do not use if possible. | + | |
- | + | ||
- | When **debug_fw** set to true, driver probe will not fail if firmware do not report "ready" event. This is to aid firmware boot issues debugging. | + | |
+ | iw link: query link status. Report current MCS. | ||
- | ===== Sniffer ===== | + | ==== Sniffer ==== |
To configure wil6210 in sniffer mode (assume $WLAN set to network interface name): | To configure wil6210 in sniffer mode (assume $WLAN set to network interface name): | ||
Line 81: | Line 73: | ||
<code># ifconfig $WLAN up</code> | <code># ifconfig $WLAN up</code> | ||
- | ===== TODO ===== | + | ==== AP mode ==== |
- | * * P2P and FST flows | + | |
- | * * various offloads | + | |
- | ===== Status ===== | + | |
- | * * Basic support for 802.11ad merged into kernel 3.6 | + | |
- | * * The driver merged into kernel 3.8. | + | |
- | * * Patches for hostapd/wpa_supplicant submitted, some part is already merged. | + | |
- | ===== Firmware ===== | + | |
- | + | ||
- | We need to get this publicly available... | + | |
- | + | ||
- | In the current version, firmware stored in the flash memory on the NIC and not downloaded by the driver. Firmware flashing required for the upgrade only. | + | |
- | + | ||
- | + | ||
- | ===== How to ===== | + | |
To start AP mode, use recent wpa_supplicant (assume relevant patches already merged). Sample config for non-secure mode: | To start AP mode, use recent wpa_supplicant (assume relevant patches already merged). Sample config for non-secure mode: | ||
Line 124: | Line 102: | ||
}</code> | }</code> | ||
- | ===== WMI commands ===== | + | ===== For developer ===== |
+ | |||
+ | |||
+ | |||
+ | ==== Module parameters ==== | ||
+ | |||
+ | ^ Parameter ^ Type ^ Default ^ Comment ^ | ||
+ | | use_msi | bool | true | Use MSI or INTx (pin) interrupt | | ||
+ | | mtu_max | uint | 1986 | Maximum supported MTU, [68..7912] | | ||
+ | | rx_ring_order | uint | 10 | Rx sing size is ''1 << order'', [5..15] | | ||
+ | | tx_ring_order | uint | 10 | Tx sing size is ''1 << order'', [5..15] | | ||
+ | | bcast_ring_order | uint | 7 | Broadcast Tx sing size is ''1 << order'', [5..15] | | ||
+ | | max_assoc_sta | uint | 8 | Max number of stations associated to the AP, [1..8] | | ||
+ | | agg_wsize | int | 0 | Window size for Tx Block Ack after connect; 0 - use default; < 0 - don't auto-establish. Writeable, new value used when new block ack established | | ||
+ | | rx_ring_overflow_thrsh | ushort | 0 | RX ring overflow threshold in descriptors. | | ||
+ | | no_fw_recovery | bool | false | disable automatic FW error recovery | | ||
+ | | debug_fw | bool | false | do not perform card reset. For FW debug | | ||
+ | | rx_align_2 | bool | false | align Rx buffers on 4*n+2 | | ||
+ | | rtap_include_phy_info | bool | false | Include PHY info in the radiotap header | | ||
+ | |||
+ | |||
+ | wil6210 support of interrupt handling modes: | ||
+ | |||
+ | * MSI - MSI interrupt. This is the default mode. | ||
+ | * INTx - legacy pin interrupt. Do not use if possible. | ||
+ | |||
+ | When **debug_fw** set to true, driver probe will not fail if firmware do not report "ready" event. This is to aid firmware boot issues debugging. | ||
+ | |||
+ | |||
+ | |||
+ | ==== WMI commands ==== | ||
Control communication with the card is done through so called WMI commands and events. Target access to the mailbox within memory in BAR0 used. There are 2 similar mailbox structures: one for host->card commands, and one for card->host events. | Control communication with the card is done through so called WMI commands and events. Target access to the mailbox within memory in BAR0 used. There are 2 similar mailbox structures: one for host->card commands, and one for card->host events. | ||
- | ===== Tx/Rx ===== | + | ==== Tx/Rx ==== |
DMA using 'vring' structures. Vring in consistent memory; hold descriptors that points to the data buffers. Card to write status back to the descriptor. | DMA using 'vring' structures. Vring in consistent memory; hold descriptors that points to the data buffers. Card to write status back to the descriptor. | ||
Line 136: | Line 144: | ||
- | ===== Firmware error recovery ===== | + | ==== Firmware error recovery ==== |
Should firmware crash, or in case of scan timeout, driver try to recover from error by resetting card. This works for **station** only. In the **AP** mode, driver will not perform recovery. It will, however, report error to the user space. There are 2 modes of firmware recovery, depending on the driver parameter **no_fw_recovery**: | Should firmware crash, or in case of scan timeout, driver try to recover from error by resetting card. This works for **station** only. In the **AP** mode, driver will not perform recovery. It will, however, report error to the user space. There are 2 modes of firmware recovery, depending on the driver parameter **no_fw_recovery**: | ||
Line 149: | Line 157: | ||
If **state** is //pending//, it is time to collect all crash information as desired, and continue with recovery by writing **run** into **recovery**: | If **state** is //pending//, it is time to collect all crash information as desired, and continue with recovery by writing **run** into **recovery**: | ||
* * * <code>echo -n "run" > /sys/kernel/debug/ieee80211/phy/wil6210/recovery</code> | * * * <code>echo -n "run" > /sys/kernel/debug/ieee80211/phy/wil6210/recovery</code> | ||
- | ===== Debug facilities ===== | ||
+ | ==== Debug facilities ==== | ||
- | ==== Dynamic debug ==== | + | |
+ | === Dynamic debug === | ||
Almost all messages printed to the dmesg, are "dynamic debug" ones. See Documentation/dynamic-debug-howto.txt for details. Module "wil6210" uses format prefixes to identify message groups: | Almost all messages printed to the dmesg, are "dynamic debug" ones. See Documentation/dynamic-debug-howto.txt for details. Module "wil6210" uses format prefixes to identify message groups: | ||
Line 162: | Line 171: | ||
- | ==== Debugfs ==== | + | === Debugfs === |
All debugfs files placed under standard location for the cfg80211 devices, $DEBUGFS/ieee80211/$PHY/ where $PHY is phy name like 'phy1'. | All debugfs files placed under standard location for the cfg80211 devices, $DEBUGFS/ieee80211/$PHY/ where $PHY is phy name like 'phy1'. | ||
Line 265: | Line 274: | ||
You should subscribe to this page so you can get e-mail updates on changes and news for ath9k automatically. You'll get an e-mail as soon as this page gets updated. | You should subscribe to this page so you can get e-mail updates on changes and news for ath9k automatically. You'll get an e-mail as soon as this page gets updated. | ||
- |