Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
abf52f86
Commit
abf52f86
authored
Jun 17, 2010
by
John W. Linville
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
Conflicts: net/mac80211/mlme.c
parents
6a0076e0
021570e5
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
96 additions
and
18 deletions
+96
-18
MAINTAINERS
MAINTAINERS
+2
-8
drivers/net/wireless/hostap/hostap_cs.c
drivers/net/wireless/hostap/hostap_cs.c
+13
-2
drivers/net/wireless/hostap/hostap_hw.c
drivers/net/wireless/hostap/hostap_hw.c
+13
-0
drivers/net/wireless/hostap/hostap_wlan.h
drivers/net/wireless/hostap/hostap_wlan.h
+1
-1
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
+7
-0
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-agn.c
+6
-2
drivers/net/wireless/iwlwifi/iwl-scan.c
drivers/net/wireless/iwlwifi/iwl-scan.c
+1
-0
drivers/net/wireless/iwlwifi/iwl-sta.c
drivers/net/wireless/iwlwifi/iwl-sta.c
+4
-0
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/iwlwifi/iwl3945-base.c
+7
-2
drivers/net/wireless/libertas_tf/main.c
drivers/net/wireless/libertas_tf/main.c
+1
-1
drivers/net/wireless/p54/p54pci.c
drivers/net/wireless/p54/p54pci.c
+2
-0
net/mac80211/mlme.c
net/mac80211/mlme.c
+38
-1
net/mac80211/work.c
net/mac80211/work.c
+1
-1
No files found.
MAINTAINERS
View file @
abf52f86
...
@@ -2966,20 +2966,14 @@ F: drivers/net/ixgb/
...
@@ -2966,20 +2966,14 @@ F: drivers/net/ixgb/
F: drivers/net/ixgbe/
F: drivers/net/ixgbe/
INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
M: Reinette Chatre <reinette.chatre@intel.com>
M: Intel Linux Wireless <ilw@linux.intel.com>
L: linux-wireless@vger.kernel.org
L: linux-wireless@vger.kernel.org
W: http://ipw2100.sourceforge.net
S: Orphan
S: Odd Fixes
F: Documentation/networking/README.ipw2100
F: Documentation/networking/README.ipw2100
F: drivers/net/wireless/ipw2x00/ipw2100.*
F: drivers/net/wireless/ipw2x00/ipw2100.*
INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT
INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT
M: Reinette Chatre <reinette.chatre@intel.com>
M: Intel Linux Wireless <ilw@linux.intel.com>
L: linux-wireless@vger.kernel.org
L: linux-wireless@vger.kernel.org
W: http://ipw2200.sourceforge.net
S: Orphan
S: Odd Fixes
F: Documentation/networking/README.ipw2200
F: Documentation/networking/README.ipw2200
F: drivers/net/wireless/ipw2x00/ipw2200.*
F: drivers/net/wireless/ipw2x00/ipw2200.*
...
...
drivers/net/wireless/hostap/hostap_cs.c
View file @
abf52f86
...
@@ -594,6 +594,7 @@ static int prism2_config(struct pcmcia_device *link)
...
@@ -594,6 +594,7 @@ static int prism2_config(struct pcmcia_device *link)
local_info_t
*
local
;
local_info_t
*
local
;
int
ret
=
1
;
int
ret
=
1
;
struct
hostap_cs_priv
*
hw_priv
;
struct
hostap_cs_priv
*
hw_priv
;
unsigned
long
flags
;
PDEBUG
(
DEBUG_FLOW
,
"prism2_config()
\n
"
);
PDEBUG
(
DEBUG_FLOW
,
"prism2_config()
\n
"
);
...
@@ -625,9 +626,15 @@ static int prism2_config(struct pcmcia_device *link)
...
@@ -625,9 +626,15 @@ static int prism2_config(struct pcmcia_device *link)
local
->
hw_priv
=
hw_priv
;
local
->
hw_priv
=
hw_priv
;
hw_priv
->
link
=
link
;
hw_priv
->
link
=
link
;
/*
* Make sure the IRQ handler cannot proceed until at least
* dev->base_addr is initialized.
*/
spin_lock_irqsave
(
&
local
->
irq_init_lock
,
flags
);
ret
=
pcmcia_request_irq
(
link
,
prism2_interrupt
);
ret
=
pcmcia_request_irq
(
link
,
prism2_interrupt
);
if
(
ret
)
if
(
ret
)
goto
failed
;
goto
failed
_unlock
;
/*
/*
* This actually configures the PCMCIA socket -- setting up
* This actually configures the PCMCIA socket -- setting up
...
@@ -636,11 +643,13 @@ static int prism2_config(struct pcmcia_device *link)
...
@@ -636,11 +643,13 @@ static int prism2_config(struct pcmcia_device *link)
*/
*/
ret
=
pcmcia_request_configuration
(
link
,
&
link
->
conf
);
ret
=
pcmcia_request_configuration
(
link
,
&
link
->
conf
);
if
(
ret
)
if
(
ret
)
goto
failed
;
goto
failed
_unlock
;
dev
->
irq
=
link
->
irq
;
dev
->
irq
=
link
->
irq
;
dev
->
base_addr
=
link
->
io
.
BasePort1
;
dev
->
base_addr
=
link
->
io
.
BasePort1
;
spin_unlock_irqrestore
(
&
local
->
irq_init_lock
,
flags
);
/* Finally, report what we've done */
/* Finally, report what we've done */
printk
(
KERN_INFO
"%s: index 0x%02x: "
,
printk
(
KERN_INFO
"%s: index 0x%02x: "
,
dev_info
,
link
->
conf
.
ConfigIndex
);
dev_info
,
link
->
conf
.
ConfigIndex
);
...
@@ -667,6 +676,8 @@ static int prism2_config(struct pcmcia_device *link)
...
@@ -667,6 +676,8 @@ static int prism2_config(struct pcmcia_device *link)
return
ret
;
return
ret
;
failed_unlock:
spin_unlock_irqrestore
(
&
local
->
irq_init_lock
,
flags
);
failed:
failed:
kfree
(
hw_priv
);
kfree
(
hw_priv
);
prism2_release
((
u_long
)
link
);
prism2_release
((
u_long
)
link
);
...
...
drivers/net/wireless/hostap/hostap_hw.c
View file @
abf52f86
...
@@ -2621,6 +2621,18 @@ static irqreturn_t prism2_interrupt(int irq, void *dev_id)
...
@@ -2621,6 +2621,18 @@ static irqreturn_t prism2_interrupt(int irq, void *dev_id)
iface
=
netdev_priv
(
dev
);
iface
=
netdev_priv
(
dev
);
local
=
iface
->
local
;
local
=
iface
->
local
;
/* Detect early interrupt before driver is fully configued */
spin_lock
(
&
local
->
irq_init_lock
);
if
(
!
dev
->
base_addr
)
{
if
(
net_ratelimit
())
{
printk
(
KERN_DEBUG
"%s: Interrupt, but dev not configured
\n
"
,
dev
->
name
);
}
spin_unlock
(
&
local
->
irq_init_lock
);
return
IRQ_HANDLED
;
}
spin_unlock
(
&
local
->
irq_init_lock
);
prism2_io_debug_add
(
dev
,
PRISM2_IO_DEBUG_CMD_INTERRUPT
,
0
,
0
);
prism2_io_debug_add
(
dev
,
PRISM2_IO_DEBUG_CMD_INTERRUPT
,
0
,
0
);
if
(
local
->
func
->
card_present
&&
!
local
->
func
->
card_present
(
local
))
{
if
(
local
->
func
->
card_present
&&
!
local
->
func
->
card_present
(
local
))
{
...
@@ -3138,6 +3150,7 @@ prism2_init_local_data(struct prism2_helper_functions *funcs, int card_idx,
...
@@ -3138,6 +3150,7 @@ prism2_init_local_data(struct prism2_helper_functions *funcs, int card_idx,
spin_lock_init
(
&
local
->
cmdlock
);
spin_lock_init
(
&
local
->
cmdlock
);
spin_lock_init
(
&
local
->
baplock
);
spin_lock_init
(
&
local
->
baplock
);
spin_lock_init
(
&
local
->
lock
);
spin_lock_init
(
&
local
->
lock
);
spin_lock_init
(
&
local
->
irq_init_lock
);
mutex_init
(
&
local
->
rid_bap_mtx
);
mutex_init
(
&
local
->
rid_bap_mtx
);
if
(
card_idx
<
0
||
card_idx
>=
MAX_PARM_DEVICES
)
if
(
card_idx
<
0
||
card_idx
>=
MAX_PARM_DEVICES
)
...
...
drivers/net/wireless/hostap/hostap_wlan.h
View file @
abf52f86
...
@@ -654,7 +654,7 @@ struct local_info {
...
@@ -654,7 +654,7 @@ struct local_info {
rwlock_t
iface_lock
;
/* hostap_interfaces read lock; use write lock
rwlock_t
iface_lock
;
/* hostap_interfaces read lock; use write lock
* when removing entries from the list.
* when removing entries from the list.
* TX and RX paths can use read lock. */
* TX and RX paths can use read lock. */
spinlock_t
cmdlock
,
baplock
,
lock
;
spinlock_t
cmdlock
,
baplock
,
lock
,
irq_init_lock
;
struct
mutex
rid_bap_mtx
;
struct
mutex
rid_bap_mtx
;
u16
infofid
;
/* MAC buffer id for info frame */
u16
infofid
;
/* MAC buffer id for info frame */
/* txfid, intransmitfid, next_txtid, and next_alloc are protected by
/* txfid, intransmitfid, next_txtid, and next_alloc are protected by
...
...
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
View file @
abf52f86
...
@@ -1147,6 +1147,7 @@ static void iwlagn_tx_status(struct iwl_priv *priv, struct sk_buff *skb)
...
@@ -1147,6 +1147,7 @@ static void iwlagn_tx_status(struct iwl_priv *priv, struct sk_buff *skb)
struct
ieee80211_sta
*
sta
;
struct
ieee80211_sta
*
sta
;
struct
iwl_station_priv
*
sta_priv
;
struct
iwl_station_priv
*
sta_priv
;
rcu_read_lock
();
sta
=
ieee80211_find_sta
(
priv
->
vif
,
hdr
->
addr1
);
sta
=
ieee80211_find_sta
(
priv
->
vif
,
hdr
->
addr1
);
if
(
sta
)
{
if
(
sta
)
{
sta_priv
=
(
void
*
)
sta
->
drv_priv
;
sta_priv
=
(
void
*
)
sta
->
drv_priv
;
...
@@ -1155,6 +1156,7 @@ static void iwlagn_tx_status(struct iwl_priv *priv, struct sk_buff *skb)
...
@@ -1155,6 +1156,7 @@ static void iwlagn_tx_status(struct iwl_priv *priv, struct sk_buff *skb)
atomic_dec_return
(
&
sta_priv
->
pending_frames
)
==
0
)
atomic_dec_return
(
&
sta_priv
->
pending_frames
)
==
0
)
ieee80211_sta_block_awake
(
priv
->
hw
,
sta
,
false
);
ieee80211_sta_block_awake
(
priv
->
hw
,
sta
,
false
);
}
}
rcu_read_unlock
();
ieee80211_tx_status_irqsafe
(
priv
->
hw
,
skb
);
ieee80211_tx_status_irqsafe
(
priv
->
hw
,
skb
);
}
}
...
@@ -1322,6 +1324,11 @@ void iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv,
...
@@ -1322,6 +1324,11 @@ void iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv,
sta_id
=
ba_resp
->
sta_id
;
sta_id
=
ba_resp
->
sta_id
;
tid
=
ba_resp
->
tid
;
tid
=
ba_resp
->
tid
;
agg
=
&
priv
->
stations
[
sta_id
].
tid
[
tid
].
agg
;
agg
=
&
priv
->
stations
[
sta_id
].
tid
[
tid
].
agg
;
if
(
unlikely
(
agg
->
txq_id
!=
scd_flow
))
{
IWL_ERR
(
priv
,
"BA scd_flow %d does not match txq_id %d
\n
"
,
scd_flow
,
agg
->
txq_id
);
return
;
}
/* Find index just before block-ack window */
/* Find index just before block-ack window */
index
=
iwl_queue_dec_wrap
(
ba_resp_scd_ssn
&
0xff
,
txq
->
q
.
n_bd
);
index
=
iwl_queue_dec_wrap
(
ba_resp_scd_ssn
&
0xff
,
txq
->
q
.
n_bd
);
...
...
drivers/net/wireless/iwlwifi/iwl-agn.c
View file @
abf52f86
...
@@ -3465,10 +3465,12 @@ static int iwlagn_mac_sta_add(struct ieee80211_hw *hw,
...
@@ -3465,10 +3465,12 @@ static int iwlagn_mac_sta_add(struct ieee80211_hw *hw,
int
ret
;
int
ret
;
u8
sta_id
;
u8
sta_id
;
sta_priv
->
common
.
sta_id
=
IWL_INVALID_STATION
;
IWL_DEBUG_INFO
(
priv
,
"received request to add station %pM
\n
"
,
IWL_DEBUG_INFO
(
priv
,
"received request to add station %pM
\n
"
,
sta
->
addr
);
sta
->
addr
);
mutex_lock
(
&
priv
->
mutex
);
IWL_DEBUG_INFO
(
priv
,
"proceeding to add station %pM
\n
"
,
sta
->
addr
);
sta_priv
->
common
.
sta_id
=
IWL_INVALID_STATION
;
atomic_set
(
&
sta_priv
->
pending_frames
,
0
);
atomic_set
(
&
sta_priv
->
pending_frames
,
0
);
if
(
vif
->
type
==
NL80211_IFTYPE_AP
)
if
(
vif
->
type
==
NL80211_IFTYPE_AP
)
...
@@ -3480,6 +3482,7 @@ static int iwlagn_mac_sta_add(struct ieee80211_hw *hw,
...
@@ -3480,6 +3482,7 @@ static int iwlagn_mac_sta_add(struct ieee80211_hw *hw,
IWL_ERR
(
priv
,
"Unable to add station %pM (%d)
\n
"
,
IWL_ERR
(
priv
,
"Unable to add station %pM (%d)
\n
"
,
sta
->
addr
,
ret
);
sta
->
addr
,
ret
);
/* Should we return success if return code is EEXIST ? */
/* Should we return success if return code is EEXIST ? */
mutex_unlock
(
&
priv
->
mutex
);
return
ret
;
return
ret
;
}
}
...
@@ -3489,6 +3492,7 @@ static int iwlagn_mac_sta_add(struct ieee80211_hw *hw,
...
@@ -3489,6 +3492,7 @@ static int iwlagn_mac_sta_add(struct ieee80211_hw *hw,
IWL_DEBUG_INFO
(
priv
,
"Initializing rate scaling for station %pM
\n
"
,
IWL_DEBUG_INFO
(
priv
,
"Initializing rate scaling for station %pM
\n
"
,
sta
->
addr
);
sta
->
addr
);
iwl_rs_rate_init
(
priv
,
sta
,
sta_id
);
iwl_rs_rate_init
(
priv
,
sta
,
sta_id
);
mutex_unlock
(
&
priv
->
mutex
);
return
0
;
return
0
;
}
}
...
...
drivers/net/wireless/iwlwifi/iwl-scan.c
View file @
abf52f86
...
@@ -500,6 +500,7 @@ void iwl_bg_abort_scan(struct work_struct *work)
...
@@ -500,6 +500,7 @@ void iwl_bg_abort_scan(struct work_struct *work)
mutex_lock
(
&
priv
->
mutex
);
mutex_lock
(
&
priv
->
mutex
);
cancel_delayed_work_sync
(
&
priv
->
scan_check
);
set_bit
(
STATUS_SCAN_ABORTING
,
&
priv
->
status
);
set_bit
(
STATUS_SCAN_ABORTING
,
&
priv
->
status
);
iwl_send_scan_abort
(
priv
);
iwl_send_scan_abort
(
priv
);
...
...
drivers/net/wireless/iwlwifi/iwl-sta.c
View file @
abf52f86
...
@@ -1373,10 +1373,14 @@ int iwl_mac_sta_remove(struct ieee80211_hw *hw,
...
@@ -1373,10 +1373,14 @@ int iwl_mac_sta_remove(struct ieee80211_hw *hw,
IWL_DEBUG_INFO
(
priv
,
"received request to remove station %pM
\n
"
,
IWL_DEBUG_INFO
(
priv
,
"received request to remove station %pM
\n
"
,
sta
->
addr
);
sta
->
addr
);
mutex_lock
(
&
priv
->
mutex
);
IWL_DEBUG_INFO
(
priv
,
"proceeding to remove station %pM
\n
"
,
sta
->
addr
);
ret
=
iwl_remove_station
(
priv
,
sta_common
->
sta_id
,
sta
->
addr
);
ret
=
iwl_remove_station
(
priv
,
sta_common
->
sta_id
,
sta
->
addr
);
if
(
ret
)
if
(
ret
)
IWL_ERR
(
priv
,
"Error removing station %pM
\n
"
,
IWL_ERR
(
priv
,
"Error removing station %pM
\n
"
,
sta
->
addr
);
sta
->
addr
);
mutex_unlock
(
&
priv
->
mutex
);
return
ret
;
return
ret
;
}
}
EXPORT_SYMBOL
(
iwl_mac_sta_remove
);
EXPORT_SYMBOL
(
iwl_mac_sta_remove
);
drivers/net/wireless/iwlwifi/iwl3945-base.c
View file @
abf52f86
...
@@ -3363,10 +3363,13 @@ static int iwl3945_mac_sta_add(struct ieee80211_hw *hw,
...
@@ -3363,10 +3363,13 @@ static int iwl3945_mac_sta_add(struct ieee80211_hw *hw,
bool
is_ap
=
vif
->
type
==
NL80211_IFTYPE_STATION
;
bool
is_ap
=
vif
->
type
==
NL80211_IFTYPE_STATION
;
u8
sta_id
;
u8
sta_id
;
sta_priv
->
common
.
sta_id
=
IWL_INVALID_STATION
;
IWL_DEBUG_INFO
(
priv
,
"received request to add station %pM
\n
"
,
IWL_DEBUG_INFO
(
priv
,
"received request to add station %pM
\n
"
,
sta
->
addr
);
sta
->
addr
);
mutex_lock
(
&
priv
->
mutex
);
IWL_DEBUG_INFO
(
priv
,
"proceeding to add station %pM
\n
"
,
sta
->
addr
);
sta_priv
->
common
.
sta_id
=
IWL_INVALID_STATION
;
ret
=
iwl_add_station_common
(
priv
,
sta
->
addr
,
is_ap
,
&
sta
->
ht_cap
,
ret
=
iwl_add_station_common
(
priv
,
sta
->
addr
,
is_ap
,
&
sta
->
ht_cap
,
&
sta_id
);
&
sta_id
);
...
@@ -3374,6 +3377,7 @@ static int iwl3945_mac_sta_add(struct ieee80211_hw *hw,
...
@@ -3374,6 +3377,7 @@ static int iwl3945_mac_sta_add(struct ieee80211_hw *hw,
IWL_ERR
(
priv
,
"Unable to add station %pM (%d)
\n
"
,
IWL_ERR
(
priv
,
"Unable to add station %pM (%d)
\n
"
,
sta
->
addr
,
ret
);
sta
->
addr
,
ret
);
/* Should we return success if return code is EEXIST ? */
/* Should we return success if return code is EEXIST ? */
mutex_unlock
(
&
priv
->
mutex
);
return
ret
;
return
ret
;
}
}
...
@@ -3383,6 +3387,7 @@ static int iwl3945_mac_sta_add(struct ieee80211_hw *hw,
...
@@ -3383,6 +3387,7 @@ static int iwl3945_mac_sta_add(struct ieee80211_hw *hw,
IWL_DEBUG_INFO
(
priv
,
"Initializing rate scaling for station %pM
\n
"
,
IWL_DEBUG_INFO
(
priv
,
"Initializing rate scaling for station %pM
\n
"
,
sta
->
addr
);
sta
->
addr
);
iwl3945_rs_rate_init
(
priv
,
sta
,
sta_id
);
iwl3945_rs_rate_init
(
priv
,
sta
,
sta_id
);
mutex_unlock
(
&
priv
->
mutex
);
return
0
;
return
0
;
}
}
...
...
drivers/net/wireless/libertas_tf/main.c
View file @
abf52f86
...
@@ -549,7 +549,7 @@ int lbtf_rx(struct lbtf_private *priv, struct sk_buff *skb)
...
@@ -549,7 +549,7 @@ int lbtf_rx(struct lbtf_private *priv, struct sk_buff *skb)
prxpd
=
(
struct
rxpd
*
)
skb
->
data
;
prxpd
=
(
struct
rxpd
*
)
skb
->
data
;
stats
.
flag
=
0
;
memset
(
&
stats
,
0
,
sizeof
(
stats
))
;
if
(
!
(
prxpd
->
status
&
cpu_to_le16
(
MRVDRV_RXPD_STATUS_OK
)))
if
(
!
(
prxpd
->
status
&
cpu_to_le16
(
MRVDRV_RXPD_STATUS_OK
)))
stats
.
flag
|=
RX_FLAG_FAILED_FCS_CRC
;
stats
.
flag
|=
RX_FLAG_FAILED_FCS_CRC
;
stats
.
freq
=
priv
->
cur_freq
;
stats
.
freq
=
priv
->
cur_freq
;
...
...
drivers/net/wireless/p54/p54pci.c
View file @
abf52f86
...
@@ -41,6 +41,8 @@ static DEFINE_PCI_DEVICE_TABLE(p54p_table) = {
...
@@ -41,6 +41,8 @@ static DEFINE_PCI_DEVICE_TABLE(p54p_table) = {
{
PCI_DEVICE
(
0x1260
,
0x3877
)
},
{
PCI_DEVICE
(
0x1260
,
0x3877
)
},
/* Intersil PRISM Javelin/Xbow Wireless LAN adapter */
/* Intersil PRISM Javelin/Xbow Wireless LAN adapter */
{
PCI_DEVICE
(
0x1260
,
0x3886
)
},
{
PCI_DEVICE
(
0x1260
,
0x3886
)
},
/* Intersil PRISM Xbow Wireless LAN adapter (Symbol AP-300) */
{
PCI_DEVICE
(
0x1260
,
0xffff
)
},
{
},
{
},
};
};
...
...
net/mac80211/mlme.c
View file @
abf52f86
...
@@ -1704,8 +1704,45 @@ void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
...
@@ -1704,8 +1704,45 @@ void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
mutex_unlock
(
&
ifmgd
->
mtx
);
mutex_unlock
(
&
ifmgd
->
mtx
);
if
(
skb
->
len
>=
24
+
2
/* mgmt + deauth reason */
&&
if
(
skb
->
len
>=
24
+
2
/* mgmt + deauth reason */
&&
(
fc
&
IEEE80211_FCTL_STYPE
)
==
IEEE80211_STYPE_DEAUTH
)
(
fc
&
IEEE80211_FCTL_STYPE
)
==
IEEE80211_STYPE_DEAUTH
)
{
struct
ieee80211_local
*
local
=
sdata
->
local
;
struct
ieee80211_work
*
wk
;
mutex_lock
(
&
local
->
work_mtx
);
list_for_each_entry
(
wk
,
&
local
->
work_list
,
list
)
{
if
(
wk
->
sdata
!=
sdata
)
continue
;
if
(
wk
->
type
!=
IEEE80211_WORK_ASSOC
)
continue
;
if
(
memcmp
(
mgmt
->
bssid
,
wk
->
filter_ta
,
ETH_ALEN
))
continue
;
if
(
memcmp
(
mgmt
->
sa
,
wk
->
filter_ta
,
ETH_ALEN
))
continue
;
/*
* Printing the message only here means we can't
* spuriously print it, but it also means that it
* won't be printed when the frame comes in before
* we even tried to associate or in similar cases.
*
* Ultimately, I suspect cfg80211 should print the
* messages instead.
*/
printk
(
KERN_DEBUG
"%s: deauthenticated from %pM (Reason: %u)
\n
"
,
sdata
->
name
,
mgmt
->
bssid
,
le16_to_cpu
(
mgmt
->
u
.
deauth
.
reason_code
));
list_del_rcu
(
&
wk
->
list
);
free_work
(
wk
);
break
;
}
mutex_unlock
(
&
local
->
work_mtx
);
cfg80211_send_deauth
(
sdata
->
dev
,
(
u8
*
)
mgmt
,
skb
->
len
);
cfg80211_send_deauth
(
sdata
->
dev
,
(
u8
*
)
mgmt
,
skb
->
len
);
}
}
}
static
void
ieee80211_sta_timer
(
unsigned
long
data
)
static
void
ieee80211_sta_timer
(
unsigned
long
data
)
...
...
net/mac80211/work.c
View file @
abf52f86
...
@@ -715,7 +715,7 @@ static void ieee80211_work_rx_queued_mgmt(struct ieee80211_local *local,
...
@@ -715,7 +715,7 @@ static void ieee80211_work_rx_queued_mgmt(struct ieee80211_local *local,
struct
ieee80211_rx_status
*
rx_status
;
struct
ieee80211_rx_status
*
rx_status
;
struct
ieee80211_mgmt
*
mgmt
;
struct
ieee80211_mgmt
*
mgmt
;
struct
ieee80211_work
*
wk
;
struct
ieee80211_work
*
wk
;
enum
work_action
rma
;
enum
work_action
rma
=
WORK_ACT_NONE
;
u16
fc
;
u16
fc
;
rx_status
=
(
struct
ieee80211_rx_status
*
)
skb
->
cb
;
rx_status
=
(
struct
ieee80211_rx_status
*
)
skb
->
cb
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment