summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhihong Chen <[email protected]>2024-03-23 21:01:44 +0800
committersakumisu <[email protected]>2024-03-23 22:19:15 +0800
commit0d647cf9c0bf8bbafc5698e0f725379dd047c754 (patch)
tree3ad6cf81b6a51a848eb34b45f86acf97316844a5
parenteef3e116b88c41feb88af2c6423be2cae3261b94 (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.c4
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) {