On Mon, Feb 23, 2026 at 5:57 AM Philippe Mathieu-Daudé <[email protected]> wrote: > > On 12/2/26 19:45, BALATON Zoltan wrote: > > On Tue, 27 Jan 2026, BALATON Zoltan wrote: > >> The do_interrupt parameter for rtl8139_do_receive was originally added > >> in commit 6cadb320c7 to avoid generating interrupt when receiving in > >> loopback mode. Later commit 5311fb805a changed this so that this > >> parameter became ineffective and now this parameter is unused and > >> always 1. If this turns out to be a problem maybe there's a better way > >> to fix this so remove the do_interrupt parameter for now to simplify > >> code. > > > > Ping? > > Jason usually only does 1 pull request per dev cycle, close to soft > freeze. > > Jason, since this patch is trivial enough, I'll take it via my > hw-misc tree for convenience. Please object if you disagree :)
Feel free to do that. Thanks > > Regards, > > Phil. > > > > >> Signed-off-by: BALATON Zoltan <[email protected]> > >> --- > >> hw/net/rtl8139.c | 24 ++++++++---------------- > >> 1 file changed, 8 insertions(+), 16 deletions(-) > >> > >> diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c > >> index 9fd00574d2..2ad6338ebe 100644 > >> --- a/hw/net/rtl8139.c > >> +++ b/hw/net/rtl8139.c > >> @@ -815,7 +815,8 @@ static bool rtl8139_can_receive(NetClientState *nc) > >> return avail == 0 || avail >= 1514 || (s->IntrMask & RxOverflow); > >> } > >> > >> -static ssize_t rtl8139_do_receive(NetClientState *nc, const uint8_t > >> *buf, size_t size_, int do_interrupt) > >> +static ssize_t rtl8139_receive(NetClientState *nc, > >> + const uint8_t *buf, size_t size_) > >> { > >> RTL8139State *s = qemu_get_nic_opaque(nc); > >> PCIDevice *d = PCI_DEVICE(s); > >> @@ -1173,20 +1174,11 @@ static ssize_t > >> rtl8139_do_receive(NetClientState *nc, const uint8_t *buf, size_t > >> } > >> > >> s->IntrStatus |= RxOK; > >> - > >> - if (do_interrupt) > >> - { > >> - rtl8139_update_irq(s); > >> - } > >> + rtl8139_update_irq(s); > >> > >> return size_; > >> } > >> > >> -static ssize_t rtl8139_receive(NetClientState *nc, const uint8_t > >> *buf, size_t size) > >> -{ > >> - return rtl8139_do_receive(nc, buf, size, 1); > >> -} > >> - > >> static void rtl8139_reset_rxring(RTL8139State *s, uint32_t bufferSize) > >> { > >> s->RxBufferSize = bufferSize; > >> @@ -1745,7 +1737,7 @@ static uint32_t > >> rtl8139_RxConfig_read(RTL8139State *s) > >> } > >> > >> static void rtl8139_transfer_frame(RTL8139State *s, uint8_t *buf, int > >> size, > >> - int do_interrupt, const uint8_t *dot1q_buf) > >> + const uint8_t *dot1q_buf) > >> { > >> struct iovec *iov = NULL; > >> struct iovec vlan_iov[3]; > >> @@ -1828,7 +1820,7 @@ static int rtl8139_transmit_one(RTL8139State *s, > >> int descriptor) > >> s->TxStatus[descriptor] |= TxHostOwns; > >> s->TxStatus[descriptor] |= TxStatOK; > >> > >> - rtl8139_transfer_frame(s, txbuffer, txsize, 0, NULL); > >> + rtl8139_transfer_frame(s, txbuffer, txsize, NULL); > >> > >> DPRINTF("+++ transmitted %d bytes from descriptor %d\n", txsize, > >> descriptor); > >> @@ -2246,7 +2238,7 @@ static int > >> rtl8139_cplus_transmit_one(RTL8139State *s) > >> DPRINTF("+++ C+ mode TSO transferring packet size " > >> "%d\n", tso_send_size); > >> rtl8139_transfer_frame(s, saved_buffer, > >> tso_send_size, > >> - 0, (uint8_t *) dot1q_buffer); > >> + (uint8_t *)dot1q_buffer); > >> > >> /* add transferred count to TCP sequence number */ > >> stl_be_p(&p_tcp_hdr->th_seq, > >> @@ -2323,8 +2315,8 @@ skip_offload: > >> > >> DPRINTF("+++ C+ mode transmitting %d bytes packet\n", > >> saved_size); > >> > >> - rtl8139_transfer_frame(s, saved_buffer, saved_size, 1, > >> - (uint8_t *) dot1q_buffer); > >> + rtl8139_transfer_frame(s, saved_buffer, saved_size, > >> + (uint8_t *)dot1q_buffer); > >> > >> /* restore card space if there was no recursion and reset > >> offset */ > >> if (!s->cplus_txbuffer) > >> >
