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)
> >>
>


Reply via email to