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

Commit 202630b4 authored by David S. Miller's avatar David S. Miller
Browse files


John W. Linville says:

====================
pull request: wireless 2014-05-15

Please pull this batch of fixes for the 3.15 stream...

For the mac80211 bits, Johannes says:

"One fix is to get better VHT performance and the other fixes tracing
garbage or other potential issues with the interface name tracing."

And...

"This has a fix from Emmanuel for a problem I failed to fix - when
association is in progress then it needs to be cancelled while
suspending (I had fixed the same for authentication). Also included a
fix from myself for a userspace API problem that hit the iw tool and a
fix to the remain-on-channel framework."

For the iwlwifi bits, Emmanuel says:

"Alex fixes the scan by disabling the fragmented scan. David prevents
scan offload while associated, the firmware seems not to like it. I
fix a stupid bug I made in BT Coex, and fix a bad #ifdef clause in rate
scaling.  Along with that there is a fix for a NULL pointer exception
that can happen if we load the driver and our ISR gets called because
the interrupt line is shared. The fix has been tested by the reporter."

And...

"We have here a fix from David Spinadel that makes a previous fix more
complete, and an off-by-one issue fixed by Eliad in the same area.
I fix the monitor that broke on the way."

Beyond that...

Daniel Kim's one-liner fixes a brcmfmac regression caused by a typo
in an earlier commit..

Rajkumar Manoharan fixes an ath9k oops reported by David Herrmann.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents fde0133b 025a58fd
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -95,8 +95,10 @@ static void ath9k_htc_vif_iter(void *data, u8 *mac, struct ieee80211_vif *vif)


	if ((vif->type == NL80211_IFTYPE_AP ||
	if ((vif->type == NL80211_IFTYPE_AP ||
	     vif->type == NL80211_IFTYPE_MESH_POINT) &&
	     vif->type == NL80211_IFTYPE_MESH_POINT) &&
	    bss_conf->enable_beacon)
	    bss_conf->enable_beacon) {
		priv->reconfig_beacon = true;
		priv->reconfig_beacon = true;
		priv->rearm_ani = true;
	}


	if (bss_conf->assoc) {
	if (bss_conf->assoc) {
		priv->rearm_ani = true;
		priv->rearm_ani = true;
@@ -257,6 +259,7 @@ static int ath9k_htc_set_channel(struct ath9k_htc_priv *priv,


	ath9k_htc_ps_wakeup(priv);
	ath9k_htc_ps_wakeup(priv);


	ath9k_htc_stop_ani(priv);
	del_timer_sync(&priv->tx.cleanup_timer);
	del_timer_sync(&priv->tx.cleanup_timer);
	ath9k_htc_tx_drain(priv);
	ath9k_htc_tx_drain(priv);


+1 −1
Original line number Original line Diff line number Diff line
@@ -4948,7 +4948,7 @@ static int brcmf_enable_bw40_2g(struct brcmf_if *ifp)
	if (!err) {
	if (!err) {
		/* only set 2G bandwidth using bw_cap command */
		/* only set 2G bandwidth using bw_cap command */
		band_bwcap.band = cpu_to_le32(WLC_BAND_2G);
		band_bwcap.band = cpu_to_le32(WLC_BAND_2G);
		band_bwcap.bw_cap = cpu_to_le32(WLC_BW_40MHZ_BIT);
		band_bwcap.bw_cap = cpu_to_le32(WLC_BW_CAP_40MHZ);
		err = brcmf_fil_iovar_data_set(ifp, "bw_cap", &band_bwcap,
		err = brcmf_fil_iovar_data_set(ifp, "bw_cap", &band_bwcap,
					       sizeof(band_bwcap));
					       sizeof(band_bwcap));
	} else {
	} else {
+3 −3
Original line number Original line Diff line number Diff line
@@ -611,14 +611,14 @@ int iwl_send_bt_init_conf(struct iwl_mvm *mvm)
		bt_cmd->flags |= cpu_to_le32(BT_COEX_SYNC2SCO);
		bt_cmd->flags |= cpu_to_le32(BT_COEX_SYNC2SCO);


	if (IWL_MVM_BT_COEX_CORUNNING) {
	if (IWL_MVM_BT_COEX_CORUNNING) {
		bt_cmd->valid_bit_msk = cpu_to_le32(BT_VALID_CORUN_LUT_20 |
		bt_cmd->valid_bit_msk |= cpu_to_le32(BT_VALID_CORUN_LUT_20 |
						     BT_VALID_CORUN_LUT_40);
						     BT_VALID_CORUN_LUT_40);
		bt_cmd->flags |= cpu_to_le32(BT_COEX_CORUNNING);
		bt_cmd->flags |= cpu_to_le32(BT_COEX_CORUNNING);
	}
	}


	if (IWL_MVM_BT_COEX_MPLUT) {
	if (IWL_MVM_BT_COEX_MPLUT) {
		bt_cmd->flags |= cpu_to_le32(BT_COEX_MPLUT);
		bt_cmd->flags |= cpu_to_le32(BT_COEX_MPLUT);
		bt_cmd->valid_bit_msk = cpu_to_le32(BT_VALID_MULTI_PRIO_LUT);
		bt_cmd->valid_bit_msk |= cpu_to_le32(BT_VALID_MULTI_PRIO_LUT);
	}
	}


	if (mvm->cfg->bt_shared_single_ant)
	if (mvm->cfg->bt_shared_single_ant)
+4 −4
Original line number Original line Diff line number Diff line
@@ -183,9 +183,9 @@ enum iwl_scan_type {
 *	this number of packets were received (typically 1)
 *	this number of packets were received (typically 1)
 * @passive2active: is auto switching from passive to active during scan allowed
 * @passive2active: is auto switching from passive to active during scan allowed
 * @rxchain_sel_flags: RXON_RX_CHAIN_*
 * @rxchain_sel_flags: RXON_RX_CHAIN_*
 * @max_out_time: in usecs, max out of serving channel time
 * @max_out_time: in TUs, max out of serving channel time
 * @suspend_time: how long to pause scan when returning to service channel:
 * @suspend_time: how long to pause scan when returning to service channel:
 *	bits 0-19: beacon interal in usecs (suspend before executing)
 *	bits 0-19: beacon interal in TUs (suspend before executing)
 *	bits 20-23: reserved
 *	bits 20-23: reserved
 *	bits 24-31: number of beacons (suspend between channels)
 *	bits 24-31: number of beacons (suspend between channels)
 * @rxon_flags: RXON_FLG_*
 * @rxon_flags: RXON_FLG_*
@@ -383,8 +383,8 @@ enum scan_framework_client {
 * @quiet_plcp_th:	quiet channel num of packets threshold
 * @quiet_plcp_th:	quiet channel num of packets threshold
 * @good_CRC_th:	passive to active promotion threshold
 * @good_CRC_th:	passive to active promotion threshold
 * @rx_chain:		RXON rx chain.
 * @rx_chain:		RXON rx chain.
 * @max_out_time:	max uSec to be out of assoceated channel
 * @max_out_time:	max TUs to be out of assoceated channel
 * @suspend_time:	pause scan this long when returning to service channel
 * @suspend_time:	pause scan this TUs when returning to service channel
 * @flags:		RXON flags
 * @flags:		RXON flags
 * @filter_flags:	RXONfilter
 * @filter_flags:	RXONfilter
 * @tx_cmd:		tx command for active scan; for 2GHz and for 5GHz.
 * @tx_cmd:		tx command for active scan; for 2GHz and for 5GHz.
+7 −2
Original line number Original line Diff line number Diff line
@@ -1007,7 +1007,7 @@ static void iwl_mvm_mc_iface_iterator(void *_data, u8 *mac,
	memcpy(cmd->bssid, vif->bss_conf.bssid, ETH_ALEN);
	memcpy(cmd->bssid, vif->bss_conf.bssid, ETH_ALEN);
	len = roundup(sizeof(*cmd) + cmd->count * ETH_ALEN, 4);
	len = roundup(sizeof(*cmd) + cmd->count * ETH_ALEN, 4);


	ret = iwl_mvm_send_cmd_pdu(mvm, MCAST_FILTER_CMD, CMD_SYNC, len, cmd);
	ret = iwl_mvm_send_cmd_pdu(mvm, MCAST_FILTER_CMD, CMD_ASYNC, len, cmd);
	if (ret)
	if (ret)
		IWL_ERR(mvm, "mcast filter cmd error. ret=%d\n", ret);
		IWL_ERR(mvm, "mcast filter cmd error. ret=%d\n", ret);
}
}
@@ -1023,7 +1023,7 @@ static void iwl_mvm_recalc_multicast(struct iwl_mvm *mvm)
	if (WARN_ON_ONCE(!mvm->mcast_filter_cmd))
	if (WARN_ON_ONCE(!mvm->mcast_filter_cmd))
		return;
		return;


	ieee80211_iterate_active_interfaces(
	ieee80211_iterate_active_interfaces_atomic(
		mvm->hw, IEEE80211_IFACE_ITER_NORMAL,
		mvm->hw, IEEE80211_IFACE_ITER_NORMAL,
		iwl_mvm_mc_iface_iterator, &iter_data);
		iwl_mvm_mc_iface_iterator, &iter_data);
}
}
@@ -1807,6 +1807,11 @@ static int iwl_mvm_mac_sched_scan_start(struct ieee80211_hw *hw,


	mutex_lock(&mvm->mutex);
	mutex_lock(&mvm->mutex);


	if (!iwl_mvm_is_idle(mvm)) {
		ret = -EBUSY;
		goto out;
	}

	switch (mvm->scan_status) {
	switch (mvm->scan_status) {
	case IWL_MVM_SCAN_OS:
	case IWL_MVM_SCAN_OS:
		IWL_DEBUG_SCAN(mvm, "Stopping previous scan for sched_scan\n");
		IWL_DEBUG_SCAN(mvm, "Stopping previous scan for sched_scan\n");
Loading