kernel: make pktinfo and cpuid native to ip_input()
authorFranco Fichtner <franco@lastsummer.de>
Sun, 29 Jun 2014 17:05:32 +0000 (19:05 +0200)
committerFranco Fichtner <franco@lastsummer.de>
Tue, 1 Jul 2014 15:30:11 +0000 (17:30 +0200)
In order to remove ether_input_pkt(), switch the prototype
of if_input() and adjust all callers.  While there, consolidate
the style of the invoke.

Suggested and reviewed by: sephe

66 files changed:
share/man/man9/ifnet.9
sys/bus/u4b/net/usb_ethernet.c
sys/bus/usb/usb_ethersubr.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.c
sys/dev/netif/bfe/if_bfe.c
sys/dev/netif/bge/if_bge.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.c
sys/dev/netif/em/if_em.c
sys/dev/netif/ep/if_ep.c
sys/dev/netif/et/if_et.c
sys/dev/netif/ex/if_ex.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/lge/if_lge.c
sys/dev/netif/lnc/am7990.c
sys/dev/netif/lnc/am79900.c
sys/dev/netif/msk/if_msk.c
sys/dev/netif/mxge/if_mxge.c
sys/dev/netif/my/if_my.c
sys/dev/netif/ndis/if_ndis.c
sys/dev/netif/nfe/if_nfe.c
sys/dev/netif/nge/if_nge.c
sys/dev/netif/oce/oce_if.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/sbni/if_sbni.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.c
sys/dev/netif/wb/if_wb.c
sys/dev/netif/xe/if_xe.c
sys/dev/netif/xl/if_xl.c
sys/dev/virtual/virtio/net/if_vtnet.c
sys/dev/virtual/vkernel/net/if_vke.c
sys/net/if_ethersubr.c
sys/net/if_var.h
sys/net/netmap/netmap_generic.c
sys/net/netmap/netmap_kern.h
sys/net/tap/if_tap.c
sys/netgraph/eiface/ng_eiface.c
sys/netgraph7/ng_eiface.c
sys/netgraph7/ng_fec.c
sys/netproto/802_11/wlan/ieee80211.c
sys/netproto/802_11/wlan/ieee80211_hostap.c
sys/netproto/802_11/wlan/ieee80211_input.c

index 5981dd8..a3c4101 100644 (file)
@@ -28,7 +28,7 @@
 .\"
 .\" $FreeBSD: src/share/man/man9/ifnet.9,v 1.9.2.10 2003/06/15 02:22:30 hmp Exp $
 .\"
-.Dd May 10, 2008
+.Dd June 29, 2014
 .Dt IFNET 9
 .Os
 .Sh NAME
 .Fa "struct sockaddr *dst" "struct rtentry *rt"
 .Fc
 .Ft void
-.Fn (*if_input) "struct ifnet *ifp" "struct mbuf *m"
+.Fo (*if_input)
+.Fa "struct ifnet *ifp" "struct mbuf *m"
+.Fa "const struct pktinfo *pi" "int cpuid"
+.Fc
 .Ft void
 .Fn (*if_start) "struct ifnet *ifp"
 .Ft int
index 6b474b7..2069d4c 100644 (file)
@@ -657,7 +657,7 @@ uether_rxflush(struct usb_ether *ue)
                 * The USB xfer has been resubmitted so its safe to unlock now.
                 */
                UE_UNLOCK(ue);
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
                UE_LOCK(ue);
        }
 }
index 3d0dfbc..fa99063 100644 (file)
@@ -83,7 +83,7 @@ usbintr(netmsg_t msg)
        /* not MPSAFE */
        get_mplock();
        ifp = m->m_pkthdr.rcvif;
-       (*ifp->if_input)(ifp, m);
+       ifp->if_input(ifp, m, NULL, -1);
        /* the msg is embedded in the mbuf, do not reply it */
        rel_mplock();
 }
index 888b680..0593530 100644 (file)
@@ -632,7 +632,7 @@ ae_rxeof(struct ae_softc *sc, struct ae_rxd *rxd)
                m->m_pkthdr.ether_vlantag = AE_RXD_VLAN(le16toh(rxd->vlan));
                m->m_flags |= M_VLANTAG;
        }
