On Tue, Jun 14, 2022 at 03:11:35AM +0200, Christian Schulte wrote: > See attached files.
Thank you. I still don't have a definite clue. It looks as if we are failing to send out the initial AUTH frame on Tx queue 0 but it is unclear why. The commands we are sending up to this point seem to be succeeding. These are using Tx queue 4 and this queue has no outsanding frames queued. This implies that the firmware managed to ack all of our commands before it crashed. So processing of the commands seems to be working. I don't know what SYSASSERT 0x00000005 is supposed to tell us. All I can do is make guesses based on what changed between 7.0 and 7.1. In addition to the previous change, this patch enables even more debug output, and it delays enabling of 40MHz in the RXON command until the association sequence has progressed to a later stage. Does this make any difference? diff 83a9dfe1b143d86e38d14e824e87df26892a9d48 /usr/src blob - 1446e2d9c7d71bb1360e96b018c63d06695fc23f file + sys/dev/pci/if_iwn.c --- sys/dev/pci/if_iwn.c +++ sys/dev/pci/if_iwn.c @@ -303,6 +303,7 @@ void iwn_hw_stop(struct iwn_softc *); int iwn_init(struct ifnet *); void iwn_stop(struct ifnet *); +#define IWN_DEBUG #ifdef IWN_DEBUG #define DPRINTF(x) do { if (iwn_debug > 0) printf x; } while (0) #define DPRINTFN(n, x) do { if (iwn_debug >= (n)) printf x; } while (0) @@ -3863,6 +3864,8 @@ iwn_cmd(struct iwn_softc *sc, int code, const void *bu /* Update TX scheduler. */ ops->update_sched(sc, ring->qid, ring->cur, 0, 0); + if (sc->sc_ic.ic_if.if_flags & IFF_DEBUG) + printf("%s: sending command %d\n", sc->sc_dev.dv_xname, code); /* Kick command ring. */ ring->cur = (ring->cur + 1) % IWN_TX_RING_COUNT; IWN_WRITE(sc, IWN_HBUS_TARG_WRPTR, ring->qid << 8 | ring->cur); @@ -5409,7 +5412,8 @@ iwn_rxon_configure_ht40(struct ieee80211com *ic, struc sc->rxon.flags &= ~htole32(IWN_RXON_HT_CHANMODE_MIXED2040 | IWN_RXON_HT_CHANMODE_PURE40 | IWN_RXON_HT_HT40MINUS); - if (ieee80211_node_supports_ht_chan40(ni) && + if ((ni->ni_flags & IEEE80211_NODE_HT) && + ieee80211_node_supports_ht_chan40(ni) && (sco == IEEE80211_HTOP0_SCO_SCA || sco == IEEE80211_HTOP0_SCO_SCB)) { if (sco == IEEE80211_HTOP0_SCO_SCB)