From 813f4d976be6a12ed4e68e115d1d1a5aeb9238ed Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Wed, 12 May 2021 17:07:07 +0200 Subject: [PATCH] lxip: allocate skb with properly aligned IP header Comment in Linux sources: Since an ethernet header is 14 bytes network drivers often end up with the IP header at an unaligned offset. The IP header can be aligned by shifting the start of the packet by 2 bytes. Drivers should do this with: skb_reserve(skb, NET_IP_ALIGN); This is ensured when using netdev_alloc_skb_ip_align(). Issue #4094 --- repos/dde_linux/src/lib/lxip/driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repos/dde_linux/src/lib/lxip/driver.c b/repos/dde_linux/src/lib/lxip/driver.c index 91f6109bc9..8e9c3cb1d8 100644 --- a/repos/dde_linux/src/lib/lxip/driver.c +++ b/repos/dde_linux/src/lib/lxip/driver.c @@ -119,7 +119,7 @@ void net_driver_rx(void *addr, unsigned long size) enum { ADDITIONAL_HEADROOM = 4, /* smallest value found by trial & error */ }; - struct sk_buff *skb = dev_alloc_skb(size + ADDITIONAL_HEADROOM); + struct sk_buff *skb = netdev_alloc_skb_ip_align(_dev, size + ADDITIONAL_HEADROOM); if (!skb) { printk(KERN_NOTICE "genode_net_rx: low on mem - packet dropped!\n"); stats->rx_dropped++;