committed, thanks!
On Sat, Aug 20, 2011 at 02:46:30AM -0300, Christiano F. Haesbaert wrote:
> Hi, vlan_start() was increasing packet counts before checking if the
> packet was successfully enqueued. I made a hunt for similar errors.
>
> Index: net/if_mpe.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if_mpe.c,v
> retrieving revision 1.25
> diff -d -u -p -w -r1.25 if_mpe.c
> --- net/if_mpe.c 28 Jan 2011 14:58:24 -0000 1.25
> +++ net/if_mpe.c 20 Aug 2011 04:06:29 -0000
> @@ -265,7 +265,7 @@ mpeoutput(struct ifnet *ifp, struct mbuf
> if (error) {
> /* mbuf is already freed */
> splx(s);
> - return (error);
> + goto out;
> }
> if_start(ifp);
> splx(s);
> Index: net/if_pppx.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if_pppx.c,v
> retrieving revision 1.9
> diff -d -u -p -w -r1.9 if_pppx.c
> --- net/if_pppx.c 7 Jul 2011 20:42:56 -0000 1.9
> +++ net/if_pppx.c 20 Aug 2011 05:37:48 -0000
> @@ -1057,6 +1057,10 @@ pppx_if_output(struct ifnet *ifp, struct
>
> s = splnet();
> IFQ_ENQUEUE(&ifp->if_snd, m, NULL, error);
> + if (error) {
> + splx(s);
> + goto out;
> + }
> if_start(ifp);
> splx(s);
>
> Index: net/if_vlan.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if_vlan.c,v
> retrieving revision 1.87
> diff -d -u -p -w -r1.87 if_vlan.c
> --- net/if_vlan.c 18 Feb 2011 17:06:45 -0000 1.87
> +++ net/if_vlan.c 20 Aug 2011 03:58:05 -0000
> @@ -251,15 +251,15 @@ vlan_start(struct ifnet *ifp)
> * Send it, precisely as ether_output() would have.
> * We are already running at splnet.
> */
> - p->if_obytes += m->m_pkthdr.len;
> - if (m->m_flags & M_MCAST)
> - p->if_omcasts++;
> IFQ_ENQUEUE(&p->if_snd, m, NULL, error);
> if (error) {
> /* mbuf is already freed */
> ifp->if_oerrors++;
> continue;
> }
> + p->if_obytes += m->m_pkthdr.len;
> + if (m->m_flags & M_MCAST)
> + p->if_omcasts++;
>
> ifp->if_opackets++;
> if_start(p);
--