summaryrefslogtreecommitdiffstats
path: root/src/net
diff options
context:
space:
mode:
authorMichael Brown2007-01-10 05:22:09 +0100
committerMichael Brown2007-01-10 05:22:09 +0100
commitdad52745227fd06090e73ea535e0b0fe0f667c60 (patch)
tree6be296bedc785a5aab0d055ae148c6ffb1fe285f /src/net
parentRemove uIP; we haven't used it for quite some time now. (diff)
downloadipxe-dad52745227fd06090e73ea535e0b0fe0f667c60.tar.gz
ipxe-dad52745227fd06090e73ea535e0b0fe0f667c60.tar.xz
ipxe-dad52745227fd06090e73ea535e0b0fe0f667c60.zip
Add "name" field to struct device to allow human-readable hardware device
names. Add "dev" pointer in struct net_device to tie network interfaces back to a hardware device. Force natural alignment of data types in __table() macros. This seems to prevent gcc from taking the unilateral decision to occasionally increase their alignment (which screws up the table packing).
Diffstat (limited to 'src/net')
-rw-r--r--src/net/arp.c4
-rw-r--r--src/net/netdevice.c12
-rw-r--r--src/net/tcpip.c16
3 files changed, 18 insertions, 14 deletions
diff --git a/src/net/arp.c b/src/net/arp.c
index fea81d71..897906bc 100644
--- a/src/net/arp.c
+++ b/src/net/arp.c
@@ -38,9 +38,9 @@
/** Registered ARP protocols */
static struct arp_net_protocol arp_net_protocols[0]
- __table_start ( arp_net_protocols );
+ __table_start ( struct arp_net_protocol, arp_net_protocols );
static struct arp_net_protocol arp_net_protocols_end[0]
- __table_end ( arp_net_protocols );
+ __table_end ( struct arp_net_protocol, arp_net_protocols );
/** An ARP cache entry */
struct arp_entry {
diff --git a/src/net/netdevice.c b/src/net/netdevice.c
index 8c95afd6..d8de81be 100644
--- a/src/net/netdevice.c
+++ b/src/net/netdevice.c
@@ -27,6 +27,7 @@
#include <gpxe/tables.h>
#include <gpxe/process.h>
#include <gpxe/init.h>
+#include <gpxe/device.h>
#include <gpxe/netdevice.h>
/** @file
@@ -36,8 +37,10 @@
*/
/** Registered network-layer protocols */
-static struct net_protocol net_protocols[0] __table_start ( net_protocols );
-static struct net_protocol net_protocols_end[0] __table_end ( net_protocols );
+static struct net_protocol net_protocols[0]
+ __table_start ( struct net_protocol, net_protocols );
+static struct net_protocol net_protocols_end[0]
+ __table_end ( struct net_protocol, net_protocols );
/** List of network devices */
struct list_head net_devices = LIST_HEAD_INIT ( net_devices );
@@ -200,8 +203,9 @@ int register_netdev ( struct net_device *netdev ) {
/* Add to device list */
list_add_tail ( &netdev->list, &net_devices );
- DBGC ( netdev, "NETDEV %p registered as %s (%s)\n",
- netdev, netdev->name, netdev_hwaddr ( netdev ) );
+ DBGC ( netdev, "NETDEV %p registered as %s (phys %s hwaddr %s)\n",
+ netdev, netdev->name, netdev->dev->name,
+ netdev_hwaddr ( netdev ) );
return 0;
}
diff --git a/src/net/tcpip.c b/src/net/tcpip.c
index eec9ee94..00f81cd9 100644
--- a/src/net/tcpip.c
+++ b/src/net/tcpip.c
@@ -15,16 +15,16 @@
*/
/** Registered network-layer protocols that support TCP/IP */
-static struct tcpip_net_protocol
-tcpip_net_protocols[0] __table_start ( tcpip_net_protocols );
-static struct tcpip_net_protocol
-tcpip_net_protocols_end[0] __table_end ( tcpip_net_protocols );
+static struct tcpip_net_protocol tcpip_net_protocols[0]
+ __table_start ( struct tcpip_net_protocol, tcpip_net_protocols );
+static struct tcpip_net_protocol tcpip_net_protocols_end[0]
+ __table_end ( struct tcpip_net_protocol, tcpip_net_protocols );
/** Registered transport-layer protocols that support TCP/IP */
-static struct tcpip_protocol
-tcpip_protocols[0]__table_start ( tcpip_protocols );
-static struct tcpip_protocol
-tcpip_protocols_end[0] __table_end ( tcpip_protocols );
+static struct tcpip_protocol tcpip_protocols[0]
+ __table_start ( struct tcpip_protocol, tcpip_protocols );
+static struct tcpip_protocol tcpip_protocols_end[0]
+ __table_end ( struct tcpip_protocol, tcpip_protocols );
/** Process a received TCP/IP packet
*