summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2020-03-16 11:16:57 +0700
committerGitHub <[email protected]>2020-03-16 11:16:57 +0700
commitf13835a2fbd33442f29c5f0e5d53a4788c0d0bd0 (patch)
tree55d12909c85295bb555c0d4267c976b8dd5b1f0c /src
parenta0eb8a26517040850a0e4185aef398183b04ddc7 (diff)
parent5e8ff1f7c2887abb5459b0d9d6812e2da437d4d0 (diff)
Merge pull request #290 from majbthrd/usbnet-stm32rndis
usbnet RNDIS correction (STM32 RNDIS now valid)
Diffstat (limited to 'src')
-rw-r--r--src/class/net/net_device.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/class/net/net_device.c b/src/class/net/net_device.c
index c918e5874..7bb11d57c 100644
--- a/src/class/net/net_device.c
+++ b/src/class/net/net_device.c
@@ -64,7 +64,7 @@ CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static uint8_t received[CFG_TUD_NET_PACK
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static uint8_t transmitted[CFG_TUD_NET_PACKET_PREFIX_LEN + CFG_TUD_NET_MTU + CFG_TUD_NET_PACKET_PREFIX_LEN];
#if CFG_TUD_NET == OPT_NET_RNDIS
- CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static uint8_t rndis_buf[128];
+ CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static uint8_t rndis_buf[120];
#endif
//--------------------------------------------------------------------+
@@ -198,7 +198,17 @@ bool netd_control_request(uint8_t rhport, tusb_control_request_t const * request
TU_VERIFY (_netd_itf.itf_num == request->wIndex);
#if CFG_TUD_NET == OPT_NET_RNDIS
- tud_control_xfer(rhport, request, rndis_buf, sizeof(rndis_buf));
+ if (request->bmRequestType_bit.direction == TUSB_DIR_IN)
+ {
+ rndis_generic_msg_t *rndis_msg = (rndis_generic_msg_t *)rndis_buf;
+ uint32_t msglen = tu_le32toh(rndis_msg->MessageLength);
+ TU_ASSERT(msglen <= sizeof(rndis_buf));
+ tud_control_xfer(rhport, request, rndis_buf, msglen);
+ }
+ else
+ {
+ tud_control_xfer(rhport, request, rndis_buf, sizeof(rndis_buf));
+ }
#else
(void)rhport;
#endif