MFC r277050:

Receive filter configuration is done in nge_rxfilter().  Remove
  unnecessary filter configuration code in nge_init_locked().
  While I'm here add a check for driver running state for multicast
  filter handling.  Also remove unnecessary assignment to error
  variable since it is cleared in the function entry.
This commit is contained in:
yongari 2015-03-26 05:07:18 +00:00
parent f0de020e4a
commit 125afe6753

View File

@ -2102,27 +2102,6 @@ nge_init_locked(struct nge_softc *sc)
*/
nge_list_tx_init(sc);
/*
* For the NatSemi chip, we have to explicitly enable the
* reception of ARP frames, as well as turn on the 'perfect
* match' filter where we store the station address, otherwise
* we won't receive unicasts meant for this host.
*/
NGE_SETBIT(sc, NGE_RXFILT_CTL, NGE_RXFILTCTL_ARP);
NGE_SETBIT(sc, NGE_RXFILT_CTL, NGE_RXFILTCTL_PERFECT);
/*
* Set the capture broadcast bit to capture broadcast frames.
*/
if (ifp->if_flags & IFF_BROADCAST) {
NGE_SETBIT(sc, NGE_RXFILT_CTL, NGE_RXFILTCTL_BROAD);
} else {
NGE_CLRBIT(sc, NGE_RXFILT_CTL, NGE_RXFILTCTL_BROAD);
}
/* Turn the receive filter on. */
NGE_SETBIT(sc, NGE_RXFILT_CTL, NGE_RXFILTCTL_ENABLE);
/* Set Rx filter. */
nge_rxfilter(sc);
@ -2335,9 +2314,9 @@ nge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
case SIOCADDMULTI:
case SIOCDELMULTI:
NGE_LOCK(sc);
nge_rxfilter(sc);
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
nge_rxfilter(sc);
NGE_UNLOCK(sc);
error = 0;
break;
case SIOCGIFMEDIA:
case SIOCSIFMEDIA: