HomeFreeBSD

LinuxKPI: 802.11: implement a deferred RX path

Description

LinuxKPI: 802.11: implement a deferred RX path

Some calls, e.g., action frames cause us to call through all the
way down to firmware from the RX path without any deferral in
net80211.

For LinuxKPI and iwlwifi this goes (with omissions) like this:
lkpi_napi_task -> linuxkpi_ieee80211_rx -> ieee80211_input_mimo ->
sta_input -> ht_recv_action_ba_addba_request ->
lkpi_ic_ampdu_rx_start -> iwl_mvm_mac_ampdu_action ->
iwl_trans_txq_send_hcmd. At that point we are waiting for an
interrupt from the firmware but given the lkpi_napi_task has not
finished (and may have more to dispatch based on budget and what
was received) we will not see the new interrupt/fw response.
With no answer from the firmware, the software timeout in the
driver kills the command and the firmware and issues a complete
restart.

Implement the deferred RX path in LinuxKPI for the moment.
At a later point we should carefully shift this into net80211.

This fixes the hangs for (*ic_ampdu_rx_start)() calls with iwlwifi.

PR: 276083
Reviewed by: cc

(cherry picked from commit 759a996d610d9354aac5c48a6bdc9cedcba2f48b)

Details

Provenance
bzAuthored on Feb 12 2024, 4:03 PM
Parents
rG4bce8178af85: iicbus/mux/pca954x: add support for PCA9546 I2C Switch
Branches
Unknown
Tags
Unknown