mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Test for retry of driver detach and interface claim
This commit is contained in:
@@ -65,31 +65,35 @@ impl RogCore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_handle
|
if let Err(err) = dev_handle.set_auto_detach_kernel_driver(true) {
|
||||||
.set_auto_detach_kernel_driver(true)
|
warn!("Auto-detach kernel driver failed: {:?}", err);
|
||||||
.map_err(|err| {
|
let mut fail_count = 10;
|
||||||
error!("Auto-detach kernel driver failed: {:?}", err);
|
while fail_count > 0 {
|
||||||
err
|
warn!("Trying device reset");
|
||||||
})?;
|
fail_count -= 1;
|
||||||
|
dev_handle.reset()?;
|
||||||
|
std::thread::sleep(std::time::Duration::from_millis(500));
|
||||||
|
dev_handle
|
||||||
|
.set_auto_detach_kernel_driver(true)
|
||||||
|
.map_err(|err| {
|
||||||
|
error!("Auto-detach kernel driver failed: {:?}", err);
|
||||||
|
err
|
||||||
|
})?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if let Err(err) = dev_handle.claim_interface(interface) {
|
if let Err(err) = dev_handle.claim_interface(interface) {
|
||||||
warn!("Could not claim keyboard device interface: {:?}", err);
|
warn!("Could not claim keyboard device interface: {:?}", err);
|
||||||
warn!("Trying to detach kernel driver then retry");
|
let mut fail_count = 10;
|
||||||
if let Ok(active) = dev_handle.kernel_driver_active(interface) {
|
while fail_count > 0 {
|
||||||
if active {
|
warn!("Sleeping");
|
||||||
dev_handle.reset()?;
|
fail_count -= 1;
|
||||||
dev_handle.detach_kernel_driver(interface).map_err(|err| {
|
std::thread::sleep(std::time::Duration::from_millis(500));
|
||||||
warn!("Could not detach kernel driver: {:?}", err);
|
dev_handle.claim_interface(interface).map_err(|err| {
|
||||||
err
|
error!("Could not claim keyboard device interface: {:?}", err);
|
||||||
})?;
|
err
|
||||||
} else {
|
})?;
|
||||||
warn!("Kernel driver not active, continue");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
dev_handle.claim_interface(interface).map_err(|err| {
|
|
||||||
error!("Could not claim keyboard device interface: {:?}", err);
|
|
||||||
err
|
|
||||||
})?;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(RogCore {
|
Ok(RogCore {
|
||||||
|
|||||||
Reference in New Issue
Block a user