This fixes a cosmetic issue:

tcpdump -n -i athn0 -y IEEE802_11_RADIO shows a SHORTPRE flag on most frames
sent from athn0. Even for OFDM frames. Which is bogus because short preamble
only applies to non-OFDM frames with Tx rates 2, 5.5, and 11 MBit/s.

This is handled correctly when Tx configuration is provided to hardware
where we check Tx rate _and_ PHY type. But the PHY type check is missing
from the bpf tap code path, so add it there as well.

Index: ar5008.c
===================================================================
RCS file: /cvs/src/sys/dev/ic/ar5008.c,v
retrieving revision 1.46
diff -u -p -r1.46 ar5008.c
--- ar5008.c    28 Nov 2017 04:35:39 -0000      1.46
+++ ar5008.c    1 Feb 2019 13:52:55 -0000
@@ -1393,7 +1393,8 @@ ar5008_tx(struct athn_softc *sc, struct 
                tap->wt_chan_freq = htole16(ic->ic_bss->ni_chan->ic_freq);
                tap->wt_chan_flags = htole16(ic->ic_bss->ni_chan->ic_flags);
                tap->wt_hwqueue = qid;
-               if (ridx[0] != ATHN_RIDX_CCK1 &&
+               if (athn_rates[ridx[0]].phy == IEEE80211_T_DS &&
+                   ridx[0] != ATHN_RIDX_CCK1 &&
                    (ic->ic_flags & IEEE80211_F_SHPREAMBLE))
                        tap->wt_flags |= IEEE80211_RADIOTAP_F_SHORTPRE;
                mb.m_data = (caddr_t)tap;
Index: ar9003.c
===================================================================
RCS file: /cvs/src/sys/dev/ic/ar9003.c,v
retrieving revision 1.46
diff -u -p -r1.46 ar9003.c
--- ar9003.c    19 May 2017 11:42:48 -0000      1.46
+++ ar9003.c    1 Feb 2019 13:54:04 -0000
@@ -1482,7 +1482,8 @@ ar9003_tx(struct athn_softc *sc, struct 
                tap->wt_chan_freq = htole16(ic->ic_bss->ni_chan->ic_freq);
                tap->wt_chan_flags = htole16(ic->ic_bss->ni_chan->ic_flags);
                tap->wt_hwqueue = qid;
-               if (ridx[0] != ATHN_RIDX_CCK1 &&
+               if (athn_rates[ridx[0]].phy == IEEE80211_T_DS &&
+                   ridx[0] != ATHN_RIDX_CCK1 &&
                    (ic->ic_flags & IEEE80211_F_SHPREAMBLE))
                        tap->wt_flags |= IEEE80211_RADIOTAP_F_SHORTPRE;
                mb.m_data = (caddr_t)tap;

Reply via email to