-       ifp->if_input(ifp, m);
+       ifp->if_input(ifp, m, NULL, -1);
 
        return (0);
 }
index 28fdfcf..029b47d 100644 (file)
@@ -2139,7 +2139,7 @@ age_rxeof(struct age_softc *sc, struct rx_rdesc *rxrd)
                        }
 
                        /* Pass it on. */
-                       ifp->if_input(ifp, m);
+                       ifp->if_input(ifp, m, NULL, -1);
 
                        /* Reset mbuf chains. */
                        AGE_RXCHAIN_RESET(sc);
index f6ce9c0..d8ab10f 100644 (file)
@@ -2868,7 +2868,7 @@ alc_rxeof(struct alc_softc *sc, struct rx_rdesc *rrd)
                        }
 
                        /* Pass it on. */
-                       ifp->if_input(ifp, m);
+                       ifp->if_input(ifp, m, NULL, -1);
                }
        }
        /* Reset mbuf chains. */
index b769c15..359da4d 100644 (file)
@@ -2266,7 +2266,7 @@ ale_rxeof(struct ale_softc *sc)
                }
 
                /* Pass it to upper layer. */
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
 
                ale_rx_update_page(sc, &rx_page, length, &prod);
        }
index 3836158..fec76f1 100644 (file)
@@ -955,7 +955,7 @@ an_rxeof(struct an_softc *sc)
                                rx_frame.an_rx_signal_strength,
                                rx_frame.an_rsvd0);
 #endif
-                       ifp->if_input(ifp, m);
+                       ifp->if_input(ifp, m, NULL, -1);
                }
 
        } else { /* MPI-350 */
@@ -1016,7 +1016,7 @@ an_rxeof(struct an_softc *sc)
                                        rx_frame.an_rsvd0);
 #endif
 #endif
-                               ifp->if_input(ifp, m);
+                               ifp->if_input(ifp, m, NULL, -1);
                        
                                an_rx_desc.an_valid = 1;
                                an_rx_desc.an_len = AN_RX_BUFFER_SIZE;
index 5d8450a..7877989 100644 (file)
@@ -1145,7 +1145,7 @@ bfe_rxeof(struct bfe_softc *sc)
                IFNET_STAT_INC(ifp, ipackets, 1);
                m->m_pkthdr.rcvif = ifp;
 
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
                BFE_INC(cons, BFE_RX_LIST_CNT);
        }
 
index 3a13e35..f593d77 100644 (file)
@@ -3193,7 +3193,7 @@ refresh_rx:
                        m->m_flags |= M_VLANTAG;
                        m->m_pkthdr.ether_vlantag = vlan_tag;
                }
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 
        bge_writembx(sc, BGE_MBX_RX_CONS0_LO, sc->bge_rx_saved_considx);
index 74a3a14..970aa9e 100644 (file)
@@ -867,7 +867,7 @@ cs_get_packet(struct cs_softc *sc)
 
        if (status & (RX_IA | RX_BROADCAST) || 
            (ifp->if_flags & IFF_MULTICAST && status & RX_HASHED)) {
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
 
                IFNET_STAT_INC(ifp, ipackets, 1);
 
index b3c4c2c..b8e7508 100644 (file)
@@ -2599,7 +2599,7 @@ dc_rxeof(struct dc_softc *sc)
                }
 
                IFNET_STAT_INC(ifp, ipackets, 1);
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 
        sc->dc_cdata.dc_rx_prod = i;
index c3ab8cc..94e0570 100644 (file)
@@ -3147,7 +3147,7 @@ tulip_rx_intr(tulip_softc_t *sc)
                ) {
 #if !defined(TULIP_COPY_RXDATA)
                ms->m_pkthdr.len = total_len;
-               ifp->if_input(ifp, ms);
+               ifp->if_input(ifp, ms, NULL, -1);
 #else
 #ifdef BIG_PACKET
 #error BIG_PACKET is incompatible with TULIP_COPY_RXDATA
@@ -3156,7 +3156,7 @@ tulip_rx_intr(tulip_softc_t *sc)
                m_copydata(ms, 0, total_len, mtod(m0, caddr_t));
                m0->m_len = m0->m_pkthdr.len = total_len;
                m0->m_pkthdr.rcvif = ifp;
-               ifp->if_input(ifp, m0);
+               ifp->if_input(ifp, m0, NULL, -1);
                m0 = ms;
 #endif /* ! TULIP_COPY_RXDATA */
            }
