| From 1ce8c1484e80010a6e4b9611c65668ff77556f45 Mon Sep 17 00:00:00 2001 |
| From: Rajkumar Manoharan <rmanohar@qti.qualcomm.com> |
| Date: Thu, 7 Apr 2016 12:11:54 +0530 |
| Subject: ath10k: fix rx_channel during hw reconfigure |
| |
| From: Rajkumar Manoharan <rmanohar@qti.qualcomm.com> |
| |
| commit 1ce8c1484e80010a6e4b9611c65668ff77556f45 upstream. |
| |
| Upon firmware assert, restart work will be triggered so that mac80211 |
| will reconfigure the driver. An issue is reported that after restart |
| work, survey dump data do not contain in-use (SURVEY_INFO_IN_USE) info |
| for operating channel. During reconfigure, since mac80211 already has |
| valid channel context for given radio, channel context iteration return |
| num_chanctx > 0. Hence rx_channel is always NULL. Fix this by assigning |
| channel context to rx_channel when driver restart is in progress. |
| |
| Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com> |
| Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/ath/ath10k/mac.c | 8 +++++++- |
| 1 file changed, 7 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/wireless/ath/ath10k/mac.c |
| +++ b/drivers/net/wireless/ath/ath10k/mac.c |
| @@ -6453,7 +6453,13 @@ ath10k_mac_update_rx_channel(struct ath1 |
| def = &vifs[0].new_ctx->def; |
| |
| ar->rx_channel = def->chan; |
| - } else if (ctx && ath10k_mac_num_chanctxs(ar) == 0) { |
| + } else if ((ctx && ath10k_mac_num_chanctxs(ar) == 0) || |
| + (ctx && (ar->state == ATH10K_STATE_RESTARTED))) { |
| + /* During driver restart due to firmware assert, since mac80211 |
| + * already has valid channel context for given radio, channel |
| + * context iteration return num_chanctx > 0. So fix rx_channel |
| + * when restart is in progress. |
| + */ |
| ar->rx_channel = ctx->def.chan; |
| } else { |
| ar->rx_channel = NULL; |