Hi Arnd,
On Wed, 29 Nov 2023 15:03:02 +0100 "Arnd Bergmann" arnd@arndb.de wrote:
On Tue, Nov 28, 2023, at 15:08, Herve Codina wrote:
@@ -272,6 +274,8 @@ int qmc_chan_get_info(struct qmc_chan *chan, struct qmc_chan_info *info) if (ret) return ret;
- spin_lock_irqsave(&chan->ts_lock, flags);
- info->mode = chan->mode; info->rx_fs_rate = tsa_info.rx_fs_rate; info->rx_bit_rate = tsa_info.rx_bit_rate;
@@ -280,6 +284,8 @@ int qmc_chan_get_info(struct qmc_chan *chan, struct qmc_chan_info *info) info->tx_bit_rate = tsa_info.tx_bit_rate; info->nb_rx_ts = hweight64(chan->rx_ts_mask);
- spin_unlock_irqrestore(&chan->ts_lock, flags);
- return 0;
}
I would normally use spin_lock_irq() instead of spin_lock_irqsave() in functions that are only called outside of atomic context.
I would prefer to keep spin_lock_irqsave() here. This function is part of the API and so, its quite difficult to ensure that all calls (current and future) will be done outside of an atomic context.
+static int qmc_chan_start_rx(struct qmc_chan *chan);
int qmc_chan_stop(struct qmc_chan *chan, int direction) {
...
-static void qmc_chan_start_rx(struct qmc_chan *chan) +static int qmc_setup_chan_trnsync(struct qmc *qmc, struct qmc_chan *chan);
+static int qmc_chan_start_rx(struct qmc_chan *chan) {
Can you reorder the static functions in a way that avoids the forward declarations?
Yes, sure. I will do that in the next iteration.
Thanks for the review,
Best regards, Hervé