index 0c426c6..eb9f1ce 100644 (file)
@@ -2776,7 +2776,7 @@ ed_get_packet(struct ed_softc *sc, char *buf, u_short len)
 
        m->m_pkthdr.len = m->m_len = len;
 
-       ifp->if_input(ifp, m);
+       ifp->if_input(ifp, m, NULL, -1);
 }
 
 /*
index 845aa58..c562249 100644 (file)
@@ -3512,7 +3512,7 @@ discard:
                current_desc->status = 0;
 
                if (m != NULL)
-                       ifp->if_input(ifp, m);
+                       ifp->if_input(ifp, m, NULL, -1);
 
                /* Advance our pointers to the next descriptor. */
                if (++i == adapter->num_rx_desc)
index 9511a06..0ddf5d9 100644 (file)
@@ -735,7 +735,7 @@ read_again:
     top->m_pkthdr.rcvif = &sc->arpcom.ac_if;
     top->m_pkthdr.len = sc->cur_len;
 
-    ifp->if_input(ifp, top);
+    ifp->if_input(ifp, top, NULL, -1);
     sc->top = 0;
     while (inw(BASE + EP_STATUS) & S_COMMAND_IN_PROGRESS);
     outw(BASE + EP_COMMAND, SET_RX_EARLY_THRESH | RX_INIT_EARLY_THRESH);
index 66231bc..06f2125 100644 (file)
@@ -1909,7 +1909,7 @@ et_rxeof(struct et_softc *sc)
                                m_adj(m, -ETHER_CRC_LEN);
 
                                IFNET_STAT_INC(ifp, ipackets, 1);
-                               ifp->if_input(ifp, m);
+                               ifp->if_input(ifp, m, NULL, -1);
                        }
                } else {
                        IFNET_STAT_INC(ifp, ierrors, 1);
index fa51d04..98eab9f 100644 (file)
@@ -729,7 +729,7 @@ ex_rx_intr(struct ex_softc *sc)
                                                m->m_len = MLEN;
                                        }
                                }
-                               ifp->if_input(ifp, ipkt);
+                               ifp->if_input(ifp, ipkt, NULL, -1);
                                IFNET_STAT_INC(ifp, ipackets, 1);
                        }
                } else {
index 9ad08dc..b7254a3 100644 (file)
@@ -1886,7 +1886,7 @@ fe_get_packet (struct fe_softc * sc, u_short len)
        }
 
        /* Feed the packet to upper layer.  */
-       sc->sc_if.if_input(&sc->sc_if, m);
+       sc->sc_if.if_input(&sc->sc_if, m, NULL, -1);
        return 0;
 }
 
index 65fccd9..0483765 100644 (file)
@@ -584,7 +584,7 @@ fwe_as_input(struct fw_xferq *xferq)
                         c[20], c[21], c[22], c[23]
                 );
 #endif
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
                IFNET_STAT_INC(ifp, ipackets, 1);
        }
        if (STAILQ_FIRST(&xferq->stfree) != NULL)
index a2d9cb7..dac0bb6 100644 (file)
@@ -1422,7 +1422,7 @@ fxp_intr_body(struct fxp_softc *sc, u_int8_t statack, int count)
                                continue;
                        }
                        m->m_pkthdr.len = m->m_len = total_len;
-                       ifp->if_input(ifp, m);
+                       ifp->if_input(ifp, m, NULL, -1);
                }
        }
 
index 5fce154..8c26601 100644 (file)
@@ -918,7 +918,7 @@ lge_rxeof(struct lge_softc *sc, int cnt)
                        m->m_pkthdr.csum_data = 0xffff;
                }
 
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 
        sc->lge_cdata.lge_rx_cons = i;
index 6fd6f28..de48777 100644 (file)
@@ -291,7 +291,7 @@ am7990_rint(struct lance_softc *sc)
 #endif
 
                        /* Pass the packet up. */
