diff options
author | David S. Miller <davem@davemloft.net> | 2012-07-20 19:16:34 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-20 19:16:34 -0400 |
commit | c073cfc89ff48ed5884af9e758344243caef92f7 (patch) | |
tree | 26be3bd03ecbfc5d7fd4f2d9e6c4aaa27c441f03 | |
parent | 0bb4087cbec0ef74fd416789d6aad67957063057 (diff) | |
parent | efaac3bf087b1a6cec28f2a041e01c874d65390c (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jesse/openvswitch
Jesse Gross says:
====================
A few bug fixes and small enhancements for net-next/3.6.
...
Ansis Atteka (1):
openvswitch: Do not send notification if ovs_vport_set_options() failed
Ben Pfaff (1):
openvswitch: Check gso_type for correct sk_buff in queue_gso_packets().
Jesse Gross (2):
openvswitch: Enable retrieval of TCP flags from IPv6 traffic.
openvswitch: Reset upper layer protocol info on internal devices.
Leo Alterman (1):
openvswitch: Fix typo in documentation.
Pravin B Shelar (1):
openvswitch: Check currect return value from skb_gso_segment()
Raju Subramanian (1):
openvswitch: Replace Nicira Networks.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | Documentation/networking/openvswitch.txt | 2 | ||||
-rw-r--r-- | net/openvswitch/actions.c | 2 | ||||
-rw-r--r-- | net/openvswitch/datapath.c | 13 | ||||
-rw-r--r-- | net/openvswitch/datapath.h | 2 | ||||
-rw-r--r-- | net/openvswitch/dp_notify.c | 2 | ||||
-rw-r--r-- | net/openvswitch/flow.c | 5 | ||||
-rw-r--r-- | net/openvswitch/flow.h | 2 | ||||
-rw-r--r-- | net/openvswitch/vport-internal_dev.c | 10 | ||||
-rw-r--r-- | net/openvswitch/vport-internal_dev.h | 2 | ||||
-rw-r--r-- | net/openvswitch/vport-netdev.c | 2 | ||||
-rw-r--r-- | net/openvswitch/vport-netdev.h | 2 | ||||
-rw-r--r-- | net/openvswitch/vport.c | 2 | ||||
-rw-r--r-- | net/openvswitch/vport.h | 2 |
13 files changed, 30 insertions, 18 deletions
diff --git a/Documentation/networking/openvswitch.txt b/Documentation/networking/openvswitch.txt index b8a048b8df3a..8fa2dd1e792e 100644 --- a/Documentation/networking/openvswitch.txt +++ b/Documentation/networking/openvswitch.txt | |||
@@ -118,7 +118,7 @@ essentially like this, ignoring metadata: | |||
118 | Naively, to add VLAN support, it makes sense to add a new "vlan" flow | 118 | Naively, to add VLAN support, it makes sense to add a new "vlan" flow |
119 | key attribute to contain the VLAN tag, then continue to decode the | 119 | key attribute to contain the VLAN tag, then continue to decode the |
120 | encapsulated headers beyond the VLAN tag using the existing field | 120 | encapsulated headers beyond the VLAN tag using the existing field |
121 | definitions. With this change, an TCP packet in VLAN 10 would have a | 121 | definitions. With this change, a TCP packet in VLAN 10 would have a |
122 | flow key much like this: | 122 | flow key much like this: |
123 | 123 | ||
124 | eth(...), vlan(vid=10, pcp=0), eth_type(0x0800), ip(proto=6, ...), tcp(...) | 124 | eth(...), vlan(vid=10, pcp=0), eth_type(0x0800), ip(proto=6, ...), tcp(...) |
diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c index 48badffaafc1..f3f96badf5aa 100644 --- a/net/openvswitch/actions.c +++ b/net/openvswitch/actions.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2012 Nicira Networks. | 2 | * Copyright (c) 2007-2012 Nicira, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c index 2c74daa5aca5..d8277d29e710 100644 --- a/net/openvswitch/datapath.c +++ b/net/openvswitch/datapath.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2012 Nicira Networks. | 2 | * Copyright (c) 2007-2012 Nicira, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |
@@ -263,14 +263,15 @@ err: | |||
263 | static int queue_gso_packets(int dp_ifindex, struct sk_buff *skb, | 263 | static int queue_gso_packets(int dp_ifindex, struct sk_buff *skb, |
264 | const struct dp_upcall_info *upcall_info) | 264 | const struct dp_upcall_info *upcall_info) |
265 | { | 265 | { |
266 | unsigned short gso_type = skb_shinfo(skb)->gso_type; | ||
266 | struct dp_upcall_info later_info; | 267 | struct dp_upcall_info later_info; |
267 | struct sw_flow_key later_key; | 268 | struct sw_flow_key later_key; |
268 | struct sk_buff *segs, *nskb; | 269 | struct sk_buff *segs, *nskb; |
269 | int err; | 270 | int err; |
270 | 271 | ||
271 | segs = skb_gso_segment(skb, NETIF_F_SG | NETIF_F_HW_CSUM); | 272 | segs = skb_gso_segment(skb, NETIF_F_SG | NETIF_F_HW_CSUM); |
272 | if (IS_ERR(skb)) | 273 | if (IS_ERR(segs)) |
273 | return PTR_ERR(skb); | 274 | return PTR_ERR(segs); |
274 | 275 | ||
275 | /* Queue all of the segments. */ | 276 | /* Queue all of the segments. */ |
276 | skb = segs; | 277 | skb = segs; |
@@ -279,7 +280,7 @@ static int queue_gso_packets(int dp_ifindex, struct sk_buff *skb, | |||
279 | if (err) | 280 | if (err) |
280 | break; | 281 | break; |
281 | 282 | ||
282 | if (skb == segs && skb_shinfo(skb)->gso_type & SKB_GSO_UDP) { | 283 | if (skb == segs && gso_type & SKB_GSO_UDP) { |
283 | /* The initial flow key extracted by ovs_flow_extract() | 284 | /* The initial flow key extracted by ovs_flow_extract() |
284 | * in this case is for a first fragment, so we need to | 285 | * in this case is for a first fragment, so we need to |
285 | * properly mark later fragments. | 286 | * properly mark later fragments. |
@@ -1649,7 +1650,9 @@ static int ovs_vport_cmd_set(struct sk_buff *skb, struct genl_info *info) | |||
1649 | 1650 | ||
1650 | if (!err && a[OVS_VPORT_ATTR_OPTIONS]) | 1651 | if (!err && a[OVS_VPORT_ATTR_OPTIONS]) |
1651 | err = ovs_vport_set_options(vport, a[OVS_VPORT_ATTR_OPTIONS]); | 1652 | err = ovs_vport_set_options(vport, a[OVS_VPORT_ATTR_OPTIONS]); |
1652 | if (!err && a[OVS_VPORT_ATTR_UPCALL_PID]) | 1653 | if (err) |
1654 | goto exit_unlock; | ||
1655 | if (a[OVS_VPORT_ATTR_UPCALL_PID]) | ||
1653 | vport->upcall_pid = nla_get_u32(a[OVS_VPORT_ATTR_UPCALL_PID]); | 1656 | vport->upcall_pid = nla_get_u32(a[OVS_VPORT_ATTR_UPCALL_PID]); |
1654 | 1657 | ||
1655 | reply = ovs_vport_cmd_build_info(vport, info->snd_pid, info->snd_seq, | 1658 | reply = ovs_vport_cmd_build_info(vport, info->snd_pid, info->snd_seq, |
diff --git a/net/openvswitch/datapath.h b/net/openvswitch/datapath.h index c73370cc1f02..c1105c147531 100644 --- a/net/openvswitch/datapath.h +++ b/net/openvswitch/datapath.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2011 Nicira Networks. | 2 | * Copyright (c) 2007-2012 Nicira, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |
diff --git a/net/openvswitch/dp_notify.c b/net/openvswitch/dp_notify.c index 46736518c453..36dcee8fc84a 100644 --- a/net/openvswitch/dp_notify.c +++ b/net/openvswitch/dp_notify.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2011 Nicira Networks. | 2 | * Copyright (c) 2007-2012 Nicira, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |
diff --git a/net/openvswitch/flow.c b/net/openvswitch/flow.c index 6d4d8097cf96..b7f38b161909 100644 --- a/net/openvswitch/flow.c +++ b/net/openvswitch/flow.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2011 Nicira Networks. | 2 | * Copyright (c) 2007-2011 Nicira, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |
@@ -182,7 +182,8 @@ void ovs_flow_used(struct sw_flow *flow, struct sk_buff *skb) | |||
182 | { | 182 | { |
183 | u8 tcp_flags = 0; | 183 | u8 tcp_flags = 0; |
184 | 184 | ||
185 | if (flow->key.eth.type == htons(ETH_P_IP) && | 185 | if ((flow->key.eth.type == htons(ETH_P_IP) || |
186 | flow->key.eth.type == htons(ETH_P_IPV6)) && | ||
186 | flow->key.ip.proto == IPPROTO_TCP && | 187 | flow->key.ip.proto == IPPROTO_TCP && |
187 | likely(skb->len >= skb_transport_offset(skb) + sizeof(struct tcphdr))) { | 188 | likely(skb->len >= skb_transport_offset(skb) + sizeof(struct tcphdr))) { |
188 | u8 *tcp = (u8 *)tcp_hdr(skb); | 189 | u8 *tcp = (u8 *)tcp_hdr(skb); |
diff --git a/net/openvswitch/flow.h b/net/openvswitch/flow.h index 2747dc2c4ac1..9b75617ca4e0 100644 --- a/net/openvswitch/flow.h +++ b/net/openvswitch/flow.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2011 Nicira Networks. | 2 | * Copyright (c) 2007-2011 Nicira, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |
diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c index b6b1d7daa3cb..4061b9ee07f7 100644 --- a/net/openvswitch/vport-internal_dev.c +++ b/net/openvswitch/vport-internal_dev.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2011 Nicira Networks. | 2 | * Copyright (c) 2007-2012 Nicira, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |
@@ -24,6 +24,9 @@ | |||
24 | #include <linux/ethtool.h> | 24 | #include <linux/ethtool.h> |
25 | #include <linux/skbuff.h> | 25 | #include <linux/skbuff.h> |
26 | 26 | ||
27 | #include <net/dst.h> | ||
28 | #include <net/xfrm.h> | ||
29 | |||
27 | #include "datapath.h" | 30 | #include "datapath.h" |
28 | #include "vport-internal_dev.h" | 31 | #include "vport-internal_dev.h" |
29 | #include "vport-netdev.h" | 32 | #include "vport-netdev.h" |
@@ -209,6 +212,11 @@ static int internal_dev_recv(struct vport *vport, struct sk_buff *skb) | |||
209 | int len; | 212 | int len; |
210 | 213 | ||
211 | len = skb->len; | 214 | len = skb->len; |
215 | |||
216 | skb_dst_drop(skb); | ||
217 | nf_reset(skb); | ||
218 | secpath_reset(skb); | ||
219 | |||
212 | skb->dev = netdev; | 220 | skb->dev = netdev; |
213 | skb->pkt_type = PACKET_HOST; | 221 | skb->pkt_type = PACKET_HOST; |
214 | skb->protocol = eth_type_trans(skb, netdev); | 222 | skb->protocol = eth_type_trans(skb, netdev); |
diff --git a/net/openvswitch/vport-internal_dev.h b/net/openvswitch/vport-internal_dev.h index 3454447c5f11..9a7d30ecc6a2 100644 --- a/net/openvswitch/vport-internal_dev.h +++ b/net/openvswitch/vport-internal_dev.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2011 Nicira Networks. | 2 | * Copyright (c) 2007-2011 Nicira, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |
diff --git a/net/openvswitch/vport-netdev.c b/net/openvswitch/vport-netdev.c index 3fd6c0d88e12..6ea3551cc78c 100644 --- a/net/openvswitch/vport-netdev.c +++ b/net/openvswitch/vport-netdev.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2011 Nicira Networks. | 2 | * Copyright (c) 2007-2012 Nicira, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |
diff --git a/net/openvswitch/vport-netdev.h b/net/openvswitch/vport-netdev.h index fd9b008a0e6e..f7072a25c604 100644 --- a/net/openvswitch/vport-netdev.h +++ b/net/openvswitch/vport-netdev.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2011 Nicira Networks. | 2 | * Copyright (c) 2007-2011 Nicira, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |
diff --git a/net/openvswitch/vport.c b/net/openvswitch/vport.c index 6c066ba25dc7..6140336e79d7 100644 --- a/net/openvswitch/vport.c +++ b/net/openvswitch/vport.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2011 Nicira Networks. | 2 | * Copyright (c) 2007-2012 Nicira, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |
diff --git a/net/openvswitch/vport.h b/net/openvswitch/vport.h index 19609629dabd..aac680ca2b06 100644 --- a/net/openvswitch/vport.h +++ b/net/openvswitch/vport.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2011 Nicira Networks. | 2 | * Copyright (c) 2007-2012 Nicira, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |