* [PATCH bluetooth-next] ieee802154: 6lowpan: fix udp header compression when using raw skts
@ 2014-11-04 13:43 Simon Vincent
2014-11-04 14:07 ` Jukka Rissanen
2014-11-04 14:31 ` Alexander Aring
0 siblings, 2 replies; 4+ messages in thread
From: Simon Vincent @ 2014-11-04 13:43 UTC (permalink / raw)
To: alex.aring; +Cc: linux-wpan, linux-bluetooth, Simon Vincent
If you use RAW sockets the transport header offset is not set by the
ipv6 stack so when we get to the udp header compression it does not
compress the right part of the packet.
This patch adds a check for this scenario and sets the transport
header offset.
Signed-off-by: Simon Vincent <simon.vincent@xsilon.com>
---
net/6lowpan/iphc.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/net/6lowpan/iphc.c b/net/6lowpan/iphc.c
index 73a7065..305bf2b 100644
--- a/net/6lowpan/iphc.c
+++ b/net/6lowpan/iphc.c
@@ -512,9 +512,17 @@ static u8 lowpan_compress_addr_64(u8 **hc_ptr, u8 shift,
static void compress_udp_header(u8 **hc_ptr, struct sk_buff *skb)
{
- struct udphdr *uh = udp_hdr(skb);
+ struct udphdr *uh;
u8 tmp;
+ /* In the case of RAW sockets the transport header is not set by
+ * the ip6 stack so we must set it ourselves
+ */
+ if (skb->transport_header == skb->network_header)
+ skb_set_transport_header(skb, sizeof(struct ipv6hdr));
+
+ uh = udp_hdr(skb);
+
if (((ntohs(uh->source) & LOWPAN_NHC_UDP_4BIT_MASK) ==
LOWPAN_NHC_UDP_4BIT_PORT) &&
((ntohs(uh->dest) & LOWPAN_NHC_UDP_4BIT_MASK) ==
--
1.9.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH bluetooth-next] ieee802154: 6lowpan: fix udp header compression when using raw skts
2014-11-04 13:43 [PATCH bluetooth-next] ieee802154: 6lowpan: fix udp header compression when using raw skts Simon Vincent
@ 2014-11-04 14:07 ` Jukka Rissanen
2014-11-04 14:31 ` Alexander Aring
1 sibling, 0 replies; 4+ messages in thread
From: Jukka Rissanen @ 2014-11-04 14:07 UTC (permalink / raw)
To: Simon Vincent; +Cc: alex.aring, linux-wpan, linux-bluetooth
Hi Simon,
On ti, 2014-11-04 at 13:43 +0000, Simon Vincent wrote:
> If you use RAW sockets the transport header offset is not set by the
> ipv6 stack so when we get to the udp header compression it does not
> compress the right part of the packet.
>
> This patch adds a check for this scenario and sets the transport
> header offset.
>
> Signed-off-by: Simon Vincent <simon.vincent@xsilon.com>
> ---
> net/6lowpan/iphc.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/net/6lowpan/iphc.c b/net/6lowpan/iphc.c
> index 73a7065..305bf2b 100644
> --- a/net/6lowpan/iphc.c
> +++ b/net/6lowpan/iphc.c
> @@ -512,9 +512,17 @@ static u8 lowpan_compress_addr_64(u8 **hc_ptr, u8 shift,
>
> static void compress_udp_header(u8 **hc_ptr, struct sk_buff *skb)
> {
> - struct udphdr *uh = udp_hdr(skb);
> + struct udphdr *uh;
> u8 tmp;
>
> + /* In the case of RAW sockets the transport header is not set by
> + * the ip6 stack so we must set it ourselves
> + */
> + if (skb->transport_header == skb->network_header)
> + skb_set_transport_header(skb, sizeof(struct ipv6hdr));
> +
> + uh = udp_hdr(skb);
> +
> if (((ntohs(uh->source) & LOWPAN_NHC_UDP_4BIT_MASK) ==
> LOWPAN_NHC_UDP_4BIT_PORT) &&
> ((ntohs(uh->dest) & LOWPAN_NHC_UDP_4BIT_MASK) ==
Acked-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Cheers,
Jukka
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH bluetooth-next] ieee802154: 6lowpan: fix udp header compression when using raw skts
2014-11-04 13:43 [PATCH bluetooth-next] ieee802154: 6lowpan: fix udp header compression when using raw skts Simon Vincent
2014-11-04 14:07 ` Jukka Rissanen
@ 2014-11-04 14:31 ` Alexander Aring
2014-11-04 14:33 ` Alexander Aring
1 sibling, 1 reply; 4+ messages in thread
From: Alexander Aring @ 2014-11-04 14:31 UTC (permalink / raw)
To: Simon Vincent; +Cc: linux-wpan, linux-bluetooth
Hi Simon,
there is a typo in the subject s/skts/skbs/
Also remove the 'ieee802154:" tag. Just "6lowpan:" here, because this is
a patch for the generic 6lowpan branch.
On Tue, Nov 04, 2014 at 01:43:53PM +0000, Simon Vincent wrote:
> If you use RAW sockets the transport header offset is not set by the
> ipv6 stack so when we get to the udp header compression it does not
> compress the right part of the packet.
>
> This patch adds a check for this scenario and sets the transport
> header offset.
>
> Signed-off-by: Simon Vincent <simon.vincent@xsilon.com>
> ---
> net/6lowpan/iphc.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/net/6lowpan/iphc.c b/net/6lowpan/iphc.c
> index 73a7065..305bf2b 100644
> --- a/net/6lowpan/iphc.c
> +++ b/net/6lowpan/iphc.c
> @@ -512,9 +512,17 @@ static u8 lowpan_compress_addr_64(u8 **hc_ptr, u8 shift,
>
> static void compress_udp_header(u8 **hc_ptr, struct sk_buff *skb)
> {
> - struct udphdr *uh = udp_hdr(skb);
> + struct udphdr *uh;
> u8 tmp;
>
> + /* In the case of RAW sockets the transport header is not set by
> + * the ip6 stack so we must set it ourselves
> + */
There are missing spaces. '*' should be in the same line position.
> + if (skb->transport_header == skb->network_header)
> + skb_set_transport_header(skb, sizeof(struct ipv6hdr));
> +
okay, this should set on every next header compression. We have
currently UDP only. For the next header compression layer we should move
this handling somewhere else where it always checks on this.
Nevertheless this solution is okay for now.
The next header compression mainline patches:
When I will find some time or somebody else can send it mainline and grab the
base code from [0]. I would be very happy if somebody can do this work
for me. I am working on the 802.15.4 subsystem currently. Isn't perfect
right now and there was also some review notes.
So if anybody wants to do that, please raise your hand.
> + uh = udp_hdr(skb);
> +
> if (((ntohs(uh->source) & LOWPAN_NHC_UDP_4BIT_MASK) ==
> LOWPAN_NHC_UDP_4BIT_PORT) &&
> ((ntohs(uh->dest) & LOWPAN_NHC_UDP_4BIT_MASK) ==
- Alex
[0] https://github.com/linux-wpan/linux-wpan-next/commits/nhc_layer
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH bluetooth-next] ieee802154: 6lowpan: fix udp header compression when using raw skts
2014-11-04 14:31 ` Alexander Aring
@ 2014-11-04 14:33 ` Alexander Aring
0 siblings, 0 replies; 4+ messages in thread
From: Alexander Aring @ 2014-11-04 14:33 UTC (permalink / raw)
To: Simon Vincent; +Cc: linux-wpan, linux-bluetooth
On Tue, Nov 04, 2014 at 03:31:44PM +0100, Alexander Aring wrote:
> Hi Simon,
>
> there is a typo in the subject s/skts/skbs/
This isn't correct. skts is the short word for sockets.
This is fine. :-)
- A;ex
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-11-04 14:33 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-04 13:43 [PATCH bluetooth-next] ieee802154: 6lowpan: fix udp header compression when using raw skts Simon Vincent
2014-11-04 14:07 ` Jukka Rissanen
2014-11-04 14:31 ` Alexander Aring
2014-11-04 14:33 ` Alexander Aring
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).