Commit 50bef719 authored by David S. Miller's avatar David S. Miller
Browse files

Merge tag 'wireless-drivers-next-2019-11-15' of...

Merge tag 'wireless-drivers-next-2019-11-15' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next



Kalle Valo says:

====================
wireless-drivers-next patches for v5.5

Second set of patches for v5.5. Nothing special this time, smaller
features to various drivers and of course fixes all over.

Major changes:

iwlwifi

* update scan FW API

* bump the supported FW API version

* add debug dump collection on assert in WoWLAN

* enable adaptive dwell on P2P interfaces

ath10k

* request for PM_QOS_CPU_DMA_LATENCY to improve firmware initialisation time

qtnfmac

* add support for getting/setting transmit power

* handle MIC failure event from firmware

rtl8xxxu

* add support for Edimax EW-7611ULB

wil6210

* add SPDX license identifiers
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents df98be06 4f5969c3
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
#include <linux/property.h>
#include <linux/dmi.h>
#include <linux/ctype.h>
#include <linux/pm_qos.h>
#include <asm/byteorder.h>

#include "core.h"
@@ -1027,6 +1028,7 @@ static int ath10k_download_fw(struct ath10k *ar)
	u32 address, data_len;
	const void *data;
	int ret;
	struct pm_qos_request latency_qos;

	address = ar->hw_params.patch_load_addr;

@@ -1060,8 +1062,14 @@ static int ath10k_download_fw(struct ath10k *ar)
			    ret);
	}

	return ath10k_bmi_fast_download(ar, address,
					data, data_len);
	memset(&latency_qos, 0, sizeof(latency_qos));
	pm_qos_add_request(&latency_qos, PM_QOS_CPU_DMA_LATENCY, 0);

	ret = ath10k_bmi_fast_download(ar, address, data, data_len);

	pm_qos_remove_request(&latency_qos);

	return ret;
}

void ath10k_core_free_board_files(struct ath10k *ar)
+2 −1
Original line number Diff line number Diff line
@@ -1516,7 +1516,7 @@ static void ath10k_tpc_stats_print(struct ath10k_tpc_stats *tpc_stats,
	*len += scnprintf(buf + *len, buf_len - *len,
			  "No.  Preamble Rate_code ");

	for (i = 0; i < WMI_TPC_TX_N_CHAIN; i++)
	for (i = 0; i < tpc_stats->num_tx_chain; i++)
		*len += scnprintf(buf + *len, buf_len - *len,
				  "tpc_value%d ", i);

@@ -2532,6 +2532,7 @@ void ath10k_debug_destroy(struct ath10k *ar)
	ath10k_debug_fw_stats_reset(ar);

	kfree(ar->debug.tpc_stats);
	kfree(ar->debug.tpc_stats_final);
}

int ath10k_debug_register(struct ath10k *ar)
+1 −1
Original line number Diff line number Diff line
@@ -2073,7 +2073,7 @@ static void ath10k_htt_rx_mpdu_desc_pn_hl(struct htt_hl_rx_desc *rx_desc,
	case 24:
		pn->pn24 = __le32_to_cpu(rx_desc->pn_31_0);
		break;
	};
	}
}

static bool ath10k_htt_rx_pn_cmp48(union htt_rx_pn_t *new_pn,
+1 −0
Original line number Diff line number Diff line
@@ -1148,6 +1148,7 @@ static bool ath10k_qca99x0_rx_desc_msdu_limit_error(struct htt_rx_desc *rxd)
const struct ath10k_hw_ops qca99x0_ops = {
	.rx_desc_get_l3_pad_bytes = ath10k_qca99x0_rx_desc_get_l3_pad_bytes,
	.rx_desc_get_msdu_limit_error = ath10k_qca99x0_rx_desc_msdu_limit_error,
	.is_rssi_enable = ath10k_htt_tx_rssi_enable,
};

const struct ath10k_hw_ops qca6174_ops = {
+5 −6
Original line number Diff line number Diff line
@@ -3904,8 +3904,10 @@ void ath10k_mgmt_over_wmi_tx_work(struct work_struct *work)
			     ar->running_fw->fw_file.fw_features)) {
			paddr = dma_map_single(ar->dev, skb->data,
					       skb->len, DMA_TO_DEVICE);
			if (!paddr)
			if (dma_mapping_error(ar->dev, paddr)) {
				ieee80211_free_txskb(ar->hw, skb);
				continue;
			}
			ret = ath10k_wmi_mgmt_tx_send(ar, skb, paddr);
			if (ret) {
				ath10k_warn(ar, "failed to transmit management frame by ref via WMI: %d\n",
@@ -6602,6 +6604,7 @@ static int ath10k_sta_state(struct ieee80211_hw *hw,
			arsta->tx_stats = kzalloc(sizeof(*arsta->tx_stats),
						  GFP_KERNEL);
			if (!arsta->tx_stats) {
				ath10k_mac_dec_num_stations(arvif, sta);
				ret = -ENOMEM;
				goto exit;
			}
@@ -6636,12 +6639,8 @@ static int ath10k_sta_state(struct ieee80211_hw *hw,

		spin_unlock_bh(&ar->data_lock);

		if (!sta->tdls) {
			ath10k_peer_delete(ar, arvif->vdev_id, sta->addr);
			ath10k_mac_dec_num_stations(arvif, sta);
			kfree(arsta->tx_stats);
		if (!sta->tdls)
			goto exit;
		}

		ret = ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id,
						      WMI_TDLS_ENABLE_ACTIVE);
Loading