virtio-devices: net: Refactor 'handle_event' for readability

Signed-off-by: Bo Chen <chen.bo@intel.com>
This commit is contained in:
Bo Chen 2022-08-18 12:27:57 -07:00 committed by Sebastien Boeuf
parent b4fe41ad0c
commit 1ee41a98de

View File

@ -342,30 +342,29 @@ impl EpollHelperHandler for NetEpollHandler {
if let Some(rate_limiter) = &mut self.net.rx_rate_limiter { if let Some(rate_limiter) = &mut self.net.rx_rate_limiter {
// Upon rate limiter event, call the rate limiter handler and register the // Upon rate limiter event, call the rate limiter handler and register the
// TAP fd for further processing if some RX buffers are available // TAP fd for further processing if some RX buffers are available
match rate_limiter.event_handler() { rate_limiter.event_handler().map_err(|e| {
Ok(_) => { EpollHelperError::HandleEvent(anyhow!(
"Error from 'rate_limiter.event_handler()': {:?}",
e
))
})?;
if !self.net.rx_tap_listening && self.net.rx_desc_avail { if !self.net.rx_tap_listening && self.net.rx_desc_avail {
if let Err(e) = net_util::register_listener( net_util::register_listener(
self.net.epoll_fd.unwrap(), self.net.epoll_fd.unwrap(),
self.net.tap.as_raw_fd(), self.net.tap.as_raw_fd(),
epoll::Events::EPOLLIN, epoll::Events::EPOLLIN,
u64::from(self.net.tap_rx_event_id), u64::from(self.net.tap_rx_event_id),
) { )
return Err(EpollHelperError::HandleEvent(anyhow!( .map_err(|e| {
EpollHelperError::HandleEvent(anyhow!(
"Error register_listener with `RX_RATE_LIMITER_EVENT`: {:?}", "Error register_listener with `RX_RATE_LIMITER_EVENT`: {:?}",
e e
))); ))
} })?;
self.net.rx_tap_listening = true; self.net.rx_tap_listening = true;
} }
}
Err(e) => {
return Err(EpollHelperError::HandleEvent(anyhow!(
"Error from 'rate_limiter.event_handler()': {:?}",
e
)));
}
}
} else { } else {
return Err(EpollHelperError::HandleEvent(anyhow!( return Err(EpollHelperError::HandleEvent(anyhow!(
"Unexpected RX_RATE_LIMITER_EVENT" "Unexpected RX_RATE_LIMITER_EVENT"
@ -376,23 +375,17 @@ impl EpollHelperHandler for NetEpollHandler {
if let Some(rate_limiter) = &mut self.net.tx_rate_limiter { if let Some(rate_limiter) = &mut self.net.tx_rate_limiter {
// Upon rate limiter event, call the rate limiter handler // Upon rate limiter event, call the rate limiter handler
// and restart processing the queue. // and restart processing the queue.
match rate_limiter.event_handler() { rate_limiter.event_handler().map_err(|e| {
Ok(_) => { EpollHelperError::HandleEvent(anyhow!(
self.driver_awake = true;
if let Err(e) = self.process_tx() {
return Err(EpollHelperError::HandleEvent(anyhow!(
"Error processing TX queue: {:?}",
e
)));
}
}
Err(e) => {
return Err(EpollHelperError::HandleEvent(anyhow!(
"Error from 'rate_limiter.event_handler()': {:?}", "Error from 'rate_limiter.event_handler()': {:?}",
e e
))); ))
} })?;
}
self.driver_awake = true;
self.process_tx().map_err(|e| {
EpollHelperError::HandleEvent(anyhow!("Error processing TX queue: {:?}", e))
})?;
} else { } else {
return Err(EpollHelperError::HandleEvent(anyhow!( return Err(EpollHelperError::HandleEvent(anyhow!(
"Unexpected TX_RATE_LIMITER_EVENT" "Unexpected TX_RATE_LIMITER_EVENT"