From: Eric Dumazet <hidden> Date: 2012-09-17 07:29:41
From: Eric Dumazet <edumazet@google.com>
Since commit e22979d96a5 (mlx4_en: Moving to Interrupts for TX
completions), we no longer can free TX skb from hard IRQ, but only from
normal softirq or process context.
Therefore, we can directly call dev_kfree_skb() from
mlx4_en_free_tx_desc() like other conventional NAPI drivers.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Yevgeny Petrilin <redacted>
Cc: Or Gerlitz <redacted>
Cc: Ying Cai <redacted>
---
drivers/net/ethernet/mellanox/mlx4/en_tx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
From: Or Gerlitz <hidden> Date: 2012-09-18 19:58:42
On Mon, Sep 17, 2012 at 10:29 AM, Eric Dumazet [off-list ref] wrote:
Since commit e22979d96a5 (mlx4_en: Moving to Interrupts for TX
completions), we no longer can free TX skb from hard IRQ, but only from
normal softirq or process context.
Therefore, we can directly call dev_kfree_skb() from
mlx4_en_free_tx_desc() like other conventional NAPI drivers.
Hi Eric,
The team is all off till tomorrow, we will look and get back to you
Or.
Since commit e22979d96a5 (mlx4_en: Moving to Interrupts for TX
completions), we no longer can free TX skb from hard IRQ, but only from
normal softirq or process context.
Therefore, we can directly call dev_kfree_skb() from
mlx4_en_free_tx_desc() like other conventional NAPI drivers.
Hi Eric,
At the moment the TX completion processing is done from IRQ context.
So I think we need to change the driver to work with NAPI for TX completions
before making this change.
I'll send the patch in a few days.
Yevgeny
From: Eric Dumazet <hidden> Date: 2012-09-19 12:13:04
On Wed, 2012-09-19 at 07:58 +0000, Yevgeny Petrilin wrote:
quoted
Since commit e22979d96a5 (mlx4_en: Moving to Interrupts for TX
completions), we no longer can free TX skb from hard IRQ, but only from
normal softirq or process context.
Therefore, we can directly call dev_kfree_skb() from
mlx4_en_free_tx_desc() like other conventional NAPI drivers.
Hi Eric,
At the moment the TX completion processing is done from IRQ context.
So I think we need to change the driver to work with NAPI for TX completions
before making this change.
I'll send the patch in a few days.
Oops you're right, it seems I misread e22979d96 commit.
irq term is a bit generic, you might add soft/hard qualifiers to
distinguish the variant.
Thanks
Hi Yevgeny,
It seems all the TxQs are sharing the same interrupt for Tx
completions. Will it be better to have separate interrupt per
num_tx_rings_p_up (8) queues? E.g. for a 16 core system, with 16 * 8
Tx queues, to have 16 interrupts for Tx completions of those 128 Tx
queues?
Also I'm looking at mlx4_en_select_queue(), it is using
__skb_tx_hash(). Use something to achieve XPS may bring better
performances.
Thanks.
On Wed, Sep 19, 2012 at 5:12 AM, Eric Dumazet [off-list ref] wrote:
On Wed, 2012-09-19 at 07:58 +0000, Yevgeny Petrilin wrote:
quoted
quoted
Since commit e22979d96a5 (mlx4_en: Moving to Interrupts for TX
completions), we no longer can free TX skb from hard IRQ, but only
from
normal softirq or process context.
Therefore, we can directly call dev_kfree_skb() from
mlx4_en_free_tx_desc() like other conventional NAPI drivers.
Hi Eric,
At the moment the TX completion processing is done from IRQ context.
So I think we need to change the driver to work with NAPI for TX
completions
before making this change.
I'll send the patch in a few days.
Oops you're right, it seems I misread e22979d96 commit.
irq term is a bit generic, you might add soft/hard qualifiers to
distinguish the variant.
Thanks
It seems all the TxQs are sharing the same interrupt for Tx
completions. Will it be better to have separate interrupt per
num_tx_rings_p_up (8) queues? E.g. for a 16 core system, with 16 * 8
Tx queues, to have 16 interrupts for Tx completions of those 128 Tx
queues?
Actually not all TxQs share same interrupt vector.
In commit 76532d0c we assigned an interrupt vector for each TX ring.
When the number of Queues is higher than number of interrupt vectors, there are queues that share interrupts
And actually reaching the assignment you specified.
Also I'm looking at mlx4_en_select_queue(), it is using
__skb_tx_hash(). Use something to achieve XPS may bring better
performances.
From: Eric Dumazet <hidden> Date: 2012-09-28 17:53:31
From: Eric Dumazet <edumazet@google.com>
After commit e22979d96a55d (mlx4_en: Moving to Interrupts for TX
completions) we no longer need to orphan skbs in mlx4_en_xmit()
since skb wont stay a long time in TX ring before their release.
Orphaning skbs in ndo_start_xmit() should be avoided as much as
possible, since it breaks TCP Small Queue or other flow control
mechanisms (per socket limits)
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Yevgeny Petrilin <redacted>
Cc: Or Gerlitz <redacted>
---
drivers/net/ethernet/mellanox/mlx4/en_tx.c | 4 ----
1 file changed, 4 deletions(-)
-----Original Message-----
From: Eric Dumazet [mailto:eric.dumazet@gmail.com]
Sent: Friday, September 28, 2012 7:54 PM
To: Yevgeny Petrilin
Cc: David Miller; netdev; Or Gerlitz
Subject: [PATCH net-next] mlx4: dont orphan skbs in mlx4_en_xmit()
From: Eric Dumazet <edumazet@google.com>
After commit e22979d96a55d (mlx4_en: Moving to Interrupts for TX
completions) we no longer need to orphan skbs in mlx4_en_xmit()
since skb wont stay a long time in TX ring before their release.
Orphaning skbs in ndo_start_xmit() should be avoided as much as
possible, since it breaks TCP Small Queue or other flow control
mechanisms (per socket limits)
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Yevgeny Petrilin <redacted>
Cc: Or Gerlitz <redacted>
---
drivers/net/ethernet/mellanox/mlx4/en_tx.c | 4 ----
1 file changed, 4 deletions(-)
From: Eric Dumazet <edumazet@google.com>
After commit e22979d96a55d (mlx4_en: Moving to Interrupts for TX
completions) we no longer need to orphan skbs in mlx4_en_xmit()
since skb wont stay a long time in TX ring before their release.
Orphaning skbs in ndo_start_xmit() should be avoided as much as
possible, since it breaks TCP Small Queue or other flow control
mechanisms (per socket limits)
Signed-off-by: Eric Dumazet <edumazet@google.com>