summaryrefslogtreecommitdiffstats
path: root/patches/linux-3.8.13/0175-6lowpan-always-enable-link-layer-acknowledgments.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/linux-3.8.13/0175-6lowpan-always-enable-link-layer-acknowledgments.patch')
-rw-r--r--patches/linux-3.8.13/0175-6lowpan-always-enable-link-layer-acknowledgments.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/patches/linux-3.8.13/0175-6lowpan-always-enable-link-layer-acknowledgments.patch b/patches/linux-3.8.13/0175-6lowpan-always-enable-link-layer-acknowledgments.patch
new file mode 100644
index 0000000..989bd60
--- /dev/null
+++ b/patches/linux-3.8.13/0175-6lowpan-always-enable-link-layer-acknowledgments.patch
@@ -0,0 +1,30 @@
+From: Tony Cheneau <tony.cheneau@amnesiak.org>
+Date: Mon, 25 Mar 2013 23:59:23 -0400
+Subject: [PATCH] 6lowpan: always enable link-layer acknowledgments
+
+This feature is especially important when using fragmentation, because
+the reassembly mechanism cannot recover from the loss of a fragment.
+
+Note that some hardware ignore this flag and not will not transmit
+acknowledgments even if this is set.
+
+Signed-off-by: Tony Cheneau <tony.cheneau@amnesiak.org>
+---
+ net/ieee802154/6lowpan.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c
+index 9f53904..e7f61de 100644
+--- a/net/ieee802154/6lowpan.c
++++ b/net/ieee802154/6lowpan.c
+@@ -584,6 +584,10 @@ static int lowpan_header_create(struct sk_buff *skb,
+
+ mac_cb(skb)->flags = IEEE802154_FC_TYPE_DATA;
+
++ /* request acknowledgment when possible */
++ if (!lowpan_is_addr_broadcast(daddr))
++ mac_cb(skb)->flags |= MAC_CB_FLAG_ACKREQ;
++
+ return dev_hard_header(skb, lowpan_dev_info(dev)->real_dev,
+ type, (void *)&da, (void *)&sa, skb->len);
+ }