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
a1b97440
Commit
a1b97440
authored
Jul 30, 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
27fed417
89c3a8ac
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
63 additions
and
45 deletions
+63
-45
drivers/net/wireless/airo.c
drivers/net/wireless/airo.c
+6
-7
drivers/net/wireless/ath/ath9k/eeprom.c
drivers/net/wireless/ath/ath9k/eeprom.c
+2
-2
drivers/net/wireless/iwlwifi/iwl-3945.h
drivers/net/wireless/iwlwifi/iwl-3945.h
+1
-1
drivers/net/wireless/iwlwifi/iwl-dev.h
drivers/net/wireless/iwlwifi/iwl-dev.h
+4
-2
drivers/net/wireless/iwlwifi/iwl-tx.c
drivers/net/wireless/iwlwifi/iwl-tx.c
+8
-6
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/iwlwifi/iwl3945-base.c
+2
-2
drivers/net/wireless/iwmc3200wifi/netdev.c
drivers/net/wireless/iwmc3200wifi/netdev.c
+2
-4
drivers/net/wireless/libertas/assoc.c
drivers/net/wireless/libertas/assoc.c
+8
-10
drivers/net/wireless/libertas/scan.c
drivers/net/wireless/libertas/scan.c
+2
-1
net/mac80211/mlme.c
net/mac80211/mlme.c
+1
-1
net/mac80211/pm.c
net/mac80211/pm.c
+15
-9
net/mac80211/rx.c
net/mac80211/rx.c
+12
-0
No files found.
drivers/net/wireless/airo.c
View file @
a1b97440
...
...
@@ -5918,20 +5918,19 @@ static int airo_set_essid(struct net_device *dev,
readSsidRid
(
local
,
&
SSID_rid
);
/* Check if we asked for `any' */
if
(
dwrq
->
flags
==
0
)
{
if
(
dwrq
->
flags
==
0
)
{
/* Just send an empty SSID list */
memset
(
&
SSID_rid
,
0
,
sizeof
(
SSID_rid
));
}
else
{
int
index
=
(
dwrq
->
flags
&
IW_ENCODE_INDEX
)
-
1
;
unsigned
index
=
(
dwrq
->
flags
&
IW_ENCODE_INDEX
)
-
1
;
/* Check the size of the string */
if
(
dwrq
->
length
>
IW_ESSID_MAX_SIZE
)
{
if
(
dwrq
->
length
>
IW_ESSID_MAX_SIZE
)
return
-
E2BIG
;
}
/* Check if index is valid */
if
((
index
<
0
)
||
(
index
>=
4
))
{
if
(
index
>=
ARRAY_SIZE
(
SSID_rid
.
ssids
))
return
-
EINVAL
;
}
/* Set the SSID */
memset
(
SSID_rid
.
ssids
[
index
].
ssid
,
0
,
...
...
@@ -6819,7 +6818,7 @@ static int airo_set_txpow(struct net_device *dev,
return
-
EINVAL
;
}
clear_bit
(
FLAG_RADIO_OFF
,
&
local
->
flags
);
for
(
i
=
0
;
cap_rid
.
txPowerLevels
[
i
]
&&
(
i
<
8
)
;
i
++
)
for
(
i
=
0
;
i
<
8
&&
cap_rid
.
txPowerLevels
[
i
]
;
i
++
)
if
(
v
==
cap_rid
.
txPowerLevels
[
i
])
{
readConfigRid
(
local
,
1
);
local
->
config
.
txPower
=
v
;
...
...
drivers/net/wireless/ath/ath9k/eeprom.c
View file @
a1b97440
...
...
@@ -460,7 +460,7 @@ static int ath9k_hw_4k_check_eeprom(struct ath_hw *ah)
integer
=
swab32
(
eep
->
modalHeader
.
antCtrlCommon
);
eep
->
modalHeader
.
antCtrlCommon
=
integer
;
for
(
i
=
0
;
i
<
AR5416_MAX_CHAINS
;
i
++
)
{
for
(
i
=
0
;
i
<
AR5416_
EEP4K_
MAX_CHAINS
;
i
++
)
{
integer
=
swab32
(
eep
->
modalHeader
.
antCtrlChain
[
i
]);
eep
->
modalHeader
.
antCtrlChain
[
i
]
=
integer
;
}
...
...
@@ -914,7 +914,7 @@ static void ath9k_hw_set_4k_power_per_rate_table(struct ath_hw *ah,
ctlMode
,
numCtlModes
,
isHt40CtlMode
,
(
pCtlMode
[
ctlMode
]
&
EXT_ADDITIVE
));
for
(
i
=
0
;
(
i
<
AR5416_NUM_CTLS
)
&&
for
(
i
=
0
;
(
i
<
AR5416_
EEP4K_
NUM_CTLS
)
&&
pEepData
->
ctlIndex
[
i
];
i
++
)
{
DPRINTF
(
ah
->
ah_sc
,
ATH_DBG_EEPROM
,
" LOOP-Ctlidx %d: cfgCtl 0x%2.2x "
...
...
drivers/net/wireless/iwlwifi/iwl-3945.h
View file @
a1b97440
...
...
@@ -112,7 +112,7 @@ enum iwl3945_antenna {
#define IWL_TX_FIFO_NONE 7
/* Minimum number of queues. MAX_NUM is defined in hw specific files */
#define IWL_MIN_NUM_QUEUES 4
#define IWL
39
_MIN_NUM_QUEUES 4
#define IEEE80211_DATA_LEN 2304
#define IEEE80211_4ADDR_LEN 30
...
...
drivers/net/wireless/iwlwifi/iwl-dev.h
View file @
a1b97440
...
...
@@ -258,8 +258,10 @@ struct iwl_channel_info {
#define IWL_TX_FIFO_HCCA_2 6
#define IWL_TX_FIFO_NONE 7
/* Minimum number of queues. MAX_NUM is defined in hw specific files */
#define IWL_MIN_NUM_QUEUES 4
/* Minimum number of queues. MAX_NUM is defined in hw specific files.
* Set the minimum to accommodate the 4 standard TX queues, 1 command
* queue, 2 (unused) HCCA queues, and 4 HT queues (one for each AC) */
#define IWL_MIN_NUM_QUEUES 10
/* Power management (not Tx power) structures */
...
...
drivers/net/wireless/iwlwifi/iwl-tx.c
View file @
a1b97440
...
...
@@ -720,8 +720,6 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
goto
drop_unlock
;
}
spin_unlock_irqrestore
(
&
priv
->
lock
,
flags
);
hdr_len
=
ieee80211_hdrlen
(
fc
);
/* Find (or create) index into station table for destination station */
...
...
@@ -729,7 +727,7 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
if
(
sta_id
==
IWL_INVALID_STATION
)
{
IWL_DEBUG_DROP
(
priv
,
"Dropping - INVALID STATION: %pM
\n
"
,
hdr
->
addr1
);
goto
drop
;
goto
drop
_unlock
;
}
IWL_DEBUG_TX
(
priv
,
"station Id %d
\n
"
,
sta_id
);
...
...
@@ -750,14 +748,17 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
txq_id
=
priv
->
stations
[
sta_id
].
tid
[
tid
].
agg
.
txq_id
;
swq_id
=
iwl_virtual_agg_queue_num
(
swq_id
,
txq_id
);
}
priv
->
stations
[
sta_id
].
tid
[
tid
].
tfds_in_queue
++
;
}
txq
=
&
priv
->
txq
[
txq_id
];
q
=
&
txq
->
q
;
txq
->
swq_id
=
swq_id
;
spin_lock_irqsave
(
&
priv
->
lock
,
flags
);
if
(
unlikely
(
iwl_queue_space
(
q
)
<
q
->
high_mark
))
goto
drop_unlock
;
if
(
ieee80211_is_data_qos
(
fc
))
priv
->
stations
[
sta_id
].
tid
[
tid
].
tfds_in_queue
++
;
/* Set up driver data for this TFD */
memset
(
&
(
txq
->
txb
[
q
->
write_ptr
]),
0
,
sizeof
(
struct
iwl_tx_info
));
...
...
@@ -902,7 +903,6 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
drop_unlock:
spin_unlock_irqrestore
(
&
priv
->
lock
,
flags
);
drop:
return
-
1
;
}
EXPORT_SYMBOL
(
iwl_tx_skb
);
...
...
@@ -1171,6 +1171,8 @@ int iwl_tx_agg_start(struct iwl_priv *priv, const u8 *ra, u16 tid, u16 *ssn)
IWL_ERR
(
priv
,
"Start AGG on invalid station
\n
"
);
return
-
ENXIO
;
}
if
(
unlikely
(
tid
>=
MAX_TID_COUNT
))
return
-
EINVAL
;
if
(
priv
->
stations
[
sta_id
].
tid
[
tid
].
agg
.
state
!=
IWL_AGG_OFF
)
{
IWL_ERR
(
priv
,
"Start AGG when state is not IWL_AGG_OFF !
\n
"
);
...
...
drivers/net/wireless/iwlwifi/iwl3945-base.c
View file @
a1b97440
...
...
@@ -4018,10 +4018,10 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
SET_IEEE80211_DEV
(
hw
,
&
pdev
->
dev
);
if
((
iwl3945_mod_params
.
num_of_queues
>
IWL39_MAX_NUM_QUEUES
)
||
(
iwl3945_mod_params
.
num_of_queues
<
IWL_MIN_NUM_QUEUES
))
{
(
iwl3945_mod_params
.
num_of_queues
<
IWL
39
_MIN_NUM_QUEUES
))
{
IWL_ERR
(
priv
,
"invalid queues_num, should be between %d and %d
\n
"
,
IWL_MIN_NUM_QUEUES
,
IWL39_MAX_NUM_QUEUES
);
IWL
39
_MIN_NUM_QUEUES
,
IWL39_MAX_NUM_QUEUES
);
err
=
-
EINVAL
;
goto
out_ieee80211_free_hw
;
}
...
...
drivers/net/wireless/iwmc3200wifi/netdev.c
View file @
a1b97440
...
...
@@ -106,10 +106,8 @@ void *iwm_if_alloc(int sizeof_bus, struct device *dev,
int
ret
=
0
;
wdev
=
iwm_wdev_alloc
(
sizeof_bus
,
dev
);
if
(
!
wdev
)
{
dev_err
(
dev
,
"no memory for wireless device instance
\n
"
);
return
ERR_PTR
(
-
ENOMEM
);
}
if
(
IS_ERR
(
wdev
))
return
wdev
;
iwm
=
wdev_to_iwm
(
wdev
);
iwm
->
bus_ops
=
if_ops
;
...
...
drivers/net/wireless/libertas/assoc.c
View file @
a1b97440
/* Copyright (C) 2006, Red Hat, Inc. */
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/etherdevice.h>
#include <linux/ieee80211.h>
#include <linux/if_arp.h>
...
...
@@ -43,21 +44,21 @@ static int get_common_rates(struct lbs_private *priv,
u16
*
rates_size
)
{
u8
*
card_rates
=
lbs_bg_rates
;
size_t
num_card_rates
=
sizeof
(
lbs_bg_rates
);
int
ret
=
0
,
i
,
j
;
u8
tmp
[
30
];
u8
tmp
[
(
ARRAY_SIZE
(
lbs_bg_rates
)
-
1
)
*
(
*
rates_size
-
1
)
];
size_t
tmp_size
=
0
;
/* For each rate in card_rates that exists in rate1, copy to tmp */
for
(
i
=
0
;
card_rates
[
i
]
&&
(
i
<
num_card_rates
)
;
i
++
)
{
for
(
j
=
0
;
rates
[
j
]
&&
(
j
<
*
rates_size
)
;
j
++
)
{
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
lbs_bg_rates
)
&&
card_rates
[
i
]
;
i
++
)
{
for
(
j
=
0
;
j
<
*
rates_size
&&
rates
[
j
]
;
j
++
)
{
if
(
rates
[
j
]
==
card_rates
[
i
])
tmp
[
tmp_size
++
]
=
card_rates
[
i
];
}
}
lbs_deb_hex
(
LBS_DEB_JOIN
,
"AP rates "
,
rates
,
*
rates_size
);
lbs_deb_hex
(
LBS_DEB_JOIN
,
"card rates "
,
card_rates
,
num_card_rates
);
lbs_deb_hex
(
LBS_DEB_JOIN
,
"card rates "
,
card_rates
,
ARRAY_SIZE
(
lbs_bg_rates
));
lbs_deb_hex
(
LBS_DEB_JOIN
,
"common rates"
,
tmp
,
tmp_size
);
lbs_deb_join
(
"TX data rate 0x%02x
\n
"
,
priv
->
cur_rate
);
...
...
@@ -69,10 +70,7 @@ static int get_common_rates(struct lbs_private *priv,
lbs_pr_alert
(
"Previously set fixed data rate %#x isn't "
"compatible with the network.
\n
"
,
priv
->
cur_rate
);
ret
=
-
1
;
goto
done
;
}
ret
=
0
;
done:
memset
(
rates
,
0
,
*
rates_size
);
*
rates_size
=
min_t
(
int
,
tmp_size
,
*
rates_size
);
...
...
@@ -322,7 +320,7 @@ static int lbs_associate(struct lbs_private *priv,
rates
=
(
struct
mrvl_ie_rates_param_set
*
)
pos
;
rates
->
header
.
type
=
cpu_to_le16
(
TLV_TYPE_RATES
);
memcpy
(
&
rates
->
rates
,
&
bss
->
rates
,
MAX_RATES
);
tmplen
=
MAX_RATES
;
tmplen
=
min_t
(
u16
,
ARRAY_SIZE
(
rates
->
rates
),
MAX_RATES
)
;
if
(
get_common_rates
(
priv
,
rates
->
rates
,
&
tmplen
))
{
ret
=
-
1
;
goto
done
;
...
...
@@ -598,7 +596,7 @@ static int lbs_adhoc_join(struct lbs_private *priv,
/* Copy Data rates from the rates recorded in scan response */
memset
(
cmd
.
bss
.
rates
,
0
,
sizeof
(
cmd
.
bss
.
rates
));
ratesize
=
min_t
(
u16
,
sizeof
(
cmd
.
bss
.
rates
),
MAX_RATES
);
ratesize
=
min_t
(
u16
,
ARRAY_SIZE
(
cmd
.
bss
.
rates
),
MAX_RATES
);
memcpy
(
cmd
.
bss
.
rates
,
bss
->
rates
,
ratesize
);
if
(
get_common_rates
(
priv
,
cmd
.
bss
.
rates
,
&
ratesize
))
{
lbs_deb_join
(
"ADHOC_JOIN: get_common_rates returned error.
\n
"
);
...
...
drivers/net/wireless/libertas/scan.c
View file @
a1b97440
...
...
@@ -5,6 +5,7 @@
* for sending scan commands to the firmware.
*/
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/etherdevice.h>
#include <linux/if_arp.h>
#include <asm/unaligned.h>
...
...
@@ -876,7 +877,7 @@ static inline char *lbs_translate_scan(struct lbs_private *priv,
iwe
.
u
.
bitrate
.
disabled
=
0
;
iwe
.
u
.
bitrate
.
value
=
0
;
for
(
j
=
0
;
bss
->
rates
[
j
]
&&
(
j
<
sizeof
(
bss
->
rates
))
;
j
++
)
{
for
(
j
=
0
;
j
<
ARRAY_SIZE
(
bss
->
rates
)
&&
bss
->
rates
[
j
]
;
j
++
)
{
/* Bit rate given in 500 kb/s units */
iwe
.
u
.
bitrate
.
value
=
bss
->
rates
[
j
]
*
500000
;
current_val
=
iwe_stream_add_value
(
info
,
start
,
current_val
,
...
...
net/mac80211/mlme.c
View file @
a1b97440
...
...
@@ -721,7 +721,7 @@ void ieee80211_dynamic_ps_timer(unsigned long data)
{
struct
ieee80211_local
*
local
=
(
void
*
)
data
;
if
(
local
->
quiescing
)
if
(
local
->
quiescing
||
local
->
suspended
)
return
;
queue_work
(
local
->
hw
.
workqueue
,
&
local
->
dynamic_ps_enable_work
);
...
...
net/mac80211/pm.c
View file @
a1b97440
...
...
@@ -55,15 +55,6 @@ int __ieee80211_suspend(struct ieee80211_hw *hw)
rcu_read_unlock
();
/* flush again, in case driver queued work */
flush_workqueue
(
local
->
hw
.
workqueue
);
/* stop hardware - this must stop RX */
if
(
local
->
open_count
)
{
ieee80211_led_radio
(
local
,
false
);
drv_stop
(
local
);
}
/* remove STAs */
spin_lock_irqsave
(
&
local
->
sta_lock
,
flags
);
list_for_each_entry
(
sta
,
&
local
->
sta_list
,
list
)
{
...
...
@@ -111,7 +102,22 @@ int __ieee80211_suspend(struct ieee80211_hw *hw)
drv_remove_interface
(
local
,
&
conf
);
}
/* stop hardware - this must stop RX */
if
(
local
->
open_count
)
{
ieee80211_led_radio
(
local
,
false
);
drv_stop
(
local
);
}
/*
* flush again, in case driver queued work -- it
* shouldn't be doing (or cancel everything in the
* stop callback) that but better safe than sorry.
*/
flush_workqueue
(
local
->
hw
.
workqueue
);
local
->
suspended
=
true
;
/* need suspended to be visible before quiescing is false */
barrier
();
local
->
quiescing
=
false
;
return
0
;
...
...
net/mac80211/rx.c
View file @
a1b97440
...
...
@@ -2453,6 +2453,18 @@ void __ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb,
return
;
}
/*
* If we're suspending, it is possible although not too likely
* that we'd be receiving frames after having already partially
* quiesced the stack. We can't process such frames then since
* that might, for example, cause stations to be added or other
* driver callbacks be invoked.
*/
if
(
unlikely
(
local
->
quiescing
||
local
->
suspended
))
{
kfree_skb
(
skb
);
return
;
}
if
(
status
->
flag
&
RX_FLAG_HT
)
{
/* rate_idx is MCS index */
if
(
WARN_ON
(
status
->
rate_idx
<
0
||
...
...
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