Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
This commit is contained in:
commit
1f7e010282
@ -1940,6 +1940,11 @@ enum ieee80211_rate_control_changed {
|
|||||||
* to also unregister the device. If it returns 1, then mac80211
|
* to also unregister the device. If it returns 1, then mac80211
|
||||||
* will also go through the regular complete restart on resume.
|
* will also go through the regular complete restart on resume.
|
||||||
*
|
*
|
||||||
|
* @set_wakeup: Enable or disable wakeup when WoWLAN configuration is
|
||||||
|
* modified. The reason is that device_set_wakeup_enable() is
|
||||||
|
* supposed to be called when the configuration changes, not only
|
||||||
|
* in suspend().
|
||||||
|
*
|
||||||
* @add_interface: Called when a netdevice attached to the hardware is
|
* @add_interface: Called when a netdevice attached to the hardware is
|
||||||
* enabled. Because it is not called for monitor mode devices, @start
|
* enabled. Because it is not called for monitor mode devices, @start
|
||||||
* and @stop must be implemented.
|
* and @stop must be implemented.
|
||||||
@ -2966,6 +2971,7 @@ __le16 ieee80211_ctstoself_duration(struct ieee80211_hw *hw,
|
|||||||
* ieee80211_generic_frame_duration - Calculate the duration field for a frame
|
* ieee80211_generic_frame_duration - Calculate the duration field for a frame
|
||||||
* @hw: pointer obtained from ieee80211_alloc_hw().
|
* @hw: pointer obtained from ieee80211_alloc_hw().
|
||||||
* @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
* @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
||||||
|
* @band: the band to calculate the frame duration on
|
||||||
* @frame_len: the length of the frame.
|
* @frame_len: the length of the frame.
|
||||||
* @rate: the rate at which the frame is going to be transmitted.
|
* @rate: the rate at which the frame is going to be transmitted.
|
||||||
*
|
*
|
||||||
|
@ -2093,6 +2093,9 @@ static int ieee80211_set_bitrate_mask(struct wiphy *wiphy,
|
|||||||
struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
|
struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
|
||||||
int i, ret;
|
int i, ret;
|
||||||
|
|
||||||
|
if (!ieee80211_sdata_running(sdata))
|
||||||
|
return -ENETDOWN;
|
||||||
|
|
||||||
if (local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL) {
|
if (local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL) {
|
||||||
ret = drv_set_bitrate_mask(local, sdata, mask);
|
ret = drv_set_bitrate_mask(local, sdata, mask);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -1352,6 +1352,8 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
|
|||||||
if (WARN_ON(!ifmgd->associated))
|
if (WARN_ON(!ifmgd->associated))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
ieee80211_stop_poll(sdata);
|
||||||
|
|
||||||
memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN);
|
memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN);
|
||||||
|
|
||||||
ifmgd->associated = NULL;
|
ifmgd->associated = NULL;
|
||||||
@ -2612,8 +2614,6 @@ static void ieee80211_sta_connection_lost(struct ieee80211_sub_if_data *sdata,
|
|||||||
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
|
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
|
||||||
u8 frame_buf[DEAUTH_DISASSOC_LEN];
|
u8 frame_buf[DEAUTH_DISASSOC_LEN];
|
||||||
|
|
||||||
ieee80211_stop_poll(sdata);
|
|
||||||
|
|
||||||
ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH, reason,
|
ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH, reason,
|
||||||
false, frame_buf);
|
false, frame_buf);
|
||||||
mutex_unlock(&ifmgd->mtx);
|
mutex_unlock(&ifmgd->mtx);
|
||||||
|
@ -271,6 +271,9 @@ struct sta_ampdu_mlme {
|
|||||||
* @plink_timer: peer link watch timer
|
* @plink_timer: peer link watch timer
|
||||||
* @plink_timer_was_running: used by suspend/resume to restore timers
|
* @plink_timer_was_running: used by suspend/resume to restore timers
|
||||||
* @t_offset: timing offset relative to this host
|
* @t_offset: timing offset relative to this host
|
||||||
|
* @t_offset_setpoint: reference timing offset of this sta to be used when
|
||||||
|
* calculating clockdrift
|
||||||
|
* @ch_type: peer's channel type
|
||||||
* @debugfs: debug filesystem info
|
* @debugfs: debug filesystem info
|
||||||
* @dead: set to true when sta is unlinked
|
* @dead: set to true when sta is unlinked
|
||||||
* @uploaded: set to true when sta is uploaded to the driver
|
* @uploaded: set to true when sta is uploaded to the driver
|
||||||
@ -278,6 +281,8 @@ struct sta_ampdu_mlme {
|
|||||||
* @sta: station information we share with the driver
|
* @sta: station information we share with the driver
|
||||||
* @sta_state: duplicates information about station state (for debug)
|
* @sta_state: duplicates information about station state (for debug)
|
||||||
* @beacon_loss_count: number of times beacon loss has triggered
|
* @beacon_loss_count: number of times beacon loss has triggered
|
||||||
|
* @supports_40mhz: tracks whether the station advertised 40 MHz support
|
||||||
|
* as we overwrite its HT parameters with the currently used value
|
||||||
*/
|
*/
|
||||||
struct sta_info {
|
struct sta_info {
|
||||||
/* General information, mostly static */
|
/* General information, mostly static */
|
||||||
|
@ -1389,7 +1389,7 @@ static void reg_set_request_processed(void)
|
|||||||
spin_unlock(®_requests_lock);
|
spin_unlock(®_requests_lock);
|
||||||
|
|
||||||
if (last_request->initiator == NL80211_REGDOM_SET_BY_USER)
|
if (last_request->initiator == NL80211_REGDOM_SET_BY_USER)
|
||||||
cancel_delayed_work_sync(®_timeout);
|
cancel_delayed_work(®_timeout);
|
||||||
|
|
||||||
if (need_more_processing)
|
if (need_more_processing)
|
||||||
schedule_work(®_work);
|
schedule_work(®_work);
|
||||||
|
@ -804,7 +804,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
|
|||||||
ntype == NL80211_IFTYPE_P2P_CLIENT))
|
ntype == NL80211_IFTYPE_P2P_CLIENT))
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
||||||
if (ntype != otype) {
|
if (ntype != otype && netif_running(dev)) {
|
||||||
err = cfg80211_can_change_interface(rdev, dev->ieee80211_ptr,
|
err = cfg80211_can_change_interface(rdev, dev->ieee80211_ptr,
|
||||||
ntype);
|
ntype);
|
||||||
if (err)
|
if (err)
|
||||||
|
Loading…
Reference in New Issue
Block a user