mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-24 20:24:15 +02:00
ath9k: merge a fix for hardware full sleep
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30864 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
669f5554cb
commit
62d9e800de
@ -1390,7 +1390,26 @@
|
|||||||
EXPORT_SYMBOL(ath9k_hw_beaconq_setup);
|
EXPORT_SYMBOL(ath9k_hw_beaconq_setup);
|
||||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||||
@@ -2300,6 +2300,7 @@ static int ath9k_tx_last_beacon(struct i
|
@@ -118,13 +118,15 @@ void ath9k_ps_restore(struct ath_softc *
|
||||||
|
if (--sc->ps_usecount != 0)
|
||||||
|
goto unlock;
|
||||||
|
|
||||||
|
- if (sc->ps_idle && (sc->ps_flags & PS_WAIT_FOR_TX_ACK))
|
||||||
|
+ if (sc->ps_flags & PS_WAIT_FOR_TX_ACK)
|
||||||
|
+ goto unlock;
|
||||||
|
+
|
||||||
|
+ if (sc->ps_idle)
|
||||||
|
mode = ATH9K_PM_FULL_SLEEP;
|
||||||
|
else if (sc->ps_enabled &&
|
||||||
|
!(sc->ps_flags & (PS_WAIT_FOR_BEACON |
|
||||||
|
PS_WAIT_FOR_CAB |
|
||||||
|
- PS_WAIT_FOR_PSPOLL_DATA |
|
||||||
|
- PS_WAIT_FOR_TX_ACK)))
|
||||||
|
+ PS_WAIT_FOR_PSPOLL_DATA)))
|
||||||
|
mode = ATH9K_PM_NETWORK_SLEEP;
|
||||||
|
else
|
||||||
|
goto unlock;
|
||||||
|
@@ -2300,6 +2302,7 @@ static int ath9k_tx_last_beacon(struct i
|
||||||
struct ath_vif *avp;
|
struct ath_vif *avp;
|
||||||
struct ath_buf *bf;
|
struct ath_buf *bf;
|
||||||
struct ath_tx_status ts;
|
struct ath_tx_status ts;
|
||||||
@ -1398,7 +1417,7 @@
|
|||||||
int status;
|
int status;
|
||||||
|
|
||||||
vif = sc->beacon.bslot[0];
|
vif = sc->beacon.bslot[0];
|
||||||
@@ -2310,7 +2311,7 @@ static int ath9k_tx_last_beacon(struct i
|
@@ -2310,7 +2313,7 @@ static int ath9k_tx_last_beacon(struct i
|
||||||
if (!avp->is_bslot_active)
|
if (!avp->is_bslot_active)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||||
@@ -1430,15 +1430,6 @@ static int ath9k_add_interface(struct ie
|
@@ -1432,15 +1432,6 @@ static int ath9k_add_interface(struct ie
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -16,7 +16,7 @@
|
|||||||
ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type);
|
ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type);
|
||||||
|
|
||||||
sc->nvifs++;
|
sc->nvifs++;
|
||||||
@@ -1463,15 +1454,6 @@ static int ath9k_change_interface(struct
|
@@ -1465,15 +1456,6 @@ static int ath9k_change_interface(struct
|
||||||
mutex_lock(&sc->mutex);
|
mutex_lock(&sc->mutex);
|
||||||
ath9k_ps_wakeup(sc);
|
ath9k_ps_wakeup(sc);
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@
|
|||||||
}
|
}
|
||||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||||
@@ -1535,7 +1535,7 @@ static void ath9k_disable_ps(struct ath_
|
@@ -1537,7 +1537,7 @@ static void ath9k_disable_ps(struct ath_
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +89,7 @@
|
|||||||
{
|
{
|
||||||
struct ath_softc *sc = hw->priv;
|
struct ath_softc *sc = hw->priv;
|
||||||
struct ath_hw *ah = sc->sc_ah;
|
struct ath_hw *ah = sc->sc_ah;
|
||||||
@@ -1579,9 +1579,11 @@ static int ath9k_config(struct ieee80211
|
@@ -1581,9 +1581,11 @@ static int ath9k_config(struct ieee80211
|
||||||
|
|
||||||
if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
|
if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
|
||||||
struct ieee80211_channel *curchan = hw->conf.channel;
|
struct ieee80211_channel *curchan = hw->conf.channel;
|
||||||
@ -101,7 +101,7 @@
|
|||||||
|
|
||||||
if (ah->curchan)
|
if (ah->curchan)
|
||||||
old_pos = ah->curchan - &ah->channels[0];
|
old_pos = ah->curchan - &ah->channels[0];
|
||||||
@@ -1629,7 +1631,23 @@ static int ath9k_config(struct ieee80211
|
@@ -1631,7 +1633,23 @@ static int ath9k_config(struct ieee80211
|
||||||
memset(&sc->survey[pos], 0, sizeof(struct survey_info));
|
memset(&sc->survey[pos], 0, sizeof(struct survey_info));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||||
@@ -1653,6 +1653,8 @@ int ath9k_config(struct ieee80211_hw *hw
|
@@ -1655,6 +1655,8 @@ int ath9k_config(struct ieee80211_hw *hw
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9,7 +9,7 @@
|
|||||||
/*
|
/*
|
||||||
* The most recent snapshot of channel->noisefloor for the old
|
* The most recent snapshot of channel->noisefloor for the old
|
||||||
* channel is only available after the hardware reset. Copy it to
|
* channel is only available after the hardware reset. Copy it to
|
||||||
@@ -1667,6 +1669,7 @@ int ath9k_config(struct ieee80211_hw *hw
|
@@ -1669,6 +1671,7 @@ int ath9k_config(struct ieee80211_hw *hw
|
||||||
sc->config.txpowlimit = 2 * conf->power_level;
|
sc->config.txpowlimit = 2 * conf->power_level;
|
||||||
ath9k_cmn_update_txpow(ah, sc->curtxpow,
|
ath9k_cmn_update_txpow(ah, sc->curtxpow,
|
||||||
sc->config.txpowlimit, &sc->curtxpow);
|
sc->config.txpowlimit, &sc->curtxpow);
|
||||||
|
Loading…
Reference in New Issue
Block a user