[netdevice] Fix incorrect value for MAX_LL_HEADER_LEN
authorMichael Brown <mcb30@etherboot.org>
Fri, 5 Jun 2009 00:06:07 +0000 (01:06 +0100)
committerMichael Brown <mcb30@etherboot.org>
Fri, 5 Jun 2009 00:07:27 +0000 (01:07 +0100)
MAX_LL_HEADER_LEN is erroneously set to 6 rather than 14, resulting
in possible data corruption whenever we send an ARP packet.

Fix value and add a comment explaining why MAX_LL_ADDR_LEN is greater
than MAX_LL_HEADER_LEN.

Reported-by: Joshua Oreman <oremanj@rwcr.net>
src/include/gpxe/netdevice.h

index a2126fa..cfcfb77 100644 (file)
@@ -21,11 +21,19 @@ struct net_protocol;
 struct ll_protocol;
 struct device;
 
 struct ll_protocol;
 struct device;
 
-/** Maximum length of a link-layer address */
+/** Maximum length of a link-layer address
+ *
+ * The longest currently-supported link-layer address is for IPoIB.
+ */
 #define MAX_LL_ADDR_LEN 20
 
 #define MAX_LL_ADDR_LEN 20
 
-/** Maximum length of a link-layer header */
-#define MAX_LL_HEADER_LEN 6
+/** Maximum length of a link-layer header
+ *
+ * The longest currently-supported link-layer header is for Ethernet.
+ * (The IPoIB link-layer pseudo-header doesn't actually include
+ * link-layer addresses; see ipoib.c for details).
+ */
+#define MAX_LL_HEADER_LEN 14
 
 /** Maximum length of a network-layer address */
 #define MAX_NET_ADDR_LEN 4
 
 /** Maximum length of a network-layer address */
 #define MAX_NET_ADDR_LEN 4