Module Name: src
Committed By: christos
Date: Tue Nov 24 20:13:12 UTC 2015
Modified Files:
src/sys/dev/pci: if_alc.c
Log Message:
kern/50456: Freddy DISSAUX: Fix packets lost with tcpdump.
To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/dev/pci/if_alc.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/pci/if_alc.c
diff -u src/sys/dev/pci/if_alc.c:1.15 src/sys/dev/pci/if_alc.c:1.16
--- src/sys/dev/pci/if_alc.c:1.15 Tue Sep 8 04:24:42 2015
+++ src/sys/dev/pci/if_alc.c Tue Nov 24 15:13:12 2015
@@ -2034,11 +2034,42 @@ static int
alc_ioctl(struct ifnet *ifp, u_long cmd, void *data)
{
struct alc_softc *sc = ifp->if_softc;
+ struct mii_data *mii = &sc->sc_miibus;
+ struct ifreq *ifr = (struct ifreq *)data;
int s, error = 0;
s = splnet();
error = ether_ioctl(ifp, cmd, data);
+ switch (cmd) {
+ case SIOCSIFADDR:
+ ifp->if_flags |= IFF_UP;
+ if (!(ifp->if_flags & IFF_RUNNING))
+ alc_init(ifp);
+ break;
+
+ case SIOCSIFFLAGS:
+ if (ifp->if_flags & IFF_UP) {
+ if (ifp->if_flags & IFF_RUNNING)
+ error = ENETRESET;
+ else
+ alc_init(ifp);
+ } else {
+ if (ifp->if_flags & IFF_RUNNING)
+ alc_stop(ifp, 0);
+ }
+ break;
+
+ case SIOCSIFMEDIA:
+ case SIOCGIFMEDIA:
+ error = ifmedia_ioctl(ifp, ifr, &mii->mii_media, cmd);
+ break;
+
+ default:
+ error = ether_ioctl(ifp, cmd, data);
+ break;
+ }
+
if (error == ENETRESET) {
if (ifp->if_flags & IFF_RUNNING)
alc_iff(sc);