Author: yongari
Date: Sat Mar 26 21:29:39 2011
New Revision: 220044
URL: http://svn.freebsd.org/changeset/base/220044

Log:
  MFC r219787:
    Correct broadcast frame handling. Setting bit6 of MCR0 register
    enables broadcast filtering. Make sure to clear the bit to receive
    broadcast frames. While I'm here rename the bit definition to
    reflect reality.
  
    Reported by:  brad@OpenBSD

Modified:
  stable/8/sys/dev/vte/if_vte.c
  stable/8/sys/dev/vte/if_vtereg.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/vte/if_vte.c
==============================================================================
--- stable/8/sys/dev/vte/if_vte.c       Sat Mar 26 21:12:53 2011        
(r220043)
+++ stable/8/sys/dev/vte/if_vte.c       Sat Mar 26 21:29:39 2011        
(r220044)
@@ -1963,9 +1963,10 @@ vte_rxfilter(struct vte_softc *sc)
        }
 
        mcr = CSR_READ_2(sc, VTE_MCR0);
-       mcr &= ~(MCR0_PROMISC | MCR0_BROADCAST | MCR0_MULTICAST);
+       mcr &= ~(MCR0_PROMISC | MCR0_MULTICAST);
+       mcr |= MCR0_BROADCAST_DIS;
        if ((ifp->if_flags & IFF_BROADCAST) != 0)
-               mcr |= MCR0_BROADCAST;
+               mcr &= ~MCR0_BROADCAST_DIS;
        if ((ifp->if_flags & (IFF_PROMISC | IFF_ALLMULTI)) != 0) {
                if ((ifp->if_flags & IFF_PROMISC) != 0)
                        mcr |= MCR0_PROMISC;

Modified: stable/8/sys/dev/vte/if_vtereg.h
==============================================================================
--- stable/8/sys/dev/vte/if_vtereg.h    Sat Mar 26 21:12:53 2011        
(r220043)
+++ stable/8/sys/dev/vte/if_vtereg.h    Sat Mar 26 21:29:39 2011        
(r220044)
@@ -48,7 +48,7 @@
 #define        MCR0_ACCPT_LONG_PKT             0x0008
 #define        MCR0_ACCPT_DRIBBLE              0x0010
 #define        MCR0_PROMISC                    0x0020
-#define        MCR0_BROADCAST                  0x0040
+#define        MCR0_BROADCAST_DIS              0x0040
 #define        MCR0_RX_EARLY_INTR              0x0080
 #define        MCR0_MULTICAST                  0x0100
 #define        MCR0_FC_ENB                     0x0200
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to