bce: Dispatch callouts to interrupt's target CPU
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Sat, 18 Aug 2012 07:17:50 +0000 (15:17 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Sat, 18 Aug 2012 07:17:50 +0000 (15:17 +0800)
sys/dev/netif/bce/if_bce.c

index 0356404..d173f81 100644 (file)
@@ -4814,7 +4814,8 @@ bce_init(void *xsc)
        ifp->if_flags |= IFF_RUNNING;
        ifp->if_flags &= ~IFF_OACTIVE;
 
        ifp->if_flags |= IFF_RUNNING;
        ifp->if_flags &= ~IFF_OACTIVE;
 
-       callout_reset(&sc->bce_tick_callout, hz, bce_tick, sc);
+       callout_reset_bycpu(&sc->bce_tick_callout, hz, bce_tick, sc,
+           sc->bce_intr_cpuid);
 back:
        if (error)
                bce_stop(sc);
 back:
        if (error)
                bce_stop(sc);
@@ -5779,7 +5780,8 @@ bce_pulse(void *xsc)
        }
 
        /* Schedule the next pulse. */
        }
 
        /* Schedule the next pulse. */
-       callout_reset(&sc->bce_pulse_callout, hz, bce_pulse, sc);
+       callout_reset_bycpu(&sc->bce_pulse_callout, hz, bce_pulse, sc,
+           sc->bce_intr_cpuid);
 
        lwkt_serialize_exit(ifp->if_serializer);
 }
 
        lwkt_serialize_exit(ifp->if_serializer);
 }
@@ -5867,7 +5869,8 @@ bce_tick_serialized(struct bce_softc *sc)
        bce_stats_update(sc);
 
        /* Schedule the next tick. */
        bce_stats_update(sc);
 
        /* Schedule the next tick. */
-       callout_reset(&sc->bce_tick_callout, hz, bce_tick, sc);
+       callout_reset_bycpu(&sc->bce_tick_callout, hz, bce_tick, sc,
+           sc->bce_intr_cpuid);
 
        /* If link is up already up then we're done. */
        if (sc->bce_link)
 
        /* If link is up already up then we're done. */
        if (sc->bce_link)