mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-03 20:54:18 +00:00
don't decrease l2cap credits twice
This commit is contained in:
parent
2a9a8b9705
commit
17b40cacb4
16
src/rfcomm.c
16
src/rfcomm.c
@ -774,7 +774,7 @@ static int rfcomm_multiplexer_hci_event_handler(uint8_t *packet, uint16_t size){
|
|||||||
multiplexer = rfcomm_multiplexer_for_l2cap_cid(l2cap_cid);
|
multiplexer = rfcomm_multiplexer_for_l2cap_cid(l2cap_cid);
|
||||||
if (!multiplexer) break;
|
if (!multiplexer) break;
|
||||||
multiplexer->l2cap_credits += packet[4];
|
multiplexer->l2cap_credits += packet[4];
|
||||||
log_dbg("L2CAP_EVENT_CREDITS: %u (now %u)\n", packet[4], multiplexer->l2cap_credits);
|
// log_dbg("L2CAP_EVENT_CREDITS: %u (now %u)\n", packet[4], multiplexer->l2cap_credits);
|
||||||
if (multiplexer->state != RFCOMM_MULTIPLEXER_OPEN) break;
|
if (multiplexer->state != RFCOMM_MULTIPLEXER_OPEN) break;
|
||||||
rfcomm_hand_out_credits();
|
rfcomm_hand_out_credits();
|
||||||
break;
|
break;
|
||||||
@ -1311,9 +1311,8 @@ int rfcomm_send_internal(uint8_t rfcomm_cid, uint8_t *data, uint16_t len){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!channel->credits_outgoing){
|
if (!channel->credits_outgoing){
|
||||||
// log_err("rfcomm_send_internal cid %u, no rfcomm outgoing credits!\n", rfcomm_cid);
|
|
||||||
log_dbg("rfcomm_send_internal cid %u, no rfcomm outgoing credits!\n", rfcomm_cid);
|
log_dbg("rfcomm_send_internal cid %u, no rfcomm outgoing credits!\n", rfcomm_cid);
|
||||||
return RFCOMM_NO_OUTGOING_CREDITS;
|
// return RFCOMM_NO_OUTGOING_CREDITS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!channel->packets_granted){
|
if (!channel->packets_granted){
|
||||||
@ -1321,11 +1320,6 @@ int rfcomm_send_internal(uint8_t rfcomm_cid, uint8_t *data, uint16_t len){
|
|||||||
// return RFCOMM_NO_OUTGOING_CREDITS;
|
// return RFCOMM_NO_OUTGOING_CREDITS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!channel->multiplexer->l2cap_credits){
|
|
||||||
log_dbg("rfcomm_send_internal cid %u, no l2cap credits!\n", rfcomm_cid);
|
|
||||||
// return BTSTACK_ACL_BUFFERS_FULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
// log_dbg("rfcomm_send_internal: len %u... outgoing credits %u, l2cap credit %us, granted %u\n",
|
// log_dbg("rfcomm_send_internal: len %u... outgoing credits %u, l2cap credit %us, granted %u\n",
|
||||||
// len, channel->credits_outgoing, channel->multiplexer->l2cap_credits, channel->packets_granted);
|
// len, channel->credits_outgoing, channel->multiplexer->l2cap_credits, channel->packets_granted);
|
||||||
|
|
||||||
@ -1337,18 +1331,12 @@ int rfcomm_send_internal(uint8_t rfcomm_cid, uint8_t *data, uint16_t len){
|
|||||||
channel->packets_granted--;
|
channel->packets_granted--;
|
||||||
packets_granted_decreased++;
|
packets_granted_decreased++;
|
||||||
}
|
}
|
||||||
int l2cap_credits_decreased = 0;
|
|
||||||
if (channel->multiplexer->l2cap_credits){
|
|
||||||
channel->multiplexer->l2cap_credits--;
|
|
||||||
l2cap_credits_decreased++;
|
|
||||||
}
|
|
||||||
|
|
||||||
int result = rfcomm_send_uih_data(channel->multiplexer, channel->dlci, data, len);
|
int result = rfcomm_send_uih_data(channel->multiplexer, channel->dlci, data, len);
|
||||||
|
|
||||||
if (result != 0) {
|
if (result != 0) {
|
||||||
channel->credits_outgoing++;
|
channel->credits_outgoing++;
|
||||||
channel->packets_granted += packets_granted_decreased;
|
channel->packets_granted += packets_granted_decreased;
|
||||||
channel->multiplexer->l2cap_credits += l2cap_credits_decreased;
|
|
||||||
log_dbg("rfcomm_send_internal: error %d\n", result);
|
log_dbg("rfcomm_send_internal: error %d\n", result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user