Loading drivers/net/bonding/bond_main.c +9 −9 Original line number Diff line number Diff line Loading @@ -3051,16 +3051,16 @@ static bool bond_flow_dissect(struct bonding *bond, struct sk_buff *skb, int noff, proto = -1; if (bond->params.xmit_policy > BOND_XMIT_POLICY_LAYER23) return skb_flow_dissect(skb, fk); return skb_flow_dissect_flow_keys(skb, fk); fk->ports = 0; fk->ports.ports = 0; noff = skb_network_offset(skb); if (skb->protocol == htons(ETH_P_IP)) { if (unlikely(!pskb_may_pull(skb, noff + sizeof(*iph)))) return false; iph = ip_hdr(skb); fk->src = iph->saddr; fk->dst = iph->daddr; fk->addrs.src = iph->saddr; fk->addrs.dst = iph->daddr; noff += iph->ihl << 2; if (!ip_is_fragment(iph)) proto = iph->protocol; Loading @@ -3068,15 +3068,15 @@ static bool bond_flow_dissect(struct bonding *bond, struct sk_buff *skb, if (unlikely(!pskb_may_pull(skb, noff + sizeof(*iph6)))) return false; iph6 = ipv6_hdr(skb); fk->src = (__force __be32)ipv6_addr_hash(&iph6->saddr); fk->dst = (__force __be32)ipv6_addr_hash(&iph6->daddr); fk->addrs.src = (__force __be32)ipv6_addr_hash(&iph6->saddr); fk->addrs.dst = (__force __be32)ipv6_addr_hash(&iph6->daddr); noff += sizeof(*iph6); proto = iph6->nexthdr; } else { return false; } if (bond->params.xmit_policy == BOND_XMIT_POLICY_LAYER34 && proto >= 0) fk->ports = skb_flow_get_ports(skb, noff, proto); fk->ports.ports = skb_flow_get_ports(skb, noff, proto); return true; } Loading @@ -3102,8 +3102,8 @@ u32 bond_xmit_hash(struct bonding *bond, struct sk_buff *skb) bond->params.xmit_policy == BOND_XMIT_POLICY_ENCAP23) hash = bond_eth_hash(skb); else hash = (__force u32)flow.ports; hash ^= (__force u32)flow.dst ^ (__force u32)flow.src; hash = (__force u32)flow.ports.ports; hash ^= (__force u32)flow.addrs.dst ^ (__force u32)flow.addrs.src; hash ^= (hash >> 16); hash ^= (hash >> 8); Loading drivers/net/ethernet/cisco/enic/enic_clsf.c +14 −13 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ 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; Loading @@ -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.src); data.u.ipv4.dst_addr = ntohl(keys->addrs.dst); data.u.ipv4.src_port = ntohs(keys->ports.port16[0]); data.u.ipv4.dst_port = ntohs(keys->ports.port16[1]); data.u.ipv4.flags = FILTER_FIELDS_IPV4_5TUPLE; spin_lock_bh(&enic->devcmd_lock); Loading Loading @@ -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.src == k->addrs.src && tpos->keys.addrs.dst == k->addrs.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; } Loading @@ -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); 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; Loading drivers/net/ethernet/cisco/enic/enic_ethtool.c +5 −5 Original line number Diff line number Diff line Loading @@ -334,7 +334,7 @@ static int enic_grxclsrule(struct enic *enic, struct ethtool_rxnfc *cmd) n = htbl_fltr_search(enic, (u16)fsp->location); if (!n) return -EINVAL; switch (n->keys.ip_proto) { switch (n->keys.basic.ip_proto) { case IPPROTO_TCP: fsp->flow_type = TCP_V4_FLOW; break; Loading @@ -346,16 +346,16 @@ static int enic_grxclsrule(struct enic *enic, struct ethtool_rxnfc *cmd) break; } fsp->h_u.tcp_ip4_spec.ip4src = n->keys.src; fsp->h_u.tcp_ip4_spec.ip4src = n->keys.addrs.src; fsp->m_u.tcp_ip4_spec.ip4src = (__u32)~0; fsp->h_u.tcp_ip4_spec.ip4dst = n->keys.dst; fsp->h_u.tcp_ip4_spec.ip4dst = n->keys.addrs.dst; fsp->m_u.tcp_ip4_spec.ip4dst = (__u32)~0; fsp->h_u.tcp_ip4_spec.psrc = n->keys.port16[0]; fsp->h_u.tcp_ip4_spec.psrc = n->keys.ports.port16[0]; fsp->m_u.tcp_ip4_spec.psrc = (__u16)~0; fsp->h_u.tcp_ip4_spec.pdst = n->keys.port16[1]; fsp->h_u.tcp_ip4_spec.pdst = n->keys.ports.port16[1]; fsp->m_u.tcp_ip4_spec.pdst = (__u16)~0; fsp->ring_cookie = n->rq_id; Loading drivers/net/hyperv/netvsc_drv.c +4 −4 Original line number Diff line number Diff line Loading @@ -196,12 +196,12 @@ static bool netvsc_set_hash(u32 *hash, struct sk_buff *skb) struct flow_keys flow; int data_len; if (!skb_flow_dissect(skb, &flow) || !(flow.n_proto == htons(ETH_P_IP) || flow.n_proto == htons(ETH_P_IPV6))) if (!skb_flow_dissect_flow_keys(skb, &flow) || !(flow.basic.n_proto == htons(ETH_P_IP) || flow.basic.n_proto == htons(ETH_P_IPV6))) return false; if (flow.ip_proto == IPPROTO_TCP) if (flow.basic.ip_proto == IPPROTO_TCP) data_len = 12; else data_len = 8; Loading include/linux/skbuff.h +2 −2 Original line number Diff line number Diff line Loading @@ -1935,8 +1935,8 @@ static inline void skb_probe_transport_header(struct sk_buff *skb, if (skb_transport_header_was_set(skb)) return; else if (skb_flow_dissect(skb, &keys)) skb_set_transport_header(skb, keys.thoff); else if (skb_flow_dissect_flow_keys(skb, &keys)) skb_set_transport_header(skb, keys.basic.thoff); else skb_set_transport_header(skb, offset_hint); } Loading Loading
drivers/net/bonding/bond_main.c +9 −9 Original line number Diff line number Diff line Loading @@ -3051,16 +3051,16 @@ static bool bond_flow_dissect(struct bonding *bond, struct sk_buff *skb, int noff, proto = -1; if (bond->params.xmit_policy > BOND_XMIT_POLICY_LAYER23) return skb_flow_dissect(skb, fk); return skb_flow_dissect_flow_keys(skb, fk); fk->ports = 0; fk->ports.ports = 0; noff = skb_network_offset(skb); if (skb->protocol == htons(ETH_P_IP)) { if (unlikely(!pskb_may_pull(skb, noff + sizeof(*iph)))) return false; iph = ip_hdr(skb); fk->src = iph->saddr; fk->dst = iph->daddr; fk->addrs.src = iph->saddr; fk->addrs.dst = iph->daddr; noff += iph->ihl << 2; if (!ip_is_fragment(iph)) proto = iph->protocol; Loading @@ -3068,15 +3068,15 @@ static bool bond_flow_dissect(struct bonding *bond, struct sk_buff *skb, if (unlikely(!pskb_may_pull(skb, noff + sizeof(*iph6)))) return false; iph6 = ipv6_hdr(skb); fk->src = (__force __be32)ipv6_addr_hash(&iph6->saddr); fk->dst = (__force __be32)ipv6_addr_hash(&iph6->daddr); fk->addrs.src = (__force __be32)ipv6_addr_hash(&iph6->saddr); fk->addrs.dst = (__force __be32)ipv6_addr_hash(&iph6->daddr); noff += sizeof(*iph6); proto = iph6->nexthdr; } else { return false; } if (bond->params.xmit_policy == BOND_XMIT_POLICY_LAYER34 && proto >= 0) fk->ports = skb_flow_get_ports(skb, noff, proto); fk->ports.ports = skb_flow_get_ports(skb, noff, proto); return true; } Loading @@ -3102,8 +3102,8 @@ u32 bond_xmit_hash(struct bonding *bond, struct sk_buff *skb) bond->params.xmit_policy == BOND_XMIT_POLICY_ENCAP23) hash = bond_eth_hash(skb); else hash = (__force u32)flow.ports; hash ^= (__force u32)flow.dst ^ (__force u32)flow.src; hash = (__force u32)flow.ports.ports; hash ^= (__force u32)flow.addrs.dst ^ (__force u32)flow.addrs.src; hash ^= (hash >> 16); hash ^= (hash >> 8); Loading
drivers/net/ethernet/cisco/enic/enic_clsf.c +14 −13 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ 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; Loading @@ -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.src); data.u.ipv4.dst_addr = ntohl(keys->addrs.dst); data.u.ipv4.src_port = ntohs(keys->ports.port16[0]); data.u.ipv4.dst_port = ntohs(keys->ports.port16[1]); data.u.ipv4.flags = FILTER_FIELDS_IPV4_5TUPLE; spin_lock_bh(&enic->devcmd_lock); Loading Loading @@ -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.src == k->addrs.src && tpos->keys.addrs.dst == k->addrs.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; } Loading @@ -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); 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; Loading
drivers/net/ethernet/cisco/enic/enic_ethtool.c +5 −5 Original line number Diff line number Diff line Loading @@ -334,7 +334,7 @@ static int enic_grxclsrule(struct enic *enic, struct ethtool_rxnfc *cmd) n = htbl_fltr_search(enic, (u16)fsp->location); if (!n) return -EINVAL; switch (n->keys.ip_proto) { switch (n->keys.basic.ip_proto) { case IPPROTO_TCP: fsp->flow_type = TCP_V4_FLOW; break; Loading @@ -346,16 +346,16 @@ static int enic_grxclsrule(struct enic *enic, struct ethtool_rxnfc *cmd) break; } fsp->h_u.tcp_ip4_spec.ip4src = n->keys.src; fsp->h_u.tcp_ip4_spec.ip4src = n->keys.addrs.src; fsp->m_u.tcp_ip4_spec.ip4src = (__u32)~0; fsp->h_u.tcp_ip4_spec.ip4dst = n->keys.dst; fsp->h_u.tcp_ip4_spec.ip4dst = n->keys.addrs.dst; fsp->m_u.tcp_ip4_spec.ip4dst = (__u32)~0; fsp->h_u.tcp_ip4_spec.psrc = n->keys.port16[0]; fsp->h_u.tcp_ip4_spec.psrc = n->keys.ports.port16[0]; fsp->m_u.tcp_ip4_spec.psrc = (__u16)~0; fsp->h_u.tcp_ip4_spec.pdst = n->keys.port16[1]; fsp->h_u.tcp_ip4_spec.pdst = n->keys.ports.port16[1]; fsp->m_u.tcp_ip4_spec.pdst = (__u16)~0; fsp->ring_cookie = n->rq_id; Loading
drivers/net/hyperv/netvsc_drv.c +4 −4 Original line number Diff line number Diff line Loading @@ -196,12 +196,12 @@ static bool netvsc_set_hash(u32 *hash, struct sk_buff *skb) struct flow_keys flow; int data_len; if (!skb_flow_dissect(skb, &flow) || !(flow.n_proto == htons(ETH_P_IP) || flow.n_proto == htons(ETH_P_IPV6))) if (!skb_flow_dissect_flow_keys(skb, &flow) || !(flow.basic.n_proto == htons(ETH_P_IP) || flow.basic.n_proto == htons(ETH_P_IPV6))) return false; if (flow.ip_proto == IPPROTO_TCP) if (flow.basic.ip_proto == IPPROTO_TCP) data_len = 12; else data_len = 8; Loading
include/linux/skbuff.h +2 −2 Original line number Diff line number Diff line Loading @@ -1935,8 +1935,8 @@ static inline void skb_probe_transport_header(struct sk_buff *skb, if (skb_transport_header_was_set(skb)) return; else if (skb_flow_dissect(skb, &keys)) skb_set_transport_header(skb, keys.thoff); else if (skb_flow_dissect_flow_keys(skb, &keys)) skb_set_transport_header(skb, keys.basic.thoff); else skb_set_transport_header(skb, offset_hint); } Loading