aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristof Provost <kp@FreeBSD.org>2022-03-17 02:35:13 +0000
committerKristof Provost <kp@FreeBSD.org>2022-03-17 05:43:47 +0000
commit0bf7acd6b7047537a38e2de391a461e4e8956630 (patch)
tree1cb9036a237071b9b74b29514fbcb3e0b7773674
parent8ea5af2b77f2b43c250cacb257f42c0a54d644c4 (diff)
downloadsrc-0bf7acd6b7047537a38e2de391a461e4e8956630.tar.gz
src-0bf7acd6b7047537a38e2de391a461e4e8956630.zip
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
-rw-r--r--sys/net/if_epair.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/net/if_epair.c b/sys/net/if_epair.c
index fbf48c7793ea..37b12797426c 100644
--- a/sys/net/if_epair.c
+++ b/sys/net/if_epair.c
@@ -112,7 +112,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;
};
@@ -181,8 +181,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);
@@ -248,7 +248,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) {
@@ -270,7 +270,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);