Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19bc291c authored by David S. Miller's avatar David S. Miller
Browse files
Conflicts:
	drivers/net/wireless/iwlwifi/iwl-core.h
	drivers/net/wireless/rt2x00/rt2800pci.c
parents 04488734 4a6967b8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5978,7 +5978,7 @@ S: Maintained
F:	drivers/input/misc/wistron_btns.c

WL1251 WIRELESS DRIVER
M:	Kalle Valo <kalle.valo@nokia.com>
M:	Kalle Valo <kalle.valo@iki.fi>
L:	linux-wireless@vger.kernel.org
W:	http://wireless.kernel.org
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
+1 −0
Original line number Diff line number Diff line
@@ -112,6 +112,7 @@ config AIRO_CS
	depends on PCMCIA && (BROKEN || !M32R)
	select WIRELESS_EXT
	select WEXT_SPY
	select WEXT_PRIV
	select CRYPTO
	select CRYPTO_AES
	---help---
+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@
#include <linux/freezer.h>

#include <linux/ieee80211.h>
#include <net/iw_handler.h>

#include "airo.h"

+36 −34
Original line number Diff line number Diff line
@@ -2329,21 +2329,18 @@ out:
	return err;
}

static void ar9170_sta_notify(struct ieee80211_hw *hw,
static int ar9170_sta_add(struct ieee80211_hw *hw,
			  struct ieee80211_vif *vif,
			      enum sta_notify_cmd cmd,
			  struct ieee80211_sta *sta)
{
	struct ar9170 *ar = hw->priv;
	struct ar9170_sta_info *sta_info = (void *) sta->drv_priv;
	unsigned int i;

	switch (cmd) {
	case STA_NOTIFY_ADD:
	memset(sta_info, 0, sizeof(*sta_info));

	if (!sta->ht_cap.ht_supported)
			break;
		return 0;

	if (sta->ht_cap.ampdu_density > ar->global_ampdu_density)
		ar->global_ampdu_density = sta->ht_cap.ampdu_density;
@@ -2361,22 +2358,26 @@ static void ar9170_sta_notify(struct ieee80211_hw *hw,
	}

	sta_info->ampdu_max_len = 1 << (3 + sta->ht_cap.ampdu_factor);
		break;

	case STA_NOTIFY_REMOVE:
	return 0;
}

static int ar9170_sta_remove(struct ieee80211_hw *hw,
			     struct ieee80211_vif *vif,
			     struct ieee80211_sta *sta)
{
	struct ar9170_sta_info *sta_info = (void *) sta->drv_priv;
	unsigned int i;

	if (!sta->ht_cap.ht_supported)
			break;
		return 0;

	for (i = 0; i < AR9170_NUM_TID; i++) {
		sta_info->agg[i].state = AR9170_TID_STATE_INVALID;
		skb_queue_purge(&sta_info->agg[i].queue);
	}

		break;

	default:
		break;
	}
	return 0;
}

static int ar9170_get_stats(struct ieee80211_hw *hw,
@@ -2495,7 +2496,8 @@ static const struct ieee80211_ops ar9170_ops = {
	.bss_info_changed	= ar9170_op_bss_info_changed,
	.get_tsf		= ar9170_op_get_tsf,
	.set_key		= ar9170_set_key,
	.sta_notify		= ar9170_sta_notify,
	.sta_add		= ar9170_sta_add,
	.sta_remove		= ar9170_sta_remove,
	.get_stats		= ar9170_get_stats,
	.ampdu_action		= ar9170_ampdu_action,
};
+8 −11
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ int ath_beaconq_config(struct ath_softc *sc)
 *  Beacons are always sent out at the lowest rate, and are not retried.
*/
static void ath_beacon_setup(struct ath_softc *sc, struct ath_vif *avp,
			     struct ath_buf *bf)
			     struct ath_buf *bf, int rateidx)
{
	struct sk_buff *skb = bf->bf_mpdu;
	struct ath_hw *ah = sc->sc_ah;
@@ -96,9 +96,9 @@ static void ath_beacon_setup(struct ath_softc *sc, struct ath_vif *avp,
	ds->ds_data = bf->bf_buf_addr;

	sband = &sc->sbands[common->hw->conf.channel->band];
	rate = sband->bitrates[0].hw_value;
	rate = sband->bitrates[rateidx].hw_value;
	if (sc->sc_flags & SC_OP_PREAMBLE_SHORT)
		rate |= sband->bitrates[0].hw_value_short;
		rate |= sband->bitrates[rateidx].hw_value_short;

	ath9k_hw_set11n_txdesc(ah, ds, skb->len + FCS_LEN,
			       ATH9K_PKT_TYPE_BEACON,
@@ -206,7 +206,7 @@ static struct ath_buf *ath_beacon_generate(struct ieee80211_hw *hw,
		}
	}

	ath_beacon_setup(sc, avp, bf);
	ath_beacon_setup(sc, avp, bf, info->control.rates[0].idx);

	while (skb) {
		ath_tx_cabq(hw, skb);
@@ -237,7 +237,7 @@ static void ath_beacon_start_adhoc(struct ath_softc *sc,
	bf = avp->av_bcbuf;
	skb = bf->bf_mpdu;

	ath_beacon_setup(sc, avp, bf);
	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);
@@ -526,15 +526,12 @@ static void ath_beacon_config_ap(struct ath_softc *sc,
{
	u32 nexttbtt, intval;

	/* Configure the timers only when the TSF has to be reset */

	if (!(sc->sc_flags & SC_OP_TSF_RESET))
		return;

	/* NB: the beacon interval is kept internally in TU's */
	intval = conf->beacon_interval & ATH9K_BEACON_PERIOD;
	intval /= ATH_BCBUF;    /* for staggered beacons */
	nexttbtt = intval;

	if (sc->sc_flags & SC_OP_TSF_RESET)
		intval |= ATH9K_BEACON_RESET_TSF;

	/*
Loading