Update if_obytes and if_omcast after successful transmit.

While I'm here update if_oerrors if parent interface of vlan is not
up and running.  Previously it updated collision counter and it was
confusing to interprete it.

PR:		kern/163478
Reviewed by:	glebius, jhb
Tested by:	Joe Holden < lists <> rewt dot org dot uk >
This commit is contained in:
yongari 2011-12-29 18:40:58 +00:00
parent 7a0151720c
commit 69a9d9792b

View File

@ -1012,10 +1012,12 @@ vlan_transmit(struct ifnet *ifp, struct mbuf *m)
{
struct ifvlan *ifv;
struct ifnet *p;
int error;
int error, len, mcast;
ifv = ifp->if_softc;
p = PARENT(ifv);
len = m->m_pkthdr.len;
mcast = (m->m_flags & (M_MCAST | M_BCAST)) ? 1 : 0;
BPF_MTAP(ifp, m);
@ -1025,7 +1027,7 @@ vlan_transmit(struct ifnet *ifp, struct mbuf *m)
*/
if (!UP_AND_RUNNING(p)) {
m_freem(m);
ifp->if_collisions++;
ifp->if_oerrors++;
return (0);
}
@ -1081,9 +1083,11 @@ vlan_transmit(struct ifnet *ifp, struct mbuf *m)
* Send it, precisely as ether_output() would have.
*/
error = (p->if_transmit)(p, m);
if (!error)
if (!error) {
ifp->if_opackets++;
else
ifp->if_omcasts += mcast;
ifp->if_obytes += len;
} else
ifp->if_oerrors++;
return (error);
}