diff options
| -rw-r--r-- | linux-next-pending/0010-ath9k-change-beacon-allocation-to-prefer-the-first-b.patch | 40 | ||||
| -rw-r--r-- | linux-next-pending/0011-ath9k-remove-VEOL-support-for-ad-hoc.patch | 120 | 
2 files changed, 0 insertions, 160 deletions
| diff --git a/linux-next-pending/0010-ath9k-change-beacon-allocation-to-prefer-the-first-b.patch b/linux-next-pending/0010-ath9k-change-beacon-allocation-to-prefer-the-first-b.patch deleted file mode 100644 index a2603da0..00000000 --- a/linux-next-pending/0010-ath9k-change-beacon-allocation-to-prefer-the-first-b.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 4bf9998d15742540f538706e6a435535e4a2580b Mon Sep 17 00:00:00 2001 -From: Felix Fietkau <nbd@openwrt.org> -Date: Thu, 13 May 2010 20:37:24 +0200 -Subject: [PATCH 10/20] ath9k: change beacon allocation to prefer the first beacon slot - -This fixes IBSS beacon transmissions without VEOL enabled - -Signed-off-by: Felix Fietkau <nbd@openwrt.org> ---- - drivers/net/wireless/ath/ath9k/beacon.c |   12 +++--------- - 1 files changed, 3 insertions(+), 9 deletions(-) - -diff --git a/drivers/net/wireless/ath/ath9k/beacon.c b/drivers/net/wireless/ath/ath9k/beacon.c -index c8a4558..77face7 100644 ---- a/drivers/net/wireless/ath/ath9k/beacon.c -+++ b/drivers/net/wireless/ath/ath9k/beacon.c -@@ -274,17 +274,11 @@ int ath_beacon_alloc(struct ath_wiphy *aphy, struct ieee80211_vif *vif) - 			avp->av_bslot = 0; - 			for (slot = 0; slot < ATH_BCBUF; slot++) - 				if (sc->beacon.bslot[slot] == NULL) { --					/* --					 * XXX hack, space out slots to better --					 * deal with misses --					 */ --					if (slot+1 < ATH_BCBUF && --					    sc->beacon.bslot[slot+1] == NULL) { --						avp->av_bslot = slot+1; --						break; --					} - 					avp->av_bslot = slot; -+ - 					/* NB: keep looking for a double slot */ -+					if (slot == 0 || !sc->beacon.bslot[slot-1]) -+						break; - 				} - 			BUG_ON(sc->beacon.bslot[avp->av_bslot] != NULL); - 			sc->beacon.bslot[avp->av_bslot] = vif; ---  -1.6.3.3 - diff --git a/linux-next-pending/0011-ath9k-remove-VEOL-support-for-ad-hoc.patch b/linux-next-pending/0011-ath9k-remove-VEOL-support-for-ad-hoc.patch deleted file mode 100644 index 8aca9fdf..00000000 --- a/linux-next-pending/0011-ath9k-remove-VEOL-support-for-ad-hoc.patch +++ /dev/null @@ -1,120 +0,0 @@ -From 6b0d6c3dd1cbc5508420115cc9401c3bccaa8f60 Mon Sep 17 00:00:00 2001 -From: Felix Fietkau <nbd@openwrt.org> -Date: Thu, 13 May 2010 20:37:25 +0200 -Subject: [PATCH 11/20] ath9k: remove VEOL support for ad-hoc - -With VEOL, Beacon transmission in ad-hoc does not currently work. -I believe for larger ad-hoc networks, VEOL is too unreliable, as -it can get beacon transmissions stuck during synchronization. -Use SWBA based beacon trasmission similar to AP mode instead. - -Signed-off-by: Felix Fietkau <nbd@openwrt.org> ---- - drivers/net/wireless/ath/ath9k/beacon.c |   63 +++++-------------------------- - 1 files changed, 10 insertions(+), 53 deletions(-) - -diff --git a/drivers/net/wireless/ath/ath9k/beacon.c b/drivers/net/wireless/ath/ath9k/beacon.c -index 77face7..f43d85a 100644 ---- a/drivers/net/wireless/ath/ath9k/beacon.c -+++ b/drivers/net/wireless/ath/ath9k/beacon.c -@@ -76,22 +76,13 @@ static void ath_beacon_setup(struct ath_softc *sc, struct ath_vif *avp, - 	ds = bf->bf_desc; - 	flags = ATH9K_TXDESC_NOACK; -  --	if (((sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC) || --	     (sc->sc_ah->opmode == NL80211_IFTYPE_MESH_POINT)) && --	    (ah->caps.hw_caps & ATH9K_HW_CAP_VEOL)) { --		ds->ds_link = bf->bf_daddr; /* self-linked */ --		flags |= ATH9K_TXDESC_VEOL; --		/* Let hardware handle antenna switching. */ --		antenna = 0; --	} else { --		ds->ds_link = 0; --		/* --		 * Switch antenna every beacon. --		 * Should only switch every beacon period, not for every SWBA --		 * XXX assumes two antennae --		 */ --		antenna = ((sc->beacon.ast_be_xmit / sc->nbcnvifs) & 1 ? 2 : 1); --	} -+	ds->ds_link = 0; -+	/* -+	 * Switch antenna every beacon. -+	 * Should only switch every beacon period, not for every SWBA -+	 * XXX assumes two antennae -+	 */ -+	antenna = ((sc->beacon.ast_be_xmit / sc->nbcnvifs) & 1 ? 2 : 1); -  - 	sband = &sc->sbands[common->hw->conf.channel->band]; - 	rate = sband->bitrates[rateidx].hw_value; -@@ -215,36 +206,6 @@ static struct ath_buf *ath_beacon_generate(struct ieee80211_hw *hw, - 	return bf; - } -  --/* -- * Startup beacon transmission for adhoc mode when they are sent entirely -- * by the hardware using the self-linked descriptor + veol trick. --*/ --static void ath_beacon_start_adhoc(struct ath_softc *sc, --				   struct ieee80211_vif *vif) --{ --	struct ath_hw *ah = sc->sc_ah; --	struct ath_common *common = ath9k_hw_common(ah); --	struct ath_buf *bf; --	struct ath_vif *avp; --	struct sk_buff *skb; -- --	avp = (void *)vif->drv_priv; -- --	if (avp->av_bcbuf == NULL) --		return; -- --	bf = avp->av_bcbuf; --	skb = bf->bf_mpdu; -- --	ath_beacon_setup(sc, avp, bf, 0); -- --	/* NB: caller is known to have already stopped tx dma */ --	ath9k_hw_puttxbuf(ah, sc->beacon.beaconq, bf->bf_daddr); --	ath9k_hw_txstart(ah, sc->beacon.beaconq); --	ath_print(common, ATH_DBG_BEACON, "TXDP%u = %llx (%p)\n", --		  sc->beacon.beaconq, ito64(bf->bf_daddr), bf->bf_desc); --} -- - int ath_beacon_alloc(struct ath_wiphy *aphy, struct ieee80211_vif *vif) - { - 	struct ath_softc *sc = aphy->sc; -@@ -265,7 +226,8 @@ int ath_beacon_alloc(struct ath_wiphy *aphy, struct ieee80211_vif *vif) - 		list_del(&avp->av_bcbuf->list); -  - 		if (sc->sc_ah->opmode == NL80211_IFTYPE_AP || --		    !(sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_VEOL)) { -+		    sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC || -+		    sc->sc_ah->opmode == NL80211_IFTYPE_MESH_POINT) { - 			int slot; - 			/* - 			 * Assign the vif to a beacon xmit slot. As -@@ -715,8 +677,7 @@ static void ath_beacon_config_adhoc(struct ath_softc *sc, - 	 * self-linked tx descriptor and let the hardware deal with things. - 	 */ - 	intval |= ATH9K_BEACON_ENA; --	if (!(ah->caps.hw_caps & ATH9K_HW_CAP_VEOL)) --		ah->imask |= ATH9K_INT_SWBA; -+	ah->imask |= ATH9K_INT_SWBA; -  - 	ath_beaconq_config(sc); -  -@@ -726,10 +687,6 @@ static void ath_beacon_config_adhoc(struct ath_softc *sc, - 	ath9k_beacon_init(sc, nexttbtt, intval); - 	sc->beacon.bmisscnt = 0; - 	ath9k_hw_set_interrupts(ah, ah->imask); -- --	/* FIXME: Handle properly when vif is NULL */ --	if (vif && ah->caps.hw_caps & ATH9K_HW_CAP_VEOL) --		ath_beacon_start_adhoc(sc, vif); - } -  - void ath_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif) ---  -1.6.3.3 - | 
