Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
This commit is contained in:
Коммит
78d41b35a9
|
@ -2141,6 +2141,8 @@ static void ath9k_set_coverage_class(struct ieee80211_hw *hw, u8 coverage_class)
|
|||
static void ath9k_flush(struct ieee80211_hw *hw, bool drop)
|
||||
{
|
||||
struct ath_softc *sc = hw->priv;
|
||||
struct ath_hw *ah = sc->sc_ah;
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
int timeout = 200; /* ms */
|
||||
int i, j;
|
||||
|
||||
|
@ -2149,6 +2151,12 @@ static void ath9k_flush(struct ieee80211_hw *hw, bool drop)
|
|||
|
||||
cancel_delayed_work_sync(&sc->tx_complete_work);
|
||||
|
||||
if (sc->sc_flags & SC_OP_INVALID) {
|
||||
ath_dbg(common, ATH_DBG_ANY, "Device not present\n");
|
||||
mutex_unlock(&sc->mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
if (drop)
|
||||
timeout = 1;
|
||||
|
||||
|
|
|
@ -2155,6 +2155,13 @@ int iwl_legacy_mac_config(struct ieee80211_hw *hw, u32 changed)
|
|||
goto set_ch_out;
|
||||
}
|
||||
|
||||
if (priv->iw_mode == NL80211_IFTYPE_ADHOC &&
|
||||
!iwl_legacy_is_channel_ibss(ch_info)) {
|
||||
IWL_DEBUG_MAC80211(priv, "leave - not IBSS channel\n");
|
||||
ret = -EINVAL;
|
||||
goto set_ch_out;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&priv->lock, flags);
|
||||
|
||||
for_each_context(priv, ctx) {
|
||||
|
|
|
@ -1411,6 +1411,12 @@ iwl_legacy_is_channel_passive(const struct iwl_channel_info *ch)
|
|||
return (!(ch->flags & EEPROM_CHANNEL_ACTIVE)) ? 1 : 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
iwl_legacy_is_channel_ibss(const struct iwl_channel_info *ch)
|
||||
{
|
||||
return (ch->flags & EEPROM_CHANNEL_IBSS) ? 1 : 0;
|
||||
}
|
||||
|
||||
static inline void
|
||||
__iwl_legacy_free_pages(struct iwl_priv *priv, struct page *page)
|
||||
{
|
||||
|
|
|
@ -1339,8 +1339,8 @@ int lbs_execute_next_command(struct lbs_private *priv)
|
|||
cpu_to_le16(PS_MODE_ACTION_EXIT_PS)) {
|
||||
lbs_deb_host(
|
||||
"EXEC_NEXT_CMD: ignore ENTER_PS cmd\n");
|
||||
list_del(&cmdnode->list);
|
||||
spin_lock_irqsave(&priv->driver_lock, flags);
|
||||
list_del(&cmdnode->list);
|
||||
lbs_complete_command(priv, cmdnode, 0);
|
||||
spin_unlock_irqrestore(&priv->driver_lock, flags);
|
||||
|
||||
|
@ -1352,8 +1352,8 @@ int lbs_execute_next_command(struct lbs_private *priv)
|
|||
(priv->psstate == PS_STATE_PRE_SLEEP)) {
|
||||
lbs_deb_host(
|
||||
"EXEC_NEXT_CMD: ignore EXIT_PS cmd in sleep\n");
|
||||
list_del(&cmdnode->list);
|
||||
spin_lock_irqsave(&priv->driver_lock, flags);
|
||||
list_del(&cmdnode->list);
|
||||
lbs_complete_command(priv, cmdnode, 0);
|
||||
spin_unlock_irqrestore(&priv->driver_lock, flags);
|
||||
priv->needtowakeup = 1;
|
||||
|
@ -1366,7 +1366,9 @@ int lbs_execute_next_command(struct lbs_private *priv)
|
|||
"EXEC_NEXT_CMD: sending EXIT_PS\n");
|
||||
}
|
||||
}
|
||||
spin_lock_irqsave(&priv->driver_lock, flags);
|
||||
list_del(&cmdnode->list);
|
||||
spin_unlock_irqrestore(&priv->driver_lock, flags);
|
||||
lbs_deb_host("EXEC_NEXT_CMD: sending command 0x%04x\n",
|
||||
le16_to_cpu(cmd->command));
|
||||
lbs_submit_command(priv, cmdnode);
|
||||
|
|
|
@ -237,6 +237,10 @@ ieee80211_tx_h_dynamic_ps(struct ieee80211_tx_data *tx)
|
|||
&local->dynamic_ps_disable_work);
|
||||
}
|
||||
|
||||
/* Don't restart the timer if we're not disassociated */
|
||||
if (!ifmgd->associated)
|
||||
return TX_CONTINUE;
|
||||
|
||||
mod_timer(&local->dynamic_ps_timer, jiffies +
|
||||
msecs_to_jiffies(local->hw.conf.dynamic_ps_timeout));
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче