Page MenuHomeFreeBSD

D48100.id148002.diff
No OneTemporary

D48100.id148002.diff

diff --git a/sys/dev/rtwn/if_rtwn_tx.c b/sys/dev/rtwn/if_rtwn_tx.c
--- a/sys/dev/rtwn/if_rtwn_tx.c
+++ b/sys/dev/rtwn/if_rtwn_tx.c
@@ -117,6 +117,7 @@
struct rtwn_tx_desc_common *txd;
struct rtwn_tx_buf buf;
uint8_t rate, ridx, type;
+ bool force_rate = false;
u_int cipher;
int ismcast;
@@ -129,13 +130,16 @@
/* Choose a TX rate index. */
if (type == IEEE80211_FC0_TYPE_MGT ||
type == IEEE80211_FC0_TYPE_CTL ||
- (m->m_flags & M_EAPOL) != 0)
+ (m->m_flags & M_EAPOL) != 0) {
rate = tp->mgmtrate;
- else if (ismcast)
+ force_rate = true;
+ } else if (ismcast) {
+ force_rate = true;
rate = tp->mcastrate;
- else if (tp->ucastrate != IEEE80211_FIXED_RATE_NONE)
+ } else if (tp->ucastrate != IEEE80211_FIXED_RATE_NONE) {
+ force_rate = true;
rate = tp->ucastrate;
- else {
+ } else {
if (sc->sc_ratectl == RTWN_RATECTL_NET80211) {
/* XXX pass pktlen */
(void) ieee80211_ratectl_rate(ni, NULL, 0);
@@ -172,7 +176,7 @@
memset(txd, 0, sc->txdesc_len);
txd->txdw1 = htole32(SM(RTWN_TXDW1_CIPHER, rtwn_get_cipher(cipher)));
- rtwn_fill_tx_desc(sc, ni, m, txd, ridx, tp->maxretry);
+ rtwn_fill_tx_desc(sc, ni, m, txd, ridx, force_rate, tp->maxretry);
if (ieee80211_radiotap_active_vap(vap)) {
struct rtwn_tx_radiotap_header *tap = &sc->sc_txtap;
diff --git a/sys/dev/rtwn/if_rtwnvar.h b/sys/dev/rtwn/if_rtwnvar.h
--- a/sys/dev/rtwn/if_rtwnvar.h
+++ b/sys/dev/rtwn/if_rtwnvar.h
@@ -329,7 +329,7 @@
void (*sc_detach_private)(struct rtwn_softc *);
void (*sc_fill_tx_desc)(struct rtwn_softc *,
struct ieee80211_node *, struct mbuf *,
- void *, uint8_t, int);
+ void *, uint8_t, bool, int);
void (*sc_fill_tx_desc_raw)(struct rtwn_softc *,
struct ieee80211_node *, struct mbuf *,
void *, const struct ieee80211_bpf_params *);
@@ -536,9 +536,9 @@
#define rtwn_detach_private(_sc) \
(((_sc)->sc_detach_private)((_sc)))
#define rtwn_fill_tx_desc(_sc, _ni, _m, \
- _buf, _ridx, _maxretry) \
+ _buf, _ridx, _force, _maxretry) \
(((_sc)->sc_fill_tx_desc)((_sc), (_ni), \
- (_m), (_buf), (_ridx), (_maxretry)))
+ (_m), (_buf), (_ridx), (_force), (_maxretry)))
#define rtwn_fill_tx_desc_raw(_sc, _ni, _m, \
_buf, _params) \
(((_sc)->sc_fill_tx_desc_raw)((_sc), (_ni), \
diff --git a/sys/dev/rtwn/rtl8192c/r92c.h b/sys/dev/rtwn/rtl8192c/r92c.h
--- a/sys/dev/rtwn/rtl8192c/r92c.h
+++ b/sys/dev/rtwn/rtl8192c/r92c.h
@@ -117,7 +117,7 @@
void r92c_tx_setup_hwseq(void *);
void r92c_tx_setup_macid(void *, int);
void r92c_fill_tx_desc(struct rtwn_softc *, struct ieee80211_node *,
- struct mbuf *, void *, uint8_t, int);
+ struct mbuf *, void *, uint8_t, bool, int);
void r92c_fill_tx_desc_raw(struct rtwn_softc *, struct ieee80211_node *,
struct mbuf *, void *, const struct ieee80211_bpf_params *);
void r92c_fill_tx_desc_null(struct rtwn_softc *, void *, int, int, int);
diff --git a/sys/dev/rtwn/rtl8192c/r92c_tx.c b/sys/dev/rtwn/rtl8192c/r92c_tx.c
--- a/sys/dev/rtwn/rtl8192c/r92c_tx.c
+++ b/sys/dev/rtwn/rtl8192c/r92c_tx.c
@@ -259,7 +259,7 @@
void
r92c_fill_tx_desc(struct rtwn_softc *sc, struct ieee80211_node *ni,
- struct mbuf *m, void *buf, uint8_t ridx, int maxretry)
+ struct mbuf *m, void *buf, uint8_t ridx, bool force_rate, int maxretry)
{
#ifndef RTWN_WITHOUT_UCODE
struct r92c_softc *rs = sc->sc_priv;
diff --git a/sys/dev/rtwn/rtl8812a/r12a.h b/sys/dev/rtwn/rtl8812a/r12a.h
--- a/sys/dev/rtwn/rtl8812a/r12a.h
+++ b/sys/dev/rtwn/rtl8812a/r12a.h
@@ -131,7 +131,7 @@
/* r12a_tx.c */
void r12a_fill_tx_desc(struct rtwn_softc *, struct ieee80211_node *,
- struct mbuf *, void *, uint8_t, int);
+ struct mbuf *, void *, uint8_t, bool, int);
void r12a_fill_tx_desc_raw(struct rtwn_softc *, struct ieee80211_node *,
struct mbuf *, void *, const struct ieee80211_bpf_params *);
void r12a_fill_tx_desc_null(struct rtwn_softc *, void *, int, int, int);
diff --git a/sys/dev/rtwn/rtl8812a/r12a_tx.c b/sys/dev/rtwn/rtl8812a/r12a_tx.c
--- a/sys/dev/rtwn/rtl8812a/r12a_tx.c
+++ b/sys/dev/rtwn/rtl8812a/r12a_tx.c
@@ -261,7 +261,7 @@
void
r12a_fill_tx_desc(struct rtwn_softc *sc, struct ieee80211_node *ni,
- struct mbuf *m, void *buf, uint8_t ridx, int maxretry)
+ struct mbuf *m, void *buf, uint8_t ridx, bool force_rate, int maxretry)
{
struct ieee80211com *ic = &sc->sc_ic;
struct ieee80211vap *vap = ni->ni_vap;

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 20, 9:25 PM (15 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31865788
Default Alt Text
D48100.id148002.diff (4 KB)

Event Timeline