Re: sys/qwz: shutdown firmware after autoconf

Stefan Sperling <[email protected]>
Newsgroups gmane.os.openbsd.tech
Message-ID <[email protected]>
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) {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.