NetBSD-Bugs archive

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

Re: kern/39439: IPv6 support broken in bge(4)



The appended patch revert a bogus part of the last commit
(ether_ioctl() was not called for SIOC{ADD,DEL}MULTI).
It fixes the problem for me.

best regards
Matthias





-------------------------------------------------------------------
-------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich

Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzende des Aufsichtsrats: MinDir'in Baerbel Brumme-Bothe
Geschaeftsfuehrung: Prof. Dr. Achim Bachem (Vorsitzender),
Dr. Ulrich Krafft (stellv. Vorsitzender), Prof. Dr. Harald Bolt,
Dr. Sebastian M. Schmidt
-------------------------------------------------------------------
-------------------------------------------------------------------
#
# old_revision [c9b390875247986ccb4e59c8658e1802c3e51637]
#
# patch "sys/dev/pci/if_bge.c"
#  from [626800fa5eec175b8a33d62d2a12fa3678eaaf88]
#    to [23a0304aa53c98aa181ed76b08a2615b64f4cb7c]
#
============================================================
--- sys/dev/pci/if_bge.c        626800fa5eec175b8a33d62d2a12fa3678eaaf88
+++ sys/dev/pci/if_bge.c        23a0304aa53c98aa181ed76b08a2615b64f4cb7c
@@ -4318,13 +4318,6 @@ bge_ioctl(struct ifnet *ifp, u_long comm
                sc->bge_if_flags = ifp->if_flags;
                error = 0;
                break;
-       case SIOCADDMULTI:
-       case SIOCDELMULTI:
-               if (ifp->if_flags & IFF_RUNNING) {
-                       bge_setmulti(sc);
-                       error = 0;
-               }
-               break;
        case SIOCSIFMEDIA:
                /* XXX Flow control is not supported for 1000BASE-SX */
                if (sc->bge_tbi) {
@@ -4357,10 +4350,15 @@ bge_ioctl(struct ifnet *ifp, u_long comm
                }
                break;
        default:
-               error = ether_ioctl(ifp, command, data);
-               if (error == ENETRESET) {
-                       error = 0;
-               }
+               if ((error = ether_ioctl(ifp, command, data)) != ENETRESET)
+                       break;
+
+               error = 0;
+
+               if (command != SIOCADDMULTI && command != SIOCDELMULTI)
+                       ;
+               else if (ifp->if_flags & IFF_RUNNING)
+                       bge_setmulti(sc);
                break;
        }
 


Home | Main Index | Thread Index | Old Index