diff --git a/cocotbext/eth/gmii.py b/cocotbext/eth/gmii.py index 5c23624..503c58a 100644 --- a/cocotbext/eth/gmii.py +++ b/cocotbext/eth/gmii.py @@ -344,23 +344,22 @@ class GmiiSink(Reset): self._init_reset(reset, reset_active_level) - async def recv(self, compact=True): - frame = await self.queue.get() + def _recv(self, frame, compact=True): if self.queue.empty(): self.active_event.clear() self.queue_occupancy_bytes -= len(frame) self.queue_occupancy_frames -= 1 + if compact: + frame.compact() return frame + async def recv(self, compact=True): + frame = await self.queue.get() + return self._recv(frame, compact) + def recv_nowait(self, compact=True): - if not self.queue.empty(): - frame = self.queue.get_nowait() - if self.queue.empty(): - self.active_event.clear() - self.queue_occupancy_bytes -= len(frame) - self.queue_occupancy_frames -= 1 - return frame - return None + frame = self.queue.get_nowait() + return self._recv(frame, compact) def count(self): return self.queue.qsize() diff --git a/cocotbext/eth/mii.py b/cocotbext/eth/mii.py index 3e88561..58a3554 100644 --- a/cocotbext/eth/mii.py +++ b/cocotbext/eth/mii.py @@ -238,23 +238,22 @@ class MiiSink(Reset): self._init_reset(reset, reset_active_level) - async def recv(self, compact=True): - frame = await self.queue.get() + def _recv(self, frame, compact=True): if self.queue.empty(): self.active_event.clear() self.queue_occupancy_bytes -= len(frame) self.queue_occupancy_frames -= 1 + if compact: + frame.compact() return frame + async def recv(self, compact=True): + frame = await self.queue.get() + return self._recv(frame, compact) + def recv_nowait(self, compact=True): - if not self.queue.empty(): - frame = self.queue.get_nowait() - if self.queue.empty(): - self.active_event.clear() - self.queue_occupancy_bytes -= len(frame) - self.queue_occupancy_frames -= 1 - return frame - return None + frame = self.queue.get_nowait() + return self._recv(frame, compact) def count(self): return self.queue.qsize() diff --git a/cocotbext/eth/rgmii.py b/cocotbext/eth/rgmii.py index 3bdbce6..06df25d 100644 --- a/cocotbext/eth/rgmii.py +++ b/cocotbext/eth/rgmii.py @@ -252,23 +252,22 @@ class RgmiiSink(Reset): self._init_reset(reset, reset_active_level) - async def recv(self, compact=True): - frame = await self.queue.get() + def _recv(self, frame, compact=True): if self.queue.empty(): self.active_event.clear() self.queue_occupancy_bytes -= len(frame) self.queue_occupancy_frames -= 1 + if compact: + frame.compact() return frame + async def recv(self, compact=True): + frame = await self.queue.get() + return self._recv(frame, compact) + def recv_nowait(self, compact=True): - if not self.queue.empty(): - frame = self.queue.get_nowait() - if self.queue.empty(): - self.active_event.clear() - self.queue_occupancy_bytes -= len(frame) - self.queue_occupancy_frames -= 1 - return frame - return None + frame = self.queue.get_nowait() + return self._recv(frame, compact) def count(self): return self.queue.qsize() diff --git a/cocotbext/eth/xgmii.py b/cocotbext/eth/xgmii.py index 0b468d2..f0d8662 100644 --- a/cocotbext/eth/xgmii.py +++ b/cocotbext/eth/xgmii.py @@ -366,23 +366,22 @@ class XgmiiSink(Reset): self._init_reset(reset, reset_active_level) - async def recv(self, compact=True): - frame = await self.queue.get() + def _recv(self, frame, compact=True): if self.queue.empty(): self.active_event.clear() self.queue_occupancy_bytes -= len(frame) self.queue_occupancy_frames -= 1 + if compact: + frame.compact() return frame + async def recv(self, compact=True): + frame = await self.queue.get() + return self._recv(frame, compact) + def recv_nowait(self, compact=True): - if not self.queue.empty(): - frame = self.queue.get_nowait() - if self.queue.empty(): - self.active_event.clear() - self.queue_occupancy_bytes -= len(frame) - self.queue_occupancy_frames -= 1 - return frame - return None + frame = self.queue.get_nowait() + return self._recv(frame, compact) def count(self): return self.queue.qsize()