if: Move if_cpuid into ifaltq; prepare multiple TX queues support
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Sat, 5 Jan 2013 13:55:26 +0000 (21:55 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Sat, 5 Jan 2013 13:59:36 +0000 (21:59 +0800)
if_cpuid and if_npoll_cpuid are merged and moved into ifaltq as
altq_cpuid, which indicates the owner CPU of the tx queue.  Since
we already have code in if_start_dispatch() to catching tx queue
owner CPU changes, this merging is quite safe.

68 files changed:
sys/dev/netif/acx/if_acx.c
sys/dev/netif/ae/if_ae.c
sys/dev/netif/age/if_age.c
sys/dev/netif/alc/if_alc.c
sys/dev/netif/ale/if_ale.c
sys/dev/netif/an/if_an_isa.c
sys/dev/netif/an/if_an_pccard.c
sys/dev/netif/an/if_an_pci.c
sys/dev/netif/bce/if_bce.c
sys/dev/netif/bfe/if_bfe.c
sys/dev/netif/bge/if_bge.c
sys/dev/netif/bnx/if_bnx.c
sys/dev/netif/bwi/if_bwi.c
sys/dev/netif/cs/if_cs.c
sys/dev/netif/dc/if_dc.c
sys/dev/netif/de/if_de.c
sys/dev/netif/ed/if_ed_isa.c
sys/dev/netif/ed/if_ed_pccard.c
sys/dev/netif/ed/if_ed_pci.c
sys/dev/netif/em/if_em.c
sys/dev/netif/emx/if_emx.c
sys/dev/netif/ep/if_ep_isa.c
sys/dev/netif/ep/if_ep_pccard.c
sys/dev/netif/et/if_et.c
sys/dev/netif/ex/if_ex_isa.c
sys/dev/netif/ex/if_ex_pccard.c
sys/dev/netif/fe/if_fe.c
sys/dev/netif/fwe/if_fwe.c
sys/dev/netif/fxp/if_fxp.c
sys/dev/netif/igb/if_igb.c
sys/dev/netif/iwl/iwl2100.c
sys/dev/netif/jme/if_jme.c
sys/dev/netif/lge/if_lge.c
sys/dev/netif/lnc/if_lnc_isa.c
sys/dev/netif/lnc/if_lnc_pci.c
sys/dev/netif/msk/if_msk.c
sys/dev/netif/my/if_my.c
sys/dev/netif/nfe/if_nfe.c
sys/dev/netif/nge/if_nge.c
sys/dev/netif/pcn/if_pcn.c
sys/dev/netif/re/if_re.c
sys/dev/netif/rl/if_rl.c
sys/dev/netif/rtw/rtw.c
sys/dev/netif/sbni/if_sbni_pci.c
sys/dev/netif/sbsh/if_sbsh.c
sys/dev/netif/sf/if_sf.c
sys/dev/netif/sis/if_sis.c
sys/dev/netif/sk/if_sk.c
sys/dev/netif/sln/if_sln.c
sys/dev/netif/sn/if_sn.c
sys/dev/netif/ste/if_ste.c
sys/dev/netif/stge/if_stge.c
sys/dev/netif/ti/if_ti.c
sys/dev/netif/tl/if_tl.c
sys/dev/netif/tx/if_tx.c
sys/dev/netif/txp/if_txp.c
sys/dev/netif/vge/if_vge.c
sys/dev/netif/vr/if_vr.c
sys/dev/netif/vx/if_vx_pci.c
sys/dev/netif/wb/if_wb.c
sys/dev/netif/xe/if_xe.c
sys/dev/netif/xl/if_xl.c
sys/net/altq/if_altq.h
sys/net/if.c
sys/net/if_poll.c
sys/net/if_var.h
sys/net/ifq_var.h
sys/net/vlan/if_vlan.c

index 1de02fd..7820cd2 100644 (file)
@@ -549,8 +549,7 @@ acx_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->sc_irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sc_irq_res));
 
        if (bootverbose)
                ieee80211_announce(ic);
index 8877edf..8243c86 100644 (file)
@@ -1406,8 +1406,7 @@ ae_attach(device_t dev)
                ether_ifdetach(ifp);
                goto fail;
        }
-       ifp->if_cpuid = rman_get_cpuid(sc->ae_irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->ae_irq_res));
        return 0;
 fail:
        ae_detach(dev);
index 7c235a0..44959fb 100644 (file)
@@ -666,8 +666,7 @@ age_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->age_irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->age_irq_res));
        return 0;
 fail:
        age_detach(dev);
index 9681e8e..61d64b3 100644 (file)
@@ -976,6 +976,7 @@ alc_attach(device_t dev)
                goto fail;
        }
 #endif
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->alc_irq));
 
 fail:
        if (error != 0)
index 2878653..2d922d9 100644 (file)
@@ -640,8 +640,7 @@ ale_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->ale_irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->ale_irq_res));
        return 0;
 fail:
        ale_detach(dev);
index 06bd08f..5675b68 100644 (file)
@@ -62,6 +62,7 @@
 #include <net/if_dl.h>
 #include <net/if_types.h>
 #include <net/if_media.h>
+#include <net/ifq_var.h>
 
 #include <bus/isa/isavar.h>
 #include <bus/isa/pnpvar.h>
@@ -125,8 +126,7 @@ an_attach_isa(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq_res));
 
        return (0);
 
index 2407b50..9ece839 100644 (file)
@@ -61,6 +61,7 @@
 #include <net/if_dl.h>
 #include <net/if_types.h>
 #include <net/if_media.h>
+#include <net/ifq_var.h>
 
 #include <bus/pccard/pccardvar.h>
 #include <bus/pccard/pccarddevs.h>
@@ -168,8 +169,7 @@ an_pccard_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq_res));
 
        return 0;
 
index 6c19798..af637b2 100644 (file)
@@ -75,6 +75,7 @@
 #include <net/ethernet.h>
 #include <net/if_dl.h>
 #include <net/if_media.h>
+#include <net/ifq_var.h>
 
 #include <bus/pci/pcidevs.h>
 #include <bus/pci/pcireg.h>
@@ -212,8 +213,7 @@ an_attach_pci(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq_res));
 
        return(0);
 
index c1d5346..ce0ab11 100644 (file)
@@ -999,9 +999,8 @@ bce_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->bce_res_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
-       sc->bce_intr_cpuid = ifp->if_cpuid;
+       sc->bce_intr_cpuid = rman_get_cpuid(sc->bce_res_irq);
+       ifq_set_cpuid(&ifp->if_snd, sc->bce_intr_cpuid);
 
        /* Print some important debugging info. */
        DBRUN(BCE_INFO, bce_dump_driver_state(sc));
@@ -5302,7 +5301,7 @@ bce_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                        REG_WR(sc, BCE_HC_TX_QUICK_CONS_TRIP,
                               (1 << 16) | sc->bce_tx_quick_cons_trip);
                }
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING) {
                        bce_enable_intr(sc);
@@ -5314,7 +5313,7 @@ bce_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                               (sc->bce_rx_quick_cons_trip_int << 16) |
                               sc->bce_rx_quick_cons_trip);
                }
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, sc->bce_intr_cpuid);
        }
 }
 
index 23d92e6..5cbc2ab 100644 (file)
@@ -426,8 +426,7 @@ bfe_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->bfe_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->bfe_irq));
        return 0;
 fail:
        bfe_detach(dev);
index b9c2680..0717804 100644 (file)
@@ -2584,8 +2584,7 @@ bge_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->bge_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->bge_irq));
 
        return(0);
 fail:
@@ -3121,11 +3120,11 @@ bge_npoll(struct ifnet *ifp, struct ifpoll_info *info)
 
                if (ifp->if_flags & IFF_RUNNING)
                        bge_disable_intr(sc);
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING)
                        bge_enable_intr(sc);
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->bge_irq));
        }
 }
 
index 3d1ce3a..19d3ba9 100644 (file)
@@ -2214,11 +2214,9 @@ bnx_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->bnx_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
-
-       sc->bnx_stat_cpuid = ifp->if_cpuid;
-       sc->bnx_intr_cpuid = ifp->if_cpuid;
+       sc->bnx_intr_cpuid = rman_get_cpuid(sc->bnx_irq);
+       sc->bnx_stat_cpuid = sc->bnx_intr_cpuid;
+       ifq_set_cpuid(&ifp->if_snd, sc->bnx_intr_cpuid);
 
        return(0);
 fail:
@@ -2656,11 +2654,11 @@ bnx_npoll(struct ifnet *ifp, struct ifpoll_info *info)
 
                if (ifp->if_flags & IFF_RUNNING)
                        bnx_disable_intr(sc);
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING)
                        bnx_enable_intr(sc);
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, sc->bnx_intr_cpuid);
        }
 }
 
index 7ca742b..bf52caf 100644 (file)
@@ -813,8 +813,7 @@ bwi_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->sc_irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sc_irq_res));
 
        if (bootverbose)
                ieee80211_announce(ic);
index 36477aa..b38fc5c 100644 (file)
@@ -686,8 +686,7 @@ cs_attach(device_t dev)
                goto bad;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq_res));
 
        return 0;
 
index b289edc..66346fb 100644 (file)
@@ -2192,8 +2192,7 @@ dc_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->dc_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->dc_irq));
 
        return(0);
 
@@ -2911,13 +2910,13 @@ dc_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                        CSR_WRITE_4(sc, DC_IMR, 0x00000000);
                        sc->dc_npoll.ifpc_stcount = 0;
                }
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING) {
                        /* Re-enable interrupts. */
                        CSR_WRITE_4(sc, DC_IMR, DC_INTRS);
                }
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->dc_irq));
        }
 }
 
