lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <92c72be94538f65f7ea05001923c07b4d443d396.1642439548.git.lorenzo@kernel.org> Date: Mon, 17 Jan 2022 18:28:22 +0100 From: Lorenzo Bianconi <lorenzo@...nel.org> To: bpf@...r.kernel.org, netdev@...r.kernel.org Cc: lorenzo.bianconi@...hat.com, davem@...emloft.net, kuba@...nel.org, ast@...nel.org, daniel@...earbox.net, shayagr@...zon.com, john.fastabend@...il.com, dsahern@...nel.org, brouer@...hat.com, echaudro@...hat.com, jasowang@...hat.com, alexander.duyck@...il.com, saeed@...nel.org, maciej.fijalkowski@...el.com, magnus.karlsson@...el.com, tirthendu.sarkar@...el.com, toke@...hat.com Subject: [PATCH v22 bpf-next 10/23] net: mvneta: enable jumbo frames if the loaded XDP program support multi-frags Enable the capability to receive jumbo frames even if the interface is running in XDP mode if the loaded program declare to properly support xdp multi-frags. At same time reject a xdp program not supporting xdp multi-frags if the driver is running in xdp multi-frags mode. Acked-by: Toke Hoiland-Jorgensen <toke@...hat.com> Acked-by: John Fastabend <john.fastabend@...il.com> Signed-off-by: Lorenzo Bianconi <lorenzo@...nel.org> --- drivers/net/ethernet/marvell/mvneta.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c index c2248e23edcc..fc3d19467de7 100644 --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c @@ -3778,6 +3778,7 @@ static void mvneta_percpu_disable(void *arg) static int mvneta_change_mtu(struct net_device *dev, int mtu) { struct mvneta_port *pp = netdev_priv(dev); + struct bpf_prog *prog = pp->xdp_prog; int ret; if (!IS_ALIGNED(MVNETA_RX_PKT_SIZE(mtu), 8)) { @@ -3786,8 +3787,12 @@ static int mvneta_change_mtu(struct net_device *dev, int mtu) mtu = ALIGN(MVNETA_RX_PKT_SIZE(mtu), 8); } - if (pp->xdp_prog && mtu > MVNETA_MAX_RX_BUF_SIZE) { - netdev_info(dev, "Illegal MTU value %d for XDP mode\n", mtu); + if (prog && !prog->aux->xdp_has_frags && + mtu > MVNETA_MAX_RX_BUF_SIZE) { + netdev_info(dev, + "Illegal MTU %d for XDP prog without multi-frags\n", + mtu); + return -EINVAL; } @@ -4528,8 +4533,10 @@ static int mvneta_xdp_setup(struct net_device *dev, struct bpf_prog *prog, struct mvneta_port *pp = netdev_priv(dev); struct bpf_prog *old_prog; - if (prog && dev->mtu > MVNETA_MAX_RX_BUF_SIZE) { - NL_SET_ERR_MSG_MOD(extack, "MTU too large for XDP"); + if (prog && !prog->aux->xdp_has_frags && + dev->mtu > MVNETA_MAX_RX_BUF_SIZE) { + NL_SET_ERR_MSG_MOD(extack, + "prog does not support XDP multi-frags"); return -EOPNOTSUPP; } -- 2.34.1
Powered by blists - more mailing lists