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

Merge tag 'wireless-drivers-for-davem-2018-12-19' of...

Merge tag 'wireless-drivers-for-davem-2018-12-19' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers



Kalle Valo says:

====================
wireless-drivers fixes for 4.20

Last set of fixes for 4.20. All (except the mt76 fix) of these are
important fixes to user reported problems and pretty small in size.

rtlwifi

* fix skb leak

mwifiex

* revert a commit from v4.19 due to problems with locking

mt76

* fix a potential NULL derenfence

* add entry to MAINTAINERS

iwlwifi

* fix a firmware crash which was a regression introduced in v4.20-rc4

ath10k

* fix a firmware crash with wcn3990 firmware
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 49ce708b 53884577
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -9443,6 +9443,13 @@ F: drivers/media/platform/mtk-vpu/
F:	Documentation/devicetree/bindings/media/mediatek-vcodec.txt
F:	Documentation/devicetree/bindings/media/mediatek-vpu.txt

MEDIATEK MT76 WIRELESS LAN DRIVER
M:	Felix Fietkau <nbd@nbd.name>
M:	Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
L:	linux-wireless@vger.kernel.org
S:	Maintained
F:	drivers/net/wireless/mediatek/mt76/

MEDIATEK MT7601U WIRELESS LAN DRIVER
M:	Jakub Kicinski <kubakici@wp.pl>
L:	linux-wireless@vger.kernel.org
+28 −0
Original line number Diff line number Diff line
@@ -2418,6 +2418,28 @@ static int ath10k_core_reset_rx_filter(struct ath10k *ar)
	return 0;
}

static int ath10k_core_compat_services(struct ath10k *ar)
{
	struct ath10k_fw_file *fw_file = &ar->normal_mode_fw.fw_file;

	/* all 10.x firmware versions support thermal throttling but don't
	 * advertise the support via service flags so we have to hardcode
	 * it here
	 */
	switch (fw_file->wmi_op_version) {
	case ATH10K_FW_WMI_OP_VERSION_10_1:
	case ATH10K_FW_WMI_OP_VERSION_10_2:
	case ATH10K_FW_WMI_OP_VERSION_10_2_4:
	case ATH10K_FW_WMI_OP_VERSION_10_4:
		set_bit(WMI_SERVICE_THERM_THROT, ar->wmi.svc_map);
		break;
	default:
		break;
	}

	return 0;
}

int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode,
		      const struct ath10k_fw_components *fw)
{
@@ -2617,6 +2639,12 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode,
		goto err_hif_stop;
	}

	status = ath10k_core_compat_services(ar);
	if (status) {
		ath10k_err(ar, "compat services failed: %d\n", status);
		goto err_hif_stop;
	}

	/* Some firmware revisions do not properly set up hardware rx filter
	 * registers.
	 *
+3 −2
Original line number Diff line number Diff line
@@ -2578,6 +2578,7 @@ int ath10k_debug_register(struct ath10k *ar)
	debugfs_create_file("pktlog_filter", 0644, ar->debug.debugfs_phy, ar,
			    &fops_pktlog_filter);

	if (test_bit(WMI_SERVICE_THERM_THROT, ar->wmi.svc_map))
		debugfs_create_file("quiet_period", 0644, ar->debug.debugfs_phy, ar,
				    &fops_quiet_period);

+9 −0
Original line number Diff line number Diff line
@@ -140,6 +140,9 @@ void ath10k_thermal_set_throttling(struct ath10k *ar)

	lockdep_assert_held(&ar->conf_mutex);

	if (!test_bit(WMI_SERVICE_THERM_THROT, ar->wmi.svc_map))
		return;

	if (!ar->wmi.ops->gen_pdev_set_quiet_mode)
		return;

@@ -165,6 +168,9 @@ int ath10k_thermal_register(struct ath10k *ar)
	struct device *hwmon_dev;
	int ret;

	if (!test_bit(WMI_SERVICE_THERM_THROT, ar->wmi.svc_map))
		return 0;

	cdev = thermal_cooling_device_register("ath10k_thermal", ar,
					       &ath10k_thermal_ops);

@@ -216,6 +222,9 @@ err_cooling_destroy:

void ath10k_thermal_unregister(struct ath10k *ar)
{
	if (!test_bit(WMI_SERVICE_THERM_THROT, ar->wmi.svc_map))
		return;

	sysfs_remove_link(&ar->dev->kobj, "cooling_device");
	thermal_cooling_device_unregister(ar->thermal.cdev);
}
+3 −0
Original line number Diff line number Diff line
@@ -1564,6 +1564,9 @@ wmi_tlv_svc_map_ext(const __le32 *in, unsigned long *out, size_t len)
	SVCMAP(WMI_TLV_SERVICE_SPOOF_MAC_SUPPORT,
	       WMI_SERVICE_SPOOF_MAC_SUPPORT,
	       WMI_TLV_MAX_SERVICE);
	SVCMAP(WMI_TLV_SERVICE_THERM_THROT,
	       WMI_SERVICE_THERM_THROT,
	       WMI_TLV_MAX_SERVICE);
}

#undef SVCMAP
Loading