-                       (*ifp->if_input)(ifp, m);
+                       ifp->if_input(ifp, m, NULL, -1);
                } else
                        IFNET_STAT_INC(ifp, ierrors, 1);
        }
index d9cb485..0eed826 100644 (file)
@@ -327,7 +327,7 @@ am79900_rint(struct lance_softc *sc)
 #endif
 
                        /* Pass the packet up. */
-                       (*ifp->if_input)(ifp, m);
+                       ifp->if_input(ifp, m, NULL, -1);
                } else
                        IFNET_STAT_INC(ifp, ierrors, 1);
        }
index cd06a58..c3d0892 100644 (file)
@@ -2839,7 +2839,7 @@ msk_rxeof(struct msk_if_softc *sc_if, uint32_t status, int len)
                }
 #endif
 
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        } while (0);
 
        MSK_INC(sc_if->msk_cdata.msk_rx_cons, MSK_RX_RING_CNT);
@@ -2892,7 +2892,7 @@ msk_jumbo_rxeof(struct msk_if_softc *sc_if, uint32_t status, int len)
                        m->m_flags |= M_VLANTAG;
                }
                MSK_IF_UNLOCK(sc_if);
-               (*ifp->if_input)(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
                MSK_IF_LOCK(sc_if);
        } while (0);
 
index 1aa0392..c9167af 100644 (file)
@@ -2301,7 +2301,7 @@ mxge_rx_done_big(struct ifnet *ifp, mxge_rx_ring_t *rx,
                m->m_pkthdr.csum_flags = CSUM_PSEUDO_HDR |
                    CSUM_DATA_VALID;
        }
-       ifp->if_input(ifp, m);
+       ifp->if_input(ifp, m, NULL, -1);
 }
 
 static __inline void
@@ -2358,7 +2358,7 @@ mxge_rx_done_small(struct ifnet *ifp, mxge_rx_ring_t *rx,
                m->m_pkthdr.csum_flags = CSUM_PSEUDO_HDR |
                    CSUM_DATA_VALID;
        }
-       ifp->if_input(ifp, m);
+       ifp->if_input(ifp, m, NULL, -1);
 }
 
 static __inline void
index d1b00b7..393c8b4 100644 (file)
@@ -1131,7 +1131,7 @@ my_rxeof(struct my_softc * sc)
                        m->m_pkthdr.len = m->m_len = total_len;
                }
                IFNET_STAT_INC(ifp, ipackets, 1);
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 }
 
index 0bc4b60..489bb77 100644 (file)
@@ -1487,7 +1487,7 @@ ndis_rxeof(ndis_handle adapter, ndis_packet **packets, uint32_t pktcnt)
 
 /*
  * This routine is run at PASSIVE_LEVEL. We use this routine to pass
- * packets into the stack in order to avoid calling (*ifp->if_input)()
+ * packets into the stack in order to avoid calling ifp->if_input()
  * with any locks held (at DISPATCH_LEVEL, we'll be holding the
  * 'dispatch level' per-cpu sleep lock).
  */
@@ -1515,7 +1515,7 @@ ndis_inputtask(device_object *dobj, void *arg)
                if ((sc->ndis_80211 != 0) && (vap != NULL))
                        vap->iv_deliver_data(vap, vap->iv_bss, m);
                else
-                       (*ifp->if_input)(ifp, m);
+                       ifp->if_input(ifp, m, NULL, -1);
                KeAcquireSpinLock(&sc->ndis_rxlock, &irql);
        }
        KeReleaseSpinLock(&sc->ndis_rxlock, irql);
index 15e4689..89a08a2 100644 (file)
@@ -1156,7 +1156,7 @@ nfe_rxeof(struct nfe_softc *sc)
                }
 
                IFNET_STAT_INC(ifp, ipackets, 1);
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
 skip:
                nfe_set_ready_rxdesc(sc, ring, ring->cur);
                sc->rxq.cur = (sc->rxq.cur + 1) % sc->sc_rx_ring_count;
index abf99aa..2506b7a 100644 (file)
@@ -1297,7 +1297,7 @@ nge_rxeof(struct nge_softc *sc)
                        m->m_pkthdr.ether_vlantag =
                                (extsts & NGE_RXEXTSTS_VTCI);
                }
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 
        sc->nge_cdata.nge_rx_prod = i;
