Corrected size of the last chunk for data packet longer than MTU

Change-Id: I944ade837df571934dc5143209fd745f0a39bec8
This commit is contained in:
Andrey Perminov 2020-04-30 17:14:52 -07:00
parent 367e224df3
commit a72af76f31

View File

@ -168,7 +168,7 @@ static fpc_bep_result_t _tx_application(HCP_comm_t *hcp_comm)
uint16_t data_left = hcp_comm->pkt_size; uint16_t data_left = hcp_comm->pkt_size;
uint8_t *p = hcp_comm->pkt_buffer; uint8_t *p = hcp_comm->pkt_buffer;
_HPC_pkt_t *pkt = (_HPC_pkt_t *)hcp_comm->txrx_buffer; _HPC_pkt_t *phy_frm = (_HPC_pkt_t *)hcp_comm->txrx_buffer;
// Application MTU size is PHY MTU - (Transport and Link overhead) // Application MTU size is PHY MTU - (Transport and Link overhead)
uint16_t app_mtu = MTU - 6 - 8; uint16_t app_mtu = MTU - 6 - 8;
@ -176,20 +176,21 @@ static fpc_bep_result_t _tx_application(HCP_comm_t *hcp_comm)
// Calculate sequence length // Calculate sequence length
uint16_t seq_len = (data_left / app_mtu) + 1; uint16_t seq_len = (data_left / app_mtu) + 1;
pkt->lnk_chn = 0; phy_frm->lnk_chn = 0;
pkt->t_seq_len = seq_len; phy_frm->t_seq_len = seq_len;
for (seq_nr = 1; seq_nr <= seq_len && !status; seq_nr++) { for (seq_nr = 1; seq_nr <= seq_len && !status; seq_nr++) {
pkt->t_seq_nr = seq_nr; phy_frm->t_seq_nr = seq_nr;
if (data_left < app_mtu) { if (data_left < app_mtu) {
pkt->t_size = data_left; phy_frm->t_size = data_left;
memcpy(hcp_comm->txrx_buffer + 10, p, data_left); memcpy(hcp_comm->txrx_buffer + 10, p, data_left);
pkt->lnk_size = data_left + 6; phy_frm->lnk_size = data_left + 6;
} else { } else {
pkt->t_size = app_mtu; phy_frm->t_size = app_mtu;
memcpy(hcp_comm->txrx_buffer + 10, p, app_mtu); memcpy(hcp_comm->txrx_buffer + 10, p, app_mtu);
pkt->lnk_size = app_mtu + 6; phy_frm->lnk_size = app_mtu + 6;
p += app_mtu; p += app_mtu;
data_left -= app_mtu;
} }
status = _tx_link(hcp_comm); status = _tx_link(hcp_comm);