diff options
| author | Ryzee119 <[email protected]> | 2022-05-29 13:58:50 +0930 |
|---|---|---|
| committer | Ryzee119 <[email protected]> | 2022-05-29 14:15:23 +0930 |
| commit | 9e30ec4f160e4816e3c43a0590e6c58832a66cac (patch) | |
| tree | 45ff6e6854949e9d981e6472a421025c936e759c /src | |
| parent | 688a3a0cc2ba23c671df453257fdf3e601934588 (diff) | |
Hub: Retry port status transfer if failed
Diffstat (limited to 'src')
| -rw-r--r-- | src/host/hub.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/host/hub.c b/src/host/hub.c index 9e546f6f7..5c0fd9166 100644 --- a/src/host/hub.c +++ b/src/host/hub.c @@ -169,7 +169,7 @@ bool hub_port_get_status(uint8_t hub_addr, uint8_t hub_port, void* resp, }; TU_LOG2("HUB Get Port Status: addr = %u port = %u\r\n", hub_addr, hub_port); - TU_ASSERT( tuh_control_xfer(&xfer) ); + TU_VERIFY( tuh_control_xfer(&xfer) ); return true; } @@ -332,7 +332,11 @@ bool hub_xfer_cb(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t result, uint32 { if ( tu_bit_test(p_hub->status_change, port) ) { - hub_port_get_status(dev_addr, port, &p_hub->port_status, connection_get_status_complete, 0); + if (hub_port_get_status(dev_addr, port, &p_hub->port_status, connection_get_status_complete, 0) == false) + { + //Hub status control transfer failed, retry + hub_edpt_status_xfer(dev_addr); + } break; } } |
