I have noticed that mira will choose rates which result in a substantial
number of Tx retries, almost 50% or so even for normal 64 byte ping packets.
The diff below makes retry-heavy rates less attractive which makes the
number of retried frames shrink significantly.
The highest rate shown by ifconfig may go down. If the top rate was MCS 7
it might now go down to 6 or 5. This is nothing to worry about. Where this
happens frames sent at MCS 7 were retried at lower rates anyway.
ok?
Index: if_iwm.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_iwm.c,v
retrieving revision 1.151
diff -u -p -r1.151 if_iwm.c
--- if_iwm.c 8 Dec 2016 17:24:25 -0000 1.151
+++ if_iwm.c 9 Dec 2016 17:01:26 -0000
@@ -3386,10 +3386,10 @@ iwm_rx_tx_cmd_single(struct iwm_softc *s
in->in_mn.frames += tx_resp->frame_count;
in->in_mn.ampdu_size = le16toh(tx_resp->byte_cnt);
in->in_mn.agglen = tx_resp->frame_count;
- if (txfail) {
- in->in_mn.retries += tx_resp->failure_frame;
+ if (tx_resp->failure_frame > 0)
+ in->in_mn.retries++;
+ if (txfail)
in->in_mn.txfail += tx_resp->frame_count;
- }
if (ic->ic_state == IEEE80211_S_RUN)
ieee80211_mira_choose(&in->in_mn, ic, &in->in_ni);
/*
Index: if_iwn.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_iwn.c,v
retrieving revision 1.177
diff -u -p -r1.177 if_iwn.c
--- if_iwn.c 7 Dec 2016 15:48:44 -0000 1.177
+++ if_iwn.c 9 Dec 2016 17:05:09 -0000
@@ -2378,10 +2378,10 @@ iwn_tx_done(struct iwn_softc *sc, struct
wn->mn.frames += nframes;
wn->mn.ampdu_size = len;
wn->mn.agglen = nframes;
- if (txfail) {
- wn->mn.retries += ackfailcnt;
+ if (ackfailcnt > 0)
+ wn->mn.retries++;
+ if (txfail)
wn->mn.txfail += nframes;
- }
if (ic->ic_state == IEEE80211_S_RUN)
ieee80211_mira_choose(&wn->mn, ic, data->ni);
} else {