net: mhi: Get RX queue size from MHI core
authorLoic Poulain <loic.poulain@linaro.org>
Thu, 28 Jan 2021 13:47:22 +0000 (14:47 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sat, 30 Jan 2021 03:41:59 +0000 (19:41 -0800)
The RX queue size can be determined at runtime by retrieving the
number of available transfer descriptors.

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/mhi_net.c

index a5a214d..abdd2ba 100644 (file)
@@ -273,9 +273,6 @@ static int mhi_net_probe(struct mhi_device *mhi_dev,
        SET_NETDEV_DEV(ndev, &mhi_dev->dev);
        SET_NETDEV_DEVTYPE(ndev, &wwan_type);
 
-       /* All MHI net channels have 128 ring elements (at least for now) */
-       mhi_netdev->rx_queue_sz = 128;
-
        INIT_DELAYED_WORK(&mhi_netdev->rx_refill, mhi_net_rx_refill_work);
        u64_stats_init(&mhi_netdev->stats.rx_syncp);
        u64_stats_init(&mhi_netdev->stats.tx_syncp);
@@ -285,6 +282,9 @@ static int mhi_net_probe(struct mhi_device *mhi_dev,
        if (err)
                goto out_err;
 
+       /* Number of transfer descriptors determines size of the queue */
+       mhi_netdev->rx_queue_sz = mhi_get_free_desc_count(mhi_dev, DMA_FROM_DEVICE);
+
        err = register_netdev(ndev);
        if (err)
                goto out_err;