Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F161892773
D23348.id67354.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
9 KB
Referenced Files
None
Subscribers
None
D23348.id67354.diff
View Options
Index: sys/arm/allwinner/if_awg.c
===================================================================
--- sys/arm/allwinner/if_awg.c
+++ sys/arm/allwinner/if_awg.c
@@ -1022,8 +1022,13 @@
val = RD4(sc, EMAC_INT_STA);
WR4(sc, EMAC_INT_STA, val);
- if (val & RX_INT)
+ if (val & RX_INT) {
+ struct epoch_tracker et;
+
+ NET_EPOCH_ENTER(et);
awg_rxintr(sc);
+ NET_EPOCH_EXIT(et);
+ }
if (val & TX_INT)
awg_txeof(sc);
@@ -1040,6 +1045,7 @@
static int
awg_poll(if_t ifp, enum poll_cmd cmd, int count)
{
+ struct epoch_tracker et;
struct awg_softc *sc;
uint32_t val;
int rx_npkts;
@@ -1054,7 +1060,9 @@
return (0);
}
+ NET_EPOCH_ENTER(et);
rx_npkts = awg_rxintr(sc);
+ NET_EPOCH_EXIT(et);
awg_txeof(sc);
if (!if_sendq_empty(ifp))
awg_start_locked(sc);
Index: sys/arm/allwinner/if_emac.c
===================================================================
--- sys/arm/allwinner/if_emac.c
+++ sys/arm/allwinner/if_emac.c
@@ -719,8 +719,13 @@
EMAC_WRITE_REG(sc, EMAC_INT_STA, reg_val);
/* Received incoming packet */
- if (reg_val & EMAC_INT_STA_RX)
+ if (reg_val & EMAC_INT_STA_RX) {
+ struct epoch_tracker et;
+
+ NET_EPOCH_ENTER(et);
emac_rxeof(sc, sc->emac_rx_process_limit);
+ NET_EPOCH_EXIT(et);
+ }
/* Transmit Interrupt check */
if (reg_val & EMAC_INT_STA_TX) {
Index: sys/arm/ralink/if_fv.c
===================================================================
--- sys/arm/ralink/if_fv.c
+++ sys/arm/ralink/if_fv.c
@@ -1736,7 +1736,11 @@
device_printf(sc->fv_dev, "Transmit Underflow\n");
}
if (status & sc->sc_rxint_mask) {
+ struct epoch_tracker et;
+
+ NET_EPOCH_ENTER(et);
fv_rx(sc);
+ NET_EPOCH_EXIT(et);
}
if (status & sc->sc_txint_mask) {
fv_tx(sc);
Index: sys/dev/ae/if_ae.c
===================================================================
--- sys/dev/ae/if_ae.c
+++ sys/dev/ae/if_ae.c
@@ -1789,8 +1789,13 @@
}
if ((val & AE_ISR_TX_EVENT) != 0)
ae_tx_intr(sc);
- if ((val & AE_ISR_RX_EVENT) != 0)
+ if ((val & AE_ISR_RX_EVENT) != 0) {
+ struct epoch_tracker et;
+
+ NET_EPOCH_ENTER(et);
ae_rx_intr(sc);
+ NET_EPOCH_EXIT(et);
+ }
/*
* Re-enable interrupts.
*/
Index: sys/dev/age/if_age.c
===================================================================
--- sys/dev/age/if_age.c
+++ sys/dev/age/if_age.c
@@ -2167,9 +2167,14 @@
ifp = sc->age_ifp;
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) {
- if ((status & INTR_CMB_RX) != 0)
+ if ((status & INTR_CMB_RX) != 0) {
+ struct epoch_tracker et;
+
+ NET_EPOCH_ENTER(et);
sc->age_morework = age_rxintr(sc, sc->age_rr_prod,
sc->age_process_limit);
+ NET_EPOCH_EXIT(et);
+ }
if ((status & INTR_CMB_TX) != 0)
age_txintr(sc, sc->age_tpd_cons);
if ((status & (INTR_DMA_RD_TO_RST | INTR_DMA_WR_TO_RST)) != 0) {
Index: sys/dev/al_eth/al_eth.c
===================================================================
--- sys/dev/al_eth/al_eth.c
+++ sys/dev/al_eth/al_eth.c
@@ -1585,6 +1585,7 @@
static void
al_eth_rx_recv_work(void *arg, int pending)
{
+ struct epoch_tracker et;
struct al_eth_ring *rx_ring = arg;
struct mbuf *mbuf;
struct lro_entry *queued;
@@ -1595,6 +1596,8 @@
uint32_t refill_actual;
uint32_t do_if_input;
+ NET_EPOCH_ENTER(et);
+
if (napi != 0) {
rx_ring->enqueue_is_running = 1;
al_data_memory_barrier();
@@ -1691,6 +1694,8 @@
}
/* unmask irq */
al_eth_irq_config(rx_ring->unmask_reg_offset, rx_ring->unmask_val);
+
+ NET_EPOCH_EXIT(et);
}
static void
Index: sys/dev/alc/if_alc.c
===================================================================
--- sys/dev/alc/if_alc.c
+++ sys/dev/alc/if_alc.c
@@ -3375,7 +3375,11 @@
more = 0;
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) {
if ((status & INTR_RX_PKT) != 0) {
+ struct epoch_tracker et;
+
+ NET_EPOCH_ENTER(et);
more = alc_rxintr(sc, sc->alc_process_limit);
+ NET_EPOCH_EXIT(et);
if (more == EAGAIN)
sc->alc_morework = 1;
else if (more == EIO) {
@@ -4700,6 +4704,8 @@
alc_debugnet_poll(struct ifnet *ifp, int count)
{
struct alc_softc *sc;
+ struct epoch_tracker et;
+ int err;
sc = if_getsoftc(ifp);
if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) !=
@@ -4707,6 +4713,10 @@
return (EBUSY);
alc_txeof(sc);
- return (alc_rxintr(sc, count));
+
+ NET_EPOCH_ENTER(et);
+ err = alc_rxintr(sc, count);
+ NET_EPOCH_EXIT(et);
+ return (err);
}
#endif /* DEBUGNET */
Index: sys/dev/an/if_an.c
===================================================================
--- sys/dev/an/if_an.c
+++ sys/dev/an/if_an.c
@@ -1222,7 +1222,11 @@
}
if (status & AN_EV_RX) {
+ struct epoch_tracker et;
+
+ NET_EPOCH_ENTER(et);
an_rxeof(sc);
+ NET_EPOCH_EXIT(et);
CSR_WRITE_2(sc, AN_EVENT_ACK(sc->mpi350), AN_EV_RX);
}
Index: sys/dev/bce/if_bce.c
===================================================================
--- sys/dev/bce/if_bce.c
+++ sys/dev/bce/if_bce.c
@@ -8013,8 +8013,13 @@
}
/* Check for any completed RX frames. */
- if (hw_rx_cons != sc->hw_rx_cons)
+ if (hw_rx_cons != sc->hw_rx_cons) {
+ struct epoch_tracker et;
+
+ NET_EPOCH_ENTER(et);
bce_rx_intr(sc);
+ NET_EPOCH_EXIT(et);
+ }
/* Check for any completed TX frames. */
if (hw_tx_cons != sc->hw_tx_cons)
Index: sys/dev/bfe/if_bfe.c
===================================================================
--- sys/dev/bfe/if_bfe.c
+++ sys/dev/bfe/if_bfe.c
@@ -1473,8 +1473,13 @@
}
/* A packet was received */
- if (istat & BFE_ISTAT_RX)
+ if (istat & BFE_ISTAT_RX) {
+ struct epoch_tracker et;
+
+ NET_EPOCH_ENTER(et);
bfe_rxeof(sc);
+ NET_EPOCH_EXIT(et);
+ }
/* A packet was sent */
if (istat & BFE_ISTAT_TX)
Index: sys/dev/cas/if_cas.c
===================================================================
--- sys/dev/cas/if_cas.c
+++ sys/dev/cas/if_cas.c
@@ -1613,10 +1613,13 @@
cas_rint_timeout(void *arg)
{
struct cas_softc *sc = arg;
+ struct epoch_tracker et;
CAS_LOCK_ASSERT(sc, MA_OWNED);
+ NET_EPOCH_ENTER(et);
cas_rint(sc);
+ NET_EPOCH_EXIT(et);
}
static void
@@ -2043,7 +2046,11 @@
if ((status &
(CAS_INTR_RX_DONE | CAS_INTR_RX_BUF_NA | CAS_INTR_RX_COMP_FULL |
CAS_INTR_RX_BUF_AEMPTY | CAS_INTR_RX_COMP_AFULL)) != 0) {
+ struct epoch_tracker et;
+
+ NET_EPOCH_ENTER(et);
cas_rint(sc);
+ NET_EPOCH_EXIT(et);
#ifdef CAS_DEBUG
if (__predict_false((status &
(CAS_INTR_RX_BUF_NA | CAS_INTR_RX_COMP_FULL |
Index: sys/dev/cp/if_cp.c
===================================================================
--- sys/dev/cp/if_cp.c
+++ sys/dev/cp/if_cp.c
@@ -275,6 +275,7 @@
bdrv_t *bd = arg;
cp_board_t *b = bd->board;
#ifndef NETGRAPH
+ struct epoch_tracker et;
int i;
#endif
int s = splimp ();
@@ -301,6 +302,7 @@
splx (s);
#ifndef NETGRAPH
+ NET_EPOCH_ENTER(et);
/* Pass packets in a lock-free state */
for (i = 0; i < NCHAN && b->chan[i].type; i++) {
drv_t *d = b->chan[i].sys;
@@ -314,6 +316,7 @@
sppp_input (d->ifp, m);
}
}
+ NET_EPOCH_EXIT(et);
#endif
}
Index: sys/dev/xilinx/if_xae.c
===================================================================
--- sys/dev/xilinx/if_xae.c
+++ sys/dev/xilinx/if_xae.c
@@ -208,6 +208,7 @@
static int
xae_xdma_rx_intr(void *arg, xdma_transfer_status_t *status)
{
+ struct epoch_tracker et;
xdma_transfer_status_t st;
struct xae_softc *sc;
struct ifnet *ifp;
@@ -221,6 +222,8 @@
XAE_LOCK(sc);
+ NET_EPOCH_ENTER(et);
+
ifp = sc->ifp;
cnt_processed = 0;
@@ -246,6 +249,8 @@
xae_rx_enqueue(sc, cnt_processed);
+ NET_EPOCH_EXIT(et);
+
XAE_UNLOCK(sc);
return (0);
Index: sys/dev/xl/if_xl.c
===================================================================
--- sys/dev/xl/if_xl.c
+++ sys/dev/xl/if_xl.c
@@ -1975,11 +1975,15 @@
static void
xl_rxeof_task(void *arg, int pending)
{
+ struct epoch_tracker et;
struct xl_softc *sc = (struct xl_softc *)arg;
XL_LOCK(sc);
- if (sc->xl_ifp->if_drv_flags & IFF_DRV_RUNNING)
+ if (sc->xl_ifp->if_drv_flags & IFF_DRV_RUNNING) {
+ NET_EPOCH_ENTER(et);
xl_rxeof(sc);
+ NET_EPOCH_EXIT(et);
+ }
XL_UNLOCK(sc);
}
@@ -2173,10 +2177,14 @@
break;
if (status & XL_STAT_UP_COMPLETE) {
+ struct epoch_tracker et;
+
+ NET_EPOCH_ENTER(et);
if (xl_rxeof(sc) == 0) {
while (xl_rx_resync(sc))
xl_rxeof(sc);
}
+ NET_EPOCH_EXIT(et);
}
if (status & XL_STAT_DOWN_COMPLETE) {
@@ -2229,13 +2237,16 @@
static int
xl_poll_locked(struct ifnet *ifp, enum poll_cmd cmd, int count)
{
+ struct epoch_tracker et;
struct xl_softc *sc = ifp->if_softc;
int rx_npkts;
XL_LOCK_ASSERT(sc);
sc->rxcycles = count;
+ NET_EPOCH_ENTER(et);
rx_npkts = xl_rxeof(sc);
+ NET_EPOCH_EXIT(et);
if (sc->xl_type == XL_TYPE_905B)
xl_txeof_90xB(sc);
else
@@ -3098,6 +3109,7 @@
static int
xl_watchdog(struct xl_softc *sc)
{
+ struct epoch_tracker et;
struct ifnet *ifp = sc->xl_ifp;
u_int16_t status = 0;
int misintr;
@@ -3107,7 +3119,9 @@
if (sc->xl_wdog_timer == 0 || --sc->xl_wdog_timer != 0)
return (0);
+ NET_EPOCH_ENTER(et);
xl_rxeof(sc);
+ NET_EPOCH_EXIT(et);
xl_txeoc(sc);
misintr = 0;
if (sc->xl_type == XL_TYPE_905B) {
Index: sys/net/netisr.c
===================================================================
--- sys/net/netisr.c
+++ sys/net/netisr.c
@@ -920,6 +920,7 @@
static void
swi_net(void *arg)
{
+ struct epoch_tracker et;
#ifdef NETISR_LOCKING
struct rm_priotracker tracker;
#endif
@@ -928,6 +929,8 @@
nwsp = arg;
+ NET_EPOCH_ENTER(et);
+
#ifdef DEVICE_POLLING
KASSERT(nws_count == 1,
("%s: device_polling but nws_count != 1", __func__));
@@ -958,6 +961,7 @@
#ifdef DEVICE_POLLING
netisr_pollmore();
#endif
+ NET_EPOCH_EXIT(et);
}
static int
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Jul 8, 7:06 PM (17 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34856722
Default Alt Text
D23348.id67354.diff (9 KB)
Attached To
Mode
D23348: Widen EPOCH(9) usage in network drivers (as a pre-step for D23347)
Attached
Detach File
Event Timeline
Log In to Comment