Re: [PATCH net-next] dmaengine: ti: k3-udma-glue: clean up return in k3_udma_glue_rx_get_irq()

Péter Ujfalusi
2024-06-06T17:27:13Z

On 6/6/24 5:23 PM, Dan Carpenter wrote:
> Currently the k3_udma_glue_rx_get_irq() function returns either negative
> error codes or zero on error. Generally, in the kernel, zero means
> success so this be confusing and has caused bugs in the past. Also the
> "tx" version of this function only returns negative error codes. Let's
> clean this "rx" function so both functions match.
>
> This patch has no effect on runtime.

Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>

>
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> ---
> drivers/dma/ti/k3-udma-glue.c | 3 +++
> drivers/net/ethernet/ti/am65-cpsw-nuss.c | 4 ++--
> drivers/net/ethernet/ti/icssg/icssg_common.c | 4 +---
> 3 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/dma/ti/k3-udma-glue.c b/drivers/dma/ti/k3-udma-glue.c
> index c9b93055dc9d..b96b448a0e69 100644
> --- a/drivers/dma/ti/k3-udma-glue.c
> +++ b/drivers/dma/ti/k3-udma-glue.c
> @@ -1531,6 +1531,9 @@ int k3_udma_glue_rx_get_irq(struct k3_udma_glue_rx_channel *rx_chn,
> flow->virq = k3_ringacc_get_ring_irq_num(flow->ringrx);
> }
>
> + if (!flow->virq)
> + return -ENXIO;
> +
> return flow->virq;
> }
> EXPORT_SYMBOL_GPL(k3_udma_glue_rx_get_irq);
> diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
> index 4e50b3792888..8c26acc9cde1 100644
> --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c
> +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
> @@ -2424,10 +2424,10 @@ static int am65_cpsw_nuss_init_rx_chns(struct am65_cpsw_common *common)
>
> rx_chn->irq = k3_udma_glue_rx_get_irq(rx_chn->rx_chn, i);
>
> - if (rx_chn->irq <= 0) {
> + if (rx_chn->irq < 0) {
> dev_err(dev, "Failed to get rx dma irq %d\n",
> rx_chn->irq);
> - ret = -ENXIO;
> + ret = rx_chn->irq;
> goto err;
> }
> }
> diff --git a/drivers/net/ethernet/ti/icssg/icssg_common.c b/drivers/net/ethernet/ti/icssg/icssg_common.c
> index 088ab8076db4..cac7863c5cb2 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_common.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_common.c
> @@ -440,9 +440,7 @@ int prueth_init_rx_chns(struct prueth_emac *emac,
> fdqring_id = k3_udma_glue_rx_flow_get_fdq_id(rx_chn->rx_chn,
> i);
> ret = k3_udma_glue_rx_get_irq(rx_chn->rx_chn, i);
> - if (ret <= 0) {
> - if (!ret)
> - ret = -ENXIO;
> + if (ret < 0) {
> netdev_err(ndev, "Failed to get rx dma irq");
> goto fail;
> }

--
Péter