From: Marcus Glocker Subject: Re: sys/qwz: shutdown firmware after autoconf To: Stefan Sperling Cc: "Kirill A. Korinsky" , tech@openbsd.org Date: Tue, 2 Jun 2026 19:43:28 +0200 On Tue, Jun 02, 2026 at 08:53:49AM +0200, Stefan Sperling wrote: > 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.) Thank you for your suggestion. I've ported the IRQ part to qwz, but unfortunately it doesn't change the earlier described behavior in any way in my case. I will need to investigate further ... > 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) { >