index f1108aa..a5748c0 100644 (file)
@@ -1378,7 +1378,7 @@ oce_rx(struct oce_rq *rq, uint32_t rqe_idx, struct oce_nic_rx_cqe *cqe)
 #endif
 #endif
 
-               (*sc->ifp->if_input) (sc->ifp, m);
+               sc->ifp->if_input(sc->ifp, m, NULL, -1);
 #if defined(INET6) || defined(INET)
 #if 0 /* XXX swildner: LRO */
 post_done:
index 0b5c848..5b34bd1 100644 (file)
@@ -799,7 +799,7 @@ pcn_rxeof(struct pcn_softc *sc)
                    cur_rx->pcn_rxlen - ETHER_CRC_LEN;
                m->m_pkthdr.rcvif = ifp;
 
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 
        sc->pcn_cdata.pcn_rx_prod = i;
index e1a365b..5502125 100644 (file)
@@ -2078,7 +2078,7 @@ re_rxeof(struct re_softc *sc)
                        m->m_pkthdr.ether_vlantag =
                                be16toh((rxctrl & RE_RDESC_CTL_TAGDATA));
                }
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 
        sc->re_ldata.re_rx_prodidx = i;
index 5255d41..86285fe 100644 (file)
@@ -1096,7 +1096,7 @@ rl_rxeof(struct rl_softc *sc)
 
                IFNET_STAT_INC(ifp, ipackets, 1);
 
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 }
 
index de465c9..f071b96 100644 (file)
@@ -842,7 +842,7 @@ indicate_pkt(struct sbni_softc *sc)
        m->m_pkthdr.rcvif = ifp;
        m->m_pkthdr.len   = m->m_len = sc->inppos;
 
-       ifp->if_input(ifp, m);
+       ifp->if_input(ifp, m, NULL, -1);
        sc->rx_buf_p = NULL;
 }
 
index ce96d2f..3d81414 100644 (file)
@@ -781,7 +781,7 @@ indicate_frames(struct sbsh_softc *sc)
                                sc->rbd[sc->head_rdesc].length & 0x7ff;
                m->m_pkthdr.rcvif = ifp;
 
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
                ++sc->in_stats.rcvd_pkts;
                IFNET_STAT_INC(ifp, ipackets, 1);
 
index 2b0a950..3405c80 100644 (file)
@@ -960,7 +960,7 @@ sf_rxeof(struct sf_softc *sc)
 
                IFNET_STAT_INC(ifp, ipackets, 1);
 
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 
        csr_write_4(sc, SF_CQ_CONSIDX,
index 1f89aff..d84a657 100644 (file)
@@ -1402,7 +1402,7 @@ sis_rxeof(struct sis_softc *sc)
                }
 
                IFNET_STAT_INC(ifp, ipackets, 1);
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
        sc->sis_cdata.sis_rx_prod = i;
 }
index fa209d3..8282fa0 100644 (file)
@@ -1897,7 +1897,7 @@ sk_rxeof(struct sk_if_softc *sc_if)
 #endif
 
                IFNET_STAT_INC(ifp, ipackets, 1);
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 }
 
index c8bb5ff..82bda0b 100644 (file)
@@ -945,7 +945,7 @@ sln_rx(struct sln_softc *sc)
                PDEBUG("ipackets = %lu\n", ipkts);
 #endif
 
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
 
                rx_offset = (rx_offset + rx_size + 4) & (u_long) (SL_RX_BUFLEN - 1);    /* 4 bytes for receive
                                                                                         * frame head */
index 44e7fca..03f44ec 100644 (file)
@@ -1052,7 +1052,7 @@ read_another:
 
        m->m_pkthdr.len = m->m_len = packet_length;
 
-       ifp->if_input(ifp, m);
+       ifp->if_input(ifp, m, NULL, -1);
 
 out:
 
index 140a987..4360728 100644 (file)
@@ -695,7 +695,7 @@ ste_rxeof(struct ste_softc *sc)
                m->m_pkthdr.rcvif = ifp;
                m->m_pkthdr.len = m->m_len = total_len;
 
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
                
                cur_rx->ste_ptr->ste_status = 0;
                count++;
