#
345636 |
|
28-Mar-2019 |
avos |
MFC r344990: Fix ieee80211_radiotap(9) usage in wireless drivers:
- Alignment issues: * Add missing __packed attributes + padding across all drivers; in most places there was an assumption that padding will be always minimally suitable; in few places - e.g., in urtw(4) / rtwn(4) - padding was just missing. * Add __aligned(8) attribute for all Rx radiotap headers since they can contain 64-bit TSF timestamp; it cannot appear in Tx radiotap headers, so just drop the attribute here. Refresh ieee80211_radiotap(9) man page accordingly.
- Since net80211 automatically updates channel frequency / flags in ieee80211_radiotap_chan_change() drop duplicate setup for these fields in drivers.
|
#
330224 |
|
01-Mar-2018 |
eadler |
MFC r321509:
[iwm] Sync statistics API definitions with Linux iwlwifi.
|
#
330217 |
|
01-Mar-2018 |
eadler |
MFC r319578:
[iwm] Check for lar_disable tunable, and lar_enabled flag from NVM.
* LAR can be disabled with the hw.iwm.lar.disable tunable now.
* On Family 8000 devices we need to check the lar_enabled flag from nvm_data in addition to the TLV_CAPA_LAR_SUPPORT flag from the firmware.
* Add a separate IWM_DEBUG_LAR debugging flag.
|
#
330209 |
|
01-Mar-2018 |
eadler |
MFC r318219:
[iwm] Properly implement iwm_wme_update callback function.
* Inspired by iwn(4) and Linux iwlwifi.
* Read wme parameters into a buffer within struct iwm_vap in iwm_wme_update().
* If we aren't associated yet, the new settings will soon be sent by iwm_mvm_mac_ctxt_changed() during association.
* If we are already associated, explicitly call iwm_mvm_mac_ctxt_changed() from iwm_wme_update() to send the new settings to the firmware.
* Change iwm_mvm_ac_to_tx_fifo mapping, to fit the freebsd net80211 WME stream class numbering, instead of Linux's enum ieee80211_ac_numbers.
|
#
330208 |
|
01-Mar-2018 |
eadler |
MFC r318218:
[iwm] Process multiple frames per RX buffer.
* Factor out iwm_handle_rxb() function from iwm_notif_intr().
* Removing the IWM_FH_RCSR_CHNL0_RX_CONFIG_SINGLE_FRAME_MSK flag allows the device to put multiple frames (both command responses and 80211 frames) into a single RX buffer.
* Uses m_copym() to split up the receive buffers when multiple 80211 frames are received in one RX buffer. The effect is basically the same as when using m_split(), but we want to keep the original mbuf around when calling iwm_mvm_rx_rx_mpdu() to make error handling a bit easier for now.
* Contains a small optimization to avoid the m_copym() when only a single 80211 frame is received in one RX buffer (i.e. matching the existing behaviour).
|
#
330204 |
|
01-Mar-2018 |
eadler |
MFC r318214:
[iwm] Sanity check channel for IEEE80211_CHAN_ANYC in if_iwm_mac_ctxt.c.
* This avoids panicing in some broken vap state handling cases.
|
#
330203 |
|
01-Mar-2018 |
eadler |
MFC r318013:
[iwm] Move in_phyctxt from struct iwm_node to phy_ctxt in struct iwm_vap.
* This better matches how things are organized in Linux's iwlwifi.
|
#
330201 |
|
01-Mar-2018 |
eadler |
MFC r318005:
[iwm] Add basic powermanagement support via ifconfig wlan0 powersave.
* The DEVICE_POWER_FLAGS_CAM_MSK flag was removed in the upstream iwlwifi in Linux commit ceef91c89480dd18bb3ac51e91280a233d0ca41f.
* Add sc_ps_disabled flag to struct iwm_softc, which corresponds to mvm->ps_disabled in struct iwl_mvm in Linux iwlwifi.
* Adds a hw.iwm.power_scheme tunable which corresponds to the power_scheme module parameter in Linux iwlwifi. Set this to 1 for completely disabling power management, 2 (default) for balanced powermanagement, and 3 for lowerpower mode (which does dtim period skipping).
* Imports the constants.h file from iwlwifi as if_iwm_constants.h.
* This doesn't allow changing the powermanagement setting while connected, also one can only choose between enabled and disabled powersaving with ifconfig (so switching between balanced and low-power mode requires rebooting to change the tunable).
* After any changes to powermanagement (i.e. "ifconfig wlan0 powersave" to enable powermanagement, or "ifconfig wlan0 -powersave" for disabling powermanagement), one has to disconnect and reconnect to the accespoint for the change to take effect.
|
#
330196 |
|
01-Mar-2018 |
eadler |
MFC r315784:
[iwm] Make ucode capabilities and api flags handling more like iwlwifi.
|
#
330192 |
|
01-Mar-2018 |
eadler |
MFC r314192,r314209:
[iwm] Add support for Firmware paging, needed for newer 8000C firmware.
* Uses the IWM_FW_PAGING_BLOCK_CMD firmware command to tell the firmware what memory ranges to use for paging.
|
#
330188 |
|
01-Mar-2018 |
eadler |
MFC r314076:
[iwm] Move struct iwm_cfg chipset configs to if_iwm_7000.c and _8000.c
* This is more similar to how code/definitions are distributed in Linux's iwlwifi.
* This should make recognizing new chipset variants, and adding additional flags from the Linux iwlwifi code easier, without blowing up if_iwm.c
|
#
330185 |
|
01-Mar-2018 |
eadler |
MFC r314069:
[iwm] Get rid of unneeded IWM_FWDMASEGSZ and IWM_FWMAXSIZE constants
* We only need IWM_FH_MEM_TB_MAX_LENGTH bytes for the fw_dma memory.
|
#
330183 |
|
01-Mar-2018 |
eadler |
MFC r314066:
[iwm] Sync IWM_MVM_ALIVE waiting and start_fw handling with iwlwifi.
* Use the notification wait API, like it's done in the Linux iwlwifi code, to wait for the IWM_MVM_ALIVE notification.
* This also should fix some firmware load interrupt issues, and errors in the nic lock using.
Tested:
* (adrian) Intel 7260, STA mode
|
#
330182 |
|
01-Mar-2018 |
eadler |
MFC r314065:
[iwm] Synchronize firmware loading code with Linux iwlwifi.
* While there, rename some functions to match the names and functionality of the similarly named functions in Linux iwlwifi.
|
#
330175 |
|
01-Mar-2018 |
eadler |
MFC r313415:
[iwm] Implement apmg_wake_up_wa workaround properly for 7000 family.
* Add iwm_pcie_set_cmd_in_flight() and iwm_pcie_clear_cmd_in_flight() helper methods.
* Use ring->queued tracking in the command queue to set/clear the cmd_hold_nic_awake bit at the right points.
|
#
330174 |
|
01-Mar-2018 |
eadler |
MFC r313414:
[iwm] Use iwm_mvm_scan_stop_wait to properly abort scans.
* Add IWM_FLAG_SCAN_RUNNING to sc->sc_flags to track whether the firmware is currently running a scan, in order to decide wheter iwm_scan_end needs to abort a running scan.
* In iwm_scan_end, if the scan is still running, we now abort it, in order to keep the firmware scanning state in sync.
* Try to make things a bit simpler, by reacting on the IWM_SCAN_OFFLOAD_COMPLETE and IWM_SCAN_COMPLETE_UMAC notifications, instead of IWM_SCAN_ITERATION_COMPLETE and IWM_SCAN_ITERATION_COMPLETE_UMAC. This should be fine since we always only tell the firmware to do a single scan iteration anyway.
|
#
330171 |
|
01-Mar-2018 |
eadler |
MFC r313325:
[iwm] Use notification wait API to wait for calibration to complete.
Tested:
* 7260, STA mode (2g, 5g)
|
#
330170 |
|
01-Mar-2018 |
eadler |
MFC r313322,r313354:
[iwm] Add implementation of the notification wait api from iwlwifi.
|
#
330168 |
|
01-Mar-2018 |
eadler |
MFC r313315,r313316:
[iwm] Get rid of some gratuitous constant renaming wrt. Linux iwlwifi.
* IWM_UCODE_SECT_MAX -> IWM_UCODE_SECTION_MAX
* IWM_UCODE_TYPE_* -> IWM_UCODE_* (except for IWM_UCODE_TYPE_MAX which stays).
[iwm] Store paging_mem_size field in firmware image information struct.
|
#
330167 |
|
01-Mar-2018 |
eadler |
MFC r313314:
[iwm] Sync valid_tx_ant and valid_rx_ant mask handling with iwlwifi.
* This fixes the phy_cfg field sent in the iwm_send_phy_cfg_cmd() command, which wasn't taking into account the valid_rx_ant and valid_tx_ant masks from nvm_data before.
Tested:
* 7260, STA mode, 2G and 5G
|
#
330166 |
|
01-Mar-2018 |
eadler |
MFC r313312:
[iwm] Use chipset configuration structs like iwlwifi does.
* This makes it a bit easier to factor out common parts for e.g. the 7000 chipset family.
* Add iwm7265d config, and recognize the 7265D chipset variant via the hardware revision.
Tested:
* 7260, STA mode (2ghz)
|
#
330165 |
|
01-Mar-2018 |
eadler |
MFC r313311:
[iwm] Sync nvm parsing code with Linux iwlwifi.
* sc->sc_nvm becomes sc->nvm_data and is now a pointer instead of an inlined struct.
* Add sc->eeprom_size and sc->nvm_hw_section_num configuration values to struct iwm_softc.
* For now continue to avoid negative error return-values, and use pointer variables for some return values, as before.
* Continue to omit LAR (location aware regulatory) related code as well.
Tested:
* Intel 7260, STA mode (2GHz)
|
#
330164 |
|
01-Mar-2018 |
eadler |
MFC r313310:
[iwm] make sure we call iwm_detach_local() only once.
|
#
330163 |
|
01-Mar-2018 |
eadler |
MFC r313309:
[iwm] Sync if_iwm_phy_db code with Linux iwlwifi.
|
#
330162 |
|
01-Mar-2018 |
eadler |
MFC r313308:
[iwm] The HW Revision stepping constants should be in if_iwmreg.h.
|
#
330153 |
|
01-Mar-2018 |
eadler |
MFC r306005:
[iwm] Remove dead fw_totlen from struct iwm_fw_sects; clean up struct iwm_nvm_data.
* No functional change, none of these values were ever read.
* The values removed from struct iwm_nvm_data are only used for old dvm devices in Linux iwlwifi, and irrelevant to iwm hence.
|
#
330146 |
|
01-Mar-2018 |
eadler |
MFC r306000
[iwm] Remove unused field from iwm_rx_data. Use uint32_t instead of enum type.
The wantresp field in struct iwm_rx_data has never been used for anything, so we can just delete it.
Apparently struct iwm_sf_cfg_cmd was compiled correctly (using a 32bit value to represent the enum), but it still seems like a very bad idea to use an enum type in a __packed struct.
|
#
303628 |
|
01-Aug-2016 |
sbruno |
MFC r303322,303326,303327,303345,303413,303416,303418,303557
Update iwm(4) and iwmfw(4) to current in order to stabilize and improve functionality.
Approved by: re (gjb)
|