mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (108 commits)
bridge: ensure to unlock in error path in br_multicast_query().
drivers/net/tulip/eeprom.c: fix bogus "(null)" in tulip init messages
sky2: Avoid rtnl_unlock without rtnl_lock
ipv6: Send netlink notification when DAD fails
drivers/net/tg3.c: change the field used with the TG3_FLAG_10_100_ONLY constant
ipconfig: Handle devices which take some time to come up.
mac80211: Fix memory leak in ieee80211_if_write()
mac80211: Fix (dynamic) power save entry
ipw2200: use kmalloc for large local variables
ath5k: read eeprom IQ calibration values correctly for G mode
ath5k: fix I/Q calibration (for real)
ath5k: fix TSF reset
ath5k: use fixed antenna for tx descriptors
libipw: split ieee->networks into small pieces
mac80211: Fix sta_mtx unlocking on insert STA failure path
rt2x00: remove KSEG1ADDR define from rt2x00soc.h
net: add ColdFire support to the smc91x driver
asix: fix setting mac address for AX88772
ipv6 ip6_tunnel: eliminate unused recursion field from ip6_tnl{}.
net: Fix dev_mc_add()
...
This commit is contained in:
commit
d89b218b80
114 changed files with 1298 additions and 23810 deletions
|
|
@ -48,20 +48,24 @@ static ssize_t ieee80211_if_write(
|
|||
ssize_t (*write)(struct ieee80211_sub_if_data *, const char *, int))
|
||||
{
|
||||
u8 *buf;
|
||||
ssize_t ret = -ENODEV;
|
||||
ssize_t ret;
|
||||
|
||||
buf = kzalloc(count, GFP_KERNEL);
|
||||
buf = kmalloc(count, GFP_KERNEL);
|
||||
if (!buf)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = -EFAULT;
|
||||
if (copy_from_user(buf, userbuf, count))
|
||||
return -EFAULT;
|
||||
goto freebuf;
|
||||
|
||||
ret = -ENODEV;
|
||||
rtnl_lock();
|
||||
if (sdata->dev->reg_state == NETREG_REGISTERED)
|
||||
ret = (*write)(sdata, buf, count);
|
||||
rtnl_unlock();
|
||||
|
||||
freebuf:
|
||||
kfree(buf);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -177,7 +177,8 @@ static u32 ieee80211_enable_ht(struct ieee80211_sub_if_data *sdata,
|
|||
sta = sta_info_get(sdata, bssid);
|
||||
if (sta)
|
||||
rate_control_rate_update(local, sband, sta,
|
||||
IEEE80211_RC_HT_CHANGED);
|
||||
IEEE80211_RC_HT_CHANGED,
|
||||
local->oper_channel_type);
|
||||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
|
|
@ -435,10 +436,12 @@ static void ieee80211_enable_ps(struct ieee80211_local *local,
|
|||
if (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK)
|
||||
ieee80211_send_nullfunc(local, sdata, 1);
|
||||
|
||||
if (!(local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS)) {
|
||||
conf->flags |= IEEE80211_CONF_PS;
|
||||
ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
|
||||
}
|
||||
if ((local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK) &&
|
||||
(local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS))
|
||||
return;
|
||||
|
||||
conf->flags |= IEEE80211_CONF_PS;
|
||||
ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -557,7 +560,8 @@ void ieee80211_dynamic_ps_enable_work(struct work_struct *work)
|
|||
(!(ifmgd->flags & IEEE80211_STA_NULLFUNC_ACKED)))
|
||||
ieee80211_send_nullfunc(local, sdata, 1);
|
||||
|
||||
if (!(local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS) ||
|
||||
if (!((local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS) &&
|
||||
(local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK)) ||
|
||||
(ifmgd->flags & IEEE80211_STA_NULLFUNC_ACKED)) {
|
||||
ifmgd->flags &= ~IEEE80211_STA_NULLFUNC_ACKED;
|
||||
local->hw.conf.flags |= IEEE80211_CONF_PS;
|
||||
|
|
@ -1893,8 +1897,20 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
|
|||
|
||||
mutex_lock(&ifmgd->mtx);
|
||||
if (ifmgd->associated) {
|
||||
mutex_unlock(&ifmgd->mtx);
|
||||
return -EALREADY;
|
||||
if (!req->prev_bssid ||
|
||||
memcmp(req->prev_bssid, ifmgd->associated->bssid,
|
||||
ETH_ALEN)) {
|
||||
/*
|
||||
* We are already associated and the request was not a
|
||||
* reassociation request from the current BSS, so
|
||||
* reject it.
|
||||
*/
|
||||
mutex_unlock(&ifmgd->mtx);
|
||||
return -EALREADY;
|
||||
}
|
||||
|
||||
/* Trying to reassociate - clear previous association state */
|
||||
ieee80211_set_disassoc(sdata);
|
||||
}
|
||||
mutex_unlock(&ifmgd->mtx);
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,8 @@ static inline void rate_control_rate_init(struct sta_info *sta)
|
|||
|
||||
static inline void rate_control_rate_update(struct ieee80211_local *local,
|
||||
struct ieee80211_supported_band *sband,
|
||||
struct sta_info *sta, u32 changed)
|
||||
struct sta_info *sta, u32 changed,
|
||||
enum nl80211_channel_type oper_chan_type)
|
||||
{
|
||||
struct rate_control_ref *ref = local->rate_ctrl;
|
||||
struct ieee80211_sta *ista = &sta->sta;
|
||||
|
|
@ -74,7 +75,7 @@ static inline void rate_control_rate_update(struct ieee80211_local *local,
|
|||
|
||||
if (ref && ref->ops->rate_update)
|
||||
ref->ops->rate_update(ref->priv, sband, ista,
|
||||
priv_sta, changed);
|
||||
priv_sta, changed, oper_chan_type);
|
||||
}
|
||||
|
||||
static inline void *rate_control_alloc_sta(struct rate_control_ref *ref,
|
||||
|
|
|
|||
|
|
@ -434,6 +434,7 @@ int sta_info_insert_rcu(struct sta_info *sta) __acquires(RCU)
|
|||
/* check if STA exists already */
|
||||
if (sta_info_get_bss(sdata, sta->sta.addr)) {
|
||||
spin_unlock_irqrestore(&local->sta_lock, flags);
|
||||
mutex_unlock(&local->sta_mtx);
|
||||
rcu_read_lock();
|
||||
err = -EEXIST;
|
||||
goto out_free;
|
||||
|
|
|
|||
Loading…
Reference in a new issue