mirror of https://github.com/ipxe/ipxe.git
[vlan] Allow external code to identify VLAN priority as well as tag
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/838/head
parent
b0ded89e91
commit
5e62b4bc6c
|
@ -61,7 +61,19 @@ struct vlan_header {
|
||||||
*/
|
*/
|
||||||
#define VLAN_PRIORITY_IS_VALID( priority ) ( (priority) <= 7 )
|
#define VLAN_PRIORITY_IS_VALID( priority ) ( (priority) <= 7 )
|
||||||
|
|
||||||
extern unsigned int vlan_tag ( struct net_device *netdev );
|
extern unsigned int vlan_tci ( struct net_device *netdev );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the VLAN tag
|
||||||
|
*
|
||||||
|
* @v netdev Network device
|
||||||
|
* @ret tag VLAN tag, or 0 if device is not a VLAN device
|
||||||
|
*/
|
||||||
|
static inline __attribute__ (( always_inline )) unsigned int
|
||||||
|
vlan_tag ( struct net_device *netdev ) {
|
||||||
|
return VLAN_TAG ( vlan_tci ( netdev ) );
|
||||||
|
}
|
||||||
|
|
||||||
extern int vlan_can_be_trunk ( struct net_device *trunk );
|
extern int vlan_can_be_trunk ( struct net_device *trunk );
|
||||||
extern int vlan_create ( struct net_device *trunk, unsigned int tag,
|
extern int vlan_create ( struct net_device *trunk, unsigned int tag,
|
||||||
unsigned int priority );
|
unsigned int priority );
|
||||||
|
|
|
@ -1171,12 +1171,12 @@ static void net_step ( struct process *process __unused ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the VLAN tag (when VLAN support is not present)
|
* Get the VLAN tag control information (when VLAN support is not present)
|
||||||
*
|
*
|
||||||
* @v netdev Network device
|
* @v netdev Network device
|
||||||
* @ret tag 0, indicating that device is not a VLAN device
|
* @ret tag 0, indicating that device is not a VLAN device
|
||||||
*/
|
*/
|
||||||
__weak unsigned int vlan_tag ( struct net_device *netdev __unused ) {
|
__weak unsigned int vlan_tci ( struct net_device *netdev __unused ) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -288,17 +288,17 @@ struct net_protocol vlan_protocol __net_protocol = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the VLAN tag
|
* Get the VLAN tag control information
|
||||||
*
|
*
|
||||||
* @v netdev Network device
|
* @v netdev Network device
|
||||||
* @ret tag VLAN tag, or 0 if device is not a VLAN device
|
* @ret tci VLAN tag control information, or 0 if not a VLAN device
|
||||||
*/
|
*/
|
||||||
unsigned int vlan_tag ( struct net_device *netdev ) {
|
unsigned int vlan_tci ( struct net_device *netdev ) {
|
||||||
struct vlan_device *vlan;
|
struct vlan_device *vlan;
|
||||||
|
|
||||||
if ( netdev->op == &vlan_operations ) {
|
if ( netdev->op == &vlan_operations ) {
|
||||||
vlan = netdev->priv;
|
vlan = netdev->priv;
|
||||||
return vlan->tag;
|
return ( VLAN_TCI ( vlan->tag, vlan->priority ) );
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue