New diff which applies to -current after IEEE80211_NO_HT removal commit.
Index: if_iwm.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_iwm.c,v
retrieving revision 1.72
diff -u -p -r1.72 if_iwm.c
--- if_iwm.c 5 Jan 2016 18:41:15 -0000 1.72
+++ if_iwm.c 5 Jan 2016 19:04:11 -0000
@@ -3853,11 +3853,7 @@ iwm_tx_fill_cmd(struct iwm_softc *sc, st
ridx = sc->sc_fixed_ridx;
} else {
/* for data frames, use RS table */
- if (ni->ni_flags & IEEE80211_NODE_HT) {
- tx->initial_rate_index =
- (nitems(iwm_mcs2ridx) - 1) - ni->ni_txmcs;
- } else
- tx->initial_rate_index = (nrates - 1) - ni->ni_txrate;
+ tx->initial_rate_index = 0;
tx->tx_flags |= htole32(IWM_TX_CMD_FLG_STA_RATE);
DPRINTFN(12, ("start with txrate %d\n",
tx->initial_rate_index));
if (ni->ni_flags & IEEE80211_NODE_HT) {
Index: if_iwn.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_iwn.c,v
retrieving revision 1.150
diff -u -p -r1.150 if_iwn.c
--- if_iwn.c 5 Jan 2016 18:41:15 -0000 1.150
+++ if_iwn.c 5 Jan 2016 19:03:42 -0000
@@ -3399,9 +3399,21 @@ iwn_set_link_quality(struct iwn_softc *s
}
/* Fill the rest with MCS 0. */
rinfo = &iwn_rates[iwn_mcs2ridx[0]];
- while (i < IWN_MAX_TX_RETRIES) {
+ while (i < IWN_MAX_TX_RETRIES - 1) {
linkq.retry[i].plcp = rinfo->ht_plcp;
linkq.retry[i].rflags = rinfo->ht_flags;
+ linkq.retry[i].rflags |= IWN_RFLAG_ANT(txant);
+ i++;
+ }
+
+ /* Fill the last slot with the lowest legacy rate. */
+ if (IEEE80211_IS_CHAN_5GHZ(ni->ni_chan))
+ rinfo = &iwn_rates[IWN_RIDX_OFDM6];
+ else
+ rinfo = &iwn_rates[IWN_RIDX_CCK1];
+ while (i < IWN_MAX_TX_RETRIES) {
+ linkq.retry[i].plcp = rinfo->plcp;
+ linkq.retry[i].rflags = rinfo->flags;
linkq.retry[i].rflags |= IWN_RFLAG_ANT(txant);
i++;
}