NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/48310: kue(4) cannot receive multicast packets



On Sun, 13 Oct 2013 17:20:00 +0000 (UTC)
I wrote:

> >Fix:
>       In the case of SIOC{ADD,DEL}MULTI please call ether_ioctl()
>       to fill list of ec_multiaddrs before calling kue_setmulti().

This is patch for HEAD and netbsd-6.

Index: src/sys/dev/usb/if_kue.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/if_kue.c,v
retrieving revision 1.79
diff -u -p -r1.79 if_kue.c
--- src/sys/dev/usb/if_kue.c    5 Jan 2013 01:30:15 -0000       1.79
+++ src/sys/dev/usb/if_kue.c    9 Oct 2013 09:59:17 -0000
@@ -1038,8 +1038,12 @@ kue_ioctl(struct ifnet *ifp, u_long comm
                break;
        case SIOCADDMULTI:
        case SIOCDELMULTI:
-               kue_setmulti(sc);
-               error = 0;
+               error = ether_ioctl(ifp, command, data);
+               if (error == ENETRESET) {
+                       if (ifp->if_flags & IFF_RUNNING)
+                               kue_setmulti(sc);
+                       error = 0;
+               }
                break;
        default:
                error = ether_ioctl(ifp, command, data);

This is patch for netbsd-5.

Index: src/sys/dev/usb/if_kue.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/if_kue.c,v
retrieving revision 1.63
diff -u -p -r1.63 if_kue.c
--- src/sys/dev/usb/if_kue.c    24 May 2008 16:40:58 -0000      1.63
+++ src/sys/dev/usb/if_kue.c    9 Oct 2013 09:22:32 -0000
@@ -1118,8 +1118,12 @@ kue_ioctl(struct ifnet *ifp, u_long comm
                break;
        case SIOCADDMULTI:
        case SIOCDELMULTI:
-               kue_setmulti(sc);
-               error = 0;
+               error = ether_ioctl(ifp, command, data);
+               if (error == ENETRESET) {
+                       if (ifp->if_flags & IFF_RUNNING)
+                               kue_setmulti(sc);
+                       error = 0;
+               }
                break;
        default:
                error = EINVAL;

--
t-hash



Home | Main Index | Thread Index | Old Index