lkml.org 
[lkml]   [2021]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 078/121] net: marvell: mvpp2: increase MTU limit when XDP enabled
    Date
    From: Marek Behún <kabel@kernel.org>

    [ Upstream commit 7b1b62bc1e6a7b2fd5ee7a4296268eb291d23aeb ]

    Currently mvpp2_xdp_setup won't allow attaching XDP program if
    mtu > ETH_DATA_LEN (1500).

    The mvpp2_change_mtu on the other hand checks whether
    MVPP2_RX_PKT_SIZE(mtu) > MVPP2_BM_LONG_PKT_SIZE.

    These two checks are semantically different.

    Moreover this limit can be increased to MVPP2_MAX_RX_BUF_SIZE, since in
    mvpp2_rx we have
    xdp.data = data + MVPP2_MH_SIZE + MVPP2_SKB_HEADROOM;
    xdp.frame_sz = PAGE_SIZE;

    Change the checks to check whether
    mtu > MVPP2_MAX_RX_BUF_SIZE

    Fixes: 07dd0a7aae7f ("mvpp2: add basic XDP support")
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 14 ++++++++------
    1 file changed, 8 insertions(+), 6 deletions(-)

    diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
    index ec9b6c564300e..e220d44df2e65 100644
    --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
    +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
    @@ -4652,11 +4652,13 @@ static int mvpp2_change_mtu(struct net_device *dev, int mtu)
    mtu = ALIGN(MVPP2_RX_PKT_SIZE(mtu), 8);
    }

    + if (port->xdp_prog && mtu > MVPP2_MAX_RX_BUF_SIZE) {
    + netdev_err(dev, "Illegal MTU value %d (> %d) for XDP mode\n",
    + mtu, (int)MVPP2_MAX_RX_BUF_SIZE);
    + return -EINVAL;
    + }
    +
    if (MVPP2_RX_PKT_SIZE(mtu) > MVPP2_BM_LONG_PKT_SIZE) {
    - if (port->xdp_prog) {
    - netdev_err(dev, "Jumbo frames are not supported with XDP\n");
    - return -EINVAL;
    - }
    if (priv->percpu_pools) {
    netdev_warn(dev, "mtu %d too high, switching to shared buffers", mtu);
    mvpp2_bm_switch_buffers(priv, false);
    @@ -4942,8 +4944,8 @@ static int mvpp2_xdp_setup(struct mvpp2_port *port, struct netdev_bpf *bpf)
    bool running = netif_running(port->dev);
    bool reset = !prog != !port->xdp_prog;

    - if (port->dev->mtu > ETH_DATA_LEN) {
    - NL_SET_ERR_MSG_MOD(bpf->extack, "XDP is not supported with jumbo frames enabled");
    + if (port->dev->mtu > MVPP2_MAX_RX_BUF_SIZE) {
    + NL_SET_ERR_MSG_MOD(bpf->extack, "MTU too large for XDP");
    return -EOPNOTSUPP;
    }

    --
    2.33.0


    \
     
     \ /
      Last update: 2021-11-29 19:40    [W:4.028 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site