summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorSzymon Janc <szymon.janc@tieto.com>2012-01-11 10:59:47 +0100
committerPhilippe Langlais <philippe.langlais@linaro.org>2012-03-19 09:03:02 +0100
commitd0e667563b14f68beb40a3fe42bdec63d98e54fb (patch)
tree8d5d85421bded7f186b8e90ed301b47bea7d46a4 /net
parent09addacdbf20c7ce61783f21a81f3477e2575a3f (diff)
Bluetooth: Clear ack_timer when sending ack
ack_timer should be cleared when sending ACK to avoid acking I-frames twice. This commit introduces helper function (only send ack, not clearing timer) which is used by l2cap_send_ack and l2cap_ack_timeout. This is to avoid clearing ack timer in timer function. Signed-off-by: Szymon Janc <szymon.janc@tieto.com> Acked-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Conflicts: net/bluetooth/l2cap_core.c Change-Id: I325e7eb6ecb7e228be573b762dedb07f76327dc2 Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/45122 Reviewed-by: SZYMON JANC <szymon.janc@tieto.com> Tested-by: SZYMON JANC <szymon.janc@tieto.com> Reviewed-by: QABUILD Reviewed-by: Andrzej KACZMAREK <andrzej.kaczmarek@tieto.com> Reviewed-by: Kanak GUPTA <kanak.gupta@stericsson.com> Reviewed-by: Lukasz RYMANOWSKI <lukasz.rymanowski@stericsson.com> Reviewed-by: Anurag GUPTA-1 <anurag.gupta@stericsson.com> Reviewed-by: Linus WALLEIJ <linus.walleij@stericsson.com>
Diffstat (limited to 'net')
-rw-r--r--net/bluetooth/l2cap_core.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index f68a1108d25..9dab75d4fea 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -1478,7 +1478,7 @@ static int l2cap_retransmit_frames(struct l2cap_chan *chan)
return ret;
}
-static void l2cap_send_ack(struct l2cap_chan *chan)
+static void __l2cap_send_ack(struct l2cap_chan *chan)
{
u32 control = 0;
@@ -1498,6 +1498,12 @@ static void l2cap_send_ack(struct l2cap_chan *chan)
l2cap_send_sframe(chan, control);
}
+static void l2cap_send_ack(struct l2cap_chan *chan)
+{
+ __clear_ack_timer(chan);
+ __l2cap_send_ack(chan);
+}
+
static void l2cap_send_srejtail(struct l2cap_chan *chan)
{
struct srej_list *tail;
@@ -1988,7 +1994,7 @@ static void l2cap_ack_timeout(struct work_struct *work)
BT_DBG("chan %p", chan);
lock_sock(chan->sk);
- l2cap_send_ack(chan);
+ __l2cap_send_ack(chan);
release_sock(chan->sk);
}