Date: Fri, 26 Feb 2010 20:26:17 +0000 (UTC) From: Pyun YongHyeon <yongari@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r204370 - head/sys/dev/bce Message-ID: <201002262026.o1QKQHR4044667@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: yongari Date: Fri Feb 26 20:26:17 2010 New Revision: 204370 URL: http://svn.freebsd.org/changeset/base/204370 Log: Make sure to stop controller first before changing MTU. And if interface is not running don't initialize controller. While here remove unnecessary update of error variable. Reviewed by: davidch Modified: head/sys/dev/bce/if_bce.c Modified: head/sys/dev/bce/if_bce.c ============================================================================== --- head/sys/dev/bce/if_bce.c Fri Feb 26 20:25:30 2010 (r204369) +++ head/sys/dev/bce/if_bce.c Fri Feb 26 20:26:17 2010 (r204370) @@ -6989,7 +6989,7 @@ bce_ioctl(struct ifnet *ifp, u_long comm struct bce_softc *sc = ifp->if_softc; struct ifreq *ifr = (struct ifreq *) data; struct mii_data *mii; - int mask, error = 0; + int mask, error = 0, reinit; DBENTER(BCE_VERBOSE_MISC); @@ -7010,7 +7010,16 @@ bce_ioctl(struct ifnet *ifp, u_long comm BCE_LOCK(sc); ifp->if_mtu = ifr->ifr_mtu; - ifp->if_drv_flags &= ~IFF_DRV_RUNNING; + reinit = 0; + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + /* + * Because allocation size is used in RX + * buffer allocation, stop controller if + * it is already running. + */ + bce_stop(sc); + reinit = 1; + } #ifdef BCE_JUMBO_HDRSPLIT /* No buffer allocation size changes are necessary. */ #else @@ -7028,7 +7037,8 @@ bce_ioctl(struct ifnet *ifp, u_long comm } #endif - bce_init_locked(sc); + if (reinit != 0) + bce_init_locked(sc); BCE_UNLOCK(sc); break; @@ -7062,7 +7072,6 @@ bce_ioctl(struct ifnet *ifp, u_long comm } BCE_UNLOCK(sc); - error = 0; break; @@ -7072,10 +7081,8 @@ bce_ioctl(struct ifnet *ifp, u_long comm DBPRINT(sc, BCE_VERBOSE_MISC, "Received SIOCADDMULTI/SIOCDELMULTI\n"); BCE_LOCK(sc); - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + if (ifp->if_drv_flags & IFF_DRV_RUNNING) bce_set_rx_mode(sc); - error = 0; - } BCE_UNLOCK(sc); break;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201002262026.o1QKQHR4044667>