On Thu, Mar 26, 2026 at 11:10:42AM +0300, Kirill Kaplin wrote:
> here is dmesg with ifconfig iwx0 debug:

> iwx0: 0x20101A0D | ADVANCED_SYSASSERT

A Linux developer kindly decoded this error code for me.

Our driver is trying to enable Tx rates which require two antennas,
even if only one antenna is connected.

Can you try this patch?

diff /usr/src
path + /usr/src
commit - 3ec5857711bddd262f5ace6a1cb9b3905417c795
blob - b103b786c9b80f0c2cf02ed32a43f22b6c82e914
file + sys/dev/pci/if_iwx.c
--- sys/dev/pci/if_iwx.c
+++ sys/dev/pci/if_iwx.c
@@ -8431,16 +8431,20 @@ iwx_rs_init_v3(struct iwx_softc *sc, struct iwx_node *
                cfg_cmd.mode = IWX_TLC_MNG_MODE_VHT;
                cfg_cmd.ht_rates[IWX_TLC_NSS_1][IWX_TLC_MCS_PER_BW_80] =
                    htole16(iwx_rs_vht_rates(sc, ni, 1));
-               cfg_cmd.ht_rates[IWX_TLC_NSS_2][IWX_TLC_MCS_PER_BW_80] =
-                   htole16(iwx_rs_vht_rates(sc, ni, 2));
+               if (iwx_mimo_enabled(sc)) {
+                       cfg_cmd.ht_rates[IWX_TLC_NSS_2][IWX_TLC_MCS_PER_BW_80] =
+                           htole16(iwx_rs_vht_rates(sc, ni, 2));
+               }
        } else if (ni->ni_flags & IEEE80211_NODE_HT) {
                cfg_cmd.mode = IWX_TLC_MNG_MODE_HT;
                cfg_cmd.ht_rates[IWX_TLC_NSS_1][IWX_TLC_MCS_PER_BW_80] =
                    htole16(iwx_rs_ht_rates(sc, ni,
                    IEEE80211_HT_RATESET_SISO));
-               cfg_cmd.ht_rates[IWX_TLC_NSS_2][IWX_TLC_MCS_PER_BW_80] =
-                   htole16(iwx_rs_ht_rates(sc, ni,
-                   IEEE80211_HT_RATESET_MIMO2));
+               if (iwx_mimo_enabled(sc)) {
+                       cfg_cmd.ht_rates[IWX_TLC_NSS_2][IWX_TLC_MCS_PER_BW_80] =
+                           htole16(iwx_rs_ht_rates(sc, ni,
+                           IEEE80211_HT_RATESET_MIMO2));
+               }
        } else
                cfg_cmd.mode = IWX_TLC_MNG_MODE_NON_HT;
 
@@ -8506,16 +8510,20 @@ iwx_rs_init_v4(struct iwx_softc *sc, struct iwx_node *
                cfg_cmd.mode = IWX_TLC_MNG_MODE_VHT;
                cfg_cmd.ht_rates[IWX_TLC_NSS_1][IWX_TLC_MCS_PER_BW_80] =
                    htole16(iwx_rs_vht_rates(sc, ni, 1));
-               cfg_cmd.ht_rates[IWX_TLC_NSS_2][IWX_TLC_MCS_PER_BW_80] =
-                   htole16(iwx_rs_vht_rates(sc, ni, 2));
+               if (iwx_mimo_enabled(sc)) {
+                       cfg_cmd.ht_rates[IWX_TLC_NSS_2][IWX_TLC_MCS_PER_BW_80] =
+                           htole16(iwx_rs_vht_rates(sc, ni, 2));
+               }
        } else if (ni->ni_flags & IEEE80211_NODE_HT) {
                cfg_cmd.mode = IWX_TLC_MNG_MODE_HT;
                cfg_cmd.ht_rates[IWX_TLC_NSS_1][IWX_TLC_MCS_PER_BW_80] =
                    htole16(iwx_rs_ht_rates(sc, ni,
                    IEEE80211_HT_RATESET_SISO));
-               cfg_cmd.ht_rates[IWX_TLC_NSS_2][IWX_TLC_MCS_PER_BW_80] =
-                   htole16(iwx_rs_ht_rates(sc, ni,
-                   IEEE80211_HT_RATESET_MIMO2));
+               if (iwx_mimo_enabled(sc)) {
+                       cfg_cmd.ht_rates[IWX_TLC_NSS_2][IWX_TLC_MCS_PER_BW_80] =
+                           htole16(iwx_rs_ht_rates(sc, ni,
+                           IEEE80211_HT_RATESET_MIMO2));
+               }
        } else
                cfg_cmd.mode = IWX_TLC_MNG_MODE_NON_HT;
 

Reply via email to