Date: Sun, 20 Mar 2022 05:20:54 GMT From: Kristof Provost <kp@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: git: b1a3f8dccb62 - stable/12 - if_epair: build fix Message-ID: <202203200520.22K5KsjQ030011@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=b1a3f8dccb6203036b7ee81201fd5b5a8de36f0d commit b1a3f8dccb6203036b7ee81201fd5b5a8de36f0d Author: Kristof Provost <kp@FreeBSD.org> AuthorDate: 2022-03-17 02:35:13 +0000 Commit: Kristof Provost <kp@FreeBSD.org> CommitDate: 2022-03-20 00:25:06 +0000 if_epair: build fix 66acf7685b failed to build on riscv (and mips). This is because the atomic_testandset_int() (and friends) functions do not exist there. Happily those platforms do have the long variant, so switch to that. PR: 262571 MFC after: 3 days (cherry picked from commit 0bf7acd6b7047537a38e2de391a461e4e8956630) --- sys/net/if_epair.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/net/if_epair.c b/sys/net/if_epair.c index 64c9af521a39..4b01e97c354d 100644 --- a/sys/net/if_epair.c +++ b/sys/net/if_epair.c @@ -113,7 +113,7 @@ struct epair_queue { int id; struct buf_ring *rxring[2]; volatile int ridx; /* 0 || 1 */ - volatile int state; /* taskqueue coordination */ + volatile long state; /* taskqueue coordination */ struct task tx_task; struct epair_softc *sc; }; @@ -177,8 +177,8 @@ epair_tx_start_deferred(void *arg, int pending) } while (!atomic_fcmpset_int(&q->ridx, &ridx, nidx)); epair_if_input(sc, q, ridx); - atomic_clear_int(&q->state, (1 << BIT_QUEUE_TASK)); - if (atomic_testandclear_int(&q->state, BIT_MBUF_QUEUED)) + atomic_clear_long(&q->state, (1 << BIT_QUEUE_TASK)); + if (atomic_testandclear_long(&q->state, BIT_MBUF_QUEUED)) taskqueue_enqueue(epair_tasks.tq[q->id], &q->tx_task); if_rele(sc->ifp); @@ -244,7 +244,7 @@ epair_menq(struct mbuf *m, struct epair_softc *osc) #endif q = &osc->queues[bucket]; - atomic_set_int(&q->state, (1 << BIT_MBUF_QUEUED)); + atomic_set_long(&q->state, (1 << BIT_MBUF_QUEUED)); ridx = atomic_load_int(&q->ridx); ret = buf_ring_enqueue(q->rxring[ridx], m); if (ret != 0) { @@ -266,7 +266,7 @@ epair_menq(struct mbuf *m, struct epair_softc *osc) /* Someone else received the packet. */ if_inc_counter(oifp, IFCOUNTER_IPACKETS, 1); - if (!atomic_testandset_int(&q->state, BIT_QUEUE_TASK)) + if (!atomic_testandset_long(&q->state, BIT_QUEUE_TASK)) taskqueue_enqueue(epair_tasks.tq[bucket], &q->tx_task); return (0);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202203200520.22K5KsjQ030011>