hi,
drivers ex age alc ale jme se vic vte xe upl and octeon/cmac
make use of the if_iqdrops counter that is not shown by any of our
tools (like netstat). looks like most of its usage comes from
freebsd where they show it in the "netstat -di" output in a new
column. do we want to do that or just convert them to if_ierrors
since 90% of our drivers do only if_ierrors. there's also doesn't
seem to be any rule when to use if_iqdrops (well, since in most
drivers there's no input queueing -- check out upl(4) :)
the diff below changes all the drivers in our tree to use
if_ierrors instead of if_iqdrops. i've decided to leave
octeon/cmac driver as is because if_iqdrops is used for
debugging purposes there.
ack? nack? meh?
diff --git sys/dev/isa/if_ex.c sys/dev/isa/if_ex.c
index 49eb077..f93165f 100644
--- sys/dev/isa/if_ex.c
+++ sys/dev/isa/if_ex.c
@@ -661,7 +661,7 @@ ex_rx_intr(struct ex_softc *sc)
MGETHDR(m, M_DONTWAIT, MT_DATA);
ipkt = m;
if (ipkt == NULL)
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
else {
ipkt->m_pkthdr.rcvif = ifp;
ipkt->m_pkthdr.len = pkt_len;
@@ -673,7 +673,7 @@ ex_rx_intr(struct ex_softc *sc)
m->m_len = MCLBYTES;
else {
m_freem(ipkt);
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
goto rx_another;
}
}
@@ -696,7 +696,7 @@ ex_rx_intr(struct ex_softc *sc)
MT_DATA);
if (m->m_next == NULL) {
m_freem(ipkt);
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
goto rx_another;
}
m = m->m_next;
diff --git sys/dev/pci/if_age.c sys/dev/pci/if_age.c
index f5f6de5..53903c1 100644
--- sys/dev/pci/if_age.c
+++ sys/dev/pci/if_age.c
@@ -1329,7 +1329,7 @@ age_rxeof(struct age_softc *sc, struct rx_rdesc *rxrd)
desc = rxd->rx_desc;
/* Add a new receive buffer to the ring. */
if (age_newbuf(sc, rxd) != 0) {
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
/* Reuse Rx buffers. */
if (sc->age_cdata.age_rxhead != NULL) {
m_freem(sc->age_cdata.age_rxhead);
diff --git sys/dev/pci/if_alc.c sys/dev/pci/if_alc.c
index eac4148..ef22bb5 100644
--- sys/dev/pci/if_alc.c
+++ sys/dev/pci/if_alc.c
@@ -1952,7 +1952,7 @@ alc_rxeof(struct alc_softc *sc, struct rx_rdesc *rrd)
mp = rxd->rx_m;
/* Add a new receive buffer to the ring. */
if (alc_newbuf(sc, rxd) != 0) {
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
/* Reuse Rx buffers. */
if (sc->alc_cdata.alc_rxhead != NULL)
m_freem(sc->alc_cdata.alc_rxhead);
diff --git sys/dev/pci/if_ale.c sys/dev/pci/if_ale.c
index 1e5004e..ef6348f 100644
--- sys/dev/pci/if_ale.c
+++ sys/dev/pci/if_ale.c
@@ -1552,7 +1552,7 @@ ale_rxeof(struct ale_softc *sc)
m = m_devget((char *)(rs + 1), length - ETHER_CRC_LEN,
ETHER_ALIGN, ifp, NULL);
if (m == NULL) {
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
ale_rx_update_page(sc, &rx_page, length, &prod);
continue;
}
diff --git sys/dev/pci/if_jme.c sys/dev/pci/if_jme.c
index 25c954f..37a1efa 100644
--- sys/dev/pci/if_jme.c
+++ sys/dev/pci/if_jme.c
@@ -1602,7 +1602,7 @@ jme_rxpkt(struct jme_softc *sc)
/* Add a new receive buffer to the ring. */
if (jme_newbuf(sc, rxd) != 0) {
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
/* Reuse buffer. */
jme_discard_rxbufs(sc, cons, nsegs - count);
if (sc->jme_cdata.jme_rxhead != NULL) {
diff --git sys/dev/pci/if_se.c sys/dev/pci/if_se.c
index 1c75288..b2206ae 100644
--- sys/dev/pci/if_se.c
+++ sys/dev/pci/if_se.c
@@ -947,7 +947,7 @@ se_rxeof(struct se_softc *sc)
m = cd->se_rx_mbuf[i];
if (se_newbuf(sc, i) != 0) {
se_discard_rxbuf(sc, i);
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
continue;
}
/*
diff --git sys/dev/pci/if_vic.c sys/dev/pci/if_vic.c
index 247c880..78cece0 100644
--- sys/dev/pci/if_vic.c
+++ sys/dev/pci/if_vic.c
@@ -858,7 +858,7 @@ vic_rx_proc(struct vic_softc *sc, int q)
if (len < VIC_MIN_FRAMELEN) {
m_freem(m);
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
goto nextp;
}
diff --git sys/dev/pci/if_vte.c sys/dev/pci/if_vte.c
index fec0bb5..4e4dc32 100644
--- sys/dev/pci/if_vte.c
+++ sys/dev/pci/if_vte.c
@@ -1033,7 +1033,7 @@ vte_rxeof(struct vte_softc *sc)
continue;
}
if (vte_newbuf(sc, rxd, 0) != 0) {
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
rxd->rx_desc->drlen =
htole16(MCLBYTES - sizeof(uint32_t));
rxd->rx_desc->drst = htole16(VTE_DRST_RX_OWN);
diff --git sys/dev/pcmcia/if_xe.c sys/dev/pcmcia/if_xe.c
index b2d10ad..a6f3f9a 100644
--- sys/dev/pcmcia/if_xe.c
+++ sys/dev/pcmcia/if_xe.c
@@ -684,7 +684,7 @@ xe_intr(arg)
DPRINTF(XED_INTR,
("%s: too many bytes this interrupt\n",
sc->sc_dev.dv_xname));
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
/* Drop packet. */
bus_space_write_2(sc->sc_bst, sc->sc_bsh,
sc->sc_offset + DO0, DO_SKIP_RX_PKT);
diff --git sys/dev/usb/if_upl.c sys/dev/usb/if_upl.c
index a42b850..4008e51 100644
--- sys/dev/usb/if_upl.c
+++ sys/dev/usb/if_upl.c
@@ -1011,7 +1011,7 @@ upl_input(struct ifnet *ifp, struct mbuf *m)
if (sc->sc_flags & SC_DEBUG)
printf("%s: input queue full\n", ifp->if_xname);
#endif
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
return;
}
IF_ENQUEUE(inq, m);
diff --git sys/net/if_ppp.c sys/net/if_ppp.c
index f7cf3d3..0320676 100644
--- sys/net/if_ppp.c
+++ sys/net/if_ppp.c
@@ -1520,7 +1520,7 @@ ppp_inproc(struct ppp_softc *sc, struct mbuf *m)
splx(s);
if (sc->sc_flags & SC_DEBUG)
printf("%s: input queue full\n", ifp->if_xname);
- ifp->if_iqdrops++;
+ ifp->if_ierrors++;
if (!inq->ifq_congestion)
if_congestion(inq);
goto bad;
diff --git sys/net/if_sl.c sys/net/if_sl.c
index 7b48118..d81c46e 100644
--- sys/net/if_sl.c
+++ sys/net/if_sl.c
@@ -887,7 +887,6 @@ slinput(c, tp)
if (IF_QFULL(&ipintrq)) {
IF_DROP(&ipintrq);
sc->sc_if.if_ierrors++;
- sc->sc_if.if_iqdrops++;
m_freem(m);
if (!ipintrq.ifq_congestion)
if_congestion(&ipintrq);
diff --git sys/net/if_spppsubr.c sys/net/if_spppsubr.c
index 91a3652..9a257fc 100644
--- sys/net/if_spppsubr.c
+++ sys/net/if_spppsubr.c
@@ -504,7 +504,6 @@ sppp_input(struct ifnet *ifp, struct mbuf *m)
SPP_ARGS(ifp), m->m_pkthdr.len);
drop:
++ifp->if_ierrors;
- ++ifp->if_iqdrops;
m_freem (m);
return;
}
@@ -532,7 +531,6 @@ sppp_input(struct ifnet *ifp, struct mbuf *m)
log(LOG_DEBUG,
SPP_FMT "Failed to align packet!\n",
SPP_ARGS(ifp));
++ifp->if_ierrors;
- ++ifp->if_iqdrops;
return;
}
}