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
Kirill Smelkov
linux
Commits
1c659a44
Commit
1c659a44
authored
Jan 18, 2012
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
parents
ccb19d26
4f3d09de
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
54 additions
and
21 deletions
+54
-21
drivers/net/wireless/b43/Kconfig
drivers/net/wireless/b43/Kconfig
+6
-0
drivers/net/wireless/b43/main.c
drivers/net/wireless/b43/main.c
+2
-0
drivers/net/wireless/brcm80211/brcmsmac/main.c
drivers/net/wireless/brcm80211/brcmsmac/main.c
+9
-1
net/mac80211/debugfs_key.c
net/mac80211/debugfs_key.c
+4
-3
net/mac80211/mesh_hwmp.c
net/mac80211/mesh_hwmp.c
+4
-4
net/mac80211/mesh_plink.c
net/mac80211/mesh_plink.c
+2
-2
net/mac80211/mlme.c
net/mac80211/mlme.c
+27
-11
No files found.
drivers/net/wireless/b43/Kconfig
View file @
1c659a44
...
@@ -31,6 +31,12 @@ config B43_BCMA
...
@@ -31,6 +31,12 @@ config B43_BCMA
depends on B43 && BCMA
depends on B43 && BCMA
default y
default y
config B43_BCMA_EXTRA
bool "Hardware support that overlaps with the brcmsmac driver"
depends on B43_BCMA
default n if BRCMSMAC || BRCMSMAC_MODULE
default y
config B43_SSB
config B43_SSB
bool
bool
depends on B43 && SSB
depends on B43 && SSB
...
...
drivers/net/wireless/b43/main.c
View file @
1c659a44
...
@@ -116,8 +116,10 @@ MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO");
...
@@ -116,8 +116,10 @@ MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO");
#ifdef CONFIG_B43_BCMA
#ifdef CONFIG_B43_BCMA
static
const
struct
bcma_device_id
b43_bcma_tbl
[]
=
{
static
const
struct
bcma_device_id
b43_bcma_tbl
[]
=
{
BCMA_CORE
(
BCMA_MANUF_BCM
,
BCMA_CORE_80211
,
0x11
,
BCMA_ANY_CLASS
),
BCMA_CORE
(
BCMA_MANUF_BCM
,
BCMA_CORE_80211
,
0x11
,
BCMA_ANY_CLASS
),
#ifdef CONFIG_B43_BCMA_EXTRA
BCMA_CORE
(
BCMA_MANUF_BCM
,
BCMA_CORE_80211
,
0x17
,
BCMA_ANY_CLASS
),
BCMA_CORE
(
BCMA_MANUF_BCM
,
BCMA_CORE_80211
,
0x17
,
BCMA_ANY_CLASS
),
BCMA_CORE
(
BCMA_MANUF_BCM
,
BCMA_CORE_80211
,
0x18
,
BCMA_ANY_CLASS
),
BCMA_CORE
(
BCMA_MANUF_BCM
,
BCMA_CORE_80211
,
0x18
,
BCMA_ANY_CLASS
),
#endif
BCMA_CORE
(
BCMA_MANUF_BCM
,
BCMA_CORE_80211
,
0x1D
,
BCMA_ANY_CLASS
),
BCMA_CORE
(
BCMA_MANUF_BCM
,
BCMA_CORE_80211
,
0x1D
,
BCMA_ANY_CLASS
),
BCMA_CORETABLE_END
BCMA_CORETABLE_END
};
};
...
...
drivers/net/wireless/brcm80211/brcmsmac/main.c
View file @
1c659a44
...
@@ -7981,13 +7981,21 @@ int brcms_c_get_curband(struct brcms_c_info *wlc)
...
@@ -7981,13 +7981,21 @@ int brcms_c_get_curband(struct brcms_c_info *wlc)
void
brcms_c_wait_for_tx_completion
(
struct
brcms_c_info
*
wlc
,
bool
drop
)
void
brcms_c_wait_for_tx_completion
(
struct
brcms_c_info
*
wlc
,
bool
drop
)
{
{
int
timeout
=
20
;
/* flush packet queue when requested */
/* flush packet queue when requested */
if
(
drop
)
if
(
drop
)
brcmu_pktq_flush
(
&
wlc
->
pkt_queue
->
q
,
false
,
NULL
,
NULL
);
brcmu_pktq_flush
(
&
wlc
->
pkt_queue
->
q
,
false
,
NULL
,
NULL
);
/* wait for queue and DMA fifos to run dry */
/* wait for queue and DMA fifos to run dry */
while
(
!
pktq_empty
(
&
wlc
->
pkt_queue
->
q
)
||
brcms_txpktpendtot
(
wlc
)
>
0
)
while
(
!
pktq_empty
(
&
wlc
->
pkt_queue
->
q
)
||
brcms_txpktpendtot
(
wlc
)
>
0
)
{
brcms_msleep
(
wlc
->
wl
,
1
);
brcms_msleep
(
wlc
->
wl
,
1
);
if
(
--
timeout
==
0
)
break
;
}
WARN_ON_ONCE
(
timeout
==
0
);
}
}
void
brcms_c_set_beacon_listen_interval
(
struct
brcms_c_info
*
wlc
,
u8
interval
)
void
brcms_c_set_beacon_listen_interval
(
struct
brcms_c_info
*
wlc
,
u8
interval
)
...
...
net/mac80211/debugfs_key.c
View file @
1c659a44
...
@@ -225,9 +225,9 @@ KEY_OPS(key);
...
@@ -225,9 +225,9 @@ KEY_OPS(key);
key, &key_##name##_ops);
key, &key_##name##_ops);
void
ieee80211_debugfs_key_add
(
struct
ieee80211_key
*
key
)
void
ieee80211_debugfs_key_add
(
struct
ieee80211_key
*
key
)
{
{
static
int
keycount
;
static
int
keycount
;
char
buf
[
5
0
];
char
buf
[
10
0
];
struct
sta_info
*
sta
;
struct
sta_info
*
sta
;
if
(
!
key
->
local
->
debugfs
.
keys
)
if
(
!
key
->
local
->
debugfs
.
keys
)
...
@@ -244,7 +244,8 @@ void ieee80211_debugfs_key_add(struct ieee80211_key *key)
...
@@ -244,7 +244,8 @@ void ieee80211_debugfs_key_add(struct ieee80211_key *key)
sta
=
key
->
sta
;
sta
=
key
->
sta
;
if
(
sta
)
{
if
(
sta
)
{
sprintf
(
buf
,
"../../stations/%pM"
,
sta
->
sta
.
addr
);
sprintf
(
buf
,
"../../netdev:%s/stations/%pM"
,
sta
->
sdata
->
name
,
sta
->
sta
.
addr
);
key
->
debugfs
.
stalink
=
key
->
debugfs
.
stalink
=
debugfs_create_symlink
(
"station"
,
key
->
debugfs
.
dir
,
buf
);
debugfs_create_symlink
(
"station"
,
key
->
debugfs
.
dir
,
buf
);
}
}
...
...
net/mac80211/mesh_hwmp.c
View file @
1c659a44
...
@@ -119,12 +119,12 @@ static int mesh_path_sel_frame_tx(enum mpath_frame_type action, u8 flags,
...
@@ -119,12 +119,12 @@ static int mesh_path_sel_frame_tx(enum mpath_frame_type action, u8 flags,
int
hdr_len
=
offsetof
(
struct
ieee80211_mgmt
,
u
.
action
.
u
.
mesh_action
)
+
int
hdr_len
=
offsetof
(
struct
ieee80211_mgmt
,
u
.
action
.
u
.
mesh_action
)
+
sizeof
(
mgmt
->
u
.
action
.
u
.
mesh_action
);
sizeof
(
mgmt
->
u
.
action
.
u
.
mesh_action
);
skb
=
dev_alloc_skb
(
local
->
hw
.
extra_
tx_headroom
+
skb
=
dev_alloc_skb
(
local
->
tx_headroom
+
hdr_len
+
hdr_len
+
2
+
37
);
/* max HWMP IE */
2
+
37
);
/* max HWMP IE */
if
(
!
skb
)
if
(
!
skb
)
return
-
1
;
return
-
1
;
skb_reserve
(
skb
,
local
->
hw
.
extra_
tx_headroom
);
skb_reserve
(
skb
,
local
->
tx_headroom
);
mgmt
=
(
struct
ieee80211_mgmt
*
)
skb_put
(
skb
,
hdr_len
);
mgmt
=
(
struct
ieee80211_mgmt
*
)
skb_put
(
skb
,
hdr_len
);
memset
(
mgmt
,
0
,
hdr_len
);
memset
(
mgmt
,
0
,
hdr_len
);
mgmt
->
frame_control
=
cpu_to_le16
(
IEEE80211_FTYPE_MGMT
|
mgmt
->
frame_control
=
cpu_to_le16
(
IEEE80211_FTYPE_MGMT
|
...
@@ -250,12 +250,12 @@ int mesh_path_error_tx(u8 ttl, u8 *target, __le32 target_sn,
...
@@ -250,12 +250,12 @@ int mesh_path_error_tx(u8 ttl, u8 *target, __le32 target_sn,
if
(
time_before
(
jiffies
,
ifmsh
->
next_perr
))
if
(
time_before
(
jiffies
,
ifmsh
->
next_perr
))
return
-
EAGAIN
;
return
-
EAGAIN
;
skb
=
dev_alloc_skb
(
local
->
hw
.
extra_
tx_headroom
+
skb
=
dev_alloc_skb
(
local
->
tx_headroom
+
hdr_len
+
hdr_len
+
2
+
15
/* PERR IE */
);
2
+
15
/* PERR IE */
);
if
(
!
skb
)
if
(
!
skb
)
return
-
1
;
return
-
1
;
skb_reserve
(
skb
,
local
->
tx_headroom
+
local
->
hw
.
extra_tx_headroom
);
skb_reserve
(
skb
,
local
->
tx_headroom
);
mgmt
=
(
struct
ieee80211_mgmt
*
)
skb_put
(
skb
,
hdr_len
);
mgmt
=
(
struct
ieee80211_mgmt
*
)
skb_put
(
skb
,
hdr_len
);
memset
(
mgmt
,
0
,
hdr_len
);
memset
(
mgmt
,
0
,
hdr_len
);
mgmt
->
frame_control
=
cpu_to_le16
(
IEEE80211_FTYPE_MGMT
|
mgmt
->
frame_control
=
cpu_to_le16
(
IEEE80211_FTYPE_MGMT
|
...
...
net/mac80211/mesh_plink.c
View file @
1c659a44
...
@@ -172,7 +172,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
...
@@ -172,7 +172,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
int
hdr_len
=
offsetof
(
struct
ieee80211_mgmt
,
u
.
action
.
u
.
self_prot
)
+
int
hdr_len
=
offsetof
(
struct
ieee80211_mgmt
,
u
.
action
.
u
.
self_prot
)
+
sizeof
(
mgmt
->
u
.
action
.
u
.
self_prot
);
sizeof
(
mgmt
->
u
.
action
.
u
.
self_prot
);
skb
=
dev_alloc_skb
(
local
->
hw
.
extra_
tx_headroom
+
skb
=
dev_alloc_skb
(
local
->
tx_headroom
+
hdr_len
+
hdr_len
+
2
+
/* capability info */
2
+
/* capability info */
2
+
/* AID */
2
+
/* AID */
...
@@ -186,7 +186,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
...
@@ -186,7 +186,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
sdata
->
u
.
mesh
.
ie_len
);
sdata
->
u
.
mesh
.
ie_len
);
if
(
!
skb
)
if
(
!
skb
)
return
-
1
;
return
-
1
;
skb_reserve
(
skb
,
local
->
hw
.
extra_
tx_headroom
);
skb_reserve
(
skb
,
local
->
tx_headroom
);
mgmt
=
(
struct
ieee80211_mgmt
*
)
skb_put
(
skb
,
hdr_len
);
mgmt
=
(
struct
ieee80211_mgmt
*
)
skb_put
(
skb
,
hdr_len
);
memset
(
mgmt
,
0
,
hdr_len
);
memset
(
mgmt
,
0
,
hdr_len
);
mgmt
->
frame_control
=
cpu_to_le16
(
IEEE80211_FTYPE_MGMT
|
mgmt
->
frame_control
=
cpu_to_le16
(
IEEE80211_FTYPE_MGMT
|
...
...
net/mac80211/mlme.c
View file @
1c659a44
...
@@ -2750,7 +2750,6 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
...
@@ -2750,7 +2750,6 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
{
{
struct
ieee80211_local
*
local
=
sdata
->
local
;
struct
ieee80211_local
*
local
=
sdata
->
local
;
struct
ieee80211_if_managed
*
ifmgd
=
&
sdata
->
u
.
mgd
;
struct
ieee80211_if_managed
*
ifmgd
=
&
sdata
->
u
.
mgd
;
struct
ieee80211_work
*
wk
;
u8
bssid
[
ETH_ALEN
];
u8
bssid
[
ETH_ALEN
];
bool
assoc_bss
=
false
;
bool
assoc_bss
=
false
;
...
@@ -2763,30 +2762,47 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
...
@@ -2763,30 +2762,47 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
assoc_bss
=
true
;
assoc_bss
=
true
;
}
else
{
}
else
{
bool
not_auth_yet
=
false
;
bool
not_auth_yet
=
false
;
struct
ieee80211_work
*
tmp
,
*
wk
=
NULL
;
mutex_unlock
(
&
ifmgd
->
mtx
);
mutex_unlock
(
&
ifmgd
->
mtx
);
mutex_lock
(
&
local
->
mtx
);
mutex_lock
(
&
local
->
mtx
);
list_for_each_entry
(
wk
,
&
local
->
work_list
,
list
)
{
list_for_each_entry
(
tmp
,
&
local
->
work_list
,
list
)
{
if
(
wk
->
sdata
!=
sdata
)
if
(
tmp
->
sdata
!=
sdata
)
continue
;
continue
;
if
(
wk
->
type
!=
IEEE80211_WORK_DIRECT_PROBE
&&
if
(
tmp
->
type
!=
IEEE80211_WORK_DIRECT_PROBE
&&
wk
->
type
!=
IEEE80211_WORK_AUTH
&&
tmp
->
type
!=
IEEE80211_WORK_AUTH
&&
wk
->
type
!=
IEEE80211_WORK_ASSOC
&&
tmp
->
type
!=
IEEE80211_WORK_ASSOC
&&
wk
->
type
!=
IEEE80211_WORK_ASSOC_BEACON_WAIT
)
tmp
->
type
!=
IEEE80211_WORK_ASSOC_BEACON_WAIT
)
continue
;
continue
;
if
(
memcmp
(
req
->
bss
->
bssid
,
wk
->
filter_ta
,
ETH_ALEN
))
if
(
memcmp
(
req
->
bss
->
bssid
,
tmp
->
filter_ta
,
ETH_ALEN
))
continue
;
continue
;
not_auth_yet
=
wk
->
type
==
IEEE80211_WORK_DIRECT_PROBE
;
not_auth_yet
=
tmp
->
type
==
IEEE80211_WORK_DIRECT_PROBE
;
list_del_rcu
(
&
wk
->
list
);
list_del_rcu
(
&
tmp
->
list
);
free_work
(
wk
);
synchronize_rcu
();
wk
=
tmp
;
break
;
break
;
}
}
mutex_unlock
(
&
local
->
mtx
);
mutex_unlock
(
&
local
->
mtx
);
if
(
wk
&&
wk
->
type
==
IEEE80211_WORK_ASSOC
)
{
/* clean up dummy sta & TX sync */
sta_info_destroy_addr
(
wk
->
sdata
,
wk
->
filter_ta
);
if
(
wk
->
assoc
.
synced
)
drv_finish_tx_sync
(
local
,
wk
->
sdata
,
wk
->
filter_ta
,
IEEE80211_TX_SYNC_ASSOC
);
}
else
if
(
wk
&&
wk
->
type
==
IEEE80211_WORK_AUTH
)
{
if
(
wk
->
probe_auth
.
synced
)
drv_finish_tx_sync
(
local
,
wk
->
sdata
,
wk
->
filter_ta
,
IEEE80211_TX_SYNC_AUTH
);
}
kfree
(
wk
);
/*
/*
* If somebody requests authentication and we haven't
* If somebody requests authentication and we haven't
* sent out an auth frame yet there's no need to send
* sent out an auth frame yet there's no need to send
...
...
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