[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[UNIKRAFT/LWIP PATCH v4 2/5] lwipopts.h: Disable Ethernet frame padding



From: Costin Lupu <costin.lupu@xxxxxxxxx>

We set ETH_PAD_SIZE to 0 considering that padding and alignment is
handled according to each driver capabilities.

Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx>
Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
---
 include/arch/cc.h | 4 +++-
 uknetdev.c        | 6 ++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/include/arch/cc.h b/include/arch/cc.h
index a1d0c34..b4526e0 100644
--- a/include/arch/cc.h
+++ b/include/arch/cc.h
@@ -51,7 +51,9 @@
 
 /* 32 bit checksum calculation */
 #define LWIP_CHKSUM_ALGORITHM 3
-#define ETH_PAD_SIZE 2
+
+/* Disable padding on Ethernet frames (only some uknetdev driver support it) */
+#define ETH_PAD_SIZE 0
 
 /* rand */
 #define LWIP_RAND() uk_swrand_randr()
diff --git a/uknetdev.c b/uknetdev.c
index e645ac1..ccb7368 100644
--- a/uknetdev.c
+++ b/uknetdev.c
@@ -259,6 +259,12 @@ static void uknetdev_input(struct uk_netdev *dev,
 
                /* Send packet to lwip */
 #if ETH_PAD_SIZE
+               /* If the following assertion fails, the driver most likely does
+                * not support padded receive. In such a case ETH_PAD_SIZE has
+                * to be set to 0.
+                */
+               UK_ASSERT(uk_netbuf_headroom(nb) >= ETH_PAD_SIZE);
+
                uk_netbuf_header(nb, ETH_PAD_SIZE);
 #endif /* ETH_PAD_SIZE */
                p = lwip_netbuf_to_pbuf(nb);
-- 
2.20.1



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.