* [PATCH] macvlan: inherit needed_headroom/needed_tailroom from lower device
@ 2026-07-24 10:08 Mohammed Hashil M
2026-07-24 10:53 ` Eric Dumazet
0 siblings, 1 reply; 3+ messages in thread
From: Mohammed Hashil M @ 2026-07-24 10:08 UTC (permalink / raw)
To: andrew+netdev, davem, edumazet, kuba, pabeni
Cc: netdev, linux-kernel, Mohammed Hashil M
macvlan_init() copies several properties from the lower device onto
the macvlan netdev (dev->features, dev->vlan_features,
dev->hard_header_len, TSO limits) but never copies needed_headroom
or needed_tailroom.
When the lower device declares extra needed_headroom/needed_tailroom
(e.g. because it must prepend/append its own hardware encapsulation
before a packet reaches the wire), a macvlan built on top of it does
not reserve that space. Depending on the lower driver, this can cause
outgoing packets to be silently dropped instead of forwarded, since
the driver xmit path finds insufficient headroom and has no fallback
to reallocate.
Fix this the same way vxlan already does for the same class of issue
(commit 0a35dc41fea6 ("vxlan: Add needed_headroom for lower device")):
copy needed_headroom and needed_tailroom from the lower device in
macvlan_init(), alongside the existing hard_header_len copy.
Signed-off-by: Mohammed Hashil M <mohammed.hashil@dicortech.com>
---
drivers/net/macvlan.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 9a4bc99dbf53..70219011fcb2 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -954,6 +954,8 @@ static int macvlan_init(struct net_device *dev)
dev->lltx = true;
netif_inherit_tso_max(dev, lowerdev);
dev->hard_header_len = lowerdev->hard_header_len;
+ dev->needed_headroom = lowerdev->needed_headroom;
+ dev->needed_tailroom = lowerdev->needed_tailroom;
macvlan_set_lockdep_class(dev);
vlan->pcpu_stats = netdev_alloc_pcpu_stats(struct vlan_pcpu_stats);
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] macvlan: inherit needed_headroom/needed_tailroom from lower device
2026-07-24 10:08 [PATCH] macvlan: inherit needed_headroom/needed_tailroom from lower device Mohammed Hashil M
@ 2026-07-24 10:53 ` Eric Dumazet
2026-07-24 13:02 ` Mohammed Hashil M
0 siblings, 1 reply; 3+ messages in thread
From: Eric Dumazet @ 2026-07-24 10:53 UTC (permalink / raw)
To: Mohammed Hashil M
Cc: andrew+netdev, davem, kuba, pabeni, netdev, linux-kernel,
Mohammed Hashil M
On Fri, Jul 24, 2026 at 12:09 PM Mohammed Hashil M
<mohammedhashil786@gmail.com> wrote:
>
> macvlan_init() copies several properties from the lower device onto
> the macvlan netdev (dev->features, dev->vlan_features,
> dev->hard_header_len, TSO limits) but never copies needed_headroom
> or needed_tailroom.
>
> When the lower device declares extra needed_headroom/needed_tailroom
> (e.g. because it must prepend/append its own hardware encapsulation
> before a packet reaches the wire), a macvlan built on top of it does
> not reserve that space. Depending on the lower driver, this can cause
> outgoing packets to be silently dropped instead of forwarded, since
> the driver xmit path finds insufficient headroom and has no fallback
> to reallocate.
>
> Fix this the same way vxlan already does for the same class of issue
> (commit 0a35dc41fea6 ("vxlan: Add needed_headroom for lower device")):
> copy needed_headroom and needed_tailroom from the lower device in
> macvlan_init(), alongside the existing hard_header_len copy.
>
> Signed-off-by: Mohammed Hashil M <mohammed.hashil@dicortech.com>
> ---
> drivers/net/macvlan.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
> index 9a4bc99dbf53..70219011fcb2 100644
> --- a/drivers/net/macvlan.c
> +++ b/drivers/net/macvlan.c
> @@ -954,6 +954,8 @@ static int macvlan_init(struct net_device *dev)
> dev->lltx = true;
> netif_inherit_tso_max(dev, lowerdev);
> dev->hard_header_len = lowerdev->hard_header_len;
> + dev->needed_headroom = lowerdev->needed_headroom;
> + dev->needed_tailroom = lowerdev->needed_tailroom;
> macvlan_set_lockdep_class(dev);
>
Is it related to my ongoing work ?
https://lore.kernel.org/netdev/CANn89iJWJD_KXpeDOne2ujeznOADV8O=rU5+jdqQF6YMEkNkJg@mail.gmail.com/T/#m6b1804430c89c778733d69441aea1b87ffe79f0e
It seems you are trying to take ownership of the discoveries made
earlier today.
Please don't do that, especially for your first linux contribution,
this is not how things work.
--
pw-bot: cr
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] macvlan: inherit needed_headroom/needed_tailroom from lower device
2026-07-24 10:53 ` Eric Dumazet
@ 2026-07-24 13:02 ` Mohammed Hashil M
0 siblings, 0 replies; 3+ messages in thread
From: Mohammed Hashil M @ 2026-07-24 13:02 UTC (permalink / raw)
To: andrew+netdev, davem, edumazet, kuba, pabeni; +Cc: netdev, linux-kernel
Hi,
Sorry for the misunderstanding. That was not my intention.
I worked on this change a few weeks ago as part of my work while investigating the macvlan code. Since this was going to be my first Linux kernel contribution, I ended up holding onto the patch longer than I should have because I was unfamiliar with the submission process.
When I finally sent it, I wasn't aware of the discussion from earlier that day. My patch was not based on that discussion, and I certainly wasn't trying to claim ownership of anyone else's work or discoveries.
I understand that, given the timing, it could have appeared that way, and I apologize for creating that impression.
Thank you for pointing it out. I'll be more careful in the future to check for ongoing discussions before submitting a patch.
Regards,
Mohammed Hashil M
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-24 13:01 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-24 10:08 [PATCH] macvlan: inherit needed_headroom/needed_tailroom from lower device Mohammed Hashil M
2026-07-24 10:53 ` Eric Dumazet
2026-07-24 13:02 ` Mohammed Hashil M
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox