From ecc70e17f92de0253b7add03c2c36ff7065c0e60 Mon Sep 17 00:00:00 2001 From: Alexander Egorenkov Date: Sun, 28 Feb 2010 09:34:11 +0100 Subject: [PATCH] Enable short slot time when Tx burst is enabled --- rt2870.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/rt2870.c b/rt2870.c index 295db2e..cbf37d2 100644 --- a/rt2870.c +++ b/rt2870.c @@ -1835,6 +1835,10 @@ static int rt2870_vap_reset(struct ieee80211vap *vap, u_long cmd) rt2870_asic_update_txpower(sc); break; + case IEEE80211_IOC_BURST: + rt2870_asic_updateslot(sc); + break; + case IEEE80211_IOC_SHORTGI: case IEEE80211_IOC_AMPDU_DENSITY: break; @@ -3454,20 +3458,28 @@ static void rt2870_asic_updateslot(struct rt2870_softc *sc) { struct ifnet *ifp; struct ieee80211com *ic; + struct ieee80211vap *vap; uint32_t tmp; ifp = sc->ifp; ic = ifp->if_l2com; + vap = TAILQ_FIRST(&ic->ic_vaps); RT2870_DPRINTF(sc, RT2870_DEBUG_STATE, "%s: %s short slot time\n", device_get_nameunit(sc->dev), - (ic->ic_flags & IEEE80211_F_SHSLOT) ? "enabling" : "disabling"); + ((ic->ic_flags & IEEE80211_F_SHSLOT) || + ((vap != NULL) && (vap->iv_flags & IEEE80211_F_BURST))) ? "enabling" : "disabling"); tmp = rt2870_io_mac_read(sc, RT2870_REG_BKOFF_SLOT_CFG); tmp &= ~0xff; - tmp |= (ic->ic_flags & IEEE80211_F_SHSLOT) ? 9 : 20; + + if ((ic->ic_flags & IEEE80211_F_SHSLOT) || + ((vap != NULL) && (vap->iv_flags & IEEE80211_F_BURST))) + tmp |= IEEE80211_DUR_SHSLOT; + else + tmp |= IEEE80211_DUR_SLOT; rt2870_io_mac_write(sc, RT2870_REG_BKOFF_SLOT_CFG, tmp); } -- 2.11.4.GIT