Skip to content

Commit f0a5e96

Browse files
ncasarilandrzej-kaczmarek
authored andcommitted
nimble/ll: Fix for frag tx of mbufs >255 bytes
1 parent 8cd76e5 commit f0a5e96

File tree

3 files changed

+12
-13
lines changed

3 files changed

+12
-13
lines changed

nimble/controller/src/ble_ll_conn.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -959,8 +959,8 @@ ble_ll_conn_tx_pdu(struct ble_ll_conn_sm *connsm)
959959
uint8_t hdr_byte;
960960
uint8_t end_transition;
961961
uint8_t cur_txlen;
962-
uint8_t next_txlen;
963-
uint8_t cur_offset;
962+
uint16_t next_txlen;
963+
uint16_t cur_offset;
964964
uint16_t pktlen;
965965
uint32_t next_event_time;
966966
uint32_t ticks;
@@ -1129,11 +1129,10 @@ ble_ll_conn_tx_pdu(struct ble_ll_conn_sm *connsm)
11291129
if ((cur_offset + cur_txlen) < pktlen) {
11301130
next_txlen = pktlen - (cur_offset + cur_txlen);
11311131
} else {
1132-
if (nextpkthdr->omp_len > connsm->eff_max_tx_octets) {
1133-
next_txlen = connsm->eff_max_tx_octets;
1134-
} else {
1135-
next_txlen = nextpkthdr->omp_len;
1136-
}
1132+
next_txlen = connsm->eff_max_tx_octets;
1133+
}
1134+
if (next_txlen > connsm->eff_max_tx_octets) {
1135+
next_txlen = connsm->eff_max_tx_octets;
11371136
}
11381137

11391138
/*
@@ -1491,7 +1490,7 @@ ble_ll_conn_can_send_next_pdu(struct ble_ll_conn_sm *connsm, uint32_t begtime,
14911490
uint32_t add_usecs)
14921491
{
14931492
int rc;
1494-
uint8_t rem_bytes;
1493+
uint16_t rem_bytes;
14951494
uint32_t ticks;
14961495
uint32_t usecs;
14971496
uint32_t next_sched_time;
@@ -3791,7 +3790,7 @@ ble_ll_conn_rx_isr_end(uint8_t *rxbuf, struct ble_mbuf_hdr *rxhdr)
37913790
uint8_t conn_sn;
37923791
uint8_t conn_nesn;
37933792
uint8_t reply;
3794-
uint8_t rem_bytes;
3793+
uint16_t rem_bytes;
37953794
uint8_t opcode = 0;
37963795
uint8_t rx_pyld_len;
37973796
uint32_t begtime;
@@ -4074,7 +4073,7 @@ ble_ll_conn_rx_isr_end(uint8_t *rxbuf, struct ble_mbuf_hdr *rxhdr)
40744073
*/
40754074
void
40764075
ble_ll_conn_enqueue_pkt(struct ble_ll_conn_sm *connsm, struct os_mbuf *om,
4077-
uint8_t hdr_byte, uint8_t length)
4076+
uint8_t hdr_byte, uint16_t length)
40784077
{
40794078
os_sr_t sr;
40804079
struct os_mbuf_pkthdr *pkthdr;

nimble/controller/src/ble_ll_conn_priv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ struct hci_create_conn
120120
void ble_ll_conn_sm_new(struct ble_ll_conn_sm *connsm);
121121
void ble_ll_conn_end(struct ble_ll_conn_sm *connsm, uint8_t ble_err);
122122
void ble_ll_conn_enqueue_pkt(struct ble_ll_conn_sm *connsm, struct os_mbuf *om,
123-
uint8_t hdr_byte, uint8_t length);
123+
uint8_t hdr_byte, uint16_t length);
124124
struct ble_ll_conn_sm *ble_ll_conn_sm_get(void);
125125
void ble_ll_conn_master_init(struct ble_ll_conn_sm *connsm,
126126
struct hci_create_conn *hcc);

nimble/include/nimble/ble.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,9 @@ struct ble_mbuf_hdr_rxinfo
109109
struct ble_mbuf_hdr_txinfo
110110
{
111111
uint8_t flags;
112-
uint8_t offset;
113-
uint8_t pyld_len;
114112
uint8_t hdr_byte;
113+
uint16_t offset;
114+
uint16_t pyld_len;
115115
};
116116

117117
struct ble_mbuf_hdr

0 commit comments

Comments
 (0)