diff options
| author | sakumisu <[email protected]> | 2024-05-14 11:28:34 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2024-05-14 11:33:11 +0800 |
| commit | d23a8a8d00d5506ee729d545afab931952f7fc02 (patch) | |
| tree | 046cb4382d279f2a824dd8bd2e8f51af0926999b /class | |
| parent | 42433942255e7134e5b41b06cbf1d2287ec85797 (diff) | |
update: get mps by usbd_get_ep_mps
Diffstat (limited to 'class')
| -rw-r--r-- | class/cdc/usbd_cdc_ecm.c | 18 | ||||
| -rw-r--r-- | class/wireless/usbd_rndis.c | 21 |
2 files changed, 13 insertions, 26 deletions
diff --git a/class/cdc/usbd_cdc_ecm.c b/class/cdc/usbd_cdc_ecm.c index 267b1b4d..1fca9cad 100644 --- a/class/cdc/usbd_cdc_ecm.c +++ b/class/cdc/usbd_cdc_ecm.c @@ -13,12 +13,6 @@ /* Describe EndPoints configuration */ static struct usbd_endpoint cdc_ecm_ep_data[3]; -#ifdef CONFIG_USB_HS -#define CDC_ECM_MAX_PACKET_SIZE 512 -#else -#define CDC_ECM_MAX_PACKET_SIZE 64 -#endif - static USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_cdc_ecm_rx_buffer[CONFIG_CDC_ECM_ETH_MAX_SEGSZE]; static USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_cdc_ecm_tx_buffer[CONFIG_CDC_ECM_ETH_MAX_SEGSZE]; static USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_cdc_ecm_notify_buf[16]; @@ -89,7 +83,7 @@ static int cdc_ecm_class_interface_request_handler(uint8_t busid, struct usb_set switch (setup->bRequest) { case CDC_REQUEST_SET_ETHERNET_PACKET_FILTER: - /* bit0 Promiscuous + /* bit0 Promiscuous * bit1 ALL Multicast * bit2 Directed * bit3 Broadcast @@ -119,7 +113,7 @@ void cdc_ecm_notify_handler(uint8_t busid, uint8_t event, void *arg) g_cdc_ecm_rx_data_buffer = NULL; break; case USBD_EVENT_CONFIGURED: - usbd_ep_start_read(0, cdc_ecm_ep_data[CDC_ECM_OUT_EP_IDX].ep_addr, &g_cdc_ecm_rx_buffer[g_cdc_ecm_rx_data_length], CDC_ECM_MAX_PACKET_SIZE); + usbd_ep_start_read(0, cdc_ecm_ep_data[CDC_ECM_OUT_EP_IDX].ep_addr, &g_cdc_ecm_rx_buffer[g_cdc_ecm_rx_data_length], usbd_get_ep_mps(busid, cdc_ecm_ep_data[CDC_ECM_OUT_EP_IDX].ep_addr)); break; default: @@ -131,17 +125,17 @@ void cdc_ecm_bulk_out(uint8_t busid, uint8_t ep, uint32_t nbytes) { g_cdc_ecm_rx_data_length += nbytes; - if (nbytes < CDC_ECM_MAX_PACKET_SIZE) { + if (nbytes < usbd_get_ep_mps(busid, ep)) { g_cdc_ecm_rx_data_buffer = g_cdc_ecm_rx_buffer; usbd_cdc_ecm_data_recv_done(g_cdc_ecm_rx_buffer, g_cdc_ecm_rx_data_length); } else { - usbd_ep_start_read(0, ep, &g_cdc_ecm_rx_buffer[g_cdc_ecm_rx_data_length], CDC_ECM_MAX_PACKET_SIZE); + usbd_ep_start_read(0, ep, &g_cdc_ecm_rx_buffer[g_cdc_ecm_rx_data_length], usbd_get_ep_mps(busid, ep)); } } void cdc_ecm_bulk_in(uint8_t busid, uint8_t ep, uint32_t nbytes) { - if ((nbytes % CDC_ECM_MAX_PACKET_SIZE) == 0 && nbytes) { + if ((nbytes % usbd_get_ep_mps(busid, ep)) == 0 && nbytes) { /* send zlp */ usbd_ep_start_write(0, ep, NULL, 0); } else { @@ -173,7 +167,7 @@ void usbd_cdc_ecm_start_read_next(void) { g_cdc_ecm_rx_data_length = 0; g_cdc_ecm_rx_data_buffer = NULL; - usbd_ep_start_read(0, cdc_ecm_ep_data[CDC_ECM_OUT_EP_IDX].ep_addr, g_cdc_ecm_rx_buffer, CDC_ECM_MAX_PACKET_SIZE); + usbd_ep_start_read(0, cdc_ecm_ep_data[CDC_ECM_OUT_EP_IDX].ep_addr, g_cdc_ecm_rx_buffer, usbd_get_ep_mps(busid, cdc_ecm_ep_data[CDC_ECM_OUT_EP_IDX].ep_addr)); } #ifdef CONFIG_USBDEV_CDC_ECM_USING_LWIP diff --git a/class/wireless/usbd_rndis.c b/class/wireless/usbd_rndis.c index a40fd293..98c46e0b 100644 --- a/class/wireless/usbd_rndis.c +++ b/class/wireless/usbd_rndis.c @@ -17,18 +17,6 @@ static struct usbd_endpoint rndis_ep_data[3]; #define RNDIS_INQUIRY_PUT(src, len) (memcpy(infomation_buffer, src, len)) #define RNDIS_INQUIRY_PUT_LE32(value) (*(uint32_t *)infomation_buffer = (value)) -#ifdef CONFIG_USB_HS -#define RNDIS_MAX_PACKET_SIZE 512 -#else -#define RNDIS_MAX_PACKET_SIZE 64 -#endif - -#ifndef CONFIG_USB_HS -#define RNDIS_LINK_SPEED 12000000 /* Link baudrate (12Mbit/s for USB-FS) */ -#else -#define RNDIS_LINK_SPEED 480000000 /* Link baudrate (480Mbit/s for USB-HS) */ -#endif - /* Device data structure */ struct usbd_rndis_priv { uint32_t drv_version; @@ -255,7 +243,12 @@ static int rndis_query_cmd_handler(uint8_t *data, uint32_t len) infomation_len = 4; break; case OID_GEN_LINK_SPEED: - RNDIS_INQUIRY_PUT_LE32(RNDIS_LINK_SPEED / 100); + if (usbd_get_ep_mps(0, rndis_ep_data[RNDIS_OUT_EP_IDX].ep_addr) > 64) { + RNDIS_INQUIRY_PUT_LE32(480000000 / 100); + } else { + RNDIS_INQUIRY_PUT_LE32(12000000 / 100); + } + infomation_len = 4; break; case OID_GEN_CURRENT_PACKET_FILTER: @@ -469,7 +462,7 @@ void rndis_bulk_out(uint8_t busid, uint8_t ep, uint32_t nbytes) void rndis_bulk_in(uint8_t busid, uint8_t ep, uint32_t nbytes) { - if ((nbytes % RNDIS_MAX_PACKET_SIZE) == 0 && nbytes) { + if ((nbytes % usbd_get_ep_mps(busid, ep)) == 0 && nbytes) { /* send zlp */ usbd_ep_start_write(0, ep, NULL, 0); } else { |
