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
6a68afe3
Commit
6a68afe3
authored
May 23, 2009
by
Krzysztof Hałasa
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
IXP4xx: Ethernet and WAN drivers now support "high" hardware queues.
Signed-off-by:
Krzysztof Hałasa
<
khc@pm.waw.pl
>
parent
a6a9fb85
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
15 additions
and
10 deletions
+15
-10
drivers/net/arm/ixp4xx_eth.c
drivers/net/arm/ixp4xx_eth.c
+9
-6
drivers/net/wan/ixp4xx_hss.c
drivers/net/wan/ixp4xx_hss.c
+6
-4
No files found.
drivers/net/arm/ixp4xx_eth.c
View file @
6a68afe3
...
...
@@ -456,7 +456,8 @@ static inline void queue_put_desc(unsigned int queue, u32 phys,
debug_desc
(
phys
,
desc
);
BUG_ON
(
phys
&
0x1F
);
qmgr_put_entry
(
queue
,
phys
);
BUG_ON
(
qmgr_stat_overflow
(
queue
));
/* Don't check for queue overflow here, we've allocated sufficient
length and queues >= 32 don't support this check anyway. */
}
...
...
@@ -512,8 +513,8 @@ static int eth_poll(struct napi_struct *napi, int budget)
#endif
napi_complete
(
napi
);
qmgr_enable_irq
(
rxq
);
if
(
!
qmgr_stat_empty
(
rxq
)
&&
napi_reschedule
(
napi
))
{
if
(
!
qmgr_stat_
nearly_
empty
(
rxq
)
&&
napi_reschedule
(
napi
))
{
/* really empty in fact */
#if DEBUG_RX
printk
(
KERN_DEBUG
"%s: eth_poll"
" napi_reschedule successed
\n
"
,
...
...
@@ -630,7 +631,8 @@ static void eth_txdone_irq(void *unused)
port
->
tx_buff_tab
[
n_desc
]
=
NULL
;
}
start
=
qmgr_stat_empty
(
port
->
plat
->
txreadyq
);
/* really empty in fact */
start
=
qmgr_stat_nearly_empty
(
port
->
plat
->
txreadyq
);
queue_put_desc
(
port
->
plat
->
txreadyq
,
phys
,
desc
);
if
(
start
)
{
#if DEBUG_TX
...
...
@@ -708,13 +710,14 @@ static int eth_xmit(struct sk_buff *skb, struct net_device *dev)
queue_put_desc
(
TX_QUEUE
(
port
->
id
),
tx_desc_phys
(
port
,
n
),
desc
);
dev
->
trans_start
=
jiffies
;
if
(
qmgr_stat_
empty
(
txreadyq
))
{
if
(
qmgr_stat_
nearly_empty
(
txreadyq
))
{
/* really empty in fact */
#if DEBUG_TX
printk
(
KERN_DEBUG
"%s: eth_xmit queue full
\n
"
,
dev
->
name
);
#endif
netif_stop_queue
(
dev
);
/* we could miss TX ready interrupt */
if
(
!
qmgr_stat_empty
(
txreadyq
))
{
/* really empty in fact */
if
(
!
qmgr_stat_nearly_empty
(
txreadyq
))
{
#if DEBUG_TX
printk
(
KERN_DEBUG
"%s: eth_xmit ready again
\n
"
,
dev
->
name
);
...
...
drivers/net/wan/ixp4xx_hss.c
View file @
6a68afe3
...
...
@@ -579,7 +579,8 @@ static inline void queue_put_desc(unsigned int queue, u32 phys,
debug_desc
(
phys
,
desc
);
BUG_ON
(
phys
&
0x1F
);
qmgr_put_entry
(
queue
,
phys
);
BUG_ON
(
qmgr_stat_overflow
(
queue
));
/* Don't check for queue overflow here, we've allocated sufficient
length and queues >= 32 don't support this check anyway. */
}
...
...
@@ -789,7 +790,8 @@ static void hss_hdlc_txdone_irq(void *pdev)
free_buffer_irq
(
port
->
tx_buff_tab
[
n_desc
]);
port
->
tx_buff_tab
[
n_desc
]
=
NULL
;
start
=
qmgr_stat_empty
(
port
->
plat
->
txreadyq
);
/* really empty in fact */
start
=
qmgr_stat_nearly_empty
(
port
->
plat
->
txreadyq
);
queue_put_desc
(
port
->
plat
->
txreadyq
,
tx_desc_phys
(
port
,
n_desc
),
desc
);
if
(
start
)
{
...
...
@@ -867,13 +869,13 @@ static int hss_hdlc_xmit(struct sk_buff *skb, struct net_device *dev)
queue_put_desc
(
queue_ids
[
port
->
id
].
tx
,
tx_desc_phys
(
port
,
n
),
desc
);
dev
->
trans_start
=
jiffies
;
if
(
qmgr_stat_
empty
(
txreadyq
))
{
if
(
qmgr_stat_
nearly_empty
(
txreadyq
))
{
/* really empty in fact */
#if DEBUG_TX
printk
(
KERN_DEBUG
"%s: hss_hdlc_xmit queue full
\n
"
,
dev
->
name
);
#endif
netif_stop_queue
(
dev
);
/* we could miss TX ready interrupt */
if
(
!
qmgr_stat_empty
(
txreadyq
))
{
if
(
!
qmgr_stat_
nearly_
empty
(
txreadyq
))
{
#if DEBUG_TX
printk
(
KERN_DEBUG
"%s: hss_hdlc_xmit ready again
\n
"
,
dev
->
name
);
...
...
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