diff options
| author | Olof Johansson <olof@lixom.net> | 2012-11-25 21:34:34 -0800 | 
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2012-11-25 21:34:34 -0800 | 
| commit | 0f9cb211ba5db93d488fe6b154138231fdd0e22d (patch) | |
| tree | 293871b042e9ebc49b1d783f1b110eef541ddc97 /drivers/net/wireless | |
| parent | 007108a2279123ad6639b6c653ad1a731febb60f (diff) | |
| parent | 9489e9dcae718d5fde988e4a684a0f55b5f94d17 (diff) | |
| download | olio-linux-3.10-0f9cb211ba5db93d488fe6b154138231fdd0e22d.tar.xz olio-linux-3.10-0f9cb211ba5db93d488fe6b154138231fdd0e22d.zip  | |
Merge tag 'v3.7-rc7' into next/cleanup
Merging in mainline back to next/cleanup since it has collected a few
conflicts between fixes going upstream and some of the cleanup patches.
Git doesn't auto-resolve some of them, and they're mostly noise so let's
take care of it locally.
Conflicts are in:
	arch/arm/mach-omap2/omap_hwmod_44xx_data.c
	arch/arm/plat-omap/i2c.c
	drivers/video/omap2/dss/dss.c
Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'drivers/net/wireless')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/mac80211.c | 16 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/main.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/rx.c | 23 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/tx.c | 8 | ||||
| -rw-r--r-- | drivers/net/wireless/mwifiex/cmdevt.c | 11 | ||||
| -rw-r--r-- | drivers/net/wireless/mwifiex/sdio.c | 11 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192cu/sw.c | 1 | 
9 files changed, 54 insertions, 22 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 8e1559aba49..1829b445d0b 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c @@ -1456,7 +1456,7 @@ static bool ath9k_hw_set_reset_reg(struct ath_hw *ah, u32 type)  	switch (type) {  	case ATH9K_RESET_POWER_ON:  		ret = ath9k_hw_set_reset_power_on(ah); -		if (!ret) +		if (ret)  			ah->reset_power_on = true;  		break;  	case ATH9K_RESET_WARM: diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c index a6f1e816600..481345c23de 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c @@ -4401,7 +4401,7 @@ static s32 brcmf_mode_to_nl80211_iftype(s32 mode)  static void brcmf_wiphy_pno_params(struct wiphy *wiphy)  { -#ifndef CONFIG_BRCMFISCAN +#ifndef CONFIG_BRCMISCAN  	/* scheduled scan settings */  	wiphy->max_sched_scan_ssids = BRCMF_PNO_MAX_PFN_COUNT;  	wiphy->max_match_sets = BRCMF_PNO_MAX_PFN_COUNT; diff --git a/drivers/net/wireless/iwlwifi/dvm/mac80211.c b/drivers/net/wireless/iwlwifi/dvm/mac80211.c index ff8162d4c45..2d9eee93c74 100644 --- a/drivers/net/wireless/iwlwifi/dvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/dvm/mac80211.c @@ -521,7 +521,7 @@ static void iwlagn_mac_tx(struct ieee80211_hw *hw,  		     ieee80211_get_tx_rate(hw, IEEE80211_SKB_CB(skb))->bitrate);  	if (iwlagn_tx_skb(priv, control->sta, skb)) -		dev_kfree_skb_any(skb); +		ieee80211_free_txskb(hw, skb);  }  static void iwlagn_mac_update_tkip_key(struct ieee80211_hw *hw, @@ -1354,6 +1354,20 @@ static int iwlagn_mac_add_interface(struct ieee80211_hw *hw,  	vif_priv->ctx = ctx;  	ctx->vif = vif; +	/* +	 * In SNIFFER device type, the firmware reports the FCS to +	 * the host, rather than snipping it off. Unfortunately, +	 * mac80211 doesn't (yet) provide a per-packet flag for +	 * this, so that we have to set the hardware flag based +	 * on the interfaces added. As the monitor interface can +	 * only be present by itself, and will be removed before +	 * other interfaces are added, this is safe. +	 */ +	if (vif->type == NL80211_IFTYPE_MONITOR) +		priv->hw->flags |= IEEE80211_HW_RX_INCLUDES_FCS; +	else +		priv->hw->flags &= ~IEEE80211_HW_RX_INCLUDES_FCS; +  	err = iwl_setup_interface(priv, ctx);  	if (!err || reset)  		goto out; diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c index 7ff3f143067..408132cf83c 100644 --- a/drivers/net/wireless/iwlwifi/dvm/main.c +++ b/drivers/net/wireless/iwlwifi/dvm/main.c @@ -2114,7 +2114,7 @@ static void iwl_free_skb(struct iwl_op_mode *op_mode, struct sk_buff *skb)  	info = IEEE80211_SKB_CB(skb);  	iwl_trans_free_tx_cmd(priv->trans, info->driver_data[1]); -	dev_kfree_skb_any(skb); +	ieee80211_free_txskb(priv->hw, skb);  }  static void iwl_set_hw_rfkill_state(struct iwl_op_mode *op_mode, bool state) diff --git a/drivers/net/wireless/iwlwifi/pcie/rx.c b/drivers/net/wireless/iwlwifi/pcie/rx.c index 17c8e5d8268..bb69f8f90b3 100644 --- a/drivers/net/wireless/iwlwifi/pcie/rx.c +++ b/drivers/net/wireless/iwlwifi/pcie/rx.c @@ -321,6 +321,14 @@ static void iwl_rx_allocate(struct iwl_trans *trans, gfp_t priority)  			dma_map_page(trans->dev, page, 0,  				     PAGE_SIZE << trans_pcie->rx_page_order,  				     DMA_FROM_DEVICE); +		if (dma_mapping_error(trans->dev, rxb->page_dma)) { +			rxb->page = NULL; +			spin_lock_irqsave(&rxq->lock, flags); +			list_add(&rxb->list, &rxq->rx_used); +			spin_unlock_irqrestore(&rxq->lock, flags); +			__free_pages(page, trans_pcie->rx_page_order); +			return; +		}  		/* dma address must be no more than 36 bits */  		BUG_ON(rxb->page_dma & ~DMA_BIT_MASK(36));  		/* and also 256 byte aligned! */ @@ -488,8 +496,19 @@ static void iwl_rx_handle_rxbuf(struct iwl_trans *trans,  			dma_map_page(trans->dev, rxb->page, 0,  				     PAGE_SIZE << trans_pcie->rx_page_order,  				     DMA_FROM_DEVICE); -		list_add_tail(&rxb->list, &rxq->rx_free); -		rxq->free_count++; +		if (dma_mapping_error(trans->dev, rxb->page_dma)) { +			/* +			 * free the page(s) as well to not break +			 * the invariant that the items on the used +			 * list have no page(s) +			 */ +			__free_pages(rxb->page, trans_pcie->rx_page_order); +			rxb->page = NULL; +			list_add_tail(&rxb->list, &rxq->rx_used); +		} else { +			list_add_tail(&rxb->list, &rxq->rx_free); +			rxq->free_count++; +		}  	} else  		list_add_tail(&rxb->list, &rxq->rx_used);  	spin_unlock_irqrestore(&rxq->lock, flags); diff --git a/drivers/net/wireless/iwlwifi/pcie/tx.c b/drivers/net/wireless/iwlwifi/pcie/tx.c index 105e3af3c62..79a4ddc002d 100644 --- a/drivers/net/wireless/iwlwifi/pcie/tx.c +++ b/drivers/net/wireless/iwlwifi/pcie/tx.c @@ -480,20 +480,12 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, int fifo,  void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id)  {  	struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); -	u16 rd_ptr, wr_ptr; -	int n_bd = trans_pcie->txq[txq_id].q.n_bd;  	if (!test_and_clear_bit(txq_id, trans_pcie->queue_used)) {  		WARN_ONCE(1, "queue %d not used", txq_id);  		return;  	} -	rd_ptr = iwl_read_prph(trans, SCD_QUEUE_RDPTR(txq_id)) & (n_bd - 1); -	wr_ptr = iwl_read_prph(trans, SCD_QUEUE_WRPTR(txq_id)); - -	WARN_ONCE(rd_ptr != wr_ptr, "queue %d isn't empty: [%d,%d]", -		  txq_id, rd_ptr, wr_ptr); -  	iwl_txq_set_inactive(trans, txq_id);  	IWL_DEBUG_TX_QUEUES(trans, "Deactivate queue %d\n", txq_id);  } diff --git a/drivers/net/wireless/mwifiex/cmdevt.c b/drivers/net/wireless/mwifiex/cmdevt.c index 8d465107f52..ae9010ed58d 100644 --- a/drivers/net/wireless/mwifiex/cmdevt.c +++ b/drivers/net/wireless/mwifiex/cmdevt.c @@ -890,9 +890,6 @@ mwifiex_cmd_timeout_func(unsigned long function_context)  		return;  	}  	cmd_node = adapter->curr_cmd; -	if (cmd_node->wait_q_enabled) -		adapter->cmd_wait_q.status = -ETIMEDOUT; -  	if (cmd_node) {  		adapter->dbg.timeout_cmd_id =  			adapter->dbg.last_cmd_id[adapter->dbg.last_cmd_index]; @@ -938,6 +935,14 @@ mwifiex_cmd_timeout_func(unsigned long function_context)  		dev_err(adapter->dev, "ps_mode=%d ps_state=%d\n",  			adapter->ps_mode, adapter->ps_state); + +		if (cmd_node->wait_q_enabled) { +			adapter->cmd_wait_q.status = -ETIMEDOUT; +			wake_up_interruptible(&adapter->cmd_wait_q.wait); +			mwifiex_cancel_pending_ioctl(adapter); +			/* reset cmd_sent flag to unblock new commands */ +			adapter->cmd_sent = false; +		}  	}  	if (adapter->hw_status == MWIFIEX_HW_STATUS_INITIALIZING)  		mwifiex_init_fw_complete(adapter); diff --git a/drivers/net/wireless/mwifiex/sdio.c b/drivers/net/wireless/mwifiex/sdio.c index fc8a9bfa124..82cf0fa2d9f 100644 --- a/drivers/net/wireless/mwifiex/sdio.c +++ b/drivers/net/wireless/mwifiex/sdio.c @@ -161,7 +161,6 @@ static int mwifiex_sdio_suspend(struct device *dev)  	struct sdio_mmc_card *card;  	struct mwifiex_adapter *adapter;  	mmc_pm_flag_t pm_flag = 0; -	int hs_actived = 0;  	int i;  	int ret = 0; @@ -188,12 +187,14 @@ static int mwifiex_sdio_suspend(struct device *dev)  	adapter = card->adapter;  	/* Enable the Host Sleep */ -	hs_actived = mwifiex_enable_hs(adapter); -	if (hs_actived) { -		pr_debug("cmd: suspend with MMC_PM_KEEP_POWER\n"); -		ret = sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER); +	if (!mwifiex_enable_hs(adapter)) { +		dev_err(adapter->dev, "cmd: failed to suspend\n"); +		return -EFAULT;  	} +	dev_dbg(adapter->dev, "cmd: suspend with MMC_PM_KEEP_POWER\n"); +	ret = sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER); +  	/* Indicate device suspended */  	adapter->is_suspended = true; diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c index 9970c2b1b19..b7e6607e6b6 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c @@ -297,6 +297,7 @@ static struct usb_device_id rtl8192c_usb_ids[] = {  	/*=== Customer ID ===*/  	/****** 8188CU ********/  	{RTL_USB_DEVICE(0x050d, 0x1102, rtl92cu_hal_cfg)}, /*Belkin - Edimax*/ +	{RTL_USB_DEVICE(0x050d, 0x11f2, rtl92cu_hal_cfg)}, /*Belkin - ISY*/  	{RTL_USB_DEVICE(0x06f8, 0xe033, rtl92cu_hal_cfg)}, /*Hercules - Edimax*/  	{RTL_USB_DEVICE(0x07b8, 0x8188, rtl92cu_hal_cfg)}, /*Abocom - Abocom*/  	{RTL_USB_DEVICE(0x07b8, 0x8189, rtl92cu_hal_cfg)}, /*Funai - Abocom*/  |