summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2010-12-01 19:46:50 +0100
committerMichael Brown2010-12-01 19:46:50 +0100
commit5273c2748cbe48ad1fdc19d5f3026b3f10fa5057 (patch)
treed716108217b1d20338eb36697cab42b49553543e
parent[vlan] Use "-" instead of "." as separator in VLAN device names (diff)
downloadipxe-5273c2748cbe48ad1fdc19d5f3026b3f10fa5057.tar.gz
ipxe-5273c2748cbe48ad1fdc19d5f3026b3f10fa5057.tar.xz
ipxe-5273c2748cbe48ad1fdc19d5f3026b3f10fa5057.zip
[vlan] Expose vlan_find() to network card drivers
Some network cards automatically strip the VLAN header, providing the VLAN tag via a side channel such as a completion queue entry. These cards need to be able to report receive completions directly against the relevant VLAN device. Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/include/ipxe/vlan.h2
-rw-r--r--src/net/vlan.c3
2 files changed, 3 insertions, 2 deletions
diff --git a/src/include/ipxe/vlan.h b/src/include/ipxe/vlan.h
index c9a9821a..d9f4484e 100644
--- a/src/include/ipxe/vlan.h
+++ b/src/include/ipxe/vlan.h
@@ -59,6 +59,8 @@ struct vlan_header {
*/
#define VLAN_PRIORITY_IS_VALID( priority ) ( (priority) <= 7 )
+extern struct net_device * vlan_find ( struct net_device *trunk,
+ unsigned int tag );
extern int vlan_can_be_trunk ( struct net_device *trunk );
extern int vlan_create ( struct net_device *trunk, unsigned int tag,
unsigned int priority );
diff --git a/src/net/vlan.c b/src/net/vlan.c
index 4440fd84..9ac560f1 100644
--- a/src/net/vlan.c
+++ b/src/net/vlan.c
@@ -193,8 +193,7 @@ static void vlan_sync ( struct net_device *netdev ) {
* @v tag VLAN tag
* @ret netdev VLAN device, if any
*/
-static struct net_device * vlan_find ( struct net_device *trunk,
- uint16_t tag ) {
+struct net_device * vlan_find ( struct net_device *trunk, unsigned int tag ) {
struct net_device *netdev;
struct vlan_device *vlan;