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
d7713ccc
Commit
d7713ccc
authored
Nov 25, 2008
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-2.6
parents
11c6dd2c
020cf6ba
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
74 additions
and
21 deletions
+74
-21
drivers/net/wireless/ath5k/base.c
drivers/net/wireless/ath5k/base.c
+34
-1
drivers/net/wireless/ath5k/base.h
drivers/net/wireless/ath5k/base.h
+1
-0
drivers/net/wireless/ath5k/debug.c
drivers/net/wireless/ath5k/debug.c
+5
-5
drivers/net/wireless/ath9k/beacon.c
drivers/net/wireless/ath9k/beacon.c
+5
-5
drivers/net/wireless/ath9k/recv.c
drivers/net/wireless/ath9k/recv.c
+14
-5
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-agn.c
+5
-3
net/mac80211/wext.c
net/mac80211/wext.c
+8
-0
net/wireless/reg.c
net/wireless/reg.c
+2
-2
No files found.
drivers/net/wireless/ath5k/base.c
View file @
d7713ccc
...
...
@@ -240,6 +240,10 @@ static u64 ath5k_get_tsf(struct ieee80211_hw *hw);
static
void
ath5k_reset_tsf
(
struct
ieee80211_hw
*
hw
);
static
int
ath5k_beacon_update
(
struct
ieee80211_hw
*
hw
,
struct
sk_buff
*
skb
);
static
void
ath5k_bss_info_changed
(
struct
ieee80211_hw
*
hw
,
struct
ieee80211_vif
*
vif
,
struct
ieee80211_bss_conf
*
bss_conf
,
u32
changes
);
static
struct
ieee80211_ops
ath5k_hw_ops
=
{
.
tx
=
ath5k_tx
,
...
...
@@ -256,6 +260,7 @@ static struct ieee80211_ops ath5k_hw_ops = {
.
get_tx_stats
=
ath5k_get_tx_stats
,
.
get_tsf
=
ath5k_get_tsf
,
.
reset_tsf
=
ath5k_reset_tsf
,
.
bss_info_changed
=
ath5k_bss_info_changed
,
};
/*
...
...
@@ -2942,7 +2947,7 @@ static void ath5k_configure_filter(struct ieee80211_hw *hw,
sc
->
opmode
!=
NL80211_IFTYPE_MESH_POINT
&&
test_bit
(
ATH_STAT_PROMISC
,
sc
->
status
))
rfilt
|=
AR5K_RX_FILTER_PROM
;
if
(
sc
->
opmode
==
NL80211_IFTYPE_STATION
||
if
(
(
sc
->
opmode
==
NL80211_IFTYPE_STATION
&&
sc
->
assoc
)
||
sc
->
opmode
==
NL80211_IFTYPE_ADHOC
)
{
rfilt
|=
AR5K_RX_FILTER_BEACON
;
}
...
...
@@ -3083,4 +3088,32 @@ ath5k_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb)
end:
return
ret
;
}
static
void
set_beacon_filter
(
struct
ieee80211_hw
*
hw
,
bool
enable
)
{
struct
ath5k_softc
*
sc
=
hw
->
priv
;
struct
ath5k_hw
*
ah
=
sc
->
ah
;
u32
rfilt
;
rfilt
=
ath5k_hw_get_rx_filter
(
ah
);
if
(
enable
)
rfilt
|=
AR5K_RX_FILTER_BEACON
;
else
rfilt
&=
~
AR5K_RX_FILTER_BEACON
;
ath5k_hw_set_rx_filter
(
ah
,
rfilt
);
sc
->
filter_flags
=
rfilt
;
}
static
void
ath5k_bss_info_changed
(
struct
ieee80211_hw
*
hw
,
struct
ieee80211_vif
*
vif
,
struct
ieee80211_bss_conf
*
bss_conf
,
u32
changes
)
{
struct
ath5k_softc
*
sc
=
hw
->
priv
;
if
(
changes
&
BSS_CHANGED_ASSOC
)
{
mutex_lock
(
&
sc
->
lock
);
sc
->
assoc
=
bss_conf
->
assoc
;
if
(
sc
->
opmode
==
NL80211_IFTYPE_STATION
)
set_beacon_filter
(
hw
,
sc
->
assoc
);
mutex_unlock
(
&
sc
->
lock
);
}
}
drivers/net/wireless/ath5k/base.h
View file @
d7713ccc
...
...
@@ -179,6 +179,7 @@ struct ath5k_softc {
struct
timer_list
calib_tim
;
/* calibration timer */
int
power_level
;
/* Requested tx power in dbm */
bool
assoc
;
/* assocate state */
};
#define ath5k_hw_hasbssidmask(_ah) \
...
...
drivers/net/wireless/ath5k/debug.c
View file @
d7713ccc
...
...
@@ -417,19 +417,19 @@ ath5k_debug_init_device(struct ath5k_softc *sc)
sc
->
debug
.
debugfs_phydir
=
debugfs_create_dir
(
wiphy_name
(
sc
->
hw
->
wiphy
),
ath5k_global_debugfs
);
sc
->
debug
.
debugfs_debug
=
debugfs_create_file
(
"debug"
,
0666
,
sc
->
debug
.
debugfs_debug
=
debugfs_create_file
(
"debug"
,
S_IWUSR
|
S_IRUGO
,
sc
->
debug
.
debugfs_phydir
,
sc
,
&
fops_debug
);
sc
->
debug
.
debugfs_registers
=
debugfs_create_file
(
"registers"
,
0444
,
sc
->
debug
.
debugfs_registers
=
debugfs_create_file
(
"registers"
,
S_IRUGO
,
sc
->
debug
.
debugfs_phydir
,
sc
,
&
fops_registers
);
sc
->
debug
.
debugfs_tsf
=
debugfs_create_file
(
"tsf"
,
0666
,
sc
->
debug
.
debugfs_tsf
=
debugfs_create_file
(
"tsf"
,
S_IWUSR
|
S_IRUGO
,
sc
->
debug
.
debugfs_phydir
,
sc
,
&
fops_tsf
);
sc
->
debug
.
debugfs_beacon
=
debugfs_create_file
(
"beacon"
,
0666
,
sc
->
debug
.
debugfs_beacon
=
debugfs_create_file
(
"beacon"
,
S_IWUSR
|
S_IRUGO
,
sc
->
debug
.
debugfs_phydir
,
sc
,
&
fops_beacon
);
sc
->
debug
.
debugfs_reset
=
debugfs_create_file
(
"reset"
,
0222
,
sc
->
debug
.
debugfs_reset
=
debugfs_create_file
(
"reset"
,
S_IWUSR
,
sc
->
debug
.
debugfs_phydir
,
sc
,
&
fops_reset
);
}
...
...
drivers/net/wireless/ath9k/beacon.c
View file @
d7713ccc
...
...
@@ -170,7 +170,7 @@ static struct ath_buf *ath_beacon_generate(struct ath_softc *sc, int if_id)
skb
=
(
struct
sk_buff
*
)
bf
->
bf_mpdu
;
if
(
skb
)
{
pci_unmap_single
(
sc
->
pdev
,
bf
->
bf_dmacontext
,
skb
_end_pointer
(
skb
)
-
skb
->
head
,
skb
->
len
,
PCI_DMA_TODEVICE
);
}
...
...
@@ -193,7 +193,7 @@ static struct ath_buf *ath_beacon_generate(struct ath_softc *sc, int if_id)
bf
->
bf_buf_addr
=
bf
->
bf_dmacontext
=
pci_map_single
(
sc
->
pdev
,
skb
->
data
,
skb
_end_pointer
(
skb
)
-
skb
->
head
,
skb
->
len
,
PCI_DMA_TODEVICE
);
skb
=
ieee80211_get_buffered_bc
(
sc
->
hw
,
avp
->
av_if_data
);
...
...
@@ -352,7 +352,7 @@ int ath_beacon_alloc(struct ath_softc *sc, int if_id)
if
(
bf
->
bf_mpdu
!=
NULL
)
{
skb
=
(
struct
sk_buff
*
)
bf
->
bf_mpdu
;
pci_unmap_single
(
sc
->
pdev
,
bf
->
bf_dmacontext
,
skb
_end_pointer
(
skb
)
-
skb
->
head
,
skb
->
len
,
PCI_DMA_TODEVICE
);
dev_kfree_skb_any
(
skb
);
bf
->
bf_mpdu
=
NULL
;
...
...
@@ -412,7 +412,7 @@ int ath_beacon_alloc(struct ath_softc *sc, int if_id)
bf
->
bf_buf_addr
=
bf
->
bf_dmacontext
=
pci_map_single
(
sc
->
pdev
,
skb
->
data
,
skb
_end_pointer
(
skb
)
-
skb
->
head
,
skb
->
len
,
PCI_DMA_TODEVICE
);
bf
->
bf_mpdu
=
skb
;
...
...
@@ -439,7 +439,7 @@ void ath_beacon_return(struct ath_softc *sc, struct ath_vap *avp)
if
(
bf
->
bf_mpdu
!=
NULL
)
{
struct
sk_buff
*
skb
=
(
struct
sk_buff
*
)
bf
->
bf_mpdu
;
pci_unmap_single
(
sc
->
pdev
,
bf
->
bf_dmacontext
,
skb
_end_pointer
(
skb
)
-
skb
->
head
,
skb
->
len
,
PCI_DMA_TODEVICE
);
dev_kfree_skb_any
(
skb
);
bf
->
bf_mpdu
=
NULL
;
...
...
drivers/net/wireless/ath9k/recv.c
View file @
d7713ccc
...
...
@@ -49,10 +49,12 @@ static void ath_rx_buf_link(struct ath_softc *sc, struct ath_buf *bf)
ASSERT
(
skb
!=
NULL
);
ds
->
ds_vdata
=
skb
->
data
;
/* setup rx descriptors */
/* setup rx descriptors. The sc_rxbufsize here tells the harware
* how much data it can DMA to us and that we are prepared
* to process */
ath9k_hw_setuprxdesc
(
ah
,
ds
,
s
kb_tailroom
(
skb
),
/* buffer size */
s
c
->
sc_rxbufsize
,
0
);
if
(
sc
->
sc_rxlink
==
NULL
)
...
...
@@ -398,6 +400,13 @@ static struct sk_buff *ath_rxbuf_alloc(struct ath_softc *sc,
* in rx'd frames.
*/
/* Note: the kernel can allocate a value greater than
* what we ask it to give us. We really only need 4 KB as that
* is this hardware supports and in fact we need at least 3849
* as that is the MAX AMSDU size this hardware supports.
* Unfortunately this means we may get 8 KB here from the
* kernel... and that is actually what is observed on some
* systems :( */
skb
=
dev_alloc_skb
(
len
+
sc
->
sc_cachelsz
-
1
);
if
(
skb
!=
NULL
)
{
off
=
((
unsigned
long
)
skb
->
data
)
%
sc
->
sc_cachelsz
;
...
...
@@ -456,7 +465,7 @@ static int ath_rx_indicate(struct ath_softc *sc,
if
(
nskb
!=
NULL
)
{
bf
->
bf_mpdu
=
nskb
;
bf
->
bf_buf_addr
=
pci_map_single
(
sc
->
pdev
,
nskb
->
data
,
s
kb_end_pointer
(
nskb
)
-
nskb
->
head
,
s
c
->
sc_rxbufsize
,
PCI_DMA_FROMDEVICE
);
bf
->
bf_dmacontext
=
bf
->
bf_buf_addr
;
ATH_RX_CONTEXT
(
nskb
)
->
ctx_rxbuf
=
bf
;
...
...
@@ -542,7 +551,7 @@ int ath_rx_init(struct ath_softc *sc, int nbufs)
bf
->
bf_mpdu
=
skb
;
bf
->
bf_buf_addr
=
pci_map_single
(
sc
->
pdev
,
skb
->
data
,
s
kb_end_pointer
(
skb
)
-
skb
->
head
,
s
c
->
sc_rxbufsize
,
PCI_DMA_FROMDEVICE
);
bf
->
bf_dmacontext
=
bf
->
bf_buf_addr
;
ATH_RX_CONTEXT
(
skb
)
->
ctx_rxbuf
=
bf
;
...
...
@@ -1007,7 +1016,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush)
pci_dma_sync_single_for_cpu
(
sc
->
pdev
,
bf
->
bf_buf_addr
,
s
kb_tailroom
(
skb
)
,
s
c
->
sc_rxbufsize
,
PCI_DMA_FROMDEVICE
);
pci_unmap_single
(
sc
->
pdev
,
bf
->
bf_buf_addr
,
...
...
drivers/net/wireless/iwlwifi/iwl-agn.c
View file @
d7713ccc
...
...
@@ -1384,9 +1384,11 @@ void iwl_rx_handle(struct iwl_priv *priv)
rxq
->
queue
[
i
]
=
NULL
;
pci_dma_sync_single_for_cpu
(
priv
->
pci_dev
,
rxb
->
aligned_dma_addr
,
priv
->
hw_params
.
rx_buf_size
,
PCI_DMA_FROMDEVICE
);
dma_sync_single_range_for_cpu
(
&
priv
->
pci_dev
->
dev
,
rxb
->
real_dma_addr
,
rxb
->
aligned_dma_addr
-
rxb
->
real_dma_addr
,
priv
->
hw_params
.
rx_buf_size
,
PCI_DMA_FROMDEVICE
);
pkt
=
(
struct
iwl_rx_packet
*
)
rxb
->
skb
->
data
;
/* Reclaim a command buffer only if this packet is a response
...
...
net/mac80211/wext.c
View file @
d7713ccc
...
...
@@ -271,6 +271,7 @@ static int ieee80211_ioctl_siwmode(struct net_device *dev,
__u32
*
mode
,
char
*
extra
)
{
struct
ieee80211_sub_if_data
*
sdata
=
IEEE80211_DEV_TO_SUB_IF
(
dev
);
struct
ieee80211_local
*
local
=
sdata
->
local
;
int
type
;
if
(
sdata
->
vif
.
type
==
NL80211_IFTYPE_AP_VLAN
)
...
...
@@ -281,6 +282,13 @@ static int ieee80211_ioctl_siwmode(struct net_device *dev,
type
=
NL80211_IFTYPE_STATION
;
break
;
case
IW_MODE_ADHOC
:
/* Setting ad-hoc mode on non ibss channel is not
* supported.
*/
if
(
local
->
oper_channel
&&
(
local
->
oper_channel
->
flags
&
IEEE80211_CHAN_NO_IBSS
))
return
-
EOPNOTSUPP
;
type
=
NL80211_IFTYPE_ADHOC
;
break
;
case
IW_MODE_REPEAT
:
...
...
net/wireless/reg.c
View file @
d7713ccc
...
...
@@ -343,9 +343,9 @@ static int ignore_request(struct wiphy *wiphy, enum reg_set_by set_by,
return
0
;
return
-
EALREADY
;
}
if
(
WARN
_ON
(
!
is_alpha2_set
(
alpha2
)
||
!
is_an_alpha2
(
alpha2
)
),
if
(
WARN
(
!
is_alpha2_set
(
alpha2
)
||
!
is_an_alpha2
(
alpha2
),
"Invalid Country IE regulatory hint passed "
"to the wireless core
\n
"
)
"to the wireless core
\n
"
)
)
return
-
EINVAL
;
/* We ignore Country IE hints for now, as we haven't yet
* added the dot11MultiDomainCapabilityEnabled flag
...
...
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