index 3bfba8f..f430a7a 100644 (file)
@@ -1683,7 +1683,7 @@ stge_rxeof(struct stge_softc *sc, int count)
                                m->m_pkthdr.ether_vlantag = RFD_TCI(status64);
                        }
                        /* Pass it on. */
-                       ifp->if_input(ifp, m);
+                       ifp->if_input(ifp, m, NULL, -1);
 
                        STGE_RXCHAIN_RESET(sc);
                }
index 55eb8b9..2dc4609 100644 (file)
@@ -1704,7 +1704,7 @@ ti_rxeof(struct ti_softc *sc)
                        m->m_flags |= M_VLANTAG;
                        m->m_pkthdr.ether_vlantag = vlan_tag;
                }
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 
        /* Only necessary on the Tigon 1. */
index eea5350..02171ac 100644 (file)
@@ -1435,7 +1435,7 @@ tl_intvec_rxeof(void *xsc, u_int32_t type)
                                continue;
                }
 
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 
        return(r);
index 48e869a..caf4820 100644 (file)
@@ -601,7 +601,7 @@ epic_rx_done(epic_softc_t *sc)
                m->m_pkthdr.len = m->m_len = len;
 
                /* Give mbuf to OS */
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
 
                /* Successfuly received frame */
                IFNET_STAT_INC(ifp, ipackets, 1);
index 4c798ed..0042f51 100644 (file)
@@ -726,7 +726,7 @@ txp_rx_reclaim(struct txp_softc *sc, struct txp_rx_ring *r)
                        m->m_flags |= M_VLANTAG;
                        m->m_pkthdr.ether_vlantag = htons(rxd->rx_vlan >> 16);
                }
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
 
 next:
 
index 88de87c..f3bc6b4 100644 (file)
@@ -1396,7 +1396,7 @@ vge_rxeof(struct vge_softc *sc, int count)
                        m->m_pkthdr.ether_vlantag =
                                ntohs((rxctl & VGE_RDCTL_VLANID));
                }
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
 
                lim++;
                if (lim == VGE_RX_DESC_CNT)
index fb44b51..eda67d8 100644 (file)
@@ -1024,7 +1024,7 @@ vr_rxeof(struct vr_softc *sc)
                m = m0;
 
                IFNET_STAT_INC(ifp, ipackets, 1);
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 }
 
index 895e45c..513aa43 100644 (file)
@@ -692,7 +692,7 @@ again:
        return;
     }
 
-    ifp->if_input(ifp, m);
+    ifp->if_input(ifp, m, NULL, -1);
 
     /*
     * In periods of high traffic we can actually receive enough
index 6b305a4..66c8147 100644 (file)
@@ -1022,7 +1022,7 @@ wb_rxeof(struct wb_softc *sc)
                m = m0;
 
                IFNET_STAT_INC(ifp, ipackets, 1);
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 }
 
index ba1ae08..c061e64 100644 (file)
@@ -828,7 +828,7 @@ xe_intr(void *xscp)
        /* Deliver packet to upper layers */
        mbp->m_pkthdr.rcvif = ifp;
        mbp->m_pkthdr.len = mbp->m_len = len;
