ath10k-ct: activate user space firmware loading again
This backports a patch from kernel 4.14 to the ath10k-ct version based on kernel 4.13. Some devices are using a user space script to load the calibration data from the flash and this was not trigged any more. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
		| @@ -17,7 +17,7 @@ | |||||||
|   |   | ||||||
|  	firmware = ar->normal_mode_fw.fw_file.firmware; |  	firmware = ar->normal_mode_fw.fw_file.firmware; | ||||||
|  	if (firmware) |  	if (firmware) | ||||||
| @@ -3413,7 +3413,7 @@ int ath10k_debug_register(struct ath10k | @@ -3422,7 +3422,7 @@ int ath10k_debug_register(struct ath10k | ||||||
|  	debugfs_create_file("nf_cal_period", S_IRUSR | S_IWUSR, |  	debugfs_create_file("nf_cal_period", S_IRUSR | S_IWUSR, | ||||||
|  			    ar->debug.debugfs_phy, ar, &fops_nf_cal_period); |  			    ar->debug.debugfs_phy, ar, &fops_nf_cal_period); | ||||||
|   |   | ||||||
| @@ -28,7 +28,7 @@ | |||||||
|  				    &fops_simulate_radar); |  				    &fops_simulate_radar); | ||||||
| --- a/ath10k/mac.c | --- a/ath10k/mac.c | ||||||
| +++ b/ath10k/mac.c | +++ b/ath10k/mac.c | ||||||
| @@ -3596,7 +3596,7 @@ static void ath10k_regd_update(struct at | @@ -3604,7 +3604,7 @@ static void ath10k_regd_update(struct at | ||||||
|   |   | ||||||
|  	regpair = ar->ath_common.regulatory.regpair; |  	regpair = ar->ath_common.regulatory.regpair; | ||||||
|   |   | ||||||
| @@ -37,7 +37,7 @@ | |||||||
|  		nl_dfs_reg = ar->dfs_detector->region; |  		nl_dfs_reg = ar->dfs_detector->region; | ||||||
|  		wmi_dfs_reg = ath10k_mac_get_dfs_region(nl_dfs_reg); |  		wmi_dfs_reg = ath10k_mac_get_dfs_region(nl_dfs_reg); | ||||||
|  		ath10k_dbg(ar, ATH10K_DBG_REGULATORY, |  		ath10k_dbg(ar, ATH10K_DBG_REGULATORY, | ||||||
| @@ -3630,7 +3630,7 @@ static void ath10k_reg_notifier(struct w | @@ -3638,7 +3638,7 @@ static void ath10k_reg_notifier(struct w | ||||||
|   |   | ||||||
|  	ath_reg_notifier_apply(wiphy, request, &ar->ath_common.regulatory); |  	ath_reg_notifier_apply(wiphy, request, &ar->ath_common.regulatory); | ||||||
|   |   | ||||||
| @@ -46,7 +46,7 @@ | |||||||
|  		ath10k_dbg(ar, ATH10K_DBG_REGULATORY, "reg-notifier: dfs region 0x%x\n", |  		ath10k_dbg(ar, ATH10K_DBG_REGULATORY, "reg-notifier: dfs region 0x%x\n", | ||||||
|  			   request->dfs_region); |  			   request->dfs_region); | ||||||
|  		result = ar->dfs_detector->set_dfs_domain(ar->dfs_detector, |  		result = ar->dfs_detector->set_dfs_domain(ar->dfs_detector, | ||||||
| @@ -8925,7 +8925,7 @@ int ath10k_mac_register(struct ath10k *a | @@ -8938,7 +8938,7 @@ int ath10k_mac_register(struct ath10k *a | ||||||
|  	if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags)) |  	if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags)) | ||||||
|  		ar->hw->netdev_features = NETIF_F_HW_CSUM; |  		ar->hw->netdev_features = NETIF_F_HW_CSUM; | ||||||
|   |   | ||||||
| @@ -55,7 +55,7 @@ | |||||||
|  		/* Init ath dfs pattern detector */ |  		/* Init ath dfs pattern detector */ | ||||||
|  		ar->ath_common.debug_mask = ATH_DBG_DFS; |  		ar->ath_common.debug_mask = ATH_DBG_DFS; | ||||||
|  		ar->dfs_detector = dfs_pattern_detector_init(&ar->ath_common, |  		ar->dfs_detector = dfs_pattern_detector_init(&ar->ath_common, | ||||||
| @@ -8970,7 +8970,7 @@ err_unregister: | @@ -8983,7 +8983,7 @@ err_unregister: | ||||||
|  	ieee80211_unregister_hw(ar->hw); |  	ieee80211_unregister_hw(ar->hw); | ||||||
|   |   | ||||||
|  err_dfs_detector_exit: |  err_dfs_detector_exit: | ||||||
| @@ -64,7 +64,7 @@ | |||||||
|  		ar->dfs_detector->exit(ar->dfs_detector); |  		ar->dfs_detector->exit(ar->dfs_detector); | ||||||
|   |   | ||||||
|  err_free: |  err_free: | ||||||
| @@ -8985,7 +8985,7 @@ void ath10k_mac_unregister(struct ath10k | @@ -8998,7 +8998,7 @@ void ath10k_mac_unregister(struct ath10k | ||||||
|  { |  { | ||||||
|  	ieee80211_unregister_hw(ar->hw); |  	ieee80211_unregister_hw(ar->hw); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/ath10k/htt_rx.c | --- a/ath10k/htt_rx.c | ||||||
| +++ b/ath10k/htt_rx.c | +++ b/ath10k/htt_rx.c | ||||||
| @@ -2497,7 +2497,7 @@ bool ath10k_htt_t2h_msg_handler(struct a | @@ -2514,7 +2514,7 @@ bool ath10k_htt_t2h_msg_handler(struct a | ||||||
|  		u32 freq = __le32_to_cpu(resp->chan_change.freq); |  		u32 freq = __le32_to_cpu(resp->chan_change.freq); | ||||||
|   |   | ||||||
|  		ar->tgt_oper_chan = |  		ar->tgt_oper_chan = | ||||||
|   | |||||||
| @@ -51,7 +51,7 @@ | |||||||
|  		break; |  		break; | ||||||
|  	default: |  	default: | ||||||
|  		break; |  		break; | ||||||
| @@ -883,13 +883,10 @@ static void ath10k_htt_rx_h_ppdu(struct | @@ -900,13 +900,10 @@ static void ath10k_htt_rx_h_ppdu(struct | ||||||
|  		/* New PPDU starts so clear out the old per-PPDU status. */ |  		/* New PPDU starts so clear out the old per-PPDU status. */ | ||||||
|  		status->freq = 0; |  		status->freq = 0; | ||||||
|  		status->rate_idx = 0; |  		status->rate_idx = 0; | ||||||
| @@ -69,7 +69,7 @@ | |||||||
|  		status->flag |= RX_FLAG_NO_SIGNAL_VAL; |  		status->flag |= RX_FLAG_NO_SIGNAL_VAL; | ||||||
|   |   | ||||||
|  		ath10k_htt_rx_h_signal(ar, status, rxd); |  		ath10k_htt_rx_h_signal(ar, status, rxd); | ||||||
| @@ -942,7 +939,7 @@ static void ath10k_process_rx(struct ath | @@ -959,7 +956,7 @@ static void ath10k_process_rx(struct ath | ||||||
|  	*status = *rx_status; |  	*status = *rx_status; | ||||||
|   |   | ||||||
|  	ath10k_dbg(ar, ATH10K_DBG_DATA, |  	ath10k_dbg(ar, ATH10K_DBG_DATA, | ||||||
| @@ -78,7 +78,7 @@ | |||||||
|  		   skb, |  		   skb, | ||||||
|  		   skb->len, |  		   skb->len, | ||||||
|  		   ieee80211_get_SA(hdr), |  		   ieee80211_get_SA(hdr), | ||||||
| @@ -950,15 +947,15 @@ static void ath10k_process_rx(struct ath | @@ -967,15 +964,15 @@ static void ath10k_process_rx(struct ath | ||||||
|  		   is_multicast_ether_addr(ieee80211_get_DA(hdr)) ? |  		   is_multicast_ether_addr(ieee80211_get_DA(hdr)) ? | ||||||
|  							"mcast" : "ucast", |  							"mcast" : "ucast", | ||||||
|  		   (__le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_SEQ) >> 4, |  		   (__le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_SEQ) >> 4, | ||||||
|   | |||||||
| @@ -0,0 +1,36 @@ | |||||||
|  | From c0cc00f250e19c717fc9cdbdb7f55aaa569c7498 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Hauke Mehrtens <hauke@hauke-m.de> | ||||||
|  | Date: Thu, 24 Aug 2017 23:06:41 +0200 | ||||||
|  | Subject: [PATCH] ath10k: activate user space firmware loading again | ||||||
|  |  | ||||||
|  | In commit 9f5bcfe93315 ("ath10k: silence firmware file probing | ||||||
|  | warnings") the firmware loading was changed from request_firmware() to | ||||||
|  | request_firmware_direct() to silence some warnings in case it fails. | ||||||
|  | request_firmware_direct() directly searches in the file system only and | ||||||
|  | does not send a hotplug event to user space in case it could not find | ||||||
|  | the firmware directly. | ||||||
|  | In LEDE we use a user space script to extract the calibration data from | ||||||
|  | the flash memory which gets triggered by the hotplug event. This way the | ||||||
|  | firmware gets extracted from some vendor specific partition when the | ||||||
|  | driver requests this firmware. This mechanism does not work any more | ||||||
|  | after this change. | ||||||
|  |  | ||||||
|  | Fixes: 9f5bcfe93315 ("ath10k: silence firmware file probing warnings") | ||||||
|  | Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> | ||||||
|  | Cc: Michal Kazior <michal.kazior@tieto.com> | ||||||
|  | Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> | ||||||
|  | --- | ||||||
|  |  ath10k-4.13/core.c | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  |  | ||||||
|  | --- a/ath10k-4.13/core.c | ||||||
|  | +++ b/ath10k-4.13/core.c | ||||||
|  | @@ -556,7 +556,7 @@ static const struct firmware *ath10k_fet | ||||||
|  |  		dir = "."; | ||||||
|  |   | ||||||
|  |  	snprintf(filename, sizeof(filename), "%s/%s", dir, file); | ||||||
|  | -	ret = request_firmware_direct(&fw, filename, ar->dev); | ||||||
|  | +	ret = request_firmware(&fw, filename, ar->dev); | ||||||
|  |  	ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot fw request '%s': %d\n", | ||||||
|  |  		   filename, ret); | ||||||
|  |   | ||||||
		Reference in New Issue
	
	Block a user
	 Hauke Mehrtens
					Hauke Mehrtens