summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRyzee119 <[email protected]>2022-05-29 13:58:50 +0930
committerRyzee119 <[email protected]>2022-05-29 14:15:23 +0930
commit9e30ec4f160e4816e3c43a0590e6c58832a66cac (patch)
tree45ff6e6854949e9d981e6472a421025c936e759c /src
parent688a3a0cc2ba23c671df453257fdf3e601934588 (diff)
Hub: Retry port status transfer if failed
Diffstat (limited to 'src')
-rw-r--r--src/host/hub.c8
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;
}
}