diff mbox

netsched: Allow meta match on vlan tag on receive

Message ID 20090413173008.3278a54c@nehalam
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

stephen hemminger April 14, 2009, 12:30 a.m. UTC
When vlan acceleration is used on receive, the vlan tag is maintained
outside of the skb data. The existing vlan tag match only works on TX
path because it uses vlan_get_tag which tests for VLAN_HW_TX_ACCEL.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

David Miller April 14, 2009, 1:13 a.m. UTC | #1
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Mon, 13 Apr 2009 17:30:08 -0700

> When vlan acceleration is used on receive, the vlan tag is maintained
> outside of the skb data. The existing vlan tag match only works on TX
> path because it uses vlan_get_tag which tests for VLAN_HW_TX_ACCEL.
> 
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>

Looks good, applied, thanks!
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

--- a/net/sched/em_meta.c	2009-04-08 08:45:13.000000000 -0700
+++ b/net/sched/em_meta.c	2009-04-09 09:26:32.397494374 -0700
@@ -176,8 +176,10 @@  META_COLLECTOR(var_dev)
 
 META_COLLECTOR(int_vlan_tag)
 {
-	unsigned short uninitialized_var(tag);
-	if (vlan_get_tag(skb, &tag) < 0)
+	unsigned short tag;
+
+	tag = vlan_tx_tag_get(skb);
+	if (!tag && __vlan_get_tag(skb, &tag))
 		*err = -1;
 	else
 		dst->value = tag;