On Fri, Jul 31, 2026 at 06:16:10PM +0200, Laurent Vivier wrote: > Add a qpair parameter to arp(), forwarding it to tap_send_single() > instead of hardcoding QPAIR_DEFAULT, so replies go out on the same > queue pair the request arrived on. > > arp_send_init_req() and arp_announce() are unsolicited, low-volume > messages with no meaningful queue pair context, so they hardcode > QPAIR_DEFAULT internally. > > No functional change. > > Signed-off-by: Laurent Vivier Reviewed-by: David Gibson > --- > arp.c | 5 +++-- > arp.h | 2 +- > tap.c | 2 +- > 3 files changed, 5 insertions(+), 4 deletions(-) > > diff --git a/arp.c b/arp.c > index e97c4de86a99..a12b50ff8439 100644 > --- a/arp.c > +++ b/arp.c > @@ -63,11 +63,12 @@ static bool ignore_arp(const struct ctx *c, > /** > * arp() - Check if this is a supported ARP message, reply as needed > * @c: Execution context > + * @qpair: Queue pair on which to send the reply > * @data: Single packet with Ethernet buffer > * > * Return: 1 if handled, -1 on failure > */ > -int arp(const struct ctx *c, struct iov_tail *data) > +int arp(const struct ctx *c, unsigned int qpair, struct iov_tail *data) > { > union inany_addr tgt; > struct { > @@ -112,7 +113,7 @@ int arp(const struct ctx *c, struct iov_tail *data) > memcpy(resp.am.tha, am->sha, sizeof(resp.am.tha)); > memcpy(resp.am.tip, am->sip, sizeof(resp.am.tip)); > > - tap_send_single(c, QPAIR_DEFAULT, &resp, sizeof(resp)); > + tap_send_single(c, qpair, &resp, sizeof(resp)); > > return 1; > } > diff --git a/arp.h b/arp.h > index 4b1f38bcec9b..5872b535635a 100644 > --- a/arp.h > +++ b/arp.h > @@ -22,7 +22,7 @@ struct arpmsg { > unsigned char tip[4]; > } __attribute__((__packed__)); > > -int arp(const struct ctx *c, struct iov_tail *data); > +int arp(const struct ctx *c, unsigned int qpair, struct iov_tail *data); > void arp_send_init_req(const struct ctx *c); > void arp_announce(const struct ctx *c, struct in_addr *ip, > const unsigned char *mac); > diff --git a/tap.c b/tap.c > index 206a1c36b779..928cf5c086ee 100644 > --- a/tap.c > +++ b/tap.c > @@ -727,7 +727,7 @@ resume: > if (!eh) > continue; > if (ntohs(eh->h_proto) == ETH_P_ARP) { > - arp(c, &data); > + arp(c, qpair, &data); > continue; > } > > -- > 2.54.0 > -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson