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);

Reply via email to