index 47f14a7..d323bde 100644 (file)
@@ -4139,9 +4139,7 @@ tulip_pci_attach(device_t dev)
                return ENXIO;
            }
 
-           sc->tulip_if.if_cpuid = rman_get_cpuid(res);
-           KKASSERT(sc->tulip_if.if_cpuid >= 0 &&
-                    sc->tulip_if.if_cpuid < ncpus);
+           ifq_set_cpuid(&sc->tulip_if.if_snd, rman_get_cpuid(res));
        }
     }
     return 0;
index 190b2c2..e8b7687 100644 (file)
@@ -40,6 +40,7 @@
 #include <net/if.h>
 #include <net/if_arp.h>
 #include <net/if_mib.h>
+#include <net/ifq_var.h>
 
 #include <bus/isa/isavar.h>
 
@@ -139,8 +140,8 @@ ed_isa_attach(device_t dev)
                if (error) {
                        ed_isa_detach(dev);
                } else {
-                       ifp->if_cpuid = rman_get_cpuid(sc->irq_res);
-                       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+                       ifq_set_cpuid(&ifp->if_snd,
+                           rman_get_cpuid(sc->irq_res));
                }
        } else {
                ed_release_resources(dev);
index abe918b..6ac9611 100644 (file)
@@ -45,6 +45,7 @@
 #include <net/if_arp.h>
 #include <net/if_mib.h>
 #include <net/if_media.h>
+#include <net/ifq_var.h>
 
 #include "if_edreg.h"
 #include "if_edvar.h"
@@ -290,8 +291,7 @@ ed_pccard_attach(device_t dev)
                ed_release_resources(dev);
                return (error);
        } else {
-               ifp->if_cpuid = rman_get_cpuid(sc->irq_res);
-               KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq_res));
        }
 
        return (error);
index 20dc28e..fbc0b80 100644 (file)
@@ -32,6 +32,7 @@
 #include <net/if.h>
 #include <net/if_arp.h>
 #include <net/if_mib.h>
+#include <net/ifq_var.h>
 
 #include <bus/pci/pcidevs.h>
 #include <bus/pci/pcireg.h>
@@ -111,8 +112,8 @@ ed_pci_attach(device_t dev)
                if (error) {
                        ed_pci_detach(dev);
                } else {
-                       ifp->if_cpuid = rman_get_cpuid(sc->irq_res);
-                       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+                       ifq_set_cpuid(&ifp->if_snd,
+                           rman_get_cpuid(sc->irq_res));
                }
        } else {
                 ed_release_resources(dev);
index 6bdea6d..97222da 100644 (file)
@@ -871,8 +871,7 @@ em_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(adapter->intr_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(adapter->intr_res));
        return (0);
 fail:
        em_detach(dev);
@@ -1464,11 +1463,11 @@ em_npoll(struct ifnet *ifp, struct ifpoll_info *info)
 
                if (ifp->if_flags & IFF_RUNNING)
                        em_disable_intr(adapter);
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING)
                        em_enable_intr(adapter);
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(adapter->intr_res));
        }
 }
 
index 3cf99e1..b3f68d6 100644 (file)
@@ -822,8 +822,7 @@ emx_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->intr_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->intr_res));
        return (0);
 fail:
        emx_detach(dev);
@@ -3819,11 +3818,11 @@ emx_npoll(struct ifnet *ifp, struct ifpoll_info *info)
 
                if (ifp->if_flags & IFF_RUNNING)
                        emx_disable_intr(sc);
-               ifp->if_npoll_cpuid = sc->tx_npoll_off;
+               ifq_set_cpuid(&ifp->if_snd, sc->tx_npoll_off);
        } else {
                if (ifp->if_flags & IFF_RUNNING)
                        emx_enable_intr(sc);
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->intr_res));
        }
 }
 
index 3eb590b..b17549f 100644 (file)
@@ -43,6 +43,7 @@
 #include <net/if.h>
 #include <net/if_arp.h>
 #include <net/if_media.h> 
+#include <net/ifq_var.h>
 
 #include <machine/clock.h>
 
@@ -330,8 +331,7 @@ ep_isa_attach(device_t dev)
                goto bad;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq));
 
        return (0);
 bad:
index 8617941..a20d90e 100644 (file)
@@ -49,6 +49,7 @@
 #include <net/if.h> 
 #include <net/if_arp.h>
 #include <net/if_media.h>
+#include <net/ifq_var.h>
 
 #include <machine/clock.h>
 
@@ -217,8 +218,7 @@ ep_pccard_attach(device_t dev)
                goto bad;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq));
 
        return (0);
 bad:
index 59d0b35..bc7bd39 100644 (file)
@@ -373,8 +373,7 @@ et_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->sc_irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sc_irq_res));
 
        return 0;
 fail:
