These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / net / ethernet / cisco / enic / enic_clsf.c
index 0be6850..3c677ed 100644 (file)
@@ -5,7 +5,7 @@
 #include <linux/in.h>
 #include <linux/types.h>
 #include <linux/skbuff.h>
-#include <net/flow_keys.h>
+#include <net/flow_dissector.h>
 #include "enic_res.h"
 #include "enic_clsf.h"
 
  *     @rq: rq number to steer to
  *
  * This function returns filter_id(hardware_id) of the filter
- * added. In case of error it returns an negative number.
+ * added. In case of error it returns a negative number.
  */
 int enic_addfltr_5t(struct enic *enic, struct flow_keys *keys, u16 rq)
 {
        int res;
        struct filter data;
 
-       switch (keys->ip_proto) {
+       switch (keys->basic.ip_proto) {
        case IPPROTO_TCP:
                data.u.ipv4.protocol = PROTO_TCP;
                break;
@@ -33,10 +33,10 @@ int enic_addfltr_5t(struct enic *enic, struct flow_keys *keys, u16 rq)
                return -EPROTONOSUPPORT;
        };
        data.type = FILTER_IPV4_5TUPLE;
-       data.u.ipv4.src_addr = ntohl(keys->src);
-       data.u.ipv4.dst_addr = ntohl(keys->dst);
-       data.u.ipv4.src_port = ntohs(keys->port16[0]);
-       data.u.ipv4.dst_port = ntohs(keys->port16[1]);
+       data.u.ipv4.src_addr = ntohl(keys->addrs.v4addrs.src);
+       data.u.ipv4.dst_addr = ntohl(keys->addrs.v4addrs.dst);
+       data.u.ipv4.src_port = ntohs(keys->ports.src);
+       data.u.ipv4.dst_port = ntohs(keys->ports.dst);
        data.u.ipv4.flags = FILTER_FIELDS_IPV4_5TUPLE;
 
        spin_lock_bh(&enic->devcmd_lock);
@@ -158,11 +158,11 @@ static struct enic_rfs_fltr_node *htbl_key_search(struct hlist_head *h,
        struct enic_rfs_fltr_node *tpos;
 
        hlist_for_each_entry(tpos, h, node)
-               if (tpos->keys.src == k->src &&
-                   tpos->keys.dst == k->dst &&
-                   tpos->keys.ports == k->ports &&
-                   tpos->keys.ip_proto == k->ip_proto &&
-                   tpos->keys.n_proto == k->n_proto)
+               if (tpos->keys.addrs.v4addrs.src == k->addrs.v4addrs.src &&
+                   tpos->keys.addrs.v4addrs.dst == k->addrs.v4addrs.dst &&
+                   tpos->keys.ports.ports == k->ports.ports &&
+                   tpos->keys.basic.ip_proto == k->basic.ip_proto &&
+                   tpos->keys.basic.n_proto == k->basic.n_proto)
                        return tpos;
        return NULL;
 }
@@ -177,9 +177,10 @@ int enic_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb,
        int res, i;
 
        enic = netdev_priv(dev);
-       res = skb_flow_dissect(skb, &keys);
-       if (!res || keys.n_proto != htons(ETH_P_IP) ||
-           (keys.ip_proto != IPPROTO_TCP && keys.ip_proto != IPPROTO_UDP))
+       res = skb_flow_dissect_flow_keys(skb, &keys, 0);
+       if (!res || keys.basic.n_proto != htons(ETH_P_IP) ||
+           (keys.basic.ip_proto != IPPROTO_TCP &&
+            keys.basic.ip_proto != IPPROTO_UDP))
                return -EPROTONOSUPPORT;
 
        tbl_idx = skb_get_hash_raw(skb) & ENIC_RFS_FLW_MASK;