diff options
| author | Ruiyi Zhang <Ruiyi.Zhang@Atheros.com> | 2011-05-13 01:07:52 -0400 |
|---|---|---|
| committer | Gustavo F. Padovan <padovan@profusion.mobi> | 2011-06-08 15:58:15 -0400 |
| commit | 224f8af0db1cd50e9d954ca9d5a7d7716f63d2b0 (patch) | |
| tree | ac6e7cf87826254809402bec1e97c8e695c826f6 | |
| parent | 931749bf78b969c54de9bbc67cf29b13a40bb73b (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.c | 6 |
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) |
