Michal Kazior <michal.kazior@xxxxxxxxx> writes: > It was possible on a host system running low on > memory to end up with no rx buffers on pci pipes. > > This also cleans up the code a bit and, as a side > effect, makes it possible to call > ath10k_hif_start() more than once. > > Signed-off-by: Michal Kazior <michal.kazior@xxxxxxxxx> The rework is relatively big so it would be good to have a short overview how you change it. > +static void ath10k_pci_rx_replenish(struct ath10k_pci_pipe *pipe) > +{ > + struct ath10k *ar = pipe->hif_ce_state; > + struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); > + int ret; > + > + spin_lock_bh(&ar_pci->ce_lock); > + ret = __ath10k_pci_rx_post_pipe(pipe); > + spin_unlock_bh(&ar_pci->ce_lock); > + > + if (ret) { > + ath10k_warn("failed to replenish pci rx pipe %d: %d, arming retry timer\n", > + pipe->pipe_num, ret); > + mod_timer(&ar_pci->rx_replenish_retry, > + ATH10K_PCI_RX_REPLENISH_RETRY_MS); > + } > +} Buildbot sent a warning about this one which I think is valid: drivers/net/wireless/ath/ath10k/pci.c:380 ath10k_pci_rx_replenish() warn: mod_timer() takes an absolute \ time not an offset. -- Kalle Valo -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html