]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[netdevice] Separate VLAN support from presence of VLAN-supporting drivers
authorMichael Brown <mcb30@ipxe.org>
Fri, 1 Mar 2013 16:32:29 +0000 (16:32 +0000)
committerMichael Brown <mcb30@ipxe.org>
Fri, 1 Mar 2013 16:36:34 +0000 (16:36 +0000)
Some NICs (e.g. Hermon) provide hardware support for stripping the
VLAN tag, but do not provide any way for this support to be disabled.
Drivers for this hardware must therefore call vlan_find() to identify
a suitable receiving network device.

Provide a weak version of vlan_find() which will always return NULL if
VLAN support has not been enabled (either directly, or by enabling
a feature such as FCoE which requires VLAN support).  This allows the
VLAN code to be omitted from builds where the user has not requested
support for VLANs.

Inspired-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/net/netdevice.c

index a7166630428b4b6e047317a11c50c9c8cab8416a..e9cbb9e96b438b6558d93881f0ff050a8dec3b2b 100644 (file)
@@ -794,5 +794,17 @@ __weak unsigned int vlan_tag ( struct net_device *netdev __unused ) {
        return 0;
 }
 
+/**
+ * Identify VLAN device (when VLAN support is not present)
+ *
+ * @v trunk            Trunk network device
+ * @v tag              VLAN tag
+ * @ret netdev         VLAN device, if any
+ */
+__weak struct net_device * vlan_find ( struct net_device *trunk __unused,
+                                      unsigned int tag __unused ) {
+       return NULL;
+}
+
 /** Networking stack process */
 PERMANENT_PROCESS ( net_process, net_step );