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
86b698b8
Commit
86b698b8
authored
May 05, 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
bc83871e
6909268d
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
68 additions
and
49 deletions
+68
-49
drivers/net/wireless/iwlwifi/iwl-sta.c
drivers/net/wireless/iwlwifi/iwl-sta.c
+11
-10
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/iwlwifi/iwl3945-base.c
+0
-1
net/mac80211/rc80211_minstrel.c
net/mac80211/rc80211_minstrel.c
+1
-1
net/mac80211/rc80211_pid_algo.c
net/mac80211/rc80211_pid_algo.c
+39
-34
net/mac80211/tx.c
net/mac80211/tx.c
+1
-1
net/wireless/reg.c
net/wireless/reg.c
+15
-2
net/wireless/scan.c
net/wireless/scan.c
+1
-0
No files found.
drivers/net/wireless/iwlwifi/iwl-sta.c
View file @
86b698b8
...
...
@@ -719,6 +719,14 @@ static int iwl_set_tkip_dynamic_key_info(struct iwl_priv *priv,
{
unsigned
long
flags
;
int
ret
=
0
;
__le16
key_flags
=
0
;
key_flags
|=
(
STA_KEY_FLG_TKIP
|
STA_KEY_FLG_MAP_KEY_MSK
);
key_flags
|=
cpu_to_le16
(
keyconf
->
keyidx
<<
STA_KEY_FLG_KEYID_POS
);
key_flags
&=
~
STA_KEY_FLG_INVALID
;
if
(
sta_id
==
priv
->
hw_params
.
bcast_sta_id
)
key_flags
|=
STA_KEY_MULTICAST_MSK
;
keyconf
->
flags
|=
IEEE80211_KEY_FLAG_GENERATE_IV
;
keyconf
->
flags
|=
IEEE80211_KEY_FLAG_GENERATE_MMIC
;
...
...
@@ -738,6 +746,9 @@ static int iwl_set_tkip_dynamic_key_info(struct iwl_priv *priv,
WARN
(
priv
->
stations
[
sta_id
].
sta
.
key
.
key_offset
==
WEP_INVALID_OFFSET
,
"no space for a new key"
);
priv
->
stations
[
sta_id
].
sta
.
key
.
key_flags
=
key_flags
;
/* This copy is acutally not needed: we get the key with each TX */
memcpy
(
priv
->
stations
[
sta_id
].
keyinfo
.
key
,
keyconf
->
key
,
16
);
...
...
@@ -754,9 +765,7 @@ void iwl_update_tkip_key(struct iwl_priv *priv,
{
u8
sta_id
=
IWL_INVALID_STATION
;
unsigned
long
flags
;
__le16
key_flags
=
0
;
int
i
;
DECLARE_MAC_BUF
(
mac
);
sta_id
=
iwl_find_station
(
priv
,
addr
);
if
(
sta_id
==
IWL_INVALID_STATION
)
{
...
...
@@ -771,16 +780,8 @@ void iwl_update_tkip_key(struct iwl_priv *priv,
return
;
}
key_flags
|=
(
STA_KEY_FLG_TKIP
|
STA_KEY_FLG_MAP_KEY_MSK
);
key_flags
|=
cpu_to_le16
(
keyconf
->
keyidx
<<
STA_KEY_FLG_KEYID_POS
);
key_flags
&=
~
STA_KEY_FLG_INVALID
;
if
(
sta_id
==
priv
->
hw_params
.
bcast_sta_id
)
key_flags
|=
STA_KEY_MULTICAST_MSK
;
spin_lock_irqsave
(
&
priv
->
sta_lock
,
flags
);
priv
->
stations
[
sta_id
].
sta
.
key
.
key_flags
=
key_flags
;
priv
->
stations
[
sta_id
].
sta
.
key
.
tkip_rx_tsc_byte2
=
(
u8
)
iv32
;
for
(
i
=
0
;
i
<
5
;
i
++
)
...
...
drivers/net/wireless/iwlwifi/iwl3945-base.c
View file @
86b698b8
...
...
@@ -1744,7 +1744,6 @@ static void iwl3945_rx_queue_free(struct iwl_priv *priv, struct iwl_rx_queue *rx
rxq
->
bd
=
NULL
;
rxq
->
rb_stts
=
NULL
;
}
EXPORT_SYMBOL
(
iwl3945_rx_queue_free
);
/* Convert linear signal-to-noise ratio into dB */
...
...
net/mac80211/rc80211_minstrel.c
View file @
86b698b8
...
...
@@ -476,7 +476,7 @@ minstrel_alloc_sta(void *priv, struct ieee80211_sta *sta, gfp_t gfp)
return
NULL
;
for
(
i
=
0
;
i
<
IEEE80211_NUM_BANDS
;
i
++
)
{
sband
=
hw
->
wiphy
->
bands
[
hw
->
conf
.
channel
->
band
];
sband
=
hw
->
wiphy
->
bands
[
i
];
if
(
sband
->
n_bitrates
>
max_rates
)
max_rates
=
sband
->
n_bitrates
;
}
...
...
net/mac80211/rc80211_pid_algo.c
View file @
86b698b8
...
...
@@ -317,13 +317,44 @@ rate_control_pid_rate_init(void *priv, struct ieee80211_supported_band *sband,
struct
ieee80211_sta
*
sta
,
void
*
priv_sta
)
{
struct
rc_pid_sta_info
*
spinfo
=
priv_sta
;
struct
rc_pid_info
*
pinfo
=
priv
;
struct
rc_pid_rateinfo
*
rinfo
=
pinfo
->
rinfo
;
struct
sta_info
*
si
;
int
i
,
j
,
tmp
;
bool
s
;
/* TODO: This routine should consider using RSSI from previous packets
* as we need to have IEEE 802.1X auth succeed immediately after assoc..
* Until that method is implemented, we will use the lowest supported
* rate as a workaround. */
/* Sort the rates. This is optimized for the most common case (i.e.
* almost-sorted CCK+OFDM rates). Kind of bubble-sort with reversed
* mapping too. */
for
(
i
=
0
;
i
<
sband
->
n_bitrates
;
i
++
)
{
rinfo
[
i
].
index
=
i
;
rinfo
[
i
].
rev_index
=
i
;
if
(
RC_PID_FAST_START
)
rinfo
[
i
].
diff
=
0
;
else
rinfo
[
i
].
diff
=
i
*
pinfo
->
norm_offset
;
}
for
(
i
=
1
;
i
<
sband
->
n_bitrates
;
i
++
)
{
s
=
0
;
for
(
j
=
0
;
j
<
sband
->
n_bitrates
-
i
;
j
++
)
if
(
unlikely
(
sband
->
bitrates
[
rinfo
[
j
].
index
].
bitrate
>
sband
->
bitrates
[
rinfo
[
j
+
1
].
index
].
bitrate
))
{
tmp
=
rinfo
[
j
].
index
;
rinfo
[
j
].
index
=
rinfo
[
j
+
1
].
index
;
rinfo
[
j
+
1
].
index
=
tmp
;
rinfo
[
rinfo
[
j
].
index
].
rev_index
=
j
;
rinfo
[
rinfo
[
j
+
1
].
index
].
rev_index
=
j
+
1
;
s
=
1
;
}
if
(
!
s
)
break
;
}
spinfo
->
txrate_idx
=
rate_lowest_index
(
sband
,
sta
);
/* HACK */
si
=
container_of
(
sta
,
struct
sta_info
,
sta
);
...
...
@@ -336,21 +367,22 @@ static void *rate_control_pid_alloc(struct ieee80211_hw *hw,
struct
rc_pid_info
*
pinfo
;
struct
rc_pid_rateinfo
*
rinfo
;
struct
ieee80211_supported_band
*
sband
;
int
i
,
j
,
tmp
;
bool
s
;
int
i
,
max_rates
=
0
;
#ifdef CONFIG_MAC80211_DEBUGFS
struct
rc_pid_debugfs_entries
*
de
;
#endif
sband
=
hw
->
wiphy
->
bands
[
hw
->
conf
.
channel
->
band
];
pinfo
=
kmalloc
(
sizeof
(
*
pinfo
),
GFP_ATOMIC
);
if
(
!
pinfo
)
return
NULL
;
/* We can safely assume that sband won't change unless we get
* reinitialized. */
rinfo
=
kmalloc
(
sizeof
(
*
rinfo
)
*
sband
->
n_bitrates
,
GFP_ATOMIC
);
for
(
i
=
0
;
i
<
IEEE80211_NUM_BANDS
;
i
++
)
{
sband
=
hw
->
wiphy
->
bands
[
i
];
if
(
sband
->
n_bitrates
>
max_rates
)
max_rates
=
sband
->
n_bitrates
;
}
rinfo
=
kmalloc
(
sizeof
(
*
rinfo
)
*
max_rates
,
GFP_ATOMIC
);
if
(
!
rinfo
)
{
kfree
(
pinfo
);
return
NULL
;
...
...
@@ -368,33 +400,6 @@ static void *rate_control_pid_alloc(struct ieee80211_hw *hw,
pinfo
->
rinfo
=
rinfo
;
pinfo
->
oldrate
=
0
;
/* Sort the rates. This is optimized for the most common case (i.e.
* almost-sorted CCK+OFDM rates). Kind of bubble-sort with reversed
* mapping too. */
for
(
i
=
0
;
i
<
sband
->
n_bitrates
;
i
++
)
{
rinfo
[
i
].
index
=
i
;
rinfo
[
i
].
rev_index
=
i
;
if
(
RC_PID_FAST_START
)
rinfo
[
i
].
diff
=
0
;
else
rinfo
[
i
].
diff
=
i
*
pinfo
->
norm_offset
;
}
for
(
i
=
1
;
i
<
sband
->
n_bitrates
;
i
++
)
{
s
=
0
;
for
(
j
=
0
;
j
<
sband
->
n_bitrates
-
i
;
j
++
)
if
(
unlikely
(
sband
->
bitrates
[
rinfo
[
j
].
index
].
bitrate
>
sband
->
bitrates
[
rinfo
[
j
+
1
].
index
].
bitrate
))
{
tmp
=
rinfo
[
j
].
index
;
rinfo
[
j
].
index
=
rinfo
[
j
+
1
].
index
;
rinfo
[
j
+
1
].
index
=
tmp
;
rinfo
[
rinfo
[
j
].
index
].
rev_index
=
j
;
rinfo
[
rinfo
[
j
+
1
].
index
].
rev_index
=
j
+
1
;
s
=
1
;
}
if
(
!
s
)
break
;
}
#ifdef CONFIG_MAC80211_DEBUGFS
de
=
&
pinfo
->
dentries
;
de
->
target
=
debugfs_create_u32
(
"target_pf"
,
S_IRUSR
|
S_IWUSR
,
...
...
net/mac80211/tx.c
View file @
86b698b8
...
...
@@ -772,7 +772,7 @@ ieee80211_tx_h_fragment(struct ieee80211_tx_data *tx)
hdrlen
=
ieee80211_hdrlen
(
hdr
->
frame_control
);
/* internal error, why is TX_FRAGMENTED set? */
if
(
WARN_ON
(
skb
->
len
<=
frag_threshold
))
if
(
WARN_ON
(
skb
->
len
+
FCS_LEN
<=
frag_threshold
))
return
TX_DROP
;
/*
...
...
net/wireless/reg.c
View file @
86b698b8
...
...
@@ -907,6 +907,7 @@ EXPORT_SYMBOL(freq_reg_info);
int
freq_reg_info
(
struct
wiphy
*
wiphy
,
u32
center_freq
,
u32
*
bandwidth
,
const
struct
ieee80211_reg_rule
**
reg_rule
)
{
assert_cfg80211_lock
();
return
freq_reg_info_regd
(
wiphy
,
center_freq
,
bandwidth
,
reg_rule
,
NULL
);
}
...
...
@@ -1133,7 +1134,8 @@ static bool reg_is_world_roaming(struct wiphy *wiphy)
if
(
is_world_regdom
(
cfg80211_regdomain
->
alpha2
)
||
(
wiphy
->
regd
&&
is_world_regdom
(
wiphy
->
regd
->
alpha2
)))
return
true
;
if
(
last_request
->
initiator
!=
NL80211_REGDOM_SET_BY_COUNTRY_IE
&&
if
(
last_request
&&
last_request
->
initiator
!=
NL80211_REGDOM_SET_BY_COUNTRY_IE
&&
wiphy
->
custom_regulatory
)
return
true
;
return
false
;
...
...
@@ -1142,6 +1144,12 @@ static bool reg_is_world_roaming(struct wiphy *wiphy)
/* Reap the advantages of previously found beacons */
static
void
reg_process_beacons
(
struct
wiphy
*
wiphy
)
{
/*
* Means we are just firing up cfg80211, so no beacons would
* have been processed yet.
*/
if
(
!
last_request
)
return
;
if
(
!
reg_is_world_roaming
(
wiphy
))
return
;
wiphy_update_beacon_reg
(
wiphy
);
...
...
@@ -1176,6 +1184,8 @@ static void handle_channel_custom(struct wiphy *wiphy,
struct
ieee80211_supported_band
*
sband
;
struct
ieee80211_channel
*
chan
;
assert_cfg80211_lock
();
sband
=
wiphy
->
bands
[
band
];
BUG_ON
(
chan_idx
>=
sband
->
n_channels
);
chan
=
&
sband
->
channels
[
chan_idx
];
...
...
@@ -1214,10 +1224,13 @@ void wiphy_apply_custom_regulatory(struct wiphy *wiphy,
const
struct
ieee80211_regdomain
*
regd
)
{
enum
ieee80211_band
band
;
mutex_lock
(
&
cfg80211_mutex
);
for
(
band
=
0
;
band
<
IEEE80211_NUM_BANDS
;
band
++
)
{
if
(
wiphy
->
bands
[
band
])
handle_band_custom
(
wiphy
,
band
,
regd
);
}
mutex_unlock
(
&
cfg80211_mutex
);
}
EXPORT_SYMBOL
(
wiphy_apply_custom_regulatory
);
...
...
@@ -1423,7 +1436,7 @@ new_request:
return
call_crda
(
last_request
->
alpha2
);
}
/* This
currently only processes user and driver
regulatory hints */
/* This
processes *all*
regulatory hints */
static
void
reg_process_hint
(
struct
regulatory_request
*
reg_request
)
{
int
r
=
0
;
...
...
net/wireless/scan.c
View file @
86b698b8
...
...
@@ -395,6 +395,7 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
memcpy
(
ies
,
res
->
pub
.
information_elements
,
ielen
);
found
->
ies_allocated
=
true
;
found
->
pub
.
information_elements
=
ies
;
found
->
pub
.
len_information_elements
=
ielen
;
}
}
}
...
...
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