Commit 08740735 authored by John W. Linville's avatar John W. Linville

Merge branch 'master' of git://git.infradead.org/users/linville/wireless

Conflicts:
	drivers/net/wireless/iwlwifi/iwl-scan.c
	net/wireless/nl80211.c
parents cd32984f ba542385
...@@ -1514,7 +1514,7 @@ static const u32 ar9300_2p2_mac_core[][2] = { ...@@ -1514,7 +1514,7 @@ static const u32 ar9300_2p2_mac_core[][2] = {
{0x00008258, 0x00000000}, {0x00008258, 0x00000000},
{0x0000825c, 0x40000000}, {0x0000825c, 0x40000000},
{0x00008260, 0x00080922}, {0x00008260, 0x00080922},
{0x00008264, 0x9bc00010}, {0x00008264, 0x9d400010},
{0x00008268, 0xffffffff}, {0x00008268, 0xffffffff},
{0x0000826c, 0x0000ffff}, {0x0000826c, 0x0000ffff},
{0x00008270, 0x00000000}, {0x00008270, 0x00000000},
......
...@@ -205,14 +205,22 @@ static void ath_rx_remove_buffer(struct ath_softc *sc, ...@@ -205,14 +205,22 @@ static void ath_rx_remove_buffer(struct ath_softc *sc,
static void ath_rx_edma_cleanup(struct ath_softc *sc) static void ath_rx_edma_cleanup(struct ath_softc *sc)
{ {
struct ath_hw *ah = sc->sc_ah;
struct ath_common *common = ath9k_hw_common(ah);
struct ath_buf *bf; struct ath_buf *bf;
ath_rx_remove_buffer(sc, ATH9K_RX_QUEUE_LP); ath_rx_remove_buffer(sc, ATH9K_RX_QUEUE_LP);
ath_rx_remove_buffer(sc, ATH9K_RX_QUEUE_HP); ath_rx_remove_buffer(sc, ATH9K_RX_QUEUE_HP);
list_for_each_entry(bf, &sc->rx.rxbuf, list) { list_for_each_entry(bf, &sc->rx.rxbuf, list) {
if (bf->bf_mpdu) if (bf->bf_mpdu) {
dma_unmap_single(sc->dev, bf->bf_buf_addr,
common->rx_bufsize,
DMA_BIDIRECTIONAL);
dev_kfree_skb_any(bf->bf_mpdu); dev_kfree_skb_any(bf->bf_mpdu);
bf->bf_buf_addr = 0;
bf->bf_mpdu = NULL;
}
} }
INIT_LIST_HEAD(&sc->rx.rxbuf); INIT_LIST_HEAD(&sc->rx.rxbuf);
......
...@@ -937,7 +937,7 @@ void iwl_legacy_irq_handle_error(struct iwl_priv *priv) ...@@ -937,7 +937,7 @@ void iwl_legacy_irq_handle_error(struct iwl_priv *priv)
&priv->contexts[IWL_RXON_CTX_BSS]); &priv->contexts[IWL_RXON_CTX_BSS]);
#endif #endif
wake_up_interruptible(&priv->wait_command_queue); wake_up(&priv->wait_command_queue);
/* Keep the restart process from trying to send host /* Keep the restart process from trying to send host
* commands by clearing the INIT status bit */ * commands by clearing the INIT status bit */
...@@ -1746,7 +1746,7 @@ int iwl_legacy_force_reset(struct iwl_priv *priv, bool external) ...@@ -1746,7 +1746,7 @@ int iwl_legacy_force_reset(struct iwl_priv *priv, bool external)
/* Set the FW error flag -- cleared on iwl_down */ /* Set the FW error flag -- cleared on iwl_down */
set_bit(STATUS_FW_ERROR, &priv->status); set_bit(STATUS_FW_ERROR, &priv->status);
wake_up_interruptible(&priv->wait_command_queue); wake_up(&priv->wait_command_queue);
/* /*
* Keep the restart process from trying to send host * Keep the restart process from trying to send host
* commands by clearing the INIT status bit * commands by clearing the INIT status bit
......
...@@ -167,7 +167,7 @@ int iwl_legacy_send_cmd_sync(struct iwl_priv *priv, struct iwl_host_cmd *cmd) ...@@ -167,7 +167,7 @@ int iwl_legacy_send_cmd_sync(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
goto out; goto out;
} }
ret = wait_event_interruptible_timeout(priv->wait_command_queue, ret = wait_event_timeout(priv->wait_command_queue,
!test_bit(STATUS_HCMD_ACTIVE, &priv->status), !test_bit(STATUS_HCMD_ACTIVE, &priv->status),
HOST_COMPLETE_TIMEOUT); HOST_COMPLETE_TIMEOUT);
if (!ret) { if (!ret) {
......
...@@ -625,6 +625,8 @@ iwl_legacy_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb) ...@@ -625,6 +625,8 @@ iwl_legacy_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb)
cmd = txq->cmd[cmd_index]; cmd = txq->cmd[cmd_index];
meta = &txq->meta[cmd_index]; meta = &txq->meta[cmd_index];
txq->time_stamp = jiffies;
pci_unmap_single(priv->pci_dev, pci_unmap_single(priv->pci_dev,
dma_unmap_addr(meta, mapping), dma_unmap_addr(meta, mapping),
dma_unmap_len(meta, len), dma_unmap_len(meta, len),
...@@ -645,7 +647,7 @@ iwl_legacy_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb) ...@@ -645,7 +647,7 @@ iwl_legacy_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb)
clear_bit(STATUS_HCMD_ACTIVE, &priv->status); clear_bit(STATUS_HCMD_ACTIVE, &priv->status);
IWL_DEBUG_INFO(priv, "Clearing HCMD_ACTIVE for command %s\n", IWL_DEBUG_INFO(priv, "Clearing HCMD_ACTIVE for command %s\n",
iwl_legacy_get_cmd_string(cmd->hdr.cmd)); iwl_legacy_get_cmd_string(cmd->hdr.cmd));
wake_up_interruptible(&priv->wait_command_queue); wake_up(&priv->wait_command_queue);
} }
/* Mark as unmapped */ /* Mark as unmapped */
......
...@@ -840,7 +840,7 @@ static void iwl3945_rx_card_state_notif(struct iwl_priv *priv, ...@@ -840,7 +840,7 @@ static void iwl3945_rx_card_state_notif(struct iwl_priv *priv,
wiphy_rfkill_set_hw_state(priv->hw->wiphy, wiphy_rfkill_set_hw_state(priv->hw->wiphy,
test_bit(STATUS_RF_KILL_HW, &priv->status)); test_bit(STATUS_RF_KILL_HW, &priv->status));
else else
wake_up_interruptible(&priv->wait_command_queue); wake_up(&priv->wait_command_queue);
} }
/** /**
...@@ -2268,7 +2268,7 @@ static void iwl3945_alive_start(struct iwl_priv *priv) ...@@ -2268,7 +2268,7 @@ static void iwl3945_alive_start(struct iwl_priv *priv)
iwl3945_reg_txpower_periodic(priv); iwl3945_reg_txpower_periodic(priv);
IWL_DEBUG_INFO(priv, "ALIVE processing complete.\n"); IWL_DEBUG_INFO(priv, "ALIVE processing complete.\n");
wake_up_interruptible(&priv->wait_command_queue); wake_up(&priv->wait_command_queue);
return; return;
...@@ -2299,7 +2299,7 @@ static void __iwl3945_down(struct iwl_priv *priv) ...@@ -2299,7 +2299,7 @@ static void __iwl3945_down(struct iwl_priv *priv)
iwl_legacy_clear_driver_stations(priv); iwl_legacy_clear_driver_stations(priv);
/* Unblock any waiting calls */ /* Unblock any waiting calls */
wake_up_interruptible_all(&priv->wait_command_queue); wake_up_all(&priv->wait_command_queue);
/* Wipe out the EXIT_PENDING status bit if we are not actually /* Wipe out the EXIT_PENDING status bit if we are not actually
* exiting the module */ * exiting the module */
...@@ -2852,7 +2852,7 @@ static int iwl3945_mac_start(struct ieee80211_hw *hw) ...@@ -2852,7 +2852,7 @@ static int iwl3945_mac_start(struct ieee80211_hw *hw)
/* Wait for START_ALIVE from ucode. Otherwise callbacks from /* Wait for START_ALIVE from ucode. Otherwise callbacks from
* mac80211 will not be run successfully. */ * mac80211 will not be run successfully. */
ret = wait_event_interruptible_timeout(priv->wait_command_queue, ret = wait_event_timeout(priv->wait_command_queue,
test_bit(STATUS_READY, &priv->status), test_bit(STATUS_READY, &priv->status),
UCODE_READY_TIMEOUT); UCODE_READY_TIMEOUT);
if (!ret) { if (!ret) {
......
...@@ -575,7 +575,7 @@ static void iwl4965_rx_card_state_notif(struct iwl_priv *priv, ...@@ -575,7 +575,7 @@ static void iwl4965_rx_card_state_notif(struct iwl_priv *priv,
wiphy_rfkill_set_hw_state(priv->hw->wiphy, wiphy_rfkill_set_hw_state(priv->hw->wiphy,
test_bit(STATUS_RF_KILL_HW, &priv->status)); test_bit(STATUS_RF_KILL_HW, &priv->status));
else else
wake_up_interruptible(&priv->wait_command_queue); wake_up(&priv->wait_command_queue);
} }
/** /**
...@@ -925,7 +925,7 @@ static void iwl4965_irq_tasklet(struct iwl_priv *priv) ...@@ -925,7 +925,7 @@ static void iwl4965_irq_tasklet(struct iwl_priv *priv)
handled |= CSR_INT_BIT_FH_TX; handled |= CSR_INT_BIT_FH_TX;
/* Wake up uCode load routine, now that load is complete */ /* Wake up uCode load routine, now that load is complete */
priv->ucode_write_complete = 1; priv->ucode_write_complete = 1;
wake_up_interruptible(&priv->wait_command_queue); wake_up(&priv->wait_command_queue);
} }
if (inta & ~handled) { if (inta & ~handled) {
...@@ -1794,7 +1794,7 @@ static void iwl4965_alive_start(struct iwl_priv *priv) ...@@ -1794,7 +1794,7 @@ static void iwl4965_alive_start(struct iwl_priv *priv)
iwl4965_rf_kill_ct_config(priv); iwl4965_rf_kill_ct_config(priv);
IWL_DEBUG_INFO(priv, "ALIVE processing complete.\n"); IWL_DEBUG_INFO(priv, "ALIVE processing complete.\n");
wake_up_interruptible(&priv->wait_command_queue); wake_up(&priv->wait_command_queue);
iwl_legacy_power_update_mode(priv, true); iwl_legacy_power_update_mode(priv, true);
IWL_DEBUG_INFO(priv, "Updated power mode\n"); IWL_DEBUG_INFO(priv, "Updated power mode\n");
...@@ -1827,7 +1827,7 @@ static void __iwl4965_down(struct iwl_priv *priv) ...@@ -1827,7 +1827,7 @@ static void __iwl4965_down(struct iwl_priv *priv)
iwl_legacy_clear_driver_stations(priv); iwl_legacy_clear_driver_stations(priv);
/* Unblock any waiting calls */ /* Unblock any waiting calls */
wake_up_interruptible_all(&priv->wait_command_queue); wake_up_all(&priv->wait_command_queue);
/* Wipe out the EXIT_PENDING status bit if we are not actually /* Wipe out the EXIT_PENDING status bit if we are not actually
* exiting the module */ * exiting the module */
...@@ -2265,7 +2265,7 @@ int iwl4965_mac_start(struct ieee80211_hw *hw) ...@@ -2265,7 +2265,7 @@ int iwl4965_mac_start(struct ieee80211_hw *hw)
/* Wait for START_ALIVE from Run Time ucode. Otherwise callbacks from /* Wait for START_ALIVE from Run Time ucode. Otherwise callbacks from
* mac80211 will not be run successfully. */ * mac80211 will not be run successfully. */
ret = wait_event_interruptible_timeout(priv->wait_command_queue, ret = wait_event_timeout(priv->wait_command_queue,
test_bit(STATUS_READY, &priv->status), test_bit(STATUS_READY, &priv->status),
UCODE_READY_TIMEOUT); UCODE_READY_TIMEOUT);
if (!ret) { if (!ret) {
......
...@@ -863,6 +863,7 @@ static void _rtl_usb_tx_preprocess(struct ieee80211_hw *hw, struct sk_buff *skb, ...@@ -863,6 +863,7 @@ static void _rtl_usb_tx_preprocess(struct ieee80211_hw *hw, struct sk_buff *skb,
u8 tid = 0; u8 tid = 0;
u16 seq_number = 0; u16 seq_number = 0;
memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc));
if (ieee80211_is_auth(fc)) { if (ieee80211_is_auth(fc)) {
RT_TRACE(rtlpriv, COMP_SEND, DBG_DMESG, ("MAC80211_LINKING\n")); RT_TRACE(rtlpriv, COMP_SEND, DBG_DMESG, ("MAC80211_LINKING\n"));
rtl_ips_nic_on(hw); rtl_ips_nic_on(hw);
......
...@@ -4300,6 +4300,9 @@ static int nl80211_crypto_settings(struct cfg80211_registered_device *rdev, ...@@ -4300,6 +4300,9 @@ static int nl80211_crypto_settings(struct cfg80211_registered_device *rdev,
if (len % sizeof(u32)) if (len % sizeof(u32))
return -EINVAL; return -EINVAL;
if (settings->n_akm_suites > NL80211_MAX_NR_AKM_SUITES)
return -EINVAL;
memcpy(settings->akm_suites, data, len); memcpy(settings->akm_suites, data, len);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment