svn commit: r204370 - head/sys/dev/bce
Pyun YongHyeon
yongari at FreeBSD.org
Fri Feb 26 20:26:17 UTC 2010
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;
More information about the svn-src-head
mailing list