From dc7f5cf186cf70709b715f97646ffbcdf9a4869c Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Thu, 19 Feb 2009 18:24:32 +0100 Subject: [PATCH] compat.diff update for master-2009-02-18 Revert commit 65949939dd23bcde83dc0fa56dd5932eda38c050: "nl80211: lock rtnl around all operation" from wireless-testing for kernels older than 2.6.30. This also adds at76c50x-usb driver and accounts for the move of include/net/ieee80211.h to its ipw home where it belongs. Signed-off-by: Hauke Mehrtens --- Makefile | 16 +- compat/compat.diff | 513 ++++++++++++++++++++++++++++++++++++++-- config.mk | 1 + scripts/admin-update.sh | 5 +- 4 files changed, 505 insertions(+), 30 deletions(-) diff --git a/Makefile b/Makefile index 95b404b9775f..4b0a7e5e7b7c 100644 --- a/Makefile +++ b/Makefile @@ -104,14 +104,16 @@ install: uninstall modules @$(MODPROBE) -l cfg80211 @$(MODPROBE) -l lib80211 @$(MODPROBE) -l adm8211 - @$(MODPROBE) -l at76_usb + @$(MODPROBE) -l at76c50x-usb @$(MODPROBE) -l ath5k @$(MODPROBE) -l ath9k @$(MODPROBE) -l b43 @$(MODPROBE) -l b43legacy + @$(MODPROBE) -l b44 @$(MODPROBE) -l ssb + @$(MODPROBE) -l rc80211_simple + @$(MODPROBE) -l iwlcore @$(MODPROBE) -l iwl3945 - @$(MODPROBE) -l iwl4965 @$(MODPROBE) -l iwlagn @$(MODPROBE) -l ipw2100 @$(MODPROBE) -l ipw2200 @@ -122,8 +124,8 @@ install: uninstall modules @$(MODPROBE) -l libertas_tf @$(MODPROBE) -l libertas_tf_usb @$(MODPROBE) -l ub8xxx - @$(MODPROBE) -l p54_pci - @$(MODPROBE) -l p54_usb + @$(MODPROBE) -l p54pci + @$(MODPROBE) -l p54usb @$(MODPROBE) -l rt2400pci @$(MODPROBE) -l rt2500pci @$(MODPROBE) -l rt2500usb @@ -164,15 +166,16 @@ uninstall: @$(MODPROBE) -l cfg80211 @$(MODPROBE) -l lib80211 @$(MODPROBE) -l adm8211 + @$(MODPROBE) -l at76c50x-usb @$(MODPROBE) -l ath5k @$(MODPROBE) -l ath9k - @$(MODPROBE) -l at76_usb @$(MODPROBE) -l b43 @$(MODPROBE) -l b43legacy + @$(MODPROBE) -l b44 @$(MODPROBE) -l ssb @$(MODPROBE) -l rc80211_simple + @$(MODPROBE) -l iwlcore @$(MODPROBE) -l iwl3945 - @$(MODPROBE) -l iwl4965 @$(MODPROBE) -l iwlagn @$(MODPROBE) -l ipw2100 @$(MODPROBE) -l ipw2200 @@ -182,7 +185,6 @@ uninstall: @$(MODPROBE) -l libertas_cs @$(MODPROBE) -l libertas_tf @$(MODPROBE) -l libertas_tf_usb - @$(MODPROBE) -l mac80211 @$(MODPROBE) -l ub8xxx @$(MODPROBE) -l p54pci @$(MODPROBE) -l p54usb diff --git a/compat/compat.diff b/compat/compat.diff index 1b933566313a..ce98e63da275 100644 --- a/compat/compat.diff +++ b/compat/compat.diff @@ -93,25 +93,25 @@ diff --git a/net/mac80211/wme.c b/net/mac80211/wme.c index a0c860f..9c6f214 100644 --- a/net/mac80211/wme.c +++ b/net/mac80211/wme.c -@@ -124,6 +124,7 @@ u16 ieee80211_select_queue(struct net_device *dev, struct sk_buff *skb) +@@ -122,6 +122,7 @@ u16 ieee80211_select_queue(struct net_device *dev, struct sk_buff *skb) if (unlikely(queue >= local->hw.queues)) queue = local->hw.queues - 1; +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)) - if (skb->requeue) { - if (!hw->ampdu_queues) - return queue; -@@ -142,6 +143,7 @@ u16 ieee80211_select_queue(struct net_device *dev, struct sk_buff *skb) - - return queue; + /* + * Now we know the 1d priority, fill in the QoS header if + * there is one (and we haven't done this before). +@@ -137,6 +138,7 @@ u16 ieee80211_select_queue(struct net_device *dev, struct sk_buff *skb) + *p++ = ack_policy | tid; + *p = 0; } +#endif - /* Now we know the 1d priority, fill in the QoS header if - * there is one. + return queue; + } --- a/drivers/net/wireless/Makefile 2008-11-10 12:55:55.000000000 -0800 +++ b/drivers/net/wireless/Makefile 2008-11-10 12:57:30.000000000 -0800 -@@ -5,41 +5,14 @@ +@@ -5,43 +5,17 @@ obj-$(CONFIG_IPW2100) += ipw2x00/ obj-$(CONFIG_IPW2200) += ipw2x00/ @@ -134,6 +134,8 @@ index a0c860f..9c6f214 100644 -obj-$(CONFIG_PCI_ATMEL) += atmel_pci.o -obj-$(CONFIG_PCMCIA_ATMEL) += atmel_cs.o - + obj-$(CONFIG_AT76C50X_USB) += at76c50x-usb.o + -obj-$(CONFIG_PRISM54) += prism54/ - -obj-$(CONFIG_HOSTAP) += hostap/ @@ -146,7 +148,7 @@ index a0c860f..9c6f214 100644 -# 16-bit wireless PCMCIA client drivers -obj-$(CONFIG_PCMCIA_RAYCS) += ray_cs.o -obj-$(CONFIG_PCMCIA_WL3501) += wl3501_cs.o -- + obj-$(CONFIG_USB_NET_RNDIS_WLAN) += rndis_wlan.o -obj-$(CONFIG_USB_ZD1201) += zd1201.o @@ -301,7 +303,7 @@ index a0c860f..9c6f214 100644 --- a/net/mac80211/iface.c 2009-02-13 14:25:06.000000000 -0800 +++ b/net/mac80211/iface.c 2009-02-13 14:25:08.000000000 -0800 -@@ -657,6 +657,7 @@ +@@ -667,6 +667,7 @@ WARN_ON(flushed); } @@ -309,7 +311,7 @@ index a0c860f..9c6f214 100644 static const struct net_device_ops ieee80211_dataif_ops = { .ndo_open = ieee80211_open, .ndo_stop = ieee80211_stop, -@@ -676,11 +677,22 @@ +@@ -686,11 +687,22 @@ .ndo_change_mtu = ieee80211_change_mtu, .ndo_set_mac_address = eth_mac_addr, }; @@ -332,7 +334,7 @@ index a0c860f..9c6f214 100644 dev->wireless_handlers = &ieee80211_iw_handler_def; dev->destructor = free_netdev; } -@@ -696,7 +708,11 @@ +@@ -706,7 +718,11 @@ /* and set some type-dependent values */ sdata->vif.type = type; @@ -344,7 +346,7 @@ index a0c860f..9c6f214 100644 sdata->wdev.iftype = type; /* only monitor differs */ -@@ -717,7 +733,11 @@ +@@ -729,7 +745,11 @@ break; case NL80211_IFTYPE_MONITOR: sdata->dev->type = ARPHRD_IEEE80211_RADIOTAP; @@ -356,7 +358,7 @@ index a0c860f..9c6f214 100644 sdata->u.mntr_flags = MONITOR_FLAG_CONTROL | MONITOR_FLAG_OTHER_BSS; break; -@@ -823,6 +843,10 @@ +@@ -836,6 +856,10 @@ if (ret) goto fail; @@ -369,7 +371,7 @@ index a0c860f..9c6f214 100644 ieee80211_sdata_set_mesh_id(sdata, --- a/net/mac80211/main.c 2009-02-13 14:25:06.000000000 -0800 +++ b/net/mac80211/main.c 2009-02-13 14:25:08.000000000 -0800 -@@ -487,6 +487,7 @@ +@@ -488,6 +488,7 @@ return; } @@ -377,7 +379,7 @@ index a0c860f..9c6f214 100644 if (!test_sta_flags(sta, WLAN_STA_PS) && !skb->requeue) { /* Software retry the packet once */ skb->requeue = 1; -@@ -494,6 +495,7 @@ +@@ -495,6 +496,7 @@ dev_queue_xmit(skb); return; } @@ -385,7 +387,7 @@ index a0c860f..9c6f214 100644 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG if (net_ratelimit()) -@@ -797,6 +799,7 @@ +@@ -803,6 +805,7 @@ } EXPORT_SYMBOL(ieee80211_alloc_hw); @@ -393,7 +395,7 @@ index a0c860f..9c6f214 100644 static const struct net_device_ops ieee80211_master_ops = { .ndo_start_xmit = ieee80211_master_start_xmit, .ndo_open = ieee80211_master_open, -@@ -804,12 +807,22 @@ +@@ -810,12 +813,22 @@ .ndo_set_multicast_list = ieee80211_master_set_multicast_list, .ndo_select_queue = ieee80211_select_queue, }; @@ -438,3 +440,474 @@ index a0c860f..9c6f214 100644 return ops; } +diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c +index c157d60..40f86df 100644 +--- a/net/wireless/nl80211.c ++++ b/net/wireless/nl80211.c +@@ -21,6 +21,7 @@ + #include "nl80211.h" + #include "reg.h" + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)) + static int nl80211_lock_doit(struct sk_buff *skb, struct genl_info *info) + { + rtnl_lock(); +@@ -38,6 +39,7 @@ + rtnl_unlock(); + } + ++#endif + /* the netlink family */ + static struct genl_family nl80211_fam = { + .id = GENL_ID_GENERATE, /* don't bother with a hardcoded ID */ +@@ -45,10 +47,12 @@ + .hdrsize = 0, /* no private header */ + .version = 1, /* no particular meaning now */ + .maxattr = NL80211_ATTR_MAX, ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)) + .pre_doit = nl80211_lock_doit, + .pre_dumpit = nl80211_lock_dumpit, + .post_doit = nl80211_unlock, + .post_dumpit = nl80211_unlock, ++#endif + }; + + /* internal helper: get drv and dev */ +@@ -637,12 +641,18 @@ + flags = &_flags; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++#endif + err = drv->ops->change_virtual_intf(&drv->wiphy, ifindex, + type, flags, ¶ms); + + dev = __dev_get_by_index(&init_net, ifindex); + WARN_ON(!dev || (!err && dev->ieee80211_ptr->iftype != type)); + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_unlock(); ++#endif + unlock: + cfg80211_put_dev(drv); + return err; +@@ -683,12 +693,18 @@ + params.mesh_id_len = nla_len(info->attrs[NL80211_ATTR_MESH_ID]); + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++#endif + err = parse_monitor_flags(type == NL80211_IFTYPE_MONITOR ? + info->attrs[NL80211_ATTR_MNTR_FLAGS] : NULL, + &flags); + err = drv->ops->add_virtual_intf(&drv->wiphy, + nla_data(info->attrs[NL80211_ATTR_IFNAME]), + type, err ? NULL : &flags, ¶ms); ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_unlock(); ++#endif + + unlock: + cfg80211_put_dev(drv); +@@ -712,7 +728,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++ err = drv->ops->del_virtual_intf(&drv->wiphy, ifindex); ++ rtnl_unlock(); ++#else + err = drv->ops->del_virtual_intf(&drv->wiphy, ifindex); ++#endif + + out: + cfg80211_put_dev(drv); +@@ -797,8 +819,15 @@ + if (mac_addr) + NLA_PUT(msg, NL80211_ATTR_MAC, ETH_ALEN, mac_addr); + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); + err = drv->ops->get_key(&drv->wiphy, dev, key_idx, mac_addr, + &cookie, get_key_callback); ++ rtnl_unlock(); ++#else ++ err = drv->ops->get_key(&drv->wiphy, dev, key_idx, mac_addr, ++ &cookie, get_key_callback); ++#endif + + if (err) + goto out; +@@ -858,7 +887,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); + err = func(&drv->wiphy, dev, key_idx); ++ rtnl_unlock(); ++#else ++ err = func(&drv->wiphy, dev, key_idx); ++#endif + + out: + cfg80211_put_dev(drv); +@@ -941,7 +976,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++ err = drv->ops->add_key(&drv->wiphy, dev, key_idx, mac_addr, ¶ms); ++ rtnl_unlock(); ++#else + err = drv->ops->add_key(&drv->wiphy, dev, key_idx, mac_addr, ¶ms); ++#endif + + out: + cfg80211_put_dev(drv); +@@ -975,7 +1016,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++ err = drv->ops->del_key(&drv->wiphy, dev, key_idx, mac_addr); ++ rtnl_unlock(); ++#else + err = drv->ops->del_key(&drv->wiphy, dev, key_idx, mac_addr); ++#endif + + out: + cfg80211_put_dev(drv); +@@ -1056,7 +1103,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); + err = call(&drv->wiphy, dev, ¶ms); ++ rtnl_unlock(); ++#else ++ err = call(&drv->wiphy, dev, ¶ms); ++#endif + + out: + cfg80211_put_dev(drv); +@@ -1079,7 +1132,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); + err = drv->ops->del_beacon(&drv->wiphy, dev); ++ rtnl_unlock(); ++#else ++ err = drv->ops->del_beacon(&drv->wiphy, dev); ++#endif + + out: + cfg80211_put_dev(drv); +@@ -1264,13 +1323,20 @@ + goto out_err; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++#endif + while (1) { + err = dev->ops->dump_station(&dev->wiphy, netdev, sta_idx, + mac_addr, &sinfo); + if (err == -ENOENT) + break; + if (err) ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ goto out_err_rtnl; ++#else + goto out_err; ++#endif + + if (nl80211_send_station(skb, + NETLINK_CB(cb->skb).pid, +@@ -1286,6 +1352,10 @@ + out: + cb->args[1] = sta_idx; + err = skb->len; ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ out_err_rtnl: ++ rtnl_unlock(); ++#endif + out_err: + cfg80211_put_dev(dev); + out_put_netdev: +@@ -1319,7 +1389,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); + err = drv->ops->get_station(&drv->wiphy, dev, mac_addr, &sinfo); ++ rtnl_unlock(); ++#else ++ err = drv->ops->get_station(&drv->wiphy, dev, mac_addr, &sinfo); ++#endif + + if (err) + goto out; +@@ -1421,7 +1497,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); + err = drv->ops->change_station(&drv->wiphy, dev, mac_addr, ¶ms); ++ rtnl_unlock(); ++#else ++ err = drv->ops->change_station(&drv->wiphy, dev, mac_addr, ¶ms); ++#endif + + out: + if (params.vlan) +@@ -1482,7 +1564,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++ err = drv->ops->add_station(&drv->wiphy, dev, mac_addr, ¶ms); ++ rtnl_unlock(); ++#else + err = drv->ops->add_station(&drv->wiphy, dev, mac_addr, ¶ms); ++#endif + + out: + if (params.vlan) +@@ -1511,7 +1599,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++ err = drv->ops->del_station(&drv->wiphy, dev, mac_addr); ++ rtnl_unlock(); ++#else + err = drv->ops->del_station(&drv->wiphy, dev, mac_addr); ++#endif + + out: + cfg80211_put_dev(drv); +@@ -1611,13 +1705,20 @@ + goto out_err; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++#endif + while (1) { + err = dev->ops->dump_mpath(&dev->wiphy, netdev, path_idx, + dst, next_hop, &pinfo); + if (err == -ENOENT) + break; + if (err) ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ goto out_err_rtnl; ++#else + goto out_err; ++#endif + + if (nl80211_send_mpath(skb, NETLINK_CB(cb->skb).pid, + cb->nlh->nlmsg_seq, NLM_F_MULTI, +@@ -1632,6 +1733,10 @@ + out: + cb->args[1] = path_idx; + err = skb->len; ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ out_err_rtnl: ++ rtnl_unlock(); ++#endif + out_err: + cfg80211_put_dev(dev); + out_put_netdev: +@@ -1666,7 +1771,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++ err = drv->ops->get_mpath(&drv->wiphy, dev, dst, next_hop, &pinfo); ++ rtnl_unlock(); ++#else + err = drv->ops->get_mpath(&drv->wiphy, dev, dst, next_hop, &pinfo); ++#endif + + if (err) + goto out; +@@ -1717,7 +1828,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++ err = drv->ops->change_mpath(&drv->wiphy, dev, dst, next_hop); ++ rtnl_unlock(); ++#else + err = drv->ops->change_mpath(&drv->wiphy, dev, dst, next_hop); ++#endif + + out: + cfg80211_put_dev(drv); +@@ -1750,7 +1867,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++ err = drv->ops->add_mpath(&drv->wiphy, dev, dst, next_hop); ++ rtnl_unlock(); ++#else + err = drv->ops->add_mpath(&drv->wiphy, dev, dst, next_hop); ++#endif + + out: + cfg80211_put_dev(drv); +@@ -1777,7 +1900,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); + err = drv->ops->del_mpath(&drv->wiphy, dev, dst); ++ rtnl_unlock(); ++#else ++ err = drv->ops->del_mpath(&drv->wiphy, dev, dst); ++#endif + + out: + cfg80211_put_dev(drv); +@@ -1823,7 +1952,13 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); + err = drv->ops->change_bss(&drv->wiphy, dev, ¶ms); ++ rtnl_unlock(); ++#else ++ err = drv->ops->change_bss(&drv->wiphy, dev, ¶ms); ++#endif + + out: + cfg80211_put_dev(drv); +@@ -1920,7 +2055,13 @@ + return err; + + /* Get the mesh params */ ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++ err = drv->ops->get_mesh_params(&drv->wiphy, dev, &cur_params); ++ rtnl_unlock(); ++#else + err = drv->ops->get_mesh_params(&drv->wiphy, dev, &cur_params); ++#endif + if (err) + goto out; + +@@ -2066,7 +2207,13 @@ + nla_get_u16); + + /* Apply changes */ ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++ err = drv->ops->set_mesh_params(&drv->wiphy, dev, &cfg, mask); ++ rtnl_unlock(); ++#else + err = drv->ops->set_mesh_params(&drv->wiphy, dev, &cfg, mask); ++#endif + + /* cleanup */ + cfg80211_put_dev(drv); +@@ -2241,9 +2388,15 @@ + if (err) + return err; + +- if (drv->ops->set_mgmt_extra_ie) ++ if (drv->ops->set_mgmt_extra_ie) { ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); + err = drv->ops->set_mgmt_extra_ie(&drv->wiphy, dev, ¶ms); +- else ++ rtnl_unlock(); ++#else ++ err = drv->ops->set_mgmt_extra_ie(&drv->wiphy, dev, ¶ms); ++#endif ++ } else + err = -EOPNOTSUPP; + + cfg80211_put_dev(drv); +@@ -2275,9 +2428,16 @@ + goto out; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ rtnl_lock(); ++#endif + if (drv->scan_req) { + err = -EBUSY; ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ goto out_unlock; ++#else + goto out; ++#endif + } + + if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { +@@ -2285,7 +2445,11 @@ + n_channels++; + if (!n_channels) { + err = -EINVAL; ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ goto out_unlock; ++#else + goto out; ++#endif + } + } else { + for (band = 0; band < IEEE80211_NUM_BANDS; band++) +@@ -2299,7 +2463,11 @@ + + if (n_ssids > wiphy->max_scan_ssids) { + err = -EINVAL; ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ goto out_unlock; ++#else + goto out; ++#endif + } + + if (info->attrs[NL80211_ATTR_IE]) +@@ -2313,7 +2481,11 @@ + + ie_len, GFP_KERNEL); + if (!request) { + err = -ENOMEM; ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ goto out_unlock; ++#else + goto out; ++#endif + } + + request->channels = (void *)((char *)request + sizeof(*request)); +@@ -2384,6 +2556,10 @@ + drv->scan_req = NULL; + kfree(request); + } ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) ++ out_unlock: ++ rtnl_unlock(); ++#endif + out: + cfg80211_put_dev(drv); + dev_put(dev); diff --git a/config.mk b/config.mk index 4a625f257871..450cbb558dac 100644 --- a/config.mk +++ b/config.mk @@ -238,6 +238,7 @@ CONFIG_USB_NET_CDCETHER=m CONFIG_P54_USB=m CONFIG_RTL8187=m +CONFIG_AT76C50X_USB=m # RT2500USB does not require firmware CONFIG_RT2500USB=m diff --git a/scripts/admin-update.sh b/scripts/admin-update.sh index 5fa23c0a3abe..8eeef892ff9f 100755 --- a/scripts/admin-update.sh +++ b/scripts/admin-update.sh @@ -24,10 +24,8 @@ INCLUDE_LINUX="$INCLUDE_LINUX ath9k_platform.h" # For rndis_wext INCLUDE_LINUX_USB="usbnet.h rndis_host.h" -# Stuff that should die or be merged, only ipw uses it -INCLUDE_NET_OLD="ieee80211.h" # The good new yummy stuff -INCLUDE_NET="$INCLUDE_NET_OLD cfg80211.h ieee80211_radiotap.h iw_handler.h" +INCLUDE_NET="cfg80211.h ieee80211_radiotap.h iw_handler.h" INCLUDE_NET="$INCLUDE_NET mac80211.h wext.h wireless.h lib80211.h" NET_DIRS="wireless mac80211" @@ -66,6 +64,7 @@ DRIVERS="$DRIVERS drivers/net/wireless/ipw2x00" DRIVER_FILES="adm8211.c adm8211.h" DRIVER_FILES="$DRIVER_FILES rndis_wlan.c" DRIVER_FILES="$DRIVER_FILES mac80211_hwsim.c" +DRIVER_FILES="$DRIVER_FILES at76c50x-usb.c at76c50x-usb.h" mkdir -p include/linux/ include/net/ include/linux/usb \ net/mac80211/ net/wireless/ \ -- 2.30.2