here is a patch to make broadcom sta linux driver wok on the new kernel.
diff –git a/src/wl/sys/wl_iw.c b/src/wl/sys/wl_iw.c
index 83b8dbf..70ee4e4 100644
— a/src/wl/sys/wl_iw.c
+++ b/src/wl/sys/wl_iw.c
@@ -118,7 +118,11 @@ dev_wlc_ioctl(
fs = get_fs();
set_fs(get_ds());
+#if LINUX_VERSION_CODE do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
+#else
+ ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
+#endif
set_fs(fs);
return ret;
diff –git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
index 7d6bba1..bfa90d0 100644
— a/src/wl/sys/wl_linux.c
+++ b/src/wl/sys/wl_linux.c
@@ -293,20 +293,36 @@ module_param_string(name, name, IFNAMSIZ, 0);
#define SRCBASE “.”
#endif
-#if WIRELESS_EXT >= 19
+#if WIRELESS_EXT >= 22
+static const struct net_device_ops wl_ethtool_ops =
+{
+ .ndo_open = wl_open,
+ .ndo_stop = wl_close,
+ .ndo_start_xmit = wl_start,
+ .ndo_get_stats = wl_get_stats,
+ .ndo_set_mac_address = wl_set_mac_address,
+ .ndo_set_multicast_list = wl_set_multicast_list,
+ .ndo_do_ioctl = wl_ioctl
+};
+#elif WIRELESS_EXT >= 19
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)
static struct ethtool_ops wl_ethtool_ops =
-#else
+{
+ .get_drvinfo = wl_get_driver_info
+};
+#elif LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 30)
static const struct ethtool_ops wl_ethtool_ops =
-#endif
{
.get_drvinfo = wl_get_driver_info
};
+#endif
#endif
+
static
void wl_if_setup(struct net_device *dev)
{
+#if LINUX_VERSION_CODE open = wl_open;
dev->stop = wl_close;
dev->hard_start_xmit = wl_start;
@@ -314,6 +330,8 @@ void wl_if_setup(struct net_device *dev)
dev->set_mac_address = wl_set_mac_address;
dev->set_multicast_list = wl_set_multicast_list;
dev->do_ioctl = wl_ioctl;
+#endif
+
#ifdef CONFIG_WIRELESS_EXT
#if WIRELESS_EXT get_wireless_stats = wl_get_wireless_stats;
@@ -321,7 +339,9 @@ void wl_if_setup(struct net_device *dev)
#if WIRELESS_EXT > 12
dev->wireless_handlers = (struct iw_handler_def *) &wl_iw_handler_def;
#endif
-#if WIRELESS_EXT >= 19
+#if WIRELESS_EXT >= 22
+ dev->netdev_ops = &wl_ethtool_ops;
+#elif WIRELESS_EXT >= 19
dev->ethtool_ops = &wl_ethtool_ops;
#endif