-       ifp->if_input(ifp, mbp);
+       ifp->if_input(ifp, mbp, NULL, -1);
        IFNET_STAT_INC(ifp, ipackets, 1);
       }
       else if (rsr & XE_RSR_ALIGN_ERROR) {
index 47d95ef..0bd5632 100644 (file)
@@ -2036,7 +2036,7 @@ again:
                        }
                }
 
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 
        if (sc->xl_type != XL_TYPE_905B) {
index 22dcde1..6cf52fb 100644 (file)
@@ -1629,7 +1629,7 @@ vtnet_rxeof(struct vtnet_softc *sc, int count, int *rx_npktsp)
 
                lwkt_serialize_exit(&sc->vtnet_slz);
                rx_npkts++;
-               (*ifp->if_input)(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
                lwkt_serialize_enter(&sc->vtnet_slz);
 
                /*
index 7850c47..98bdaa8 100644 (file)
@@ -531,7 +531,7 @@ vke_rx_intr(cothread_t cotd)
                nm = m_getcl(MB_DONTWAIT, MT_DATA, M_PKTHDR);
                if (nm) {
                        vke_rxfifo_dequeue(sc, nm);
-                       ifp->if_input(ifp, m);
+                       ifp->if_input(ifp, m, NULL, -1);
                        if (count++ == VKE_CHUNK) {
                                cothread_lock(cotd, 0);
                                cothread_signal(cotd);
index d56834f..8cdfa39 100644 (file)
@@ -526,9 +526,10 @@ ether_ipfw_chk(struct mbuf **m0, struct ifnet *dst, struct ip_fw **rule,
 }
 
 static void
-ether_input(struct ifnet *ifp, struct mbuf *m)
+ether_input(struct ifnet *ifp, struct mbuf *m,
+    const struct pktinfo *pi, int cpuid)
 {
-       ether_input_pkt(ifp, m, NULL, -1);
+       ether_input_pkt(ifp, m, pi, cpuid);
 }
 
 /*
index 608b562..a2f78f7 100644 (file)
@@ -65,7 +65,7 @@
  * places it on the input queue of a internetwork datagram routine
  * and posts the associated software interrupt, or passes the datagram to
  * the routine if_input. It is called with the mbuf chain as parameter:
- *     ifp->if_input(ifp, m)
+ *     ifp->if_input(ifp, m, NULL, -1)
  * The input routine removes the protocol dependent header if necessary.
  * NOTE:
  * Driver may call type specific interface, e.g. ether_input_pkt(), instead
@@ -341,7 +341,8 @@ struct ifnet {
                (struct ifnet *, struct mbuf *, struct sockaddr *,
                     struct rtentry *);
        void    (*if_input)             /* input routine from hardware driver */
-               (struct ifnet *, struct mbuf *);
+               (struct ifnet *, struct mbuf *,
+                    const struct pktinfo *pi, int cpuid);
        void    (*if_start)             /* initiate output routine */
                (struct ifnet *, struct ifaltq_subque *);
        int     (*if_ioctl)             /* ioctl routine */
index 7533102..f1e71f9 100644 (file)
@@ -590,7 +590,8 @@ generic_netmap_txsync(struct netmap_adapter *na, u_int ring_nr, int flags)
  * Stolen packets are put in a queue where the
  * generic_netmap_rxsync() callback can extract them.
  */
-void generic_rx_handler(struct ifnet *ifp, struct mbuf *m)
+void generic_rx_handler(struct ifnet *ifp, struct mbuf *m,
+    const struct pktinfo *pi, int cpuid)
 {
     struct netmap_adapter *na = NA(ifp);
     struct netmap_generic_adapter *gna = (struct netmap_generic_adapter *)na;
index 3959d1c..2e62513 100644 (file)
@@ -51,7 +51,7 @@
 #define        NM_SELINFO_T    struct kqinfo
 #define        MBUF_LEN(m)     ((m)->m_pkthdr.len)
 #define        MBUF_IFP(m)     ((m)->m_pkthdr.rcvif)
-#define        NM_SEND_UP(ifp, m)      ((ifp)->if_input)(ifp, m)
+#define        NM_SEND_UP(ifp, m)      ((ifp)->if_input(ifp, m, NULL, -1))
 
 #define NM_ATOMIC_T    volatile int    // XXX ?
 /* atomic operations */
@@ -400,7 +400,8 @@ struct netmap_generic_adapter {     /* non-native device */
         * mit_timer and mit_pending implement rx interrupt mitigation,
         */
        struct net_device_ops generic_ndo;
-       void (*save_if_input)(struct ifnet *, struct mbuf *);
+       void (*save_if_input)(struct ifnet *, struct mbuf *,
+           const struct pktinfo *, int);
 
        struct hrtimer mit_timer;
        int mit_pending;
@@ -917,7 +918,8 @@ int generic_netmap_register(struct netmap_adapter *na, int enable);
 int generic_netmap_attach(struct ifnet *ifp);
 
 int netmap_catch_rx(struct netmap_adapter *na, int intercept);
-void generic_rx_handler(struct ifnet *ifp, struct mbuf *m);;
+void generic_rx_handler(struct ifnet *ifp, struct mbuf *m,
+    const struct pktinfo *, int);
 void netmap_catch_packet_steering(struct netmap_generic_adapter *na, int enable);
 int generic_xmit_frame(struct ifnet *ifp, struct mbuf *m, void *addr, u_int len, u_int ring_nr);
 int generic_find_num_desc(struct ifnet *ifp, u_int *tx, u_int *rx);
index 6194ade..15e7349 100644 (file)
@@ -966,7 +966,7 @@ tapwrite(struct dev_write_args *ap)
         * adjust mbuf and give packet to the ether_input
         */
        ifnet_serialize_all(ifp);
-       ifp->if_input(ifp, top);
+       ifp->if_input(ifp, top, NULL, -1);
        IFNET_STAT_INC(ifp, ipackets, 1);/* ibytes are counted in ether_input */
        ifnet_deserialize_all(ifp);
 
index f054707..939a2fd 100644 (file)
@@ -513,7 +513,7 @@ ng_eiface_rcvdata(hook_p hook, struct mbuf *m, meta_p meta)
 
        BPF_MTAP(ifp, m);
 
-       ifp->if_input(ifp, m);
+       ifp->if_input(ifp, m, NULL, -1);
 
        /* Done */
        return (error);
index b80150f..5a38dbd 100644 (file)
@@ -532,7 +532,7 @@ ng_eiface_rcvdata(hook_p hook, item_p item)
        /* Update interface stats */
        ifp->if_ipackets++;
 
-       (*ifp->if_input)(ifp, m);
+       ifp->if_input(ifp, m, NULL, -1);
 
        /* Done */
        return (0);
index a60bced..194c357 100644 (file)
 struct ng_fec_portlist {
        struct ifnet            *fec_if;
        void                    (*fec_if_input) (struct ifnet *,
-                                                struct mbuf *);
+                                                struct mbuf *,
+                                                const struct pktinfo *,
+                                                int);
        int                     fec_idx;
        int                     fec_ifstat;
        struct ether_addr       fec_mac;
@@ -185,7 +187,8 @@ struct ng_fec_private {
 typedef struct ng_fec_private *priv_p;
 
 /* Interface methods */
-static void    ng_fec_input(struct ifnet *, struct mbuf *);
+static void    ng_fec_input(struct ifnet *, struct mbuf *,
+                       const struct pktinfo *, int);
 static void    ng_fec_start(struct ifnet *ifp, struct ifaltq_subque *);
 static int     ng_fec_choose_port(struct ng_fec_bundle *b,
                        struct mbuf *m, struct ifnet **ifp);
@@ -908,7 +911,7 @@ ng_fec_input(struct ifnet *ifp, struct mbuf *m0)
        ifp->if_ibytes += m0->m_pkthdr.len;
 
        bifp->if_ipackets++;
-       (*bifp->if_input)(bifp, m0);
+       bifp->if_input(bifp, m0, NULL, -1);
 
        return;
 }
index f7bed22..9cb07cd 100644 (file)
@@ -246,7 +246,8 @@ null_output(struct ifnet *ifp, struct mbuf *m,
 }
 
 static void
-null_input(struct ifnet *ifp, struct mbuf *m)
+null_input(struct ifnet *ifp, struct mbuf *m,
+       const struct pktinfo *pi, int cpuid)
 {
        if_printf(ifp, "if_input should not be called\n");
        m_freem(m);
index 3239d08..fdd1667 100644 (file)
@@ -436,7 +436,7 @@ hostap_deliver_data(struct ieee80211vap *vap,
                        m->m_pkthdr.ether_vlantag = ni->ni_vlan;
                        m->m_flags |= M_VLANTAG;
                }
-               ifp->if_input(ifp, m);
+               ifp->if_input(ifp, m, NULL, -1);
        }
 }
 
index e7f1525..9c6abcd 100644 (file)
@@ -223,7 +223,7 @@ ieee80211_deliver_data(struct ieee80211vap *vap,
                m->m_pkthdr.ether_vlantag = ni->ni_vlan;
                m->m_flags |= M_VLANTAG;
        }
-       ifp->if_input(ifp, m);
+       ifp->if_input(ifp, m, NULL, -1);
 }
 
 struct mbuf *