| From foo@baz Sat Apr 20 16:43:55 CEST 2019 |
| From: Matteo Croce <mcroce@redhat.com> |
| Date: Thu, 11 Apr 2019 12:26:33 +0200 |
| Subject: net: thunderx: don't allow jumbo frames with XDP |
| |
| From: Matteo Croce <mcroce@redhat.com> |
| |
| [ Upstream commit 1f227d16083b2e280b7dde4ca78883d75593f2fd ] |
| |
| The thunderx driver forbids to load an eBPF program if the MTU is too high, |
| but this can be circumvented by loading the eBPF, then raising the MTU. |
| |
| Fix this by limiting the MTU if an eBPF program is already loaded. |
| |
| Fixes: 05c773f52b96e ("net: thunderx: Add basic XDP support") |
| Signed-off-by: Matteo Croce <mcroce@redhat.com> |
| Acked-by: Jesper Dangaard Brouer <brouer@redhat.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/cavium/thunder/nicvf_main.c | 9 +++++++++ |
| 1 file changed, 9 insertions(+) |
| |
| --- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c |
| +++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c |
| @@ -1554,6 +1554,15 @@ static int nicvf_change_mtu(struct net_d |
| struct nicvf *nic = netdev_priv(netdev); |
| int orig_mtu = netdev->mtu; |
| |
| + /* For now just support only the usual MTU sized frames, |
| + * plus some headroom for VLAN, QinQ. |
| + */ |
| + if (nic->xdp_prog && new_mtu > MAX_XDP_MTU) { |
| + netdev_warn(netdev, "Jumbo frames not yet supported with XDP, current MTU %d.\n", |
| + netdev->mtu); |
| + return -EINVAL; |
| + } |
| + |
| netdev->mtu = new_mtu; |
| |
| if (!netif_running(netdev)) |