net_sched: cls_flow: add key rxhash
authorChangli Gao <xiaosuo@gmail.com>
Sat, 21 Aug 2010 06:23:15 +0000 (06:23 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 22 Aug 2010 06:40:14 +0000 (23:40 -0700)
We can use rxhash to classify the traffic into flows. As rxhash maybe
supplied by NIC or RPS, it is cheaper.

Signed-off-by: Changli Gao <xiaosuo@gmail.com>
Acked-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/pkt_cls.h
net/sched/cls_flow.c

index 7f6ba8658abe4909d27c3699fba92332b059a1dd..defbde203d0782034d23173063a9f7313d0b2e81 100644 (file)
@@ -332,6 +332,7 @@ enum {
        FLOW_KEY_SKUID,
        FLOW_KEY_SKGID,
        FLOW_KEY_VLAN_TAG,
+       FLOW_KEY_RXHASH,
        __FLOW_KEY_MAX,
 };
 
index cd709f1294df1bd536943555885ef6a147efcac4..5b271a18bc3a54199510d8d7c6b8f2844afefcf9 100644 (file)
@@ -306,6 +306,11 @@ static u32 flow_get_vlan_tag(const struct sk_buff *skb)
        return tag & VLAN_VID_MASK;
 }
 
+static u32 flow_get_rxhash(struct sk_buff *skb)
+{
+       return skb_get_rxhash(skb);
+}
+
 static u32 flow_key_get(struct sk_buff *skb, int key)
 {
        switch (key) {
@@ -343,6 +348,8 @@ static u32 flow_key_get(struct sk_buff *skb, int key)
                return flow_get_skgid(skb);
        case FLOW_KEY_VLAN_TAG:
                return flow_get_vlan_tag(skb);
+       case FLOW_KEY_RXHASH:
+               return flow_get_rxhash(skb);
        default:
                WARN_ON(1);
                return 0;