diff options
author | Loic Poulain <loic.poulain@linaro.org> | 2021-02-19 10:29:34 +0100 |
---|---|---|
committer | Loic Poulain <loic.poulain@linaro.org> | 2021-02-19 10:29:34 +0100 |
commit | a47bbf9fd4419260d037ff6f4d22f0d34e0bbcbf (patch) | |
tree | 27ec19d9caddd01ecf1dfd22792e9a0efd8770fc | |
parent | f8d751090c1e810ee22006c711baa276b8af375d (diff) |
net: mhi: Allow decoupled MTU/MRU
If a maximum receive unit (MRU) size is specified, use it for RX
buffers allocation instead of the MTU.
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
-rw-r--r-- | drivers/net/mhi/mhi.h | 1 | ||||
-rw-r--r-- | drivers/net/mhi/net.c | 4 |
2 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/mhi/mhi.h b/drivers/net/mhi/mhi.h index 12e7407d712a..1d0c499d27a3 100644 --- a/drivers/net/mhi/mhi.h +++ b/drivers/net/mhi/mhi.h @@ -29,6 +29,7 @@ struct mhi_net_dev { struct mhi_net_stats stats; u32 rx_queue_sz; int msg_enable; + unsigned int mru; }; struct mhi_net_proto { diff --git a/drivers/net/mhi/net.c b/drivers/net/mhi/net.c index b1769fb1e3f9..4bef7fe947e9 100644 --- a/drivers/net/mhi/net.c +++ b/drivers/net/mhi/net.c @@ -270,10 +270,12 @@ static void mhi_net_rx_refill_work(struct work_struct *work) rx_refill.work); struct net_device *ndev = mhi_netdev->ndev; struct mhi_device *mdev = mhi_netdev->mdev; - int size = READ_ONCE(ndev->mtu); struct sk_buff *skb; + unsigned int size; int err; + size = mhi_netdev->mru ? mhi_netdev->mru : READ_ONCE(ndev->mtu); + while (!mhi_queue_is_full(mdev, DMA_FROM_DEVICE)) { skb = netdev_alloc_skb(ndev, size); if (unlikely(!skb)) |