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
675c6070
Commit
675c6070
authored
Feb 23, 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
662a96bd
a120e912
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
27 additions
and
9 deletions
+27
-9
drivers/net/wireless/iwlwifi/iwl-4965.c
drivers/net/wireless/iwlwifi/iwl-4965.c
+1
-1
drivers/net/wireless/iwlwifi/iwl-5000.c
drivers/net/wireless/iwlwifi/iwl-5000.c
+3
-5
drivers/net/wireless/iwlwifi/iwl-core.c
drivers/net/wireless/iwlwifi/iwl-core.c
+1
-1
drivers/net/wireless/iwlwifi/iwl-core.h
drivers/net/wireless/iwlwifi/iwl-core.h
+2
-0
drivers/net/wireless/iwlwifi/iwl-tx.c
drivers/net/wireless/iwlwifi/iwl-tx.c
+20
-2
No files found.
drivers/net/wireless/iwlwifi/iwl-4965.c
View file @
675c6070
...
...
@@ -2008,7 +2008,7 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
IWL_DEBUG_TX_REPLY
(
priv
,
"Retry scheduler reclaim scd_ssn "
"%d index %d
\n
"
,
scd_ssn
,
index
);
freed
=
iwl_tx_queue_reclaim
(
priv
,
txq_id
,
index
);
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
)
&&
...
...
drivers/net/wireless/iwlwifi/iwl-5000.c
View file @
675c6070
...
...
@@ -1125,7 +1125,7 @@ static void iwl5000_rx_reply_tx(struct iwl_priv *priv,
scd_ssn
,
index
,
txq_id
,
txq
->
swq_id
);
freed
=
iwl_tx_queue_reclaim
(
priv
,
txq_id
,
index
);
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
)
&&
...
...
@@ -1153,16 +1153,14 @@ static void iwl5000_rx_reply_tx(struct iwl_priv *priv,
tx_resp
->
failure_frame
);
freed
=
iwl_tx_queue_reclaim
(
priv
,
txq_id
,
index
);
if
(
ieee80211_is_data_qos
(
tx_resp
->
frame_ctrl
))
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
(
ieee80211_is_data_qos
(
tx_resp
->
frame_ctrl
))
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-core.c
View file @
675c6070
...
...
@@ -2744,8 +2744,8 @@ int iwl_mac_config(struct ieee80211_hw *hw, u32 changed)
if
((
le16_to_cpu
(
priv
->
staging_rxon
.
channel
)
!=
ch
))
priv
->
staging_rxon
.
flags
=
0
;
iwl_set_rxon_ht
(
priv
,
ht_conf
);
iwl_set_rxon_channel
(
priv
,
conf
->
channel
);
iwl_set_rxon_ht
(
priv
,
ht_conf
);
iwl_set_flags_for_band
(
priv
,
conf
->
channel
->
band
);
spin_unlock_irqrestore
(
&
priv
->
lock
,
flags
);
...
...
drivers/net/wireless/iwlwifi/iwl-core.h
View file @
675c6070
...
...
@@ -446,6 +446,8 @@ void iwl_hw_txq_ctx_free(struct iwl_priv *priv);
int
iwl_hw_tx_queue_init
(
struct
iwl_priv
*
priv
,
struct
iwl_tx_queue
*
txq
);
int
iwl_txq_update_write_ptr
(
struct
iwl_priv
*
priv
,
struct
iwl_tx_queue
*
txq
);
void
iwl_free_tfds_in_queue
(
struct
iwl_priv
*
priv
,
int
sta_id
,
int
tid
,
int
freed
);
int
iwl_tx_queue_init
(
struct
iwl_priv
*
priv
,
struct
iwl_tx_queue
*
txq
,
int
slots_num
,
u32
txq_id
);
void
iwl_tx_queue_free
(
struct
iwl_priv
*
priv
,
int
txq_id
);
...
...
drivers/net/wireless/iwlwifi/iwl-tx.c
View file @
675c6070
...
...
@@ -120,6 +120,20 @@ int iwl_txq_update_write_ptr(struct iwl_priv *priv, struct iwl_tx_queue *txq)
EXPORT_SYMBOL
(
iwl_txq_update_write_ptr
);
void
iwl_free_tfds_in_queue
(
struct
iwl_priv
*
priv
,
int
sta_id
,
int
tid
,
int
freed
)
{
if
(
priv
->
stations
[
sta_id
].
tid
[
tid
].
tfds_in_queue
>=
freed
)
priv
->
stations
[
sta_id
].
tid
[
tid
].
tfds_in_queue
-=
freed
;
else
{
IWL_ERR
(
priv
,
"free more than tfds_in_queue (%u:%d)
\n
"
,
priv
->
stations
[
sta_id
].
tid
[
tid
].
tfds_in_queue
,
freed
);
priv
->
stations
[
sta_id
].
tid
[
tid
].
tfds_in_queue
=
0
;
}
}
EXPORT_SYMBOL
(
iwl_free_tfds_in_queue
);
/**
* iwl_tx_queue_free - Deallocate DMA queue.
* @txq: Transmit queue to deallocate.
...
...
@@ -1131,6 +1145,7 @@ int iwl_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index)
struct
iwl_queue
*
q
=
&
txq
->
q
;
struct
iwl_tx_info
*
tx_info
;
int
nfreed
=
0
;
struct
ieee80211_hdr
*
hdr
;
if
((
index
>=
q
->
n_bd
)
||
(
iwl_queue_used
(
q
,
index
)
==
0
))
{
IWL_ERR
(
priv
,
"Read index for DMA queue txq id (%d), index %d, "
...
...
@@ -1145,13 +1160,16 @@ int iwl_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index)
tx_info
=
&
txq
->
txb
[
txq
->
q
.
read_ptr
];
iwl_tx_status
(
priv
,
tx_info
->
skb
[
0
]);
hdr
=
(
struct
ieee80211_hdr
*
)
tx_info
->
skb
[
0
]
->
data
;
if
(
hdr
&&
ieee80211_is_data_qos
(
hdr
->
frame_control
))
nfreed
++
;
tx_info
->
skb
[
0
]
=
NULL
;
if
(
priv
->
cfg
->
ops
->
lib
->
txq_inval_byte_cnt_tbl
)
priv
->
cfg
->
ops
->
lib
->
txq_inval_byte_cnt_tbl
(
priv
,
txq
);
priv
->
cfg
->
ops
->
lib
->
txq_free_tfd
(
priv
,
txq
);
nfreed
++
;
}
return
nfreed
;
}
...
...
@@ -1559,7 +1577,7 @@ void iwl_rx_reply_compressed_ba(struct iwl_priv *priv,
if
(
txq
->
q
.
read_ptr
!=
(
ba_resp_scd_ssn
&
0xff
))
{
/* calculate mac80211 ampdu sw queue to wake */
int
freed
=
iwl_tx_queue_reclaim
(
priv
,
scd_flow
,
index
);
priv
->
stations
[
sta_id
].
tid
[
tid
].
tfds_in_queue
-=
freed
;
iwl_free_tfds_in_queue
(
priv
,
sta_id
,
tid
,
freed
)
;
if
((
iwl_queue_space
(
&
txq
->
q
)
>
txq
->
q
.
low_mark
)
&&
priv
->
mac80211_registered
&&
...
...
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