summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--class/wireless/usbd_rndis.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/class/wireless/usbd_rndis.c b/class/wireless/usbd_rndis.c
index dffeb20e..5fceb98f 100644
--- a/class/wireless/usbd_rndis.c
+++ b/class/wireless/usbd_rndis.c
@@ -489,13 +489,8 @@ void rndis_bulk_in(uint8_t busid, uint8_t ep, uint32_t nbytes)
{
(void)busid;
- if ((nbytes % usbd_get_ep_mps(0, ep)) == 0 && nbytes) {
- /* send zlp */
- usbd_ep_start_write(0, ep, NULL, 0);
- } else {
- usbd_rndis_data_send_done(g_rndis_tx_data_length);
- g_rndis_tx_data_length = 0;
- }
+ usbd_rndis_data_send_done(g_rndis_tx_data_length);
+ g_rndis_tx_data_length = 0;
}
void rndis_int_in(uint8_t busid, uint8_t ep, uint32_t nbytes)
@@ -517,6 +512,11 @@ int usbd_rndis_start_write(uint8_t *buf, uint32_t len)
return -USB_ERR_BUSY;
}
+ if((len % usbd_get_ep_mps(0, rndis_ep_data[RNDIS_IN_EP_IDX].ep_addr)) == 0) {
+ /* If the data length is a multiple of the endpoint max packet size, add one byte to indicate the end of the transfer. */
+ len += 1;
+ }
+
g_rndis_tx_data_length = len;
USB_LOG_DBG("txlen:%d\r\n", g_rndis_tx_data_length);