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
nexedi
linux
Commits
d5dc056c
Commit
d5dc056c
authored
Mar 31, 2010
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
00ae7028
73714004
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
55 additions
and
31 deletions
+55
-31
drivers/net/wireless/ath/ar9170/usb.c
drivers/net/wireless/ath/ar9170/usb.c
+3
-1
drivers/net/wireless/iwlwifi/iwl-4965.c
drivers/net/wireless/iwlwifi/iwl-4965.c
+2
-4
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-agn.c
+10
-2
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/iwlwifi/iwl3945-base.c
+2
-2
drivers/net/wireless/libertas/cfg.c
drivers/net/wireless/libertas/cfg.c
+6
-2
drivers/net/wireless/libertas/dev.h
drivers/net/wireless/libertas/dev.h
+1
-0
drivers/net/wireless/mwl8k.c
drivers/net/wireless/mwl8k.c
+1
-0
drivers/net/wireless/p54/p54usb.c
drivers/net/wireless/p54/p54usb.c
+1
-0
drivers/net/wireless/rt2x00/rt2500usb.c
drivers/net/wireless/rt2x00/rt2500usb.c
+5
-0
drivers/net/wireless/rt2x00/rt2800lib.c
drivers/net/wireless/rt2x00/rt2800lib.c
+2
-2
net/mac80211/mesh_hwmp.c
net/mac80211/mesh_hwmp.c
+2
-2
net/mac80211/tx.c
net/mac80211/tx.c
+6
-0
net/mac80211/util.c
net/mac80211/util.c
+9
-9
net/wireless/reg.c
net/wireless/reg.c
+5
-7
No files found.
drivers/net/wireless/ath/ar9170/usb.c
View file @
d5dc056c
...
...
@@ -94,6 +94,8 @@ static struct usb_device_id ar9170_usb_ids[] = {
{
USB_DEVICE
(
0x04bb
,
0x093f
)
},
/* AVM FRITZ!WLAN USB Stick N */
{
USB_DEVICE
(
0x057C
,
0x8401
)
},
/* NEC WL300NU-G */
{
USB_DEVICE
(
0x0409
,
0x0249
)
},
/* AVM FRITZ!WLAN USB Stick N 2.4 */
{
USB_DEVICE
(
0x057C
,
0x8402
),
.
driver_info
=
AR9170_REQ_FW1_ONLY
},
...
...
@@ -416,7 +418,7 @@ static int ar9170_usb_exec_cmd(struct ar9170 *ar, enum ar9170_cmd cmd,
spin_unlock_irqrestore
(
&
aru
->
common
.
cmdlock
,
flags
);
usb_fill_int_urb
(
urb
,
aru
->
udev
,
usb_snd
bulk
pipe
(
aru
->
udev
,
AR9170_EP_CMD
),
usb_snd
int
pipe
(
aru
->
udev
,
AR9170_EP_CMD
),
aru
->
common
.
cmdbuf
,
plen
+
4
,
ar9170_usb_tx_urb_complete
,
NULL
,
1
);
...
...
drivers/net/wireless/iwlwifi/iwl-4965.c
View file @
d5dc056c
...
...
@@ -2041,16 +2041,14 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
tx_resp
->
failure_frame
);
freed
=
iwl_tx_queue_reclaim
(
priv
,
txq_id
,
index
);
if
(
qc
&&
likely
(
sta_id
!=
IWL_INVALID_STATION
))
priv
->
stations
[
sta_id
].
tid
[
tid
].
tfds_in_queue
-=
freed
;
iwl_free_tfds_in_queue
(
priv
,
sta_id
,
tid
,
freed
);
if
(
priv
->
mac80211_registered
&&
(
iwl_queue_space
(
&
txq
->
q
)
>
txq
->
q
.
low_mark
))
iwl_wake_queue
(
priv
,
txq_id
);
}
if
(
qc
&&
likely
(
sta_id
!=
IWL_INVALID_STATION
))
iwl_txq_check_empty
(
priv
,
sta_id
,
tid
,
txq_id
);
iwl_txq_check_empty
(
priv
,
sta_id
,
tid
,
txq_id
);
if
(
iwl_check_bits
(
status
,
TX_ABORT_REQUIRED_MSK
))
IWL_ERR
(
priv
,
"TODO: Implement Tx ABORT REQUIRED!!!
\n
"
);
...
...
drivers/net/wireless/iwlwifi/iwl-agn.c
View file @
d5dc056c
...
...
@@ -1258,7 +1258,15 @@ static void iwl_irq_tasklet(struct iwl_priv *priv)
/* Ack/clear/reset pending uCode interrupts.
* Note: Some bits in CSR_INT are "OR" of bits in CSR_FH_INT_STATUS,
*/
iwl_write32
(
priv
,
CSR_INT
,
priv
->
inta
);
/* There is a hardware bug in the interrupt mask function that some
* interrupts (i.e. CSR_INT_BIT_SCD) can still be generated even if
* they are disabled in the CSR_INT_MASK register. Furthermore the
* ICT interrupt handling mechanism has another bug that might cause
* these unmasked interrupts fail to be detected. We workaround the
* hardware bugs here by ACKing all the possible interrupts so that
* interrupt coalescing can still be achieved.
*/
iwl_write32
(
priv
,
CSR_INT
,
priv
->
inta
|
~
priv
->
inta_mask
);
inta
=
priv
->
inta
;
...
...
@@ -2644,7 +2652,7 @@ static int iwl_mac_setup_register(struct iwl_priv *priv)
BIT
(
NL80211_IFTYPE_STATION
)
|
BIT
(
NL80211_IFTYPE_ADHOC
);
hw
->
wiphy
->
flags
|=
WIPHY_FLAG_
STRICT
_REGULATORY
|
hw
->
wiphy
->
flags
|=
WIPHY_FLAG_
CUSTOM
_REGULATORY
|
WIPHY_FLAG_DISABLE_BEACON_HINTS
;
/*
...
...
drivers/net/wireless/iwlwifi/iwl3945-base.c
View file @
d5dc056c
...
...
@@ -1955,7 +1955,7 @@ static void iwl3945_init_hw_rates(struct iwl_priv *priv,
{
int
i
;
for
(
i
=
0
;
i
<
IWL_RATE_COUNT
;
i
++
)
{
for
(
i
=
0
;
i
<
IWL_RATE_COUNT
_LEGACY
;
i
++
)
{
rates
[
i
].
bitrate
=
iwl3945_rates
[
i
].
ieee
*
5
;
rates
[
i
].
hw_value
=
i
;
/* Rate scaling will work on indexes */
rates
[
i
].
hw_value_short
=
i
;
...
...
@@ -3921,7 +3921,7 @@ static int iwl3945_setup_mac(struct iwl_priv *priv)
BIT
(
NL80211_IFTYPE_STATION
)
|
BIT
(
NL80211_IFTYPE_ADHOC
);
hw
->
wiphy
->
flags
|=
WIPHY_FLAG_
STRICT
_REGULATORY
|
hw
->
wiphy
->
flags
|=
WIPHY_FLAG_
CUSTOM
_REGULATORY
|
WIPHY_FLAG_DISABLE_BEACON_HINTS
;
hw
->
wiphy
->
max_scan_ssids
=
PROBE_OPTION_MAX_3945
;
...
...
drivers/net/wireless/libertas/cfg.c
View file @
d5dc056c
...
...
@@ -172,6 +172,8 @@ int lbs_cfg_register(struct lbs_private *priv)
if
(
ret
<
0
)
lbs_pr_err
(
"cannot register wiphy device
\n
"
);
priv
->
wiphy_registered
=
true
;
ret
=
register_netdev
(
priv
->
dev
);
if
(
ret
)
lbs_pr_err
(
"cannot register network device
\n
"
);
...
...
@@ -190,9 +192,11 @@ void lbs_cfg_free(struct lbs_private *priv)
if
(
!
wdev
)
return
;
if
(
wdev
->
wiphy
)
{
if
(
priv
->
wiphy_registered
)
wiphy_unregister
(
wdev
->
wiphy
);
if
(
wdev
->
wiphy
)
wiphy_free
(
wdev
->
wiphy
);
}
kfree
(
wdev
);
}
drivers/net/wireless/libertas/dev.h
View file @
d5dc056c
...
...
@@ -36,6 +36,7 @@ struct lbs_private {
/* CFG80211 */
struct
wireless_dev
*
wdev
;
bool
wiphy_registered
;
/* Mesh */
struct
net_device
*
mesh_dev
;
/* Virtual device */
...
...
drivers/net/wireless/mwl8k.c
View file @
d5dc056c
...
...
@@ -3851,6 +3851,7 @@ MODULE_FIRMWARE("mwl8k/helper_8366.fw");
MODULE_FIRMWARE
(
"mwl8k/fmimage_8366.fw"
);
static
DEFINE_PCI_DEVICE_TABLE
(
mwl8k_pci_id_table
)
=
{
{
PCI_VDEVICE
(
MARVELL
,
0x2a0a
),
.
driver_data
=
MWL8363
,
},
{
PCI_VDEVICE
(
MARVELL
,
0x2a0c
),
.
driver_data
=
MWL8363
,
},
{
PCI_VDEVICE
(
MARVELL
,
0x2a24
),
.
driver_data
=
MWL8363
,
},
{
PCI_VDEVICE
(
MARVELL
,
0x2a2b
),
.
driver_data
=
MWL8687
,
},
...
...
drivers/net/wireless/p54/p54usb.c
View file @
d5dc056c
...
...
@@ -35,6 +35,7 @@ MODULE_FIRMWARE("isl3887usb");
static
struct
usb_device_id
p54u_table
[]
__devinitdata
=
{
/* Version 1 devices (pci chip + net2280) */
{
USB_DEVICE
(
0x0506
,
0x0a11
)},
/* 3COM 3CRWE254G72 */
{
USB_DEVICE
(
0x06b9
,
0x0120
)},
/* Thomson SpeedTouch 120g */
{
USB_DEVICE
(
0x0707
,
0xee06
)},
/* SMC 2862W-G */
{
USB_DEVICE
(
0x07aa
,
0x001c
)},
/* Corega CG-WLUSB2GT */
{
USB_DEVICE
(
0x083a
,
0x4501
)},
/* Accton 802.11g WN4501 USB */
...
...
drivers/net/wireless/rt2x00/rt2500usb.c
View file @
d5dc056c
...
...
@@ -1642,6 +1642,11 @@ static int rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
char
*
tx_power
;
unsigned
int
i
;
/*
* Disable powersaving as default.
*/
rt2x00dev
->
hw
->
wiphy
->
flags
&=
~
WIPHY_FLAG_PS_ON_BY_DEFAULT
;
/*
* Initialize all hw fields.
*/
...
...
drivers/net/wireless/rt2x00/rt2800lib.c
View file @
d5dc056c
...
...
@@ -812,9 +812,9 @@ static void rt2800_config_channel_rt3x(struct rt2x00_dev *rt2x00dev,
rt2800_rfcsr_write
(
rt2x00dev
,
24
,
rt2x00dev
->
calibration
[
conf_is_ht40
(
conf
)]);
rt2800_rfcsr_read
(
rt2x00dev
,
23
,
&
rfcsr
);
rt2800_rfcsr_read
(
rt2x00dev
,
7
,
&
rfcsr
);
rt2x00_set_field8
(
&
rfcsr
,
RFCSR7_RF_TUNING
,
1
);
rt2800_rfcsr_write
(
rt2x00dev
,
23
,
rfcsr
);
rt2800_rfcsr_write
(
rt2x00dev
,
7
,
rfcsr
);
}
static
void
rt2800_config_channel
(
struct
rt2x00_dev
*
rt2x00dev
,
...
...
net/mac80211/mesh_hwmp.c
View file @
d5dc056c
...
...
@@ -391,7 +391,7 @@ static u32 hwmp_route_info_get(struct ieee80211_sub_if_data *sdata,
if
(
SN_GT
(
mpath
->
sn
,
orig_sn
)
||
(
mpath
->
sn
==
orig_sn
&&
action
==
MPATH_PREQ
&&
new_metric
>
mpath
->
metric
))
{
new_metric
>
=
mpath
->
metric
))
{
process
=
false
;
fresh_info
=
false
;
}
...
...
@@ -611,7 +611,7 @@ static void hwmp_prep_frame_process(struct ieee80211_sub_if_data *sdata,
mesh_path_sel_frame_tx
(
MPATH_PREP
,
flags
,
orig_addr
,
cpu_to_le32
(
orig_sn
),
0
,
target_addr
,
cpu_to_le32
(
target_sn
),
mpath
->
next_hop
->
sta
.
addr
,
hopcount
,
cpu_to_le32
(
target_sn
),
next_hop
,
hopcount
,
ttl
,
cpu_to_le32
(
lifetime
),
cpu_to_le32
(
metric
),
0
,
sdata
);
rcu_read_unlock
();
...
...
net/mac80211/tx.c
View file @
d5dc056c
...
...
@@ -1991,6 +1991,7 @@ static bool ieee80211_tx_pending_skb(struct ieee80211_local *local,
void
ieee80211_tx_pending
(
unsigned
long
data
)
{
struct
ieee80211_local
*
local
=
(
struct
ieee80211_local
*
)
data
;
struct
ieee80211_sub_if_data
*
sdata
;
unsigned
long
flags
;
int
i
;
bool
txok
;
...
...
@@ -2029,6 +2030,11 @@ void ieee80211_tx_pending(unsigned long data)
if
(
!
txok
)
break
;
}
if
(
skb_queue_empty
(
&
local
->
pending
[
i
]))
list_for_each_entry_rcu
(
sdata
,
&
local
->
interfaces
,
list
)
netif_tx_wake_queue
(
netdev_get_tx_queue
(
sdata
->
dev
,
i
));
}
spin_unlock_irqrestore
(
&
local
->
queue_stop_reason_lock
,
flags
);
...
...
net/mac80211/util.c
View file @
d5dc056c
...
...
@@ -279,13 +279,13 @@ static void __ieee80211_wake_queue(struct ieee80211_hw *hw, int queue,
/* someone still has this queue stopped */
return
;
if
(
!
skb_queue_empty
(
&
local
->
pending
[
queue
]))
if
(
skb_queue_empty
(
&
local
->
pending
[
queue
]))
{
rcu_read_lock
();
list_for_each_entry_rcu
(
sdata
,
&
local
->
interfaces
,
list
)
netif_tx_wake_queue
(
netdev_get_tx_queue
(
sdata
->
dev
,
queue
));
rcu_read_unlock
();
}
else
tasklet_schedule
(
&
local
->
tx_pending_tasklet
);
rcu_read_lock
();
list_for_each_entry_rcu
(
sdata
,
&
local
->
interfaces
,
list
)
netif_tx_wake_queue
(
netdev_get_tx_queue
(
sdata
->
dev
,
queue
));
rcu_read_unlock
();
}
void
ieee80211_wake_queue_by_reason
(
struct
ieee80211_hw
*
hw
,
int
queue
,
...
...
@@ -1097,9 +1097,9 @@ int ieee80211_reconfig(struct ieee80211_local *local)
*/
res
=
drv_start
(
local
);
if
(
res
)
{
WARN
(
local
->
suspended
,
"Harware became unavailable "
"upon resume. This
is could be a software issue
"
"prior to suspend or a hardware issue
\n
"
);
WARN
(
local
->
suspended
,
"Har
d
ware became unavailable "
"upon resume. This
could be a software issue
"
"prior to suspend or a hardware issue
.
\n
"
);
return
res
;
}
...
...
net/wireless/reg.c
View file @
d5dc056c
...
...
@@ -324,7 +324,7 @@ struct reg_regdb_search_request {
};
static
LIST_HEAD
(
reg_regdb_search_list
);
static
DEFINE_
SPINLOCK
(
reg_regdb_search_lock
);
static
DEFINE_
MUTEX
(
reg_regdb_search_mutex
);
static
void
reg_regdb_search
(
struct
work_struct
*
work
)
{
...
...
@@ -332,7 +332,7 @@ static void reg_regdb_search(struct work_struct *work)
const
struct
ieee80211_regdomain
*
curdom
,
*
regdom
;
int
i
,
r
;
spin_lock
(
&
reg_regdb_search_lock
);
mutex_lock
(
&
reg_regdb_search_mutex
);
while
(
!
list_empty
(
&
reg_regdb_search_list
))
{
request
=
list_first_entry
(
&
reg_regdb_search_list
,
struct
reg_regdb_search_request
,
...
...
@@ -346,18 +346,16 @@ static void reg_regdb_search(struct work_struct *work)
r
=
reg_copy_regd
(
&
regdom
,
curdom
);
if
(
r
)
break
;
spin_unlock
(
&
reg_regdb_search_lock
);
mutex_lock
(
&
cfg80211_mutex
);
set_regdom
(
regdom
);
mutex_unlock
(
&
cfg80211_mutex
);
spin_lock
(
&
reg_regdb_search_lock
);
break
;
}
}
kfree
(
request
);
}
spin_unlock
(
&
reg_regdb_search_lock
);
mutex_unlock
(
&
reg_regdb_search_mutex
);
}
static
DECLARE_WORK
(
reg_regdb_work
,
reg_regdb_search
);
...
...
@@ -375,9 +373,9 @@ static void reg_regdb_query(const char *alpha2)
memcpy
(
request
->
alpha2
,
alpha2
,
2
);
spin_lock
(
&
reg_regdb_search_lock
);
mutex_lock
(
&
reg_regdb_search_mutex
);
list_add_tail
(
&
request
->
list
,
&
reg_regdb_search_list
);
spin_unlock
(
&
reg_regdb_search_lock
);
mutex_unlock
(
&
reg_regdb_search_mutex
);
schedule_work
(
&
reg_regdb_work
);
}
...
...
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