Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
f10023a4
Commit
f10023a4
authored
Mar 17, 2009
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
4ada8107
640c65ea
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
81 additions
and
5 deletions
+81
-5
drivers/net/wireless/ath9k/ath9k.h
drivers/net/wireless/ath9k/ath9k.h
+2
-2
drivers/net/wireless/ath9k/core.h
drivers/net/wireless/ath9k/core.h
+33
-0
drivers/net/wireless/ath9k/hw.c
drivers/net/wireless/ath9k/hw.c
+21
-1
drivers/net/wireless/ath9k/main.c
drivers/net/wireless/ath9k/main.c
+1
-0
drivers/net/wireless/zd1211rw/zd_mac.c
drivers/net/wireless/zd1211rw/zd_mac.c
+6
-2
net/mac80211/tx.c
net/mac80211/tx.c
+2
-0
net/wireless/Kconfig
net/wireless/Kconfig
+10
-0
net/wireless/lib80211_crypt_ccmp.c
net/wireless/lib80211_crypt_ccmp.c
+2
-0
net/wireless/lib80211_crypt_tkip.c
net/wireless/lib80211_crypt_tkip.c
+4
-0
No files found.
drivers/net/wireless/ath9k/ath9k.h
View file @
f10023a4
...
...
@@ -587,8 +587,8 @@ struct ath9k_country_entry {
u8
iso
[
3
];
};
#define REG_WRITE(_ah, _reg, _val)
iowrite32(_val, _ah->ah_sh + _reg
)
#define REG_READ(_ah, _reg)
ioread32(_ah->ah_sh + _reg
)
#define REG_WRITE(_ah, _reg, _val)
ath9k_iowrite32((_ah), (_reg), (_val)
)
#define REG_READ(_ah, _reg)
ath9k_ioread32((_ah), (_reg)
)
#define SM(_v, _f) (((_v) << _f##_S) & _f)
#define MS(_v, _f) (((_v) & _f) >> _f##_S)
...
...
drivers/net/wireless/ath9k/core.h
View file @
f10023a4
...
...
@@ -701,6 +701,7 @@ struct ath_softc {
struct
ath_hal
*
sc_ah
;
void
__iomem
*
mem
;
spinlock_t
sc_resetlock
;
spinlock_t
sc_serial_rw
;
struct
mutex
mutex
;
u8
sc_curbssid
[
ETH_ALEN
];
...
...
@@ -751,4 +752,36 @@ int ath_get_hal_qnum(u16 queue, struct ath_softc *sc);
int
ath_get_mac80211_qnum
(
u32
queue
,
struct
ath_softc
*
sc
);
int
ath_cabq_update
(
struct
ath_softc
*
);
/*
* Read and write, they both share the same lock. We do this to serialize
* reads and writes on Atheros 802.11n PCI devices only. This is required
* as the FIFO on these devices can only accept sanely 2 requests. After
* that the device goes bananas. Serializing the reads/writes prevents this
* from happening.
*/
static
inline
void
ath9k_iowrite32
(
struct
ath_hal
*
ah
,
u32
reg_offset
,
u32
val
)
{
if
(
ah
->
ah_config
.
serialize_regmode
==
SER_REG_MODE_ON
)
{
unsigned
long
flags
;
spin_lock_irqsave
(
&
ah
->
ah_sc
->
sc_serial_rw
,
flags
);
iowrite32
(
val
,
ah
->
ah_sc
->
mem
+
reg_offset
);
spin_unlock_irqrestore
(
&
ah
->
ah_sc
->
sc_serial_rw
,
flags
);
}
else
iowrite32
(
val
,
ah
->
ah_sc
->
mem
+
reg_offset
);
}
static
inline
unsigned
int
ath9k_ioread32
(
struct
ath_hal
*
ah
,
u32
reg_offset
)
{
u32
val
;
if
(
ah
->
ah_config
.
serialize_regmode
==
SER_REG_MODE_ON
)
{
unsigned
long
flags
;
spin_lock_irqsave
(
&
ah
->
ah_sc
->
sc_serial_rw
,
flags
);
val
=
ioread32
(
ah
->
ah_sc
->
mem
+
reg_offset
);
spin_unlock_irqrestore
(
&
ah
->
ah_sc
->
sc_serial_rw
,
flags
);
}
else
val
=
ioread32
(
ah
->
ah_sc
->
mem
+
reg_offset
);
return
val
;
}
#endif
/* CORE_H */
drivers/net/wireless/ath9k/hw.c
View file @
f10023a4
...
...
@@ -437,6 +437,25 @@ static void ath9k_hw_set_defaults(struct ath_hal *ah)
}
ah
->
ah_config
.
intr_mitigation
=
1
;
/*
* We need this for PCI devices only (Cardbus, PCI, miniPCI)
* _and_ if on non-uniprocessor systems (Multiprocessor/HT).
* This means we use it for all AR5416 devices, and the few
* minor PCI AR9280 devices out there.
*
* Serialization is required because these devices do not handle
* well the case of two concurrent reads/writes due to the latency
* involved. During one read/write another read/write can be issued
* on another CPU while the previous read/write may still be working
* on our hardware, if we hit this case the hardware poops in a loop.
* We prevent this by serializing reads and writes.
*
* This issue is not present on PCI-Express devices or pre-AR5416
* devices (legacy, 802.11abg).
*/
if
(
num_possible_cpus
()
>
1
)
ah
->
ah_config
.
serialize_regmode
=
SER_REG_MODE_AUTO
;
}
static
struct
ath_hal_5416
*
ath9k_hw_newstate
(
u16
devid
,
...
...
@@ -668,7 +687,8 @@ static struct ath_hal *ath9k_hw_do_attach(u16 devid, struct ath_softc *sc,
}
if
(
ah
->
ah_config
.
serialize_regmode
==
SER_REG_MODE_AUTO
)
{
if
(
ah
->
ah_macVersion
==
AR_SREV_VERSION_5416_PCI
)
{
if
(
ah
->
ah_macVersion
==
AR_SREV_VERSION_5416_PCI
||
(
AR_SREV_9280
(
ah
)
&&
!
ah
->
ah_isPciExpress
))
{
ah
->
ah_config
.
serialize_regmode
=
SER_REG_MODE_ON
;
}
else
{
...
...
drivers/net/wireless/ath9k/main.c
View file @
f10023a4
...
...
@@ -1336,6 +1336,7 @@ static int ath_init(u16 devid, struct ath_softc *sc)
printk
(
KERN_ERR
"Unable to create debugfs files
\n
"
);
spin_lock_init
(
&
sc
->
sc_resetlock
);
spin_lock_init
(
&
sc
->
sc_serial_rw
);
mutex_init
(
&
sc
->
mutex
);
tasklet_init
(
&
sc
->
intr_tq
,
ath9k_tasklet
,
(
unsigned
long
)
sc
);
tasklet_init
(
&
sc
->
bcon_tasklet
,
ath9k_beacon_tasklet
,
...
...
drivers/net/wireless/zd1211rw/zd_mac.c
View file @
f10023a4
...
...
@@ -575,13 +575,17 @@ static int zd_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
r
=
fill_ctrlset
(
mac
,
skb
);
if
(
r
)
return
r
;
goto
fail
;
info
->
rate_driver_data
[
0
]
=
hw
;
r
=
zd_usb_tx
(
&
mac
->
chip
.
usb
,
skb
);
if
(
r
)
return
r
;
goto
fail
;
return
0
;
fail:
dev_kfree_skb
(
skb
);
return
0
;
}
...
...
net/mac80211/tx.c
View file @
f10023a4
...
...
@@ -752,6 +752,8 @@ ieee80211_tx_h_fragment(struct ieee80211_tx_data *tx)
skb_copy_queue_mapping
(
frag
,
first
);
frag
->
do_not_encrypt
=
first
->
do_not_encrypt
;
frag
->
dev
=
first
->
dev
;
frag
->
iif
=
first
->
iif
;
pos
+=
copylen
;
left
-=
copylen
;
...
...
net/wireless/Kconfig
View file @
f10023a4
...
...
@@ -102,3 +102,13 @@ config LIB80211_CRYPT_CCMP
config LIB80211_CRYPT_TKIP
tristate
config LIB80211_DEBUG
bool "lib80211 debugging messages"
depends on LIB80211
default n
---help---
You can enable this if you want verbose debugging messages
from lib80211.
If unsure, say N.
net/wireless/lib80211_crypt_ccmp.c
View file @
f10023a4
...
...
@@ -337,6 +337,7 @@ static int lib80211_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
pos
+=
8
;
if
(
ccmp_replay_check
(
pn
,
key
->
rx_pn
))
{
#ifdef CONFIG_LIB80211_DEBUG
if
(
net_ratelimit
())
{
printk
(
KERN_DEBUG
"CCMP: replay detected: STA=%pM "
"previous PN %02x%02x%02x%02x%02x%02x "
...
...
@@ -346,6 +347,7 @@ static int lib80211_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
key
->
rx_pn
[
3
],
key
->
rx_pn
[
4
],
key
->
rx_pn
[
5
],
pn
[
0
],
pn
[
1
],
pn
[
2
],
pn
[
3
],
pn
[
4
],
pn
[
5
]);
}
#endif
key
->
dot11RSNAStatsCCMPReplays
++
;
return
-
4
;
}
...
...
net/wireless/lib80211_crypt_tkip.c
View file @
f10023a4
...
...
@@ -465,12 +465,14 @@ static int lib80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
pos
+=
8
;
if
(
tkip_replay_check
(
iv32
,
iv16
,
tkey
->
rx_iv32
,
tkey
->
rx_iv16
))
{
#ifdef CONFIG_LIB80211_DEBUG
if
(
net_ratelimit
())
{
printk
(
KERN_DEBUG
"TKIP: replay detected: STA=%pM"
" previous TSC %08x%04x received TSC "
"%08x%04x
\n
"
,
hdr
->
addr2
,
tkey
->
rx_iv32
,
tkey
->
rx_iv16
,
iv32
,
iv16
);
}
#endif
tkey
->
dot11RSNAStatsTKIPReplays
++
;
return
-
4
;
}
...
...
@@ -505,10 +507,12 @@ static int lib80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
* it needs to be recalculated for the next packet. */
tkey
->
rx_phase1_done
=
0
;
}
#ifdef CONFIG_LIB80211_DEBUG
if
(
net_ratelimit
())
{
printk
(
KERN_DEBUG
"TKIP: ICV error detected: STA="
"%pM
\n
"
,
hdr
->
addr2
);
}
#endif
tkey
->
dot11RSNAStatsTKIPICVErrors
++
;
return
-
5
;
}
...
...
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