[bwn] TX logging / completion fixes
* Log the per-completion status out if requested * If we get a PHY failure, the retrycnt is set to 0 and ack=0, so the logic was incorrect. So, for ack=0, ensure we don't log a retrycnt of 0 (or rate control breaks) or a negative retrycnt (or rate control also breaks.) Tested: * BCM4321 (11abgn N-PHY), BCM4312 (LP-PHY)
This commit is contained in:
parent
4b9a54a9fc
commit
9193516e94
@ -5097,6 +5097,21 @@ bwn_intr_txeof(struct bwn_mac *mac)
|
||||
stat.ampdu = (tmp & 0x0020) ? 1 : 0;
|
||||
stat.ack = (tmp & 0x0002) ? 1 : 0;
|
||||
|
||||
DPRINTF(mac->mac_sc, BWN_DEBUG_XMIT,
|
||||
"%s: cookie=%d, seq=%d, phystat=0x%02x, framecnt=%d, "
|
||||
"rtscnt=%d, sreason=%d, pm=%d, im=%d, ampdu=%d, ack=%d\n",
|
||||
__func__,
|
||||
stat.cookie,
|
||||
stat.seq,
|
||||
stat.phy_stat,
|
||||
stat.framecnt,
|
||||
stat.rtscnt,
|
||||
stat.sreason,
|
||||
stat.pm,
|
||||
stat.im,
|
||||
stat.ampdu,
|
||||
stat.ack);
|
||||
|
||||
bwn_handle_txeof(mac, &stat);
|
||||
}
|
||||
}
|
||||
@ -5733,8 +5748,19 @@ bwn_dma_handle_txeof(struct bwn_mac *mac,
|
||||
KASSERT(meta->mt_m != NULL,
|
||||
("%s:%d: fail", __func__, __LINE__));
|
||||
|
||||
/* Just count full frame retries for now */
|
||||
retrycnt = status->framecnt - 1;
|
||||
/*
|
||||
* If we don't get an ACK, then we should log the
|
||||
* full framecnt. That may be 0 if it's a PHY
|
||||
* failure, so ensure that gets logged as some
|
||||
* retry attempt.
|
||||
*/
|
||||
if (status->ack) {
|
||||
retrycnt = status->framecnt - 1;
|
||||
} else {
|
||||
retrycnt = status->framecnt;
|
||||
if (retrycnt == 0)
|
||||
retrycnt = 1;
|
||||
}
|
||||
ieee80211_ratectl_tx_complete(meta->mt_ni->ni_vap, meta->mt_ni,
|
||||
status->ack ?
|
||||
IEEE80211_RATECTL_TX_SUCCESS :
|
||||
@ -5784,8 +5810,19 @@ bwn_pio_handle_txeof(struct bwn_mac *mac,
|
||||
* be done before releasing the node reference.
|
||||
*/
|
||||
|
||||
/* Just count full frame retries for now */
|
||||
retrycnt = status->framecnt - 1;
|
||||
/*
|
||||
* If we don't get an ACK, then we should log the
|
||||
* full framecnt. That may be 0 if it's a PHY
|
||||
* failure, so ensure that gets logged as some
|
||||
* retry attempt.
|
||||
*/
|
||||
if (status->ack) {
|
||||
retrycnt = status->framecnt - 1;
|
||||
} else {
|
||||
retrycnt = status->framecnt;
|
||||
if (retrycnt == 0)
|
||||
retrycnt = 1;
|
||||
}
|
||||
ieee80211_ratectl_tx_complete(tp->tp_ni->ni_vap, tp->tp_ni,
|
||||
status->ack ?
|
||||
IEEE80211_RATECTL_TX_SUCCESS :
|
||||
|
Loading…
Reference in New Issue
Block a user