Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6

+53 -21
+1
drivers/net/wireless/ipw2200.c
··· 11577 priv->prom_priv->priv = priv; 11578 11579 strcpy(priv->prom_net_dev->name, "rtap%d"); 11580 11581 priv->prom_net_dev->type = ARPHRD_IEEE80211_RADIOTAP; 11582 priv->prom_net_dev->open = ipw_prom_open;
··· 11577 priv->prom_priv->priv = priv; 11578 11579 strcpy(priv->prom_net_dev->name, "rtap%d"); 11580 + memcpy(priv->prom_net_dev->dev_addr, priv->mac_addr, ETH_ALEN); 11581 11582 priv->prom_net_dev->type = ARPHRD_IEEE80211_RADIOTAP; 11583 priv->prom_net_dev->open = ipw_prom_open;
-1
drivers/net/wireless/iwlwifi/Kconfig
··· 35 bool "Enable 802.11n HT features in iwl4965 driver" 36 depends on EXPERIMENTAL 37 depends on IWL4965 && IWL4965_QOS 38 - depends on n 39 ---help--- 40 This option enables IEEE 802.11n High Throughput features 41 for the iwl4965 driver.
··· 35 bool "Enable 802.11n HT features in iwl4965 driver" 36 depends on EXPERIMENTAL 37 depends on IWL4965 && IWL4965_QOS 38 ---help--- 39 This option enables IEEE 802.11n High Throughput features 40 for the iwl4965 driver.
+1 -1
drivers/net/wireless/libertas/assoc.c
··· 541 } 542 543 if (find_any_ssid) { 544 - u8 new_mode; 545 546 ret = lbs_find_best_network_ssid(priv, assoc_req->ssid, 547 &assoc_req->ssid_len, assoc_req->mode, &new_mode);
··· 541 } 542 543 if (find_any_ssid) { 544 + u8 new_mode = assoc_req->mode; 545 546 ret = lbs_find_best_network_ssid(priv, assoc_req->ssid, 547 &assoc_req->ssid_len, assoc_req->mode, &new_mode);
+1 -3
drivers/net/wireless/rt2x00/rt61pci.c
··· 2399 * beacon frame. 2400 */ 2401 if (skb_headroom(skb) < TXD_DESC_SIZE) { 2402 - if (pskb_expand_head(skb, TXD_DESC_SIZE, 0, GFP_ATOMIC)) { 2403 - dev_kfree_skb(skb); 2404 return -ENOMEM; 2405 - } 2406 } 2407 2408 /*
··· 2399 * beacon frame. 2400 */ 2401 if (skb_headroom(skb) < TXD_DESC_SIZE) { 2402 + if (pskb_expand_head(skb, TXD_DESC_SIZE, 0, GFP_ATOMIC)) 2403 return -ENOMEM; 2404 } 2405 2406 /*
+7 -6
drivers/ssb/driver_mipscore.c
··· 109 clear_irq(bus, oldirq); 110 111 /* assign the new one */ 112 - if (irq == 0) 113 - ssb_write32(mdev, SSB_INTVEC, ((1 << irqflag) & ssb_read32(mdev, SSB_INTVEC))); 114 - 115 - irqflag <<= ipsflag_irq_shift[irq]; 116 - irqflag |= (ssb_read32(mdev, SSB_IPSFLAG) & ~ipsflag_irq_mask[irq]); 117 - ssb_write32(mdev, SSB_IPSFLAG, irqflag); 118 } 119 120 static void ssb_mips_serial_init(struct ssb_mipscore *mcore)
··· 109 clear_irq(bus, oldirq); 110 111 /* assign the new one */ 112 + if (irq == 0) { 113 + ssb_write32(mdev, SSB_INTVEC, ((1 << irqflag) | ssb_read32(mdev, SSB_INTVEC))); 114 + } else { 115 + irqflag <<= ipsflag_irq_shift[irq]; 116 + irqflag |= (ssb_read32(mdev, SSB_IPSFLAG) & ~ipsflag_irq_mask[irq]); 117 + ssb_write32(mdev, SSB_IPSFLAG, irqflag); 118 + } 119 } 120 121 static void ssb_mips_serial_init(struct ssb_mipscore *mcore)
+1 -1
drivers/ssb/driver_pcicore.c
··· 551 } else { 552 tmp = ssb_read32(dev, SSB_TPSFLAG); 553 tmp &= SSB_TPSFLAG_BPFLAG; 554 - intvec |= tmp; 555 } 556 ssb_write32(pdev, SSB_INTVEC, intvec); 557 }
··· 551 } else { 552 tmp = ssb_read32(dev, SSB_TPSFLAG); 553 tmp &= SSB_TPSFLAG_BPFLAG; 554 + intvec |= (1 << tmp); 555 } 556 ssb_write32(pdev, SSB_INTVEC, intvec); 557 }
+6
drivers/ssb/main.c
··· 1044 goto out; 1045 1046 cc = &bus->chipco; 1047 ssb_chipco_set_clockmode(cc, SSB_CLKMODE_SLOW); 1048 err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0); 1049 if (err)
··· 1044 goto out; 1045 1046 cc = &bus->chipco; 1047 + 1048 + if (!cc->dev) 1049 + goto out; 1050 + if (cc->dev->id.revision < 5) 1051 + goto out; 1052 + 1053 ssb_chipco_set_clockmode(cc, SSB_CLKMODE_SLOW); 1054 err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0); 1055 if (err)
+35 -8
net/mac80211/ieee80211_sta.c
··· 312 } 313 } 314 315 - 316 - static u32 ieee80211_handle_erp_ie(struct ieee80211_sub_if_data *sdata, 317 - u8 erp_value) 318 { 319 struct ieee80211_bss_conf *bss_conf = &sdata->bss_conf; 320 struct ieee80211_if_sta *ifsta = &sdata->u.sta; 321 - bool use_protection = (erp_value & WLAN_ERP_USE_PROTECTION) != 0; 322 - bool use_short_preamble = (erp_value & WLAN_ERP_BARKER_PREAMBLE) == 0; 323 DECLARE_MAC_BUF(mac); 324 u32 changed = 0; 325 ··· 343 } 344 bss_conf->use_short_preamble = use_short_preamble; 345 changed |= BSS_CHANGED_ERP_PREAMBLE; 346 } 347 348 return changed; ··· 492 local->hw.conf.channel, 493 ifsta->ssid, ifsta->ssid_len); 494 if (bss) { 495 - if (bss->has_erp_value) 496 - changed |= ieee80211_handle_erp_ie( 497 - sdata, bss->erp_value); 498 ieee80211_rx_bss_put(dev, bss); 499 } 500 ··· 2138 2139 if (elems.erp_info && elems.erp_info_len >= 1) 2140 changed |= ieee80211_handle_erp_ie(sdata, elems.erp_info[0]); 2141 2142 if (elems.ht_cap_elem && elems.ht_info_elem && 2143 elems.wmm_param && local->ops->conf_ht &&
··· 312 } 313 } 314 315 + static u32 ieee80211_handle_protect_preamb(struct ieee80211_sub_if_data *sdata, 316 + bool use_protection, 317 + bool use_short_preamble) 318 { 319 struct ieee80211_bss_conf *bss_conf = &sdata->bss_conf; 320 struct ieee80211_if_sta *ifsta = &sdata->u.sta; 321 DECLARE_MAC_BUF(mac); 322 u32 changed = 0; 323 ··· 345 } 346 bss_conf->use_short_preamble = use_short_preamble; 347 changed |= BSS_CHANGED_ERP_PREAMBLE; 348 + } 349 + 350 + return changed; 351 + } 352 + 353 + static u32 ieee80211_handle_erp_ie(struct ieee80211_sub_if_data *sdata, 354 + u8 erp_value) 355 + { 356 + bool use_protection = (erp_value & WLAN_ERP_USE_PROTECTION) != 0; 357 + bool use_short_preamble = (erp_value & WLAN_ERP_BARKER_PREAMBLE) == 0; 358 + 359 + return ieee80211_handle_protect_preamb(sdata, 360 + use_protection, use_short_preamble); 361 + } 362 + 363 + static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata, 364 + struct ieee80211_sta_bss *bss) 365 + { 366 + u32 changed = 0; 367 + 368 + if (bss->has_erp_value) 369 + changed |= ieee80211_handle_erp_ie(sdata, bss->erp_value); 370 + else { 371 + u16 capab = bss->capability; 372 + changed |= ieee80211_handle_protect_preamb(sdata, false, 373 + (capab & WLAN_CAPABILITY_SHORT_PREAMBLE) != 0); 374 } 375 376 return changed; ··· 468 local->hw.conf.channel, 469 ifsta->ssid, ifsta->ssid_len); 470 if (bss) { 471 + changed |= ieee80211_handle_bss_capability(sdata, bss); 472 ieee80211_rx_bss_put(dev, bss); 473 } 474 ··· 2116 2117 if (elems.erp_info && elems.erp_info_len >= 1) 2118 changed |= ieee80211_handle_erp_ie(sdata, elems.erp_info[0]); 2119 + else { 2120 + u16 capab = le16_to_cpu(mgmt->u.beacon.capab_info); 2121 + changed |= ieee80211_handle_protect_preamb(sdata, false, 2122 + (capab & WLAN_CAPABILITY_SHORT_PREAMBLE) != 0); 2123 + } 2124 2125 if (elems.ht_cap_elem && elems.ht_info_elem && 2126 elems.wmm_param && local->ops->conf_ht &&
+1 -1
net/wireless/nl80211.c
··· 945 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); 946 params.listen_interval = 947 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); 948 - params.listen_interval = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); 949 950 if (parse_station_flags(info->attrs[NL80211_ATTR_STA_FLAGS], 951 &params.station_flags))
··· 945 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); 946 params.listen_interval = 947 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); 948 + params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); 949 950 if (parse_station_flags(info->attrs[NL80211_ATTR_STA_FLAGS], 951 &params.station_flags))