From: Stefan Sperling Subject: Re: sys/qwz: shutdown firmware after autoconf To: Marcus Glocker Cc: "Kirill A. Korinsky" , tech@openbsd.org Date: Tue, 2 Jun 2026 08:53:49 +0200 On Tue, Jun 02, 2026 at 05:53:35AM +0200, Marcus Glocker wrote: > I am also chasing why upon boot my 5GHz AP always works, while my 2.4GHz > AP only intermittently works. In the most cases I can associate to it, > but I won't get an IP assigned. In a few cases I will, and then also > traffic is flowing. I am also playing around with reverting the RX QoS > path which we have recently introduced. It seems to increase the > chances that my 2.4GHz AP will work, but it still not reliable. > > The entire situation is a bit puzzling to me currently ... If the interface gets into RUN state, but the WPA2 4-way handshake is not starting then try unmasking data interrupts in software earlier. (I've already sent the changes below as part of my qwx roaming fix.) M sys/dev/ic/qwx.c | 1+ 10- 1 file changed, 1 insertion(+), 10 deletions(-) commit - ca362689551c3ca46673929394339d3a1d8b4983 commit + c40dfed62a8443b2b6040ddb698e55d7d5474256 blob - e10ad8ce38428ef4a0dd316e271561c1b91c5f7d blob + fb167f3d16df524472c0cf9dabeafce6fc8ec0eb --- sys/dev/ic/qwx.c +++ sys/dev/ic/qwx.c @@ -323,6 +323,7 @@ qwx_init(struct ifnet *ifp) return error; ifp->if_flags |= IFF_RUNNING; + sc->ops.irq_enable(sc); ieee80211_begin_scan(ifp); } @@ -20926,7 +20927,6 @@ qwx_core_qmi_firmware_ready(struct qwx_softc *sc) goto err_core_stop; } - sc->ops.irq_enable(sc); #if 0 mutex_unlock(&ab->core_lock); #endif @@ -27013,13 +27013,6 @@ qwx_assoc(struct qwx_softc *sc) IEEE80211_ADDR_COPY(arvif->bssid, ni->ni_bssid); sc->bss_peer_id = nq->peer_id; - /* - * Enable reception of data frames now, if not already enabled. - * We may need to receive EAPOL data frames very soon after the - * AP sends a response to our assoc request. - */ - sc->ops.irq_enable(sc); - return 0; } @@ -27112,8 +27105,6 @@ qwx_run_stop(struct qwx_softc *sc) struct qwx_node *nq = (void *)ni; int ret; - sc->ops.irq_disable(sc); - ret = qwx_wmi_set_peer_param(sc, ni->ni_macaddr, arvif->vdev_id, pdev_id, WMI_PEER_AUTHORIZE, 0); if (ret) {