From d49c9458269bd124d1a0ca8a92ed4e201dfe31c3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 29 Aug 2019 08:22:16 -0600 Subject: [PATCH] rtl8168d: Use pause in spin loops --- rtl8168d/src/device.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rtl8168d/src/device.rs b/rtl8168d/src/device.rs index 892ee7c5d1..58830fedc7 100644 --- a/rtl8168d/src/device.rs +++ b/rtl8168d/src/device.rs @@ -1,4 +1,4 @@ -use std::{mem, thread}; +use std::mem; use std::collections::BTreeMap; use netutils::setcfg; @@ -162,7 +162,7 @@ impl SchemeMut for Rtl8168 { self.regs.tppoll.writef(1 << 6, true); //Notify of normal priority packet while self.regs.tppoll.readf(1 << 6) { - thread::yield_now(); + unsafe { asm!("pause"); } } self.transmit_i += 1; @@ -170,7 +170,7 @@ impl SchemeMut for Rtl8168 { return Ok(i); } - thread::yield_now(); + unsafe { asm!("pause"); } } } @@ -286,7 +286,7 @@ impl Rtl8168 { // Reset - this will disable tx and rx, reinitialize FIFOs, and set the system buffer pointer to the initial value self.regs.cmd.writef(1 << 4, true); while self.regs.cmd.readf(1 << 4) { - thread::yield_now(); + asm!("pause"); } // Set up rx buffers