Do not change current media when driver is already running. If

driver is running driver would have already completed flow control
configuration.  This change removes unnecessary media changes in
controller reconfiguration cases such that it does not trigger link
reestablishment for configuration change requests like promiscuous
mode change.

Reported by:	Many
Tested by:	Mike Tancsa <mike <> sentex dot net>
MFC after:	1 week
This commit is contained in:
Pyun YongHyeon 2012-03-19 02:10:40 +00:00
parent 6210106152
commit a461b20142

View File

@ -902,7 +902,7 @@ fxp_attach(device_t dev)
FXP_LOCK(sc);
/* Clear wakeup events. */
CSR_WRITE_1(sc, FXP_CSR_PMDR, CSR_READ_1(sc, FXP_CSR_PMDR));
fxp_init_body(sc, 1);
fxp_init_body(sc, 0);
fxp_stop(sc);
FXP_UNLOCK(sc);
}
@ -2810,7 +2810,7 @@ fxp_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
if (((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) &&
((ifp->if_flags ^ sc->if_flags) &
(IFF_PROMISC | IFF_ALLMULTI | IFF_LINK0)) != 0)
fxp_init_body(sc, 1);
fxp_init_body(sc, 0);
else if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
fxp_init_body(sc, 1);
} else {
@ -2916,7 +2916,7 @@ fxp_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
reinit++;
}
if (reinit > 0 && ifp->if_flags & IFF_UP)
fxp_init_body(sc, 1);
fxp_init_body(sc, 0);
FXP_UNLOCK(sc);
VLAN_CAPABILITIES(ifp);
break;