Page MenuHomeFreeBSD

D23348.id67354.diff
No OneTemporary

D23348.id67354.diff

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

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)

Event Timeline