All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] Bluetooth: Fix l2cap_tx_window_full
@ 2012-02-08 13:47 Luiz Augusto von Dentz
  2012-02-08 13:54 ` Ulisses Furquim
  2012-04-27 13:34 ` Andrei Emeltchenko
  0 siblings, 2 replies; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2012-02-08 13:47 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

l2cap_tx_window_full is not checking the window limit properly, first it
computes based on sequence numbers which doesn't take into account the
ReqSeq and always assume 64 not the real window size.

To fix this now it just checks if the number of unacked frames is >= of
tx window which is much simpler.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
Add debug

 include/net/bluetooth/l2cap.h |   10 +++-------
 1 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
index 42fdbb8..bcfddb2 100644
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -661,14 +661,10 @@ static inline __u16 __next_seq(struct l2cap_chan *chan, __u16 seq)
 
 static inline int l2cap_tx_window_full(struct l2cap_chan *ch)
 {
-	int sub;
+	BT_DBG("chan %p unacked %d tx_win %d", ch, ch->unacked_frames,
+							ch->remote_tx_win);
 
-	sub = (ch->next_tx_seq - ch->expected_ack_seq) % 64;
-
-	if (sub < 0)
-		sub += 64;
-
-	return sub == ch->remote_tx_win;
+	return ch->unacked_frames >= ch->remote_tx_win;
 }
 
 static inline __u16 __get_reqseq(struct l2cap_chan *chan, __u32 ctrl)
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-04-27 13:34 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-08 13:47 [PATCH v2] Bluetooth: Fix l2cap_tx_window_full Luiz Augusto von Dentz
2012-02-08 13:54 ` Ulisses Furquim
2012-02-08 13:59   ` Andrei Emeltchenko
2012-02-08 15:38     ` Gustavo Padovan
2012-02-08 16:03       ` Luiz Augusto von Dentz
2012-04-27 13:34 ` Andrei Emeltchenko

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.