aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRuiyi Zhang <Ruiyi.Zhang@Atheros.com>2011-05-13 01:07:52 -0400
committerGustavo F. Padovan <padovan@profusion.mobi>2011-06-08 15:58:15 -0400
commit224f8af0db1cd50e9d954ca9d5a7d7716f63d2b0 (patch)
treeac6e7cf87826254809402bec1e97c8e695c826f6
parent931749bf78b969c54de9bbc67cf29b13a40bb73b (diff)
Bluetooth: Allow unsegmented SDU retries on sock_queue_rcv_skb failure
In L2CAP_SDU_UNSEGMENTED case, if sock_queue_rcv_skb returns error, l2cap_ertm_reassembly_sdu should not return 0 so as to insert the skb into BUSY_QUEUE for later retries. Signed-off-by: Ruiyi Zhang <Ruiyi.Zhang@Atheros.com> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
-rw-r--r--net/bluetooth/l2cap_core.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index e64a1c2df238..6b59005fba95 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -2928,11 +2928,7 @@ static int l2cap_ertm_reassembly_sdu(struct l2cap_chan *chan, struct sk_buff *sk
2928 if (chan->conn_state & L2CAP_CONN_SAR_SDU) 2928 if (chan->conn_state & L2CAP_CONN_SAR_SDU)
2929 goto drop; 2929 goto drop;
2930 2930
2931 err = sock_queue_rcv_skb(chan->sk, skb); 2931 return sock_queue_rcv_skb(chan->sk, skb);
2932 if (!err)
2933 return err;
2934
2935 break;
2936 2932
2937 case L2CAP_SDU_START: 2933 case L2CAP_SDU_START:
2938 if (chan->conn_state & L2CAP_CONN_SAR_SDU) 2934 if (chan->conn_state & L2CAP_CONN_SAR_SDU)