* [PATCH net-next 0/5] net: Changes to GRO for encapsulation
@ 2014-09-08 5:26 Tom Herbert
2014-09-08 5:26 ` [PATCH net-next 1/5] net: Fix GRE RX to use skb_transport_header for GRE header offset Tom Herbert
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Tom Herbert @ 2014-09-08 5:26 UTC (permalink / raw)
To: davem, netdev
This patch set has some fixes for encapsulation and GRO.
Tom Herbert (5):
net: Fix GRE RX to use skb_transport_header for GRE header offset
ipip: Add gro callbacks to ipip offload
sit: Add gro callbacks to sit offload
udp: Add try convert checksum is case of skb_steal_sock
net: Export inet_offloads and inet6_offloads
net/ipv4/af_inet.c | 2 ++
net/ipv4/gre_demux.c | 5 ++---
net/ipv4/protocol.c | 1 +
net/ipv4/udp.c | 4 ++++
net/ipv6/ip6_offload.c | 2 ++
net/ipv6/protocol.c | 1 +
6 files changed, 12 insertions(+), 3 deletions(-)
--
2.1.0.rc2.206.gedb03e5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH net-next 1/5] net: Fix GRE RX to use skb_transport_header for GRE header offset
2014-09-08 5:26 [PATCH net-next 0/5] net: Changes to GRO for encapsulation Tom Herbert
@ 2014-09-08 5:26 ` Tom Herbert
2014-09-08 10:37 ` Eric Dumazet
2014-09-08 5:26 ` [PATCH net-next 2/5] ipip: Add gro callbacks to ipip offload Tom Herbert
` (4 subsequent siblings)
5 siblings, 1 reply; 10+ messages in thread
From: Tom Herbert @ 2014-09-08 5:26 UTC (permalink / raw)
To: davem, netdev
GRE assumes that the GRE header is at skb_network_header +
ip_hrdlen(skb). It is more general to use skb_transport_header
and this allows the possbility of inserting additional header
between IP and GRE (which is what we will done in Generic UDP
Encapsulation for GRE).
Signed-off-by: Tom Herbert <therbert@google.com>
---
net/ipv4/gre_demux.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/net/ipv4/gre_demux.c b/net/ipv4/gre_demux.c
index 7e0756d..4a7b5b2 100644
--- a/net/ipv4/gre_demux.c
+++ b/net/ipv4/gre_demux.c
@@ -98,7 +98,6 @@ EXPORT_SYMBOL_GPL(gre_build_header);
static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,
bool *csum_err)
{
- unsigned int ip_hlen = ip_hdrlen(skb);
const struct gre_base_hdr *greh;
__be32 *options;
int hdr_len;
@@ -106,7 +105,7 @@ static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,
if (unlikely(!pskb_may_pull(skb, sizeof(struct gre_base_hdr))))
return -EINVAL;
- greh = (struct gre_base_hdr *)(skb_network_header(skb) + ip_hlen);
+ greh = (struct gre_base_hdr *)skb_transport_header(skb);
if (unlikely(greh->flags & (GRE_VERSION | GRE_ROUTING)))
return -EINVAL;
@@ -116,7 +115,7 @@ static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,
if (!pskb_may_pull(skb, hdr_len))
return -EINVAL;
- greh = (struct gre_base_hdr *)(skb_network_header(skb) + ip_hlen);
+ greh = (struct gre_base_hdr *)skb_transport_header(skb);
tpi->proto = greh->protocol;
options = (__be32 *)(greh + 1);
--
2.1.0.rc2.206.gedb03e5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 2/5] ipip: Add gro callbacks to ipip offload
2014-09-08 5:26 [PATCH net-next 0/5] net: Changes to GRO for encapsulation Tom Herbert
2014-09-08 5:26 ` [PATCH net-next 1/5] net: Fix GRE RX to use skb_transport_header for GRE header offset Tom Herbert
@ 2014-09-08 5:26 ` Tom Herbert
2014-09-08 5:26 ` [PATCH net-next 3/5] sit: Add gro callbacks to sit offload Tom Herbert
` (3 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Tom Herbert @ 2014-09-08 5:26 UTC (permalink / raw)
To: davem, netdev
Add inet_gro_receive and inet_gro_complete to ipip_offload to
support GRO.
Signed-off-by: Tom Herbert <therbert@google.com>
---
net/ipv4/af_inet.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index d156b3c..6d6348d 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -1670,6 +1670,8 @@ static const struct net_offload ipip_offload = {
.callbacks = {
.gso_send_check = inet_gso_send_check,
.gso_segment = inet_gso_segment,
+ .gro_receive = inet_gro_receive,
+ .gro_complete = inet_gro_complete,
},
};
--
2.1.0.rc2.206.gedb03e5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 3/5] sit: Add gro callbacks to sit offload
2014-09-08 5:26 [PATCH net-next 0/5] net: Changes to GRO for encapsulation Tom Herbert
2014-09-08 5:26 ` [PATCH net-next 1/5] net: Fix GRE RX to use skb_transport_header for GRE header offset Tom Herbert
2014-09-08 5:26 ` [PATCH net-next 2/5] ipip: Add gro callbacks to ipip offload Tom Herbert
@ 2014-09-08 5:26 ` Tom Herbert
2014-09-08 11:55 ` Eric Dumazet
2014-09-08 5:26 ` [PATCH net-next 4/5] udp: Add try convert checksum is case of skb_steal_sock Tom Herbert
` (2 subsequent siblings)
5 siblings, 1 reply; 10+ messages in thread
From: Tom Herbert @ 2014-09-08 5:26 UTC (permalink / raw)
To: davem, netdev
Add ip6_gro_receive and inet_gro_complete to ip6_offload to
support GRO.
Signed-off-by: Tom Herbert <therbert@google.com>
---
net/ipv6/ip6_offload.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/ipv6/ip6_offload.c b/net/ipv6/ip6_offload.c
index 5bcda33..12a686f 100644
--- a/net/ipv6/ip6_offload.c
+++ b/net/ipv6/ip6_offload.c
@@ -314,6 +314,8 @@ static const struct net_offload sit_offload = {
.callbacks = {
.gso_send_check = ipv6_gso_send_check,
.gso_segment = ipv6_gso_segment,
+ .gro_receive = ipv6_gro_receive,
+ .gro_complete = ipv6_gro_complete,
},
};
--
2.1.0.rc2.206.gedb03e5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 4/5] udp: Add try convert checksum is case of skb_steal_sock
2014-09-08 5:26 [PATCH net-next 0/5] net: Changes to GRO for encapsulation Tom Herbert
` (2 preceding siblings ...)
2014-09-08 5:26 ` [PATCH net-next 3/5] sit: Add gro callbacks to sit offload Tom Herbert
@ 2014-09-08 5:26 ` Tom Herbert
2014-09-08 5:26 ` [PATCH net-next 5/5] net: Export inet_offloads and inet6_offloads Tom Herbert
2014-09-09 19:18 ` [PATCH net-next 0/5] net: Changes to GRO for encapsulation David Miller
5 siblings, 0 replies; 10+ messages in thread
From: Tom Herbert @ 2014-09-08 5:26 UTC (permalink / raw)
To: davem, netdev
If an skb already has an associated socket that we can steal
in UDP receive then attempt checksum conversion before calling
udp_queue_rcv_skb.
Signed-off-by: Tom Herbert <therbert@google.com>
---
net/ipv4/udp.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index cd0db54..50d3b5c 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -1769,6 +1769,10 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
if (unlikely(sk->sk_rx_dst != dst))
udp_sk_rx_dst_set(sk, dst);
+ if (udp_sk(sk)->convert_csum && uh->check && !IS_UDPLITE(sk))
+ skb_checksum_try_convert(skb, IPPROTO_UDP, uh->check,
+ inet_compute_pseudo);
+
ret = udp_queue_rcv_skb(sk, skb);
sock_put(sk);
/* a return value > 0 means to resubmit the input, but
--
2.1.0.rc2.206.gedb03e5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 5/5] net: Export inet_offloads and inet6_offloads
2014-09-08 5:26 [PATCH net-next 0/5] net: Changes to GRO for encapsulation Tom Herbert
` (3 preceding siblings ...)
2014-09-08 5:26 ` [PATCH net-next 4/5] udp: Add try convert checksum is case of skb_steal_sock Tom Herbert
@ 2014-09-08 5:26 ` Tom Herbert
2014-09-08 10:42 ` Eric Dumazet
2014-09-09 19:18 ` [PATCH net-next 0/5] net: Changes to GRO for encapsulation David Miller
5 siblings, 1 reply; 10+ messages in thread
From: Tom Herbert @ 2014-09-08 5:26 UTC (permalink / raw)
To: davem, netdev
Want to be able to call this in foo-over-udp offloads, etc.
Signed-off-by: Tom Herbert <therbert@google.com>
---
net/ipv4/protocol.c | 1 +
net/ipv6/protocol.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/net/ipv4/protocol.c b/net/ipv4/protocol.c
index 46d6a1c..4b7c0ec 100644
--- a/net/ipv4/protocol.c
+++ b/net/ipv4/protocol.c
@@ -30,6 +30,7 @@
const struct net_protocol __rcu *inet_protos[MAX_INET_PROTOS] __read_mostly;
const struct net_offload __rcu *inet_offloads[MAX_INET_PROTOS] __read_mostly;
+EXPORT_SYMBOL(inet_offloads);
int inet_add_protocol(const struct net_protocol *prot, unsigned char protocol)
{
diff --git a/net/ipv6/protocol.c b/net/ipv6/protocol.c
index e048cf1..e3770ab 100644
--- a/net/ipv6/protocol.c
+++ b/net/ipv6/protocol.c
@@ -51,6 +51,7 @@ EXPORT_SYMBOL(inet6_del_protocol);
#endif
const struct net_offload __rcu *inet6_offloads[MAX_INET_PROTOS] __read_mostly;
+EXPORT_SYMBOL(inet6_offloads);
int inet6_add_offload(const struct net_offload *prot, unsigned char protocol)
{
--
2.1.0.rc2.206.gedb03e5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 1/5] net: Fix GRE RX to use skb_transport_header for GRE header offset
2014-09-08 5:26 ` [PATCH net-next 1/5] net: Fix GRE RX to use skb_transport_header for GRE header offset Tom Herbert
@ 2014-09-08 10:37 ` Eric Dumazet
0 siblings, 0 replies; 10+ messages in thread
From: Eric Dumazet @ 2014-09-08 10:37 UTC (permalink / raw)
To: Tom Herbert; +Cc: davem, netdev
On Sun, 2014-09-07 at 22:26 -0700, Tom Herbert wrote:
> GRE assumes that the GRE header is at skb_network_header +
> ip_hrdlen(skb). It is more general to use skb_transport_header
> and this allows the possbility of inserting additional header
> between IP and GRE (which is what we will done in Generic UDP
> Encapsulation for GRE).
>
> Signed-off-by: Tom Herbert <therbert@google.com>
> ---
> net/ipv4/gre_demux.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
Acked-by: Eric Dumazet <edumazet@google.com>
Note this has nothing to do with GRO ;)
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 5/5] net: Export inet_offloads and inet6_offloads
2014-09-08 5:26 ` [PATCH net-next 5/5] net: Export inet_offloads and inet6_offloads Tom Herbert
@ 2014-09-08 10:42 ` Eric Dumazet
0 siblings, 0 replies; 10+ messages in thread
From: Eric Dumazet @ 2014-09-08 10:42 UTC (permalink / raw)
To: Tom Herbert; +Cc: davem, netdev
On Sun, 2014-09-07 at 22:26 -0700, Tom Herbert wrote:
> Want to be able to call this in foo-over-udp offloads, etc.
>
> Signed-off-by: Tom Herbert <therbert@google.com>
> ---
> net/ipv4/protocol.c | 1 +
> net/ipv6/protocol.c | 1 +
> 2 files changed, 2 insertions(+)
This should not be last patch of this serie, but added in a later serie
when really needed.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 3/5] sit: Add gro callbacks to sit offload
2014-09-08 5:26 ` [PATCH net-next 3/5] sit: Add gro callbacks to sit offload Tom Herbert
@ 2014-09-08 11:55 ` Eric Dumazet
0 siblings, 0 replies; 10+ messages in thread
From: Eric Dumazet @ 2014-09-08 11:55 UTC (permalink / raw)
To: Tom Herbert; +Cc: davem, netdev
On Sun, 2014-09-07 at 22:26 -0700, Tom Herbert wrote:
> Add ip6_gro_receive and inet_gro_complete to ip6_offload to
> support GRO.
>
> Signed-off-by: Tom Herbert <therbert@google.com>
> ---
> net/ipv6/ip6_offload.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/net/ipv6/ip6_offload.c b/net/ipv6/ip6_offload.c
> index 5bcda33..12a686f 100644
> --- a/net/ipv6/ip6_offload.c
> +++ b/net/ipv6/ip6_offload.c
> @@ -314,6 +314,8 @@ static const struct net_offload sit_offload = {
> .callbacks = {
> .gso_send_check = ipv6_gso_send_check,
> .gso_segment = ipv6_gso_segment,
> + .gro_receive = ipv6_gro_receive,
> + .gro_complete = ipv6_gro_complete,
> },
> };
>
changelog has typos : It should be :
Add ip6_gro_receive and ip6_gro_complete to sit_offload to
support GRO.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 0/5] net: Changes to GRO for encapsulation
2014-09-08 5:26 [PATCH net-next 0/5] net: Changes to GRO for encapsulation Tom Herbert
` (4 preceding siblings ...)
2014-09-08 5:26 ` [PATCH net-next 5/5] net: Export inet_offloads and inet6_offloads Tom Herbert
@ 2014-09-09 19:18 ` David Miller
5 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2014-09-09 19:18 UTC (permalink / raw)
To: therbert; +Cc: netdev
From: Tom Herbert <therbert@google.com>
Date: Sun, 7 Sep 2014 22:26:24 -0700
> This patch set has some fixes for encapsulation and GRO.
>
> Tom Herbert (5):
> net: Fix GRE RX to use skb_transport_header for GRE header offset
> ipip: Add gro callbacks to ipip offload
> sit: Add gro callbacks to sit offload
> udp: Add try convert checksum is case of skb_steal_sock
> net: Export inet_offloads and inet6_offloads
Please address Eric's feedback and respin this series, thanks!
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-09-09 19:18 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-08 5:26 [PATCH net-next 0/5] net: Changes to GRO for encapsulation Tom Herbert
2014-09-08 5:26 ` [PATCH net-next 1/5] net: Fix GRE RX to use skb_transport_header for GRE header offset Tom Herbert
2014-09-08 10:37 ` Eric Dumazet
2014-09-08 5:26 ` [PATCH net-next 2/5] ipip: Add gro callbacks to ipip offload Tom Herbert
2014-09-08 5:26 ` [PATCH net-next 3/5] sit: Add gro callbacks to sit offload Tom Herbert
2014-09-08 11:55 ` Eric Dumazet
2014-09-08 5:26 ` [PATCH net-next 4/5] udp: Add try convert checksum is case of skb_steal_sock Tom Herbert
2014-09-08 5:26 ` [PATCH net-next 5/5] net: Export inet_offloads and inet6_offloads Tom Herbert
2014-09-08 10:42 ` Eric Dumazet
2014-09-09 19:18 ` [PATCH net-next 0/5] net: Changes to GRO for encapsulation David Miller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.