index a824042..e8e8d35 100644 (file)
@@ -42,6 +42,7 @@
 #include <net/if.h>
 #include <net/if_arp.h>
 #include <net/if_media.h> 
+#include <net/ifq_var.h>
 
 #include <bus/isa/isavar.h>
 #include <bus/isa/pnpvar.h>
@@ -286,8 +287,7 @@ ex_isa_attach(device_t dev)
                goto bad;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq));
 
        return(0);
 bad:
index 0f0a33c..902510f 100644 (file)
@@ -39,7 +39,7 @@
 #include <net/if.h>
 #include <net/if_arp.h>
 #include <net/if_media.h> 
-
+#include <net/ifq_var.h>
 
 #include "if_exreg.h"
 #include "if_exvar.h"
@@ -168,8 +168,7 @@ ex_pccard_attach(device_t dev)
                goto bad;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq));
 
        return(0);
 bad:
index c1f7606..f68d7b7 100644 (file)
@@ -820,8 +820,7 @@ fe_attach (device_t dev)
                return ENXIO;
        }
 
-       sc->sc_if.if_cpuid = rman_get_cpuid(sc->irq_res);
-       KKASSERT(sc->sc_if.if_cpuid >= 0 && sc->sc_if.if_cpuid < ncpus);
+       ifq_set_cpuid(&sc->sc_if.if_snd, rman_get_cpuid(sc->irq_res));
   
        /* Print additional info when attached.  */
        device_printf(dev, "type %s%s\n", sc->typestr,
index 0e37bf2..39a2605 100644 (file)
@@ -147,13 +147,13 @@ fwe_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                        fc->set_intr(fc, 0);
                        fwe->npoll.ifpc_stcount = 0;
                }
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING) {
                        /* enable interrupts */
                        fc->set_intr(fc, 1);
                }
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, 0 /* XXX */);
        }
 }
 
index 4f45277..0d76f4f 100644 (file)
@@ -690,8 +690,7 @@ fxp_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq));
 
        return (0);
 
@@ -1246,13 +1245,13 @@ fxp_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                            FXP_SCB_INTR_DISABLE);
                        sc->fxp_npoll.ifpc_stcount = 0;
                }
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING) {
                        /* enable interrupts */
                        CSR_WRITE_1(sc, FXP_CSR_SCB_INTRCNTL, 0);
                }
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq));
        }
 }
 
index 44fb8cf..a8bd5bf 100644 (file)
@@ -647,7 +647,7 @@ igb_attach(device_t dev)
                ether_ifdetach(&sc->arpcom.ac_if);
                goto failed;
        }
-       sc->arpcom.ac_if.if_cpuid = sc->tx_rings[0].tx_intr_cpuid;
+       ifq_set_cpuid(&sc->arpcom.ac_if.if_snd, sc->tx_rings[0].tx_intr_cpuid);
 
        return 0;
 
@@ -3038,7 +3038,7 @@ igb_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                        else
                                igb_init(sc);
                }
-               ifp->if_npoll_cpuid = sc->tx_npoll_off;
+               ifq_set_cpuid(&ifp->if_snd, sc->tx_npoll_off);
        } else {
                if (ifp->if_flags & IFF_RUNNING) {
                        if (sc->rx_ring_inuse == sc->rx_ring_cnt)
@@ -3046,7 +3046,7 @@ igb_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                        else
                                igb_init(sc);
                }
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, sc->tx_rings[0].tx_intr_cpuid);
        }
 }
 
index 058d124..81bda7c 100644 (file)
@@ -312,8 +312,7 @@ iwl2100_attach(device_t dev)
                return ENXIO;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->sc_irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sc_irq_res));
 
        /*
         * Attach radio tap
index d56b5bb..03b386d 100644 (file)
@@ -1068,7 +1068,7 @@ jme_attach(device_t dev)
                ether_ifdetach(ifp);
                goto fail;
        }
-       ifp->if_cpuid = sc->jme_tx_cpuid;
+       ifq_set_cpuid(&ifp->if_snd, sc->jme_tx_cpuid);
 
        return 0;
 fail:
@@ -3386,11 +3386,11 @@ jme_npoll(struct ifnet *ifp, struct ifpoll_info *info)
 
                if (ifp->if_flags & IFF_RUNNING)
                        jme_disable_intr(sc);
-               ifp->if_npoll_cpuid = sc->jme_npoll_txoff;
+               ifq_set_cpuid(&ifp->if_snd, sc->jme_npoll_txoff);
        } else {
                if (ifp->if_flags & IFF_RUNNING)
                        jme_enable_intr(sc);
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, sc->jme_tx_cpuid);
        }
 }
 
index c0afdfb..d7e9305 100644 (file)
@@ -557,8 +557,7 @@ lge_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->lge_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->lge_irq));
 
        return(0);
 
index 1600b72..a3f99c1 100644 (file)
@@ -88,6 +88,7 @@
 #include <net/if.h>
 #include <net/if_media.h>
 #include <net/if_arp.h>
+#include <net/ifq_var.h>
 
 #include <bus/isa/isavar.h>
 
@@ -428,8 +429,7 @@ le_isa_attach(device_t dev)
                goto fail_am7990;
        }
 
-       sc->ifp->if_cpuid = rman_get_cpuid(lesc->sc_ires);
-       KKASSERT(sc->ifp->if_cpuid >= 0 && sc->ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&sc->ifp->if_snd, rman_get_cpuid(lesc->sc_ires));
 
        return (0);
 
index 3e303b1..9b3cc68 100644 (file)
@@ -89,6 +89,7 @@
 #include <net/if.h>
 #include <net/if_media.h>
 #include <net/if_arp.h>
+#include <net/ifq_var.h>
 
 #include <bus/pci/pcireg.h>
 #include <bus/pci/pcivar.h>
@@ -443,8 +444,7 @@ le_pci_attach(device_t dev)
                goto fail_am79900;
        }
 
-       sc->ifp->if_cpuid = rman_get_cpuid(lesc->sc_ires);
-       KKASSERT(sc->ifp->if_cpuid >= 0 && sc->ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&sc->ifp->if_snd, rman_get_cpuid(lesc->sc_ires));
 
        return (0);
 
index 836bd9f..43c0001 100644 (file)
@@ -1737,12 +1737,10 @@ mskc_attach(device_t dev)
        }
 
        cpuid = rman_get_cpuid(sc->msk_irq);
-       KKASSERT(cpuid >= 0 && cpuid < ncpus);
-
        if (sc->msk_if[0] != NULL)
-               sc->msk_if[0]->msk_ifp->if_cpuid = cpuid;
+               ifq_set_cpuid(&sc->msk_if[0]->msk_ifp->if_snd, cpuid);
        if (sc->msk_if[1] != NULL)
-               sc->msk_if[1]->msk_ifp->if_cpuid = cpuid;
+               ifq_set_cpuid(&sc->msk_if[1]->msk_ifp->if_snd, cpuid);
        return 0;
 fail:
        mskc_detach(dev);
index 4240e1e..69e5b61 100644 (file)
@@ -960,8 +960,7 @@ my_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->my_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->my_irq));
 
        return (0);
 
index fc50d85..7347332 100644 (file)
@@ -660,8 +660,7 @@ nfe_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->sc_irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sc_irq_res));
 
        return 0;
 fail:
@@ -900,11 +899,11 @@ nfe_npoll(struct ifnet *ifp, struct ifpoll_info *info)
 
                if (ifp->if_flags & IFF_RUNNING)
                        nfe_disable_intrs(sc);
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING)
                        nfe_enable_intrs(sc);
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sc_irq_res));
        }
 }
 
index 3d9df99..c80dfc9 100644 (file)
@@ -914,8 +914,7 @@ nge_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->nge_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->nge_irq));
 
        return(0);
 fail:
@@ -1468,13 +1467,13 @@ nge_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                        CSR_WRITE_4(sc, NGE_IER, 0);
                        sc->nge_npoll.ifpc_stcount = 0;
                }
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING) {
                        /* enable interrupts */
                        CSR_WRITE_4(sc, NGE_IER, 1);
                }
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->nge_irq));
        }
 }
 
index af4f587..b1f5589 100644 (file)
@@ -623,8 +623,7 @@ pcn_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->pcn_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->pcn_irq));
 
        return (0);
 fail:
index e9937e6..64def44 100644 (file)
@@ -1634,8 +1634,7 @@ re_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->re_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->re_irq));
 
 fail:
        if (error)
@@ -2207,11 +2206,11 @@ re_npoll(struct ifnet *ifp, struct ifpoll_info *info)
 
                if (ifp->if_flags & IFF_RUNNING)
                        re_setup_intr(sc, 0, RE_IMTYPE_NONE);
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING)
                        re_setup_intr(sc, 1, sc->re_imtype);
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->re_irq));
        }
 }
 #endif /* IFPOLL_ENABLE */
index d104ed9..4d449f3 100644 (file)
@@ -885,8 +885,7 @@ rl_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->rl_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->rl_irq));
 
        return(0);
 
@@ -1224,13 +1223,13 @@ rl_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                        CSR_WRITE_2(sc, RL_IMR, 0x0000);
                        sc->rl_npoll.ifpc_stcount = 0;
                }
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING) {
                        /* enable interrupts */
                        CSR_WRITE_2(sc, RL_IMR, RL_INTRS);
                }
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->rl_irq));
        }
 }
 
index 20301fc..24f4900 100644 (file)
@@ -3903,8 +3903,7 @@ rtw_attach(device_t dev)
                goto err;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->sc_irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sc_irq_res));
 
        device_printf(dev, "hardware version %c\n", sc->sc_hwverid);
        if (bootverbose)
index 8bca822..fa8d129 100644 (file)
@@ -41,6 +41,7 @@
 #include <net/if.h>
 #include <net/ethernet.h>
 #include <net/if_arp.h>
+#include <net/ifq_var.h>
 
 #include <bus/pci/pcivar.h>
 #include <bus/pci/pcireg.h>
@@ -147,8 +148,8 @@ sbni_pci_attach(device_t dev)
                if (error) {
                        kprintf("sbni%d: bus_setup_intr\n", next_sbni_unit);
                } else {
-                       ifp->if_cpuid = rman_get_cpuid(sc->irq_res);
-                       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+                       ifq_set_cpuid(&ifp->if_snd,
+                           rman_get_cpuid(sc->irq_res));
                }
        } else {
                kprintf("\nsbni%d: cannot claim irq!\n", next_sbni_unit);
index 35ae4a9..2f91f82 100644 (file)
@@ -275,8 +275,7 @@ sbsh_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq_res));
 
        return(0);
 
index 5da2342..f3b02cd 100644 (file)
@@ -778,8 +778,7 @@ sf_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->sf_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sf_irq));
 
        return(0);
 
index 2f70cd7..50d6fd2 100644 (file)
@@ -1179,8 +1179,7 @@ sis_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->sis_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sis_irq));
 
 fail:
        if (error)
@@ -1562,13 +1561,13 @@ sis_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                        CSR_WRITE_4(sc, SIS_IER, 0);
                        sc->sis_npoll.ifpc_stcount = 0;
                }
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING) {
                        /* enable interrupts */
                        CSR_WRITE_4(sc, SIS_IER, 1);
                }
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sis_irq));
        }
 }
 
index aee2b72..642ff08 100644 (file)
@@ -1523,12 +1523,10 @@ skc_attach(device_t dev)
        }
 
        cpuid = rman_get_cpuid(sc->sk_irq);
-       KKASSERT(cpuid >= 0 && cpuid < ncpus);
-
        if (sc->sk_if[0] != NULL)
-               sc->sk_if[0]->arpcom.ac_if.if_cpuid = cpuid;
+               ifq_set_cpuid(&sc->sk_if[0]->arpcom.ac_if.if_snd, cpuid);
        if (sc->sk_if[1] != NULL)
-               sc->sk_if[1]->arpcom.ac_if.if_cpuid = cpuid;
+               ifq_set_cpuid(&sc->sk_if[1]->arpcom.ac_if.if_snd, cpuid);
 
        return 0;
 fail:
index ea4ce36..3ad3fb9 100644 (file)
@@ -266,8 +266,7 @@ sln_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->sln_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sln_irq));
 
        return 0;
 fail:
index 150539f..efe31fb 100644 (file)
@@ -230,8 +230,7 @@ sn_attach(device_t dev)
                return error;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->irq_res);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq_res));
 
        return 0;
 }
index a729a16..02717c7 100644 (file)
@@ -976,8 +976,7 @@ ste_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->ste_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->ste_irq));
 
        return 0;
 
index 0c28b92..5ffeddc 100644 (file)
@@ -811,8 +811,7 @@ stge_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->sc_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sc_irq));
 
 fail:
        if (error != 0)
@@ -1749,11 +1748,11 @@ stge_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                        CSR_WRITE_2(sc, STGE_IntEnable, 0);
                        sc->sc_npoll.ifpc_stcount = 0;
                }
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING)
                        CSR_WRITE_2(sc, STGE_IntEnable, sc->sc_IntEnable);
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sc_irq));
        }
 }
 
index a661ee4..a4b7407 100644 (file)
@@ -1572,8 +1572,7 @@ ti_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->ti_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->ti_irq));
 
        return 0;
 fail:
index b646ba4..6d770ea 100644 (file)
@@ -1239,8 +1239,7 @@ tl_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->tl_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->tl_irq));
 
        return(0);
 
index 8325e9b..e175a25 100644 (file)
@@ -280,8 +280,7 @@ epic_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->irq));
 
        return(0);
 
index bafbe27..5ed24a4 100644 (file)
@@ -320,8 +320,7 @@ txp_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->sc_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->sc_irq));
 
        return(0);
 
index 3b0f58c..57350da 100644 (file)
@@ -1040,8 +1040,7 @@ vge_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->vge_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->vge_irq));
 
        return 0;
 fail:
@@ -1543,11 +1542,11 @@ vge_npoll(struct ifnet *ifp, struct ifpoll_info *info)
 
                if (ifp->if_flags & IFF_RUNNING)
                        vge_disable_intr(sc);
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING)
                        vge_enable_intr(sc, 0xffffffff);
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->vge_irq));
        }
 }
 
index b18814f..0176ed8 100644 (file)
@@ -804,8 +804,7 @@ vr_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->vr_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->vr_irq));
 
        return 0;
 
@@ -1582,13 +1581,13 @@ vr_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                        /* disable interrupts */
                        CSR_WRITE_2(sc, VR_IMR, 0x0000);
                }
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (ifp->if_flags & IFF_RUNNING) {
                        /* enable interrupts */
                        CSR_WRITE_2(sc, VR_IMR, VR_INTRS);
                }
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->vr_irq));
        }
 }
 
index 0baf4c8..c363d06 100644 (file)
@@ -39,6 +39,7 @@
 
 #include <net/if.h>
 #include <net/if_arp.h>
+#include <net/ifq_var.h>
 
 #include <bus/pci/pcidevs.h>
 #include <bus/pci/pcivar.h>
@@ -179,8 +180,7 @@ vx_pci_attach(device_t dev)
        goto bad;
     }
 
-    ifp->if_cpuid = rman_get_cpuid(sc->vx_irq);
-    KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+    ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->vx_irq));
 
     return(0);
 
index 1700035..497e478 100644 (file)
@@ -819,8 +819,7 @@ wb_attach(device_t dev)
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->wb_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->wb_irq));
 
        return(0);
 
index 4023aba..a995918 100644 (file)
@@ -337,8 +337,7 @@ xe_attach (device_t dev)
     return err;
   }
 
-  scp->ifp->if_cpuid = rman_get_cpuid(scp->irq_res);
-  KKASSERT(scp->ifp->if_cpuid >= 0 && scp->ifp->if_cpuid < ncpus);
+  ifq_set_cpuid(&scp->ifp->if_snd, rman_get_cpuid(scp->irq_res));
 
   /* Done */
   return 0;
index 4e904dd..27a6066 100644 (file)
@@ -1531,8 +1531,7 @@ done:
                goto fail;
        }
 
-       ifp->if_cpuid = rman_get_cpuid(sc->xl_irq);
-       KKASSERT(ifp->if_cpuid >= 0 && ifp->if_cpuid < ncpus);
+       ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->xl_irq));
 
        return 0;
 
@@ -2299,13 +2298,13 @@ xl_npoll(struct ifnet *ifp, struct ifpoll_info *info)
                        xl_enable_intrs(sc, 0);
                if (sc->xl_type != XL_TYPE_905B)
                        ifp->if_start = xl_start_poll;
-               ifp->if_npoll_cpuid = cpuid;
+               ifq_set_cpuid(&ifp->if_snd, cpuid);
        } else {
                if (sc->xl_type != XL_TYPE_905B)
                        ifp->if_start = xl_start;
                if (ifp->if_flags & IFF_RUNNING)
                        xl_enable_intrs(sc, XL_INTRS);
-               ifp->if_npoll_cpuid = -1;
+               ifq_set_cpuid(&ifp->if_snd, rman_get_cpuid(sc->xl_irq));
        }
 }
 
index 8ab008f..0784748 100644 (file)
@@ -81,6 +81,7 @@ struct        ifaltq {
        struct  mbuf *altq_prepended;   /* mbuf dequeued, but not yet xmit */
        int     altq_started;           /* ifnet.if_start interlock */
        int     altq_hw_oactive;        /* hw too busy, protected by driver */
+       int     altq_cpuid;             /* owner cpu */
        struct ifaltq_stage *altq_stage;
 };
 
index 0d5fd42..aa81db6 100644 (file)
@@ -213,25 +213,6 @@ ifinit(void *dummy)
        if_slowtimo(0);
 }
 
-static int
-if_start_cpuid(struct ifnet *ifp)
-{
-       return ifp->if_cpuid;
-}
-
-#ifdef IFPOLL_ENABLE
-static int
-if_start_cpuid_npoll(struct ifnet *ifp)
-{
-       int poll_cpuid = ifp->if_npoll_cpuid;
-
-       if (poll_cpuid >= 0)
-               return poll_cpuid;
-       else
-               return ifp->if_cpuid;
-}
-#endif
-
 static void
 ifq_ifstart_ipifunc(void *arg)
 {
@@ -284,7 +265,7 @@ ifq_ifstart_schedule(struct ifaltq *ifq, int force)
                return;
        }
 
-       cpu = ifp->if_start_cpuid(ifp);
+       cpu = ifq_get_cpuid(ifq);
        if (cpu != mycpuid)
                lwkt_send_ipiq(globaldata_find(cpu), ifq_ifstart_ipifunc, ifp);
        else
@@ -342,7 +323,7 @@ if_start_dispatch(netmsg_t msg)
        lwkt_replymsg(lmsg, 0); /* reply ASAP */
        crit_exit();
 
-       if (mycpuid != ifp->if_start_cpuid(ifp)) {
+       if (mycpuid != ifq_get_cpuid(ifq)) {
                /*
                 * We need to chase the ifnet CPU change.
                 */
@@ -504,16 +485,6 @@ if_attach(struct ifnet *ifp, lwkt_serialize_t serializer)
                ifp->if_serializer = serializer;
        }
 
-       ifp->if_start_cpuid = if_start_cpuid;
-       ifp->if_cpuid = 0;
-
-#ifdef IFPOLL_ENABLE
-       /* Device is not in polling mode by default */
-       ifp->if_npoll_cpuid = -1;
-       if (ifp->if_npoll != NULL)
-               ifp->if_start_cpuid = if_start_cpuid_npoll;
-#endif
-
        ifp->if_start_nmsg = kmalloc(ncpus * sizeof(*ifp->if_start_nmsg),
                                     M_LWKTMSG, M_WAITOK);
        for (i = 0; i < ncpus; ++i) {
@@ -606,6 +577,7 @@ if_attach(struct ifnet *ifp, lwkt_serialize_t serializer)
        ifq->altq_prepended = NULL;
        ALTQ_LOCK_INIT(ifq);
        ifq_set_classic(ifq);
+       ifq_set_cpuid(ifq, 0);
 
        ifq->altq_stage =
            kmalloc_cachealign(ncpus * sizeof(struct ifaltq_stage),
index a19f72d..1a8937b 100644 (file)
@@ -382,7 +382,6 @@ ifpoll_register(struct ifnet *ifp)
 
        ifp->if_flags |= IFF_NPOLLING;
        ifp->if_npoll(ifp, info);
-       KASSERT(ifp->if_npoll_cpuid >= 0, ("invalid npoll cpuid"));
 
        ifnet_deserialize_all(ifp);
 
@@ -429,7 +428,6 @@ ifpoll_deregister(struct ifnet *ifp)
        if (!error) {
                ifnet_serialize_all(ifp);
                ifp->if_npoll(ifp, NULL);
-               KASSERT(ifp->if_npoll_cpuid < 0, ("invalid npoll cpuid"));
                ifnet_deserialize_all(ifp);
        }
        return error;
index 031d547..474dac5 100644 (file)
@@ -229,8 +229,7 @@ struct ifnet {
                (void *);
        int     (*if_resolvemulti)      /* validate/resolve multicast */
                (struct ifnet *, struct sockaddr **, struct sockaddr *);
-       int     (*if_start_cpuid)       /* cpuid to run if_start */
-               (struct ifnet *);
+       void    *if_unused5;
        TAILQ_HEAD(, ifg_list) if_groups; /* linked list of groups per if */
        void    (*if_unused1)(void);
        int     if_unused2;
@@ -250,12 +249,11 @@ struct ifnet {
 #ifdef IFPOLL_ENABLE
        void    (*if_npoll)
                (struct ifnet *, struct ifpoll_info *);
-       int     if_npoll_cpuid;
 #else
        /* Place holders */
        void    (*if_npoll_unused)(void);
-       int     if_npoll_cpuid_unused;
 #endif
+       int     if_unused3;
        struct  ifaltq if_snd;          /* output queue (includes altq) */
        struct  ifprefixhead if_prefixhead; /* list of prefixes per if */
        const uint8_t   *if_broadcastaddr;
@@ -265,7 +263,7 @@ struct ifnet {
        struct lwkt_serialize *if_serializer;   /* serializer or MP lock */
        struct lwkt_serialize if_default_serializer; /* if not supplied */
        struct mtx      if_ioctl_mtx;   /* high-level ioctl serializing mutex */
-       int     if_cpuid;
+       int     if_unused4;
        struct netmsg_base *if_start_nmsg; /* percpu msgs to sched if_start */
        void    *if_pf_kif; /* pf interface abstraction */
        void    *if_unused;
index 5c51b4f..1b3b725 100644 (file)
@@ -378,5 +378,18 @@ ifq_get_stage(struct ifaltq *_ifq, int cpuid)
        return &_ifq->altq_stage[cpuid];
 }
 
+static __inline int
+ifq_get_cpuid(const struct ifaltq *_ifq)
+{
+       return _ifq->altq_cpuid;
+}
+
+static __inline void
+ifq_set_cpuid(struct ifaltq *_ifq, int cpuid)
+{
+       KASSERT(cpuid >= 0 && cpuid < ncpus, ("invalid altq_cpuid %d", cpuid));
+       _ifq->altq_cpuid = cpuid;
+}
+
 #endif /* _KERNEL */
 #endif /* _NET_IFQ_VAR_H_ */
index 46a71c4..32b6fc8 100644 (file)
@@ -550,7 +550,7 @@ vlan_start(struct ifnet *ifp)
                nmp->nm_packet = m;
                nmp->base.lmsg.u.ms_resultp = ifp_p;
 
-               lwkt_sendmsg(netisr_portfn(ifp_p->if_start_cpuid(ifp_p)),
+               lwkt_sendmsg(netisr_portfn(ifq_get_cpuid(&ifp_p->if_snd)),
                    &nmp->base.lmsg);
                ifp->if_opackets++;
        }