Message ID | 1578378195-25780-1-git-send-email-mkenna@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ath10k: avoid consecutive OTP download to reduce boot time | expand |
On 2020-01-07 11:53, Maharaja Kennadyrajan wrote: [Maha]: Please ignore/drop this duplicate patch as I sent it already. Regret for inconvenience caused. > From: Vikas Patel <vikpatel@codeaurora.org> > > Currently, OTP is downloaded twice in case of "pre-cal-dt" > and "pre-cal-file" to fetch the board ID and takes around > ~2 sec more boot uptime. > > First OTP download happens in "ath10k_core_probe_fw" and > second in ath10k_core_start. First boot does not need OTP > download in core start when valid board id acquired. > > The second OTP download is required upon core stop/start. > > This patch skips the OTP download when first OTP download > has acquired a valid board id. This patch also marks board > id invalid in "ath10k_core_stop", which will force the OTP > download in ath10k_core_start and fetches valid board id. > > Tested HW: QCA9984 > Tested FW: 10.4-3.6-00104 > > Signed-off-by: Vikas Patel <vikpatel@codeaurora.org> > Signed-off-by: Maharaja Kennadyrajan <mkenna@codeaurora.org> > --- > drivers/net/wireless/ath/ath10k/core.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/net/wireless/ath/ath10k/core.c > b/drivers/net/wireless/ath/ath10k/core.c > index 5ec16ce..8fef991 100644 > --- a/drivers/net/wireless/ath/ath10k/core.c > +++ b/drivers/net/wireless/ath/ath10k/core.c > @@ -874,6 +874,13 @@ static int > ath10k_core_get_board_id_from_otp(struct ath10k *ar) > return -ENODATA; > } > > + if (ar->id.bmi_ids_valid) { > + ath10k_dbg(ar, ATH10K_DBG_BOOT, > + "boot already acquired valid otp board id,skip download, > board_id %d chip_id %d\n", > + ar->id.bmi_board_id, ar->id.bmi_chip_id); > + goto skip_otp_download; > + } > + > ath10k_dbg(ar, ATH10K_DBG_BOOT, > "boot upload otp to 0x%x len %zd for board id\n", > address, ar->normal_mode_fw.fw_file.otp_len); > @@ -921,6 +928,8 @@ static int > ath10k_core_get_board_id_from_otp(struct ath10k *ar) > ar->id.bmi_board_id = board_id; > ar->id.bmi_chip_id = chip_id; > > +skip_otp_download: > + > return 0; > } > > @@ -2863,6 +2872,8 @@ void ath10k_core_stop(struct ath10k *ar) > ath10k_htt_tx_stop(&ar->htt); > ath10k_htt_rx_free(&ar->htt); > ath10k_wmi_detach(ar); > + > + ar->id.bmi_ids_valid = false; > } > EXPORT_SYMBOL(ath10k_core_stop);
Maharaja Kennadyrajan <mkenna@codeaurora.org> writes: > On 2020-01-07 11:53, Maharaja Kennadyrajan wrote: > > [Maha]: Please ignore/drop this duplicate patch as I sent it already. > Regret for inconvenience caused. Are you sure I should drop this? In the first patch I think you forgot to CC linux-wireless and that's why I didn't see it. But this second patch was CCed to linux-wireless and I see it on patchwork. So my plan is to put this back to my queue, please let me know if I have misunderstood.
On 2020-02-13 19:43, Kalle Valo wrote: > Maharaja Kennadyrajan <mkenna@codeaurora.org> writes: > >> On 2020-01-07 11:53, Maharaja Kennadyrajan wrote: >> >> [Maha]: Please ignore/drop this duplicate patch as I sent it already. >> Regret for inconvenience caused. > > Are you sure I should drop this? In the first patch I think you forgot > to CC linux-wireless and that's why I didn't see it. But this second > patch was CCed to linux-wireless and I see it on patchwork. So my plan > is to put this back to my queue, please let me know if I have > misunderstood. [Maha]: Hi Kalle, I sent the same patch twice. So I asked to ignore one duplicate patch. You can pick up this patch to put it in your queue and please ignore the duplicate patch.
Maharaja Kennadyrajan <mkenna@codeaurora.org> wrote: > Currently, OTP is downloaded twice in case of "pre-cal-dt" > and "pre-cal-file" to fetch the board ID and takes around > ~2 sec more boot uptime. > > First OTP download happens in "ath10k_core_probe_fw" and > second in ath10k_core_start. First boot does not need OTP > download in core start when valid board id acquired. > > The second OTP download is required upon core stop/start. > > This patch skips the OTP download when first OTP download > has acquired a valid board id. This patch also marks board > id invalid in "ath10k_core_stop", which will force the OTP > download in ath10k_core_start and fetches valid board id. > > Tested HW: QCA9984 > Tested FW: 10.4-3.6-00104 > > Signed-off-by: Vikas Patel <vikpatel@codeaurora.org> > Signed-off-by: Maharaja Kennadyrajan <mkenna@codeaurora.org> > Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Patch applied to ath-next branch of ath.git, thanks. a4b9f641e858 ath10k: avoid consecutive OTP download to reduce boot time
diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c index 5ec16ce..8fef991 100644 --- a/drivers/net/wireless/ath/ath10k/core.c +++ b/drivers/net/wireless/ath/ath10k/core.c @@ -874,6 +874,13 @@ static int ath10k_core_get_board_id_from_otp(struct ath10k *ar) return -ENODATA; } + if (ar->id.bmi_ids_valid) { + ath10k_dbg(ar, ATH10K_DBG_BOOT, + "boot already acquired valid otp board id,skip download, board_id %d chip_id %d\n", + ar->id.bmi_board_id, ar->id.bmi_chip_id); + goto skip_otp_download; + } + ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot upload otp to 0x%x len %zd for board id\n", address, ar->normal_mode_fw.fw_file.otp_len); @@ -921,6 +928,8 @@ static int ath10k_core_get_board_id_from_otp(struct ath10k *ar) ar->id.bmi_board_id = board_id; ar->id.bmi_chip_id = chip_id; +skip_otp_download: + return 0; } @@ -2863,6 +2872,8 @@ void ath10k_core_stop(struct ath10k *ar) ath10k_htt_tx_stop(&ar->htt); ath10k_htt_rx_free(&ar->htt); ath10k_wmi_detach(ar); + + ar->id.bmi_ids_valid = false; } EXPORT_SYMBOL(ath10k_core_stop);