diff options
| author | Zhihong Chen <[email protected]> | 2024-03-23 21:01:44 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2024-03-23 22:19:15 +0800 |
| commit | 0d647cf9c0bf8bbafc5698e0f725379dd047c754 (patch) | |
| tree | 3ad6cf81b6a51a848eb34b45f86acf97316844a5 | |
| parent | eef3e116b88c41feb88af2c6423be2cae3261b94 (diff) | |
rndis: fix MessageLength check
- when MessageLength is MPS, PC rndis host will send (MPS + 1) bytes
Signed-off-by: Zhihong Chen <[email protected]>
| -rw-r--r-- | class/wireless/usbd_rndis.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/class/wireless/usbd_rndis.c b/class/wireless/usbd_rndis.c index e030e16b..293fbe12 100644 --- a/class/wireless/usbd_rndis.c +++ b/class/wireless/usbd_rndis.c @@ -450,7 +450,7 @@ void rndis_bulk_out(uint8_t busid, uint8_t ep, uint32_t nbytes) hdr = (rndis_data_packet_t *)g_rndis_rx_buffer; g_rndis_rx_data_buffer = g_rndis_rx_buffer; - if ((hdr->MessageType != NDIS_PACKET_TYPE_DIRECTED) || (nbytes != hdr->MessageLength)) { + if ((hdr->MessageType != REMOTE_NDIS_PACKET_MSG) || (nbytes < hdr->MessageLength)) { usbd_ep_start_read(0, rndis_ep_data[RNDIS_OUT_EP_IDX].ep_addr, g_rndis_rx_buffer, sizeof(g_rndis_rx_buffer)); return; } @@ -508,7 +508,7 @@ int usbd_rndis_eth_tx(struct pbuf *p) rndis_data_packet_t *hdr; if (g_usbd_rndis.link_status == NDIS_MEDIA_STATE_DISCONNECTED) { - return 0; + return -USB_ERR_NOTCONN; } if (g_rndis_tx_data_length > 0) { |
