Hi, On Wed, Jul 8, 2020 at 4:03 PM Brian Norris <briannorris@xxxxxxxxxxxx> wrote: > > On Tue, Jul 7, 2020 at 10:18 AM Douglas Anderson <dianders@xxxxxxxxxxxx> wrote: > > diff --git a/drivers/net/wireless/ath/ath10k/ce.h b/drivers/net/wireless/ath/ath10k/ce.h > > index a440aaf74aa4..666ce384a1d8 100644 > > --- a/drivers/net/wireless/ath/ath10k/ce.h > > +++ b/drivers/net/wireless/ath/ath10k/ce.h > ... > > @@ -376,12 +377,9 @@ static inline u32 ath10k_ce_interrupt_summary(struct ath10k *ar) > > { > > struct ath10k_ce *ce = ath10k_ce_priv(ar); > > > > - if (!ar->hw_params.per_ce_irq) > > If I'm reading correctly, you're removing the only remaining use of > 'per_ce_irq'. Should we kill the field entirely? Ah, you are indeed correct! I hadn't noticed that. Unless I hear otherwise, I'll send a v2 tomorrow that removes the field entirely. > Or perhaps we should > leave some kind of WARN_ON() (BUG_ON()?) if this function is called > erroneously with per_ce_irq==true? But I suppose this driver is full > of landmines if the CE API is used incorrectly. Yeah, I originally had a WARN_ON() here and then took it out because it seemed like extra overhead and, as you said, someone writing the code has to know how the API works already I think. ...but I'll add it back in if people want. > > - return CE_WRAPPER_INTERRUPT_SUMMARY_HOST_MSI_GET( > > - ce->bus_ops->read32((ar), CE_WRAPPER_BASE_ADDRESS + > > - CE_WRAPPER_INTERRUPT_SUMMARY_ADDRESS)); > > - else > > - return ath10k_ce_gen_interrupt_summary(ar); > > + return CE_WRAPPER_INTERRUPT_SUMMARY_HOST_MSI_GET( > > + ce->bus_ops->read32((ar), CE_WRAPPER_BASE_ADDRESS + > > + CE_WRAPPER_INTERRUPT_SUMMARY_ADDRESS)); > > } > > > > /* Host software's Copy Engine configuration. */ > > > diff --git a/drivers/net/wireless/ath/ath10k/snoc.h b/drivers/net/wireless/ath/ath10k/snoc.h > > index a3dd06f6ac62..5095d1893681 100644 > > --- a/drivers/net/wireless/ath/ath10k/snoc.h > > +++ b/drivers/net/wireless/ath/ath10k/snoc.h > > @@ -78,6 +78,7 @@ struct ath10k_snoc { > > unsigned long flags; > > bool xo_cal_supported; > > u32 xo_cal_data; > > + DECLARE_BITMAP(pending_ce_irqs, CE_COUNT_MAX); > > Do you need to clear this map if the interface goes down or if there's > a firmware crash? Right now, I don't think there's a guarantee that > we'll run through a NAPI poll in those cases, which is the only place > you clear the map, and if the hardware/firmware has been reset, the > state map is probably not valid. Seems like a good idea. Is the right place at the start of ath10k_snoc_hif_start()? > Otherwise, looks OK to me: > > Reviewed-by: Brian Norris <briannorris@xxxxxxxxxxxx> Thanks for the review! -Doug