Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
This commit is contained in:
Коммит
b41f5bfff7
|
@ -11577,6 +11577,7 @@ static int ipw_prom_alloc(struct ipw_priv *priv)
|
|||
priv->prom_priv->priv = priv;
|
||||
|
||||
strcpy(priv->prom_net_dev->name, "rtap%d");
|
||||
memcpy(priv->prom_net_dev->dev_addr, priv->mac_addr, ETH_ALEN);
|
||||
|
||||
priv->prom_net_dev->type = ARPHRD_IEEE80211_RADIOTAP;
|
||||
priv->prom_net_dev->open = ipw_prom_open;
|
||||
|
|
|
@ -35,7 +35,6 @@ config IWL4965_HT
|
|||
bool "Enable 802.11n HT features in iwl4965 driver"
|
||||
depends on EXPERIMENTAL
|
||||
depends on IWL4965 && IWL4965_QOS
|
||||
depends on n
|
||||
---help---
|
||||
This option enables IEEE 802.11n High Throughput features
|
||||
for the iwl4965 driver.
|
||||
|
|
|
@ -541,7 +541,7 @@ void lbs_association_worker(struct work_struct *work)
|
|||
}
|
||||
|
||||
if (find_any_ssid) {
|
||||
u8 new_mode;
|
||||
u8 new_mode = assoc_req->mode;
|
||||
|
||||
ret = lbs_find_best_network_ssid(priv, assoc_req->ssid,
|
||||
&assoc_req->ssid_len, assoc_req->mode, &new_mode);
|
||||
|
|
|
@ -2399,10 +2399,8 @@ static int rt61pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb,
|
|||
* beacon frame.
|
||||
*/
|
||||
if (skb_headroom(skb) < TXD_DESC_SIZE) {
|
||||
if (pskb_expand_head(skb, TXD_DESC_SIZE, 0, GFP_ATOMIC)) {
|
||||
dev_kfree_skb(skb);
|
||||
if (pskb_expand_head(skb, TXD_DESC_SIZE, 0, GFP_ATOMIC))
|
||||
return -ENOMEM;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -109,12 +109,13 @@ static void set_irq(struct ssb_device *dev, unsigned int irq)
|
|||
clear_irq(bus, oldirq);
|
||||
|
||||
/* assign the new one */
|
||||
if (irq == 0)
|
||||
ssb_write32(mdev, SSB_INTVEC, ((1 << irqflag) & ssb_read32(mdev, SSB_INTVEC)));
|
||||
|
||||
irqflag <<= ipsflag_irq_shift[irq];
|
||||
irqflag |= (ssb_read32(mdev, SSB_IPSFLAG) & ~ipsflag_irq_mask[irq]);
|
||||
ssb_write32(mdev, SSB_IPSFLAG, irqflag);
|
||||
if (irq == 0) {
|
||||
ssb_write32(mdev, SSB_INTVEC, ((1 << irqflag) | ssb_read32(mdev, SSB_INTVEC)));
|
||||
} else {
|
||||
irqflag <<= ipsflag_irq_shift[irq];
|
||||
irqflag |= (ssb_read32(mdev, SSB_IPSFLAG) & ~ipsflag_irq_mask[irq]);
|
||||
ssb_write32(mdev, SSB_IPSFLAG, irqflag);
|
||||
}
|
||||
}
|
||||
|
||||
static void ssb_mips_serial_init(struct ssb_mipscore *mcore)
|
||||
|
|
|
@ -551,7 +551,7 @@ int ssb_pcicore_dev_irqvecs_enable(struct ssb_pcicore *pc,
|
|||
} else {
|
||||
tmp = ssb_read32(dev, SSB_TPSFLAG);
|
||||
tmp &= SSB_TPSFLAG_BPFLAG;
|
||||
intvec |= tmp;
|
||||
intvec |= (1 << tmp);
|
||||
}
|
||||
ssb_write32(pdev, SSB_INTVEC, intvec);
|
||||
}
|
||||
|
|
|
@ -1044,6 +1044,12 @@ int ssb_bus_may_powerdown(struct ssb_bus *bus)
|
|||
goto out;
|
||||
|
||||
cc = &bus->chipco;
|
||||
|
||||
if (!cc->dev)
|
||||
goto out;
|
||||
if (cc->dev->id.revision < 5)
|
||||
goto out;
|
||||
|
||||
ssb_chipco_set_clockmode(cc, SSB_CLKMODE_SLOW);
|
||||
err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0);
|
||||
if (err)
|
||||
|
|
|
@ -312,14 +312,12 @@ static void ieee80211_sta_wmm_params(struct net_device *dev,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static u32 ieee80211_handle_erp_ie(struct ieee80211_sub_if_data *sdata,
|
||||
u8 erp_value)
|
||||
static u32 ieee80211_handle_protect_preamb(struct ieee80211_sub_if_data *sdata,
|
||||
bool use_protection,
|
||||
bool use_short_preamble)
|
||||
{
|
||||
struct ieee80211_bss_conf *bss_conf = &sdata->bss_conf;
|
||||
struct ieee80211_if_sta *ifsta = &sdata->u.sta;
|
||||
bool use_protection = (erp_value & WLAN_ERP_USE_PROTECTION) != 0;
|
||||
bool use_short_preamble = (erp_value & WLAN_ERP_BARKER_PREAMBLE) == 0;
|
||||
DECLARE_MAC_BUF(mac);
|
||||
u32 changed = 0;
|
||||
|
||||
|
@ -350,6 +348,32 @@ static u32 ieee80211_handle_erp_ie(struct ieee80211_sub_if_data *sdata,
|
|||
return changed;
|
||||
}
|
||||
|
||||
static u32 ieee80211_handle_erp_ie(struct ieee80211_sub_if_data *sdata,
|
||||
u8 erp_value)
|
||||
{
|
||||
bool use_protection = (erp_value & WLAN_ERP_USE_PROTECTION) != 0;
|
||||
bool use_short_preamble = (erp_value & WLAN_ERP_BARKER_PREAMBLE) == 0;
|
||||
|
||||
return ieee80211_handle_protect_preamb(sdata,
|
||||
use_protection, use_short_preamble);
|
||||
}
|
||||
|
||||
static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata,
|
||||
struct ieee80211_sta_bss *bss)
|
||||
{
|
||||
u32 changed = 0;
|
||||
|
||||
if (bss->has_erp_value)
|
||||
changed |= ieee80211_handle_erp_ie(sdata, bss->erp_value);
|
||||
else {
|
||||
u16 capab = bss->capability;
|
||||
changed |= ieee80211_handle_protect_preamb(sdata, false,
|
||||
(capab & WLAN_CAPABILITY_SHORT_PREAMBLE) != 0);
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
int ieee80211_ht_cap_ie_to_ht_info(struct ieee80211_ht_cap *ht_cap_ie,
|
||||
struct ieee80211_ht_info *ht_info)
|
||||
{
|
||||
|
@ -468,9 +492,7 @@ static void ieee80211_set_associated(struct net_device *dev,
|
|||
local->hw.conf.channel,
|
||||
ifsta->ssid, ifsta->ssid_len);
|
||||
if (bss) {
|
||||
if (bss->has_erp_value)
|
||||
changed |= ieee80211_handle_erp_ie(
|
||||
sdata, bss->erp_value);
|
||||
changed |= ieee80211_handle_bss_capability(sdata, bss);
|
||||
ieee80211_rx_bss_put(dev, bss);
|
||||
}
|
||||
|
||||
|
@ -2116,6 +2138,11 @@ static void ieee80211_rx_mgmt_beacon(struct net_device *dev,
|
|||
|
||||
if (elems.erp_info && elems.erp_info_len >= 1)
|
||||
changed |= ieee80211_handle_erp_ie(sdata, elems.erp_info[0]);
|
||||
else {
|
||||
u16 capab = le16_to_cpu(mgmt->u.beacon.capab_info);
|
||||
changed |= ieee80211_handle_protect_preamb(sdata, false,
|
||||
(capab & WLAN_CAPABILITY_SHORT_PREAMBLE) != 0);
|
||||
}
|
||||
|
||||
if (elems.ht_cap_elem && elems.ht_info_elem &&
|
||||
elems.wmm_param && local->ops->conf_ht &&
|
||||
|
|
|
@ -945,7 +945,7 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
|
|||
nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]);
|
||||
params.listen_interval =
|
||||
nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]);
|
||||
params.listen_interval = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]);
|
||||
params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]);
|
||||
|
||||
if (parse_station_flags(info->attrs[NL80211_ATTR_STA_FLAGS],
|
||||
¶ms.station_flags))
|
||||
|
|
Загрузка…
Ссылка в новой задаче