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

Commit a353a8b5 authored by Rakesh Pillai's avatar Rakesh Pillai Committed by Gerrit - the friendly Code Review server
Browse files

BACKPORT: UPSTREAM: ath10k: skip resetting rx filter for WCN3990



WCN3990 has the MAC_PCU_ADDR1 configured properly
and hence it will not send spurious ack frames
during boot up.

Hence the reset_rx_filter workaround is not needed
for WCN3990. Add a hw_param to indicate if hardware rx
filter reset is needed and skip the reset_rx_filter for
WCN3990.

Tested HW: WCN3990
Tested FW: WLAN.HL.2.0-01188-QCAHLSWMTPLZ-1

Signed-off-by: default avatarRakesh Pillai <pillair@codeaurora.org>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
[govinds@codeaurora.org: resolve trivial merge conflicts in
drivers/net/wireless/ath/ath10k/hw.h]
Change-Id: I417d4dcd16fe9518b9a48fc8154f764ccf457e2d
Git-commit: 58da3b42307061b71f2dcce2bd1185d578a3aa53
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git


Signed-off-by: default avatarGovind Singh <govinds@codeaurora.org>
parent 0ef38944
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = false,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = QCA988X_HW_2_0_VERSION,
@@ -123,6 +124,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.rx_ring_fill_level = HTT_RX_RING_FILL_LEVEL,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = QCA9887_HW_1_0_VERSION,
@@ -155,6 +157,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = false,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = QCA6174_HW_2_1_VERSION,
@@ -186,6 +189,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = false,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = QCA6174_HW_2_1_VERSION,
@@ -217,6 +221,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = false,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = QCA6174_HW_3_0_VERSION,
@@ -248,6 +253,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = false,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = QCA6174_HW_3_2_VERSION,
@@ -282,6 +288,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = false,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = QCA99X0_HW_2_0_DEV_VERSION,
@@ -319,6 +326,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = false,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = QCA9984_HW_1_0_DEV_VERSION,
@@ -363,6 +371,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = false,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = QCA9888_HW_2_0_DEV_VERSION,
@@ -404,6 +413,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = false,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = QCA9377_HW_1_0_DEV_VERSION,
@@ -435,6 +445,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = false,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = QCA9377_HW_1_1_DEV_VERSION,
@@ -468,6 +479,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = false,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = QCA4019_HW_1_0_DEV_VERSION,
@@ -506,6 +518,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = false,
		.shadow_reg_support = false,
		.rri_on_ddr = false,
		.hw_filter_reset_required = true,
	},
	{
		.id = WCN3990_HW_1_0_DEV_VERSION,
@@ -529,6 +542,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
		.per_ce_irq = true,
		.shadow_reg_support = true,
		.rri_on_ddr = true,
		.hw_filter_reset_required = false,
	},
};

@@ -2562,7 +2576,8 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode,
	 * possible to implicitly make it correct by creating a dummy vdev and
	 * then deleting it.
	 */
	if (mode == ATH10K_FIRMWARE_MODE_NORMAL) {
	if (ar->hw_params.hw_filter_reset_required &&
	    mode == ATH10K_FIRMWARE_MODE_NORMAL) {
		status = ath10k_core_reset_rx_filter(ar);
		if (status) {
			ath10k_err(ar,
+5 −0
Original line number Diff line number Diff line
@@ -590,6 +590,11 @@ struct ath10k_hw_params {

	/* target supporting retention restore on ddr */
	bool rri_on_ddr;

	/* targets which require hw filter reset during boot up,
	 * to avoid it sending spurious acks.
	 */
	bool hw_filter_reset_required;
};

struct htt_rx_desc;