Page MenuHomeFreeBSD

D29365.id86114.diff
No OneTemporary

D29365.id86114.diff

Index: sys/compat/linuxkpi/common/include/linux/netdevice.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/netdevice.h
+++ sys/compat/linuxkpi/common/include/linux/netdevice.h
@@ -88,17 +88,6 @@
return (dev->if_softc);
}
-static inline struct net_device *
-netdev_notifier_info_to_dev(void *ifp)
-{
- return (ifp);
-}
-
-int register_netdevice_notifier(struct notifier_block *);
-int register_inetaddr_notifier(struct notifier_block *);
-int unregister_netdevice_notifier(struct notifier_block *);
-int unregister_inetaddr_notifier(struct notifier_block *);
-
#define rtnl_lock()
#define rtnl_unlock()
@@ -140,4 +129,20 @@
return -if_addmulti(dev, (struct sockaddr *)&sdl, NULL);
}
+/* According to linux::ipoib_main.c. */
+struct netdev_notifier_info {
+ struct net_device *dev;
+};
+
+static inline struct net_device *
+netdev_notifier_info_to_dev(struct netdev_notifier_info *ni)
+{
+ return (ni->dev);
+}
+
+int register_netdevice_notifier(struct notifier_block *);
+int register_inetaddr_notifier(struct notifier_block *);
+int unregister_netdevice_notifier(struct notifier_block *);
+int unregister_inetaddr_notifier(struct notifier_block *);
+
#endif /* _LINUX_NETDEVICE_H_ */
Index: sys/compat/linuxkpi/common/src/linux_compat.c
===================================================================
--- sys/compat/linuxkpi/common/src/linux_compat.c
+++ sys/compat/linuxkpi/common/src/linux_compat.c
@@ -2249,48 +2249,58 @@
linux_handle_ifnet_link_event(void *arg, struct ifnet *ifp, int linkstate)
{
struct notifier_block *nb;
+ struct netdev_notifier_info ni;
nb = arg;
+ ni.dev = (struct net_device *)ifp;
if (linkstate == LINK_STATE_UP)
- nb->notifier_call(nb, NETDEV_UP, ifp);
+ nb->notifier_call(nb, NETDEV_UP, &ni);
else
- nb->notifier_call(nb, NETDEV_DOWN, ifp);
+ nb->notifier_call(nb, NETDEV_DOWN, &ni);
}
static void
linux_handle_ifnet_arrival_event(void *arg, struct ifnet *ifp)
{
struct notifier_block *nb;
+ struct netdev_notifier_info ni;
nb = arg;
- nb->notifier_call(nb, NETDEV_REGISTER, ifp);
+ ni.dev = (struct net_device *)ifp;
+ nb->notifier_call(nb, NETDEV_REGISTER, &ni);
}
static void
linux_handle_ifnet_departure_event(void *arg, struct ifnet *ifp)
{
struct notifier_block *nb;
+ struct netdev_notifier_info ni;
nb = arg;
- nb->notifier_call(nb, NETDEV_UNREGISTER, ifp);
+ ni.dev = (struct net_device *)ifp;
+ nb->notifier_call(nb, NETDEV_UNREGISTER, &ni);
}
static void
linux_handle_iflladdr_event(void *arg, struct ifnet *ifp)
{
struct notifier_block *nb;
+ struct netdev_notifier_info ni;
nb = arg;
- nb->notifier_call(nb, NETDEV_CHANGEADDR, ifp);
+ ni.dev = (struct net_device *)ifp;
+ nb->notifier_call(nb, NETDEV_CHANGEADDR, &ni);
}
static void
linux_handle_ifaddr_event(void *arg, struct ifnet *ifp)
{
struct notifier_block *nb;
+ struct netdev_notifier_info ni;
nb = arg;
- nb->notifier_call(nb, NETDEV_CHANGEIFADDR, ifp);
+ ni.dev = (struct net_device *)ifp;
+ nb->notifier_call(nb, NETDEV_CHANGEIFADDR, &ni);
}
int

File Metadata

Mime Type
text/plain
Expires
Tue, Nov 18, 2:09 AM (12 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25470879
Default Alt Text
D29365.id86114.diff (3 KB)

Event Timeline