Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F153219471
D48100.id148002.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D48100.id148002.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D48100: rtwn: add forcerate flag to TX descriptor setup
Attached
Detach File
Event Timeline
Log In to Comment