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

Commit 1d36f46b authored by Kalle Valo's avatar Kalle Valo
Browse files

Merge ath-next from ath.git

Major changes:

ath10k:

* qca6174 power consumption improvements, enable ASPM etc (Michal)

wil6210:

* support Wi-Fi Simple Configuration in STA mode
parents 01b69614 48f4ca34
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -387,7 +387,9 @@ static int ath10k_download_and_run_otp(struct ath10k *ar)


	ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot otp execute result %d\n", result);
	ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot otp execute result %d\n", result);


	if (!skip_otp && result != 0) {
	if (!(skip_otp || test_bit(ATH10K_FW_FEATURE_IGNORE_OTP_RESULT,
				   ar->fw_features))
	    && result != 0) {
		ath10k_err(ar, "otp calibration failed: %d", result);
		ath10k_err(ar, "otp calibration failed: %d", result);
		return -EINVAL;
		return -EINVAL;
	}
	}
+8 −0
Original line number Original line Diff line number Diff line
@@ -460,6 +460,14 @@ enum ath10k_fw_features {
	 */
	 */
	ATH10K_FW_FEATURE_WOWLAN_SUPPORT = 6,
	ATH10K_FW_FEATURE_WOWLAN_SUPPORT = 6,


	/* Don't trust error code from otp.bin */
	ATH10K_FW_FEATURE_IGNORE_OTP_RESULT,

	/* Some firmware revisions pad 4th hw address to 4 byte boundary making
	 * it 8 bytes long in Native Wifi Rx decap.
	 */
	ATH10K_FW_FEATURE_NO_NWIFI_DECAP_4ADDR_PADDING,

	/* keep last */
	/* keep last */
	ATH10K_FW_FEATURE_COUNT,
	ATH10K_FW_FEATURE_COUNT,
};
};
+1 −0
Original line number Original line Diff line number Diff line
@@ -36,6 +36,7 @@ enum ath10k_debug_mask {
	ATH10K_DBG_REGULATORY	= 0x00000800,
	ATH10K_DBG_REGULATORY	= 0x00000800,
	ATH10K_DBG_TESTMODE	= 0x00001000,
	ATH10K_DBG_TESTMODE	= 0x00001000,
	ATH10K_DBG_WMI_PRINT	= 0x00002000,
	ATH10K_DBG_WMI_PRINT	= 0x00002000,
	ATH10K_DBG_PCI_PS	= 0x00004000,
	ATH10K_DBG_ANY		= 0xffffffff,
	ATH10K_DBG_ANY		= 0xffffffff,
};
};


+10 −4
Original line number Original line Diff line number Diff line
@@ -965,10 +965,16 @@ static void ath10k_process_rx(struct ath10k *ar,
	ieee80211_rx(ar->hw, skb);
	ieee80211_rx(ar->hw, skb);
}
}


static int ath10k_htt_rx_nwifi_hdrlen(struct ieee80211_hdr *hdr)
static int ath10k_htt_rx_nwifi_hdrlen(struct ath10k *ar,
				      struct ieee80211_hdr *hdr)
{
{
	/* nwifi header is padded to 4 bytes. this fixes 4addr rx */
	int len = ieee80211_hdrlen(hdr->frame_control);
	return round_up(ieee80211_hdrlen(hdr->frame_control), 4);

	if (!test_bit(ATH10K_FW_FEATURE_NO_NWIFI_DECAP_4ADDR_PADDING,
		      ar->fw_features))
		len = round_up(len, 4);

	return len;
}
}


static void ath10k_htt_rx_h_undecap_raw(struct ath10k *ar,
static void ath10k_htt_rx_h_undecap_raw(struct ath10k *ar,
@@ -1067,7 +1073,7 @@ static void ath10k_htt_rx_h_undecap_nwifi(struct ath10k *ar,


	/* pull decapped header and copy SA & DA */
	/* pull decapped header and copy SA & DA */
	hdr = (struct ieee80211_hdr *)msdu->data;
	hdr = (struct ieee80211_hdr *)msdu->data;
	hdr_len = ath10k_htt_rx_nwifi_hdrlen(hdr);
	hdr_len = ath10k_htt_rx_nwifi_hdrlen(ar, hdr);
	ether_addr_copy(da, ieee80211_get_DA(hdr));
	ether_addr_copy(da, ieee80211_get_DA(hdr));
	ether_addr_copy(sa, ieee80211_get_SA(hdr));
	ether_addr_copy(sa, ieee80211_get_SA(hdr));
	skb_pull(msdu, hdr_len);
	skb_pull(msdu, hdr_len);
+8 −1
Original line number Original line Diff line number Diff line
@@ -1708,7 +1708,14 @@ static int ath10k_mac_vif_setup_ps(struct ath10k_vif *arvif)
		enable_ps = false;
		enable_ps = false;
	}
	}


	if (enable_ps) {
	if (!arvif->is_started) {
		/* mac80211 can update vif powersave state while disconnected.
		 * Firmware doesn't behave nicely and consumes more power than
		 * necessary if PS is disabled on a non-started vdev. Hence
		 * force-enable PS for non-running vdevs.
		 */
		psmode = WMI_STA_PS_MODE_ENABLED;
	} else if (enable_ps) {
		psmode = WMI_STA_PS_MODE_ENABLED;
		psmode = WMI_STA_PS_MODE_ENABLED;
		param = WMI_STA_PS_PARAM_INACTIVITY_TIME;
		param = WMI_STA_PS_PARAM_INACTIVITY_TIME;


Loading