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

Commit 64e57519 authored by John W. Linville's avatar John W. Linville
Browse files

Merge branch 'master' of...

Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
parents b50b72de 69a2bac8
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -280,6 +280,10 @@ static int ath_reset_internal(struct ath_softc *sc, struct ath9k_channel *hchan)
	if (r) {
	if (r) {
		ath_err(common,
		ath_err(common,
			"Unable to reset channel, reset status %d\n", r);
			"Unable to reset channel, reset status %d\n", r);

		ath9k_hw_enable_interrupts(ah);
		ath9k_queue_reset(sc, RESET_TYPE_BB_HANG);

		goto out;
		goto out;
	}
	}


+3 −3
Original line number Original line Diff line number Diff line
@@ -3317,15 +3317,15 @@ static int _brcmf_sdbrcm_download_firmware(struct brcmf_sdio *bus)
		goto err;
		goto err;
	}
	}


	/* External image takes precedence if specified */
	if (brcmf_sdbrcm_download_code_file(bus)) {
	if (brcmf_sdbrcm_download_code_file(bus)) {
		brcmf_err("dongle image file download failed\n");
		brcmf_err("dongle image file download failed\n");
		goto err;
		goto err;
	}
	}


	/* External nvram takes precedence if specified */
	if (brcmf_sdbrcm_download_nvram(bus)) {
	if (brcmf_sdbrcm_download_nvram(bus))
		brcmf_err("dongle nvram file download failed\n");
		brcmf_err("dongle nvram file download failed\n");
		goto err;
	}


	/* Take arm out of reset */
	/* Take arm out of reset */
	if (brcmf_sdbrcm_download_state(bus, false)) {
	if (brcmf_sdbrcm_download_state(bus, false)) {
+25 −21
Original line number Original line Diff line number Diff line
@@ -1891,8 +1891,10 @@ static s32
brcmf_add_keyext(struct wiphy *wiphy, struct net_device *ndev,
brcmf_add_keyext(struct wiphy *wiphy, struct net_device *ndev,
	      u8 key_idx, const u8 *mac_addr, struct key_params *params)
	      u8 key_idx, const u8 *mac_addr, struct key_params *params)
{
{
	struct brcmf_if *ifp = netdev_priv(ndev);
	struct brcmf_wsec_key key;
	struct brcmf_wsec_key key;
	s32 err = 0;
	s32 err = 0;
	u8 keybuf[8];


	memset(&key, 0, sizeof(key));
	memset(&key, 0, sizeof(key));
	key.index = (u32) key_idx;
	key.index = (u32) key_idx;
@@ -1916,8 +1918,9 @@ brcmf_add_keyext(struct wiphy *wiphy, struct net_device *ndev,
		brcmf_dbg(CONN, "Setting the key index %d\n", key.index);
		brcmf_dbg(CONN, "Setting the key index %d\n", key.index);
		memcpy(key.data, params->key, key.len);
		memcpy(key.data, params->key, key.len);


		if (params->cipher == WLAN_CIPHER_SUITE_TKIP) {
		if ((ifp->vif->mode != WL_MODE_AP) &&
			u8 keybuf[8];
		    (params->cipher == WLAN_CIPHER_SUITE_TKIP)) {
			brcmf_dbg(CONN, "Swapping RX/TX MIC key\n");
			memcpy(keybuf, &key.data[24], sizeof(keybuf));
			memcpy(keybuf, &key.data[24], sizeof(keybuf));
			memcpy(&key.data[24], &key.data[16], sizeof(keybuf));
			memcpy(&key.data[24], &key.data[16], sizeof(keybuf));
			memcpy(&key.data[16], keybuf, sizeof(keybuf));
			memcpy(&key.data[16], keybuf, sizeof(keybuf));
@@ -2013,7 +2016,7 @@ brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
		break;
		break;
	case WLAN_CIPHER_SUITE_TKIP:
	case WLAN_CIPHER_SUITE_TKIP:
		if (ifp->vif->mode != WL_MODE_AP) {
		if (ifp->vif->mode != WL_MODE_AP) {
			brcmf_dbg(CONN, "Swapping key\n");
			brcmf_dbg(CONN, "Swapping RX/TX MIC key\n");
			memcpy(keybuf, &key.data[24], sizeof(keybuf));
			memcpy(keybuf, &key.data[24], sizeof(keybuf));
			memcpy(&key.data[24], &key.data[16], sizeof(keybuf));
			memcpy(&key.data[24], &key.data[16], sizeof(keybuf));
			memcpy(&key.data[16], keybuf, sizeof(keybuf));
			memcpy(&key.data[16], keybuf, sizeof(keybuf));
@@ -2118,8 +2121,7 @@ brcmf_cfg80211_get_key(struct wiphy *wiphy, struct net_device *ndev,
		err = -EAGAIN;
		err = -EAGAIN;
		goto done;
		goto done;
	}
	}
	switch (wsec & ~SES_OW_ENABLED) {
	if (wsec & WEP_ENABLED) {
	case WEP_ENABLED:
		sec = &profile->sec;
		sec = &profile->sec;
		if (sec->cipher_pairwise & WLAN_CIPHER_SUITE_WEP40) {
		if (sec->cipher_pairwise & WLAN_CIPHER_SUITE_WEP40) {
			params.cipher = WLAN_CIPHER_SUITE_WEP40;
			params.cipher = WLAN_CIPHER_SUITE_WEP40;
@@ -2128,16 +2130,13 @@ brcmf_cfg80211_get_key(struct wiphy *wiphy, struct net_device *ndev,
			params.cipher = WLAN_CIPHER_SUITE_WEP104;
			params.cipher = WLAN_CIPHER_SUITE_WEP104;
			brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_WEP104\n");
			brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_WEP104\n");
		}
		}
		break;
	} else if (wsec & TKIP_ENABLED) {
	case TKIP_ENABLED:
		params.cipher = WLAN_CIPHER_SUITE_TKIP;
		params.cipher = WLAN_CIPHER_SUITE_TKIP;
		brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_TKIP\n");
		brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_TKIP\n");
		break;
	} else if (wsec & AES_ENABLED) {
	case AES_ENABLED:
		params.cipher = WLAN_CIPHER_SUITE_AES_CMAC;
		params.cipher = WLAN_CIPHER_SUITE_AES_CMAC;
		brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_AES_CMAC\n");
		brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_AES_CMAC\n");
		break;
	} else  {
	default:
		brcmf_err("Invalid algo (0x%x)\n", wsec);
		brcmf_err("Invalid algo (0x%x)\n", wsec);
		err = -EINVAL;
		err = -EINVAL;
		goto done;
		goto done;
@@ -3824,8 +3823,9 @@ exit:
static int brcmf_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev)
static int brcmf_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev)
{
{
	struct brcmf_if *ifp = netdev_priv(ndev);
	struct brcmf_if *ifp = netdev_priv(ndev);
	s32 err = -EPERM;
	s32 err;
	struct brcmf_fil_bss_enable_le bss_enable;
	struct brcmf_fil_bss_enable_le bss_enable;
	struct brcmf_join_params join_params;


	brcmf_dbg(TRACE, "Enter\n");
	brcmf_dbg(TRACE, "Enter\n");


@@ -3833,16 +3833,21 @@ static int brcmf_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev)
		/* Due to most likely deauths outstanding we sleep */
		/* Due to most likely deauths outstanding we sleep */
		/* first to make sure they get processed by fw. */
		/* first to make sure they get processed by fw. */
		msleep(400);
		msleep(400);
		err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 0);

		if (err < 0) {
		memset(&join_params, 0, sizeof(join_params));
			brcmf_err("setting AP mode failed %d\n", err);
		err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_SSID,
			goto exit;
					     &join_params, sizeof(join_params));
		}
		if (err < 0)
			brcmf_err("SET SSID error (%d)\n", err);
		err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_UP, 0);
		err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_UP, 0);
		if (err < 0) {
		if (err < 0)
			brcmf_err("BRCMF_C_UP error %d\n", err);
			brcmf_err("BRCMF_C_UP error %d\n", err);
			goto exit;
		err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 0);
		}
		if (err < 0)
			brcmf_err("setting AP mode failed %d\n", err);
		err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_INFRA, 0);
		if (err < 0)
			brcmf_err("setting INFRA mode failed %d\n", err);
	} else {
	} else {
		bss_enable.bsscfg_idx = cpu_to_le32(ifp->bssidx);
		bss_enable.bsscfg_idx = cpu_to_le32(ifp->bssidx);
		bss_enable.enable = cpu_to_le32(0);
		bss_enable.enable = cpu_to_le32(0);
@@ -3855,7 +3860,6 @@ static int brcmf_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev)
	set_bit(BRCMF_VIF_STATUS_AP_CREATING, &ifp->vif->sme_state);
	set_bit(BRCMF_VIF_STATUS_AP_CREATING, &ifp->vif->sme_state);
	clear_bit(BRCMF_VIF_STATUS_AP_CREATED, &ifp->vif->sme_state);
	clear_bit(BRCMF_VIF_STATUS_AP_CREATED, &ifp->vif->sme_state);


exit:
	return err;
	return err;
}
}


+9 −2
Original line number Original line Diff line number Diff line
@@ -1393,8 +1393,10 @@ int mwifiex_scan_networks(struct mwifiex_private *priv,
			queue_work(adapter->workqueue, &adapter->main_work);
			queue_work(adapter->workqueue, &adapter->main_work);


			/* Perform internal scan synchronously */
			/* Perform internal scan synchronously */
			if (!priv->scan_request)
			if (!priv->scan_request) {
				dev_dbg(adapter->dev, "wait internal scan\n");
				mwifiex_wait_queue_complete(adapter, cmd_node);
				mwifiex_wait_queue_complete(adapter, cmd_node);
			}
		} else {
		} else {
			spin_unlock_irqrestore(&adapter->scan_pending_q_lock,
			spin_unlock_irqrestore(&adapter->scan_pending_q_lock,
					       flags);
					       flags);
@@ -1793,7 +1795,12 @@ check_next_scan:
		/* Need to indicate IOCTL complete */
		/* Need to indicate IOCTL complete */
		if (adapter->curr_cmd->wait_q_enabled) {
		if (adapter->curr_cmd->wait_q_enabled) {
			adapter->cmd_wait_q.status = 0;
			adapter->cmd_wait_q.status = 0;
			mwifiex_complete_cmd(adapter, adapter->curr_cmd);
			if (!priv->scan_request) {
				dev_dbg(adapter->dev,
					"complete internal scan\n");
				mwifiex_complete_cmd(adapter,
						     adapter->curr_cmd);
			}
		}
		}
		if (priv->report_scan_result)
		if (priv->report_scan_result)
			priv->report_scan_result = false;
			priv->report_scan_result = false;
+7 −0
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ if RT2X00
config RT2400PCI
config RT2400PCI
	tristate "Ralink rt2400 (PCI/PCMCIA) support"
	tristate "Ralink rt2400 (PCI/PCMCIA) support"
	depends on PCI
	depends on PCI
	select RT2X00_LIB_MMIO
	select RT2X00_LIB_PCI
	select RT2X00_LIB_PCI
	select EEPROM_93CX6
	select EEPROM_93CX6
	---help---
	---help---
@@ -31,6 +32,7 @@ config RT2400PCI
config RT2500PCI
config RT2500PCI
	tristate "Ralink rt2500 (PCI/PCMCIA) support"
	tristate "Ralink rt2500 (PCI/PCMCIA) support"
	depends on PCI
	depends on PCI
	select RT2X00_LIB_MMIO
	select RT2X00_LIB_PCI
	select RT2X00_LIB_PCI
	select EEPROM_93CX6
	select EEPROM_93CX6
	---help---
	---help---
@@ -43,6 +45,7 @@ config RT61PCI
	tristate "Ralink rt2501/rt61 (PCI/PCMCIA) support"
	tristate "Ralink rt2501/rt61 (PCI/PCMCIA) support"
	depends on PCI
	depends on PCI
	select RT2X00_LIB_PCI
	select RT2X00_LIB_PCI
	select RT2X00_LIB_MMIO
	select RT2X00_LIB_FIRMWARE
	select RT2X00_LIB_FIRMWARE
	select RT2X00_LIB_CRYPTO
	select RT2X00_LIB_CRYPTO
	select CRC_ITU_T
	select CRC_ITU_T
@@ -57,6 +60,7 @@ config RT2800PCI
	tristate "Ralink rt27xx/rt28xx/rt30xx (PCI/PCIe/PCMCIA) support"
	tristate "Ralink rt27xx/rt28xx/rt30xx (PCI/PCIe/PCMCIA) support"
	depends on PCI || SOC_RT288X || SOC_RT305X
	depends on PCI || SOC_RT288X || SOC_RT305X
	select RT2800_LIB
	select RT2800_LIB
	select RT2X00_LIB_MMIO
	select RT2X00_LIB_PCI if PCI
	select RT2X00_LIB_PCI if PCI
	select RT2X00_LIB_SOC if SOC_RT288X || SOC_RT305X
	select RT2X00_LIB_SOC if SOC_RT288X || SOC_RT305X
	select RT2X00_LIB_FIRMWARE
	select RT2X00_LIB_FIRMWARE
@@ -185,6 +189,9 @@ endif
config RT2800_LIB
config RT2800_LIB
	tristate
	tristate


config RT2X00_LIB_MMIO
	tristate

config RT2X00_LIB_PCI
config RT2X00_LIB_PCI
	tristate
	tristate
	select RT2X00_LIB
	select RT2X00_LIB
Loading