From: Mugunthan V N <mugunthanvnm@ti.com>
To: Christian Riesch <christian.riesch@omicron.at>
Cc: netdev@vger.kernel.org, davem@davemloft.net,
linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org,
s.hauer@pengutronix.de
Subject: Re: [PATCH 1/1] net: ethernet: davinci_cpdma: Add boundary for rx and tx descriptors
Date: Mon, 10 Dec 2012 16:59:04 +0530 [thread overview]
Message-ID: <50C5C780.9060606@ti.com> (raw)
In-Reply-To: <CABkLObqOEMKMD3df5pEDJWsGPA=oAj34Yz867D7p2hGdTr0WCA@mail.gmail.com>
On 12/10/2012 1:54 PM, Christian Riesch wrote:
> Hi again,
>
> On Mon, Dec 10, 2012 at 8:37 AM, Mugunthan V N <mugunthanvnm@ti.com> wrote:
>> When there is heavy transmission traffic in the CPDMA, then Rx descriptors
>> memory is also utilized as tx desc memory this leads to reduced rx desc memory
>> which leads to poor performance.
>>
> "poor performance" is an understatement, see Sascha's description of
> his patch. At initialization of the driver, half of the descriptors in
> the pool are allocated for rx. When a packet arrives, one of the rx
> descriptors is released and a new one is allocated. If tx allocates
> this descriptor in the meantime, it is lost for rx forever! If tx
> consumes all rx descriptors this way, the rx channel is dead!
>
> Regards, Christian
>
>> This patch adds boundary for tx and rx descriptors in bd ram dividing the
>> descriptor memory to ensure that during heavy transmission tx doesn't use
>> rx descriptors.
>>
>> This patch is already applied to davinci_emac driver, since CPSW and
>> davici_dmac uses the same CPDMA, moving the boundry seperation from
>> Davinci EMAC driver to CPDMA driver which was done in the following
>> commit
>>
>> commit 86d8c07ff2448eb4e860e50f34ef6ee78e45c40c
>> Author: Sascha Hauer <s.hauer@pengutronix.de>
>> Date: Tue Jan 3 05:27:47 2012 +0000
>>
>> net/davinci: do not use all descriptors for tx packets
>>
>> The driver uses a shared pool for both rx and tx descriptors.
>> During open it queues fixed number of 128 descriptors for receive
>> packets. For each received packet it tries to queue another
>> descriptor. If this fails the descriptor is lost for rx.
>> The driver has no limitation on tx descriptors to use, so it
>> can happen during a nmap / ping -f attack that the driver
>> allocates all descriptors for tx and looses all rx descriptors.
>> The driver stops working then.
>> To fix this limit the number of tx descriptors used to half of
>> the descriptors available, the rx path uses the other half.
>>
>> Tested on a custom board using nmap / ping -f to the board from
>> two different hosts.
>>
>> Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Will change the commit description and resubmit the patch.
Regards
Mugunthan V N
WARNING: multiple messages have this Message-ID (diff)
From: mugunthanvnm@ti.com (Mugunthan V N)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/1] net: ethernet: davinci_cpdma: Add boundary for rx and tx descriptors
Date: Mon, 10 Dec 2012 16:59:04 +0530 [thread overview]
Message-ID: <50C5C780.9060606@ti.com> (raw)
In-Reply-To: <CABkLObqOEMKMD3df5pEDJWsGPA=oAj34Yz867D7p2hGdTr0WCA@mail.gmail.com>
On 12/10/2012 1:54 PM, Christian Riesch wrote:
> Hi again,
>
> On Mon, Dec 10, 2012 at 8:37 AM, Mugunthan V N <mugunthanvnm@ti.com> wrote:
>> When there is heavy transmission traffic in the CPDMA, then Rx descriptors
>> memory is also utilized as tx desc memory this leads to reduced rx desc memory
>> which leads to poor performance.
>>
> "poor performance" is an understatement, see Sascha's description of
> his patch. At initialization of the driver, half of the descriptors in
> the pool are allocated for rx. When a packet arrives, one of the rx
> descriptors is released and a new one is allocated. If tx allocates
> this descriptor in the meantime, it is lost for rx forever! If tx
> consumes all rx descriptors this way, the rx channel is dead!
>
> Regards, Christian
>
>> This patch adds boundary for tx and rx descriptors in bd ram dividing the
>> descriptor memory to ensure that during heavy transmission tx doesn't use
>> rx descriptors.
>>
>> This patch is already applied to davinci_emac driver, since CPSW and
>> davici_dmac uses the same CPDMA, moving the boundry seperation from
>> Davinci EMAC driver to CPDMA driver which was done in the following
>> commit
>>
>> commit 86d8c07ff2448eb4e860e50f34ef6ee78e45c40c
>> Author: Sascha Hauer <s.hauer@pengutronix.de>
>> Date: Tue Jan 3 05:27:47 2012 +0000
>>
>> net/davinci: do not use all descriptors for tx packets
>>
>> The driver uses a shared pool for both rx and tx descriptors.
>> During open it queues fixed number of 128 descriptors for receive
>> packets. For each received packet it tries to queue another
>> descriptor. If this fails the descriptor is lost for rx.
>> The driver has no limitation on tx descriptors to use, so it
>> can happen during a nmap / ping -f attack that the driver
>> allocates all descriptors for tx and looses all rx descriptors.
>> The driver stops working then.
>> To fix this limit the number of tx descriptors used to half of
>> the descriptors available, the rx path uses the other half.
>>
>> Tested on a custom board using nmap / ping -f to the board from
>> two different hosts.
>>
>> Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Will change the commit description and resubmit the patch.
Regards
Mugunthan V N
WARNING: multiple messages have this Message-ID (diff)
From: Mugunthan V N <mugunthanvnm@ti.com>
To: Christian Riesch <christian.riesch@omicron.at>
Cc: <netdev@vger.kernel.org>, <davem@davemloft.net>,
<linux-arm-kernel@lists.infradead.org>,
<linux-omap@vger.kernel.org>, <s.hauer@pengutronix.de>
Subject: Re: [PATCH 1/1] net: ethernet: davinci_cpdma: Add boundary for rx and tx descriptors
Date: Mon, 10 Dec 2012 16:59:04 +0530 [thread overview]
Message-ID: <50C5C780.9060606@ti.com> (raw)
In-Reply-To: <CABkLObqOEMKMD3df5pEDJWsGPA=oAj34Yz867D7p2hGdTr0WCA@mail.gmail.com>
On 12/10/2012 1:54 PM, Christian Riesch wrote:
> Hi again,
>
> On Mon, Dec 10, 2012 at 8:37 AM, Mugunthan V N <mugunthanvnm@ti.com> wrote:
>> When there is heavy transmission traffic in the CPDMA, then Rx descriptors
>> memory is also utilized as tx desc memory this leads to reduced rx desc memory
>> which leads to poor performance.
>>
> "poor performance" is an understatement, see Sascha's description of
> his patch. At initialization of the driver, half of the descriptors in
> the pool are allocated for rx. When a packet arrives, one of the rx
> descriptors is released and a new one is allocated. If tx allocates
> this descriptor in the meantime, it is lost for rx forever! If tx
> consumes all rx descriptors this way, the rx channel is dead!
>
> Regards, Christian
>
>> This patch adds boundary for tx and rx descriptors in bd ram dividing the
>> descriptor memory to ensure that during heavy transmission tx doesn't use
>> rx descriptors.
>>
>> This patch is already applied to davinci_emac driver, since CPSW and
>> davici_dmac uses the same CPDMA, moving the boundry seperation from
>> Davinci EMAC driver to CPDMA driver which was done in the following
>> commit
>>
>> commit 86d8c07ff2448eb4e860e50f34ef6ee78e45c40c
>> Author: Sascha Hauer <s.hauer@pengutronix.de>
>> Date: Tue Jan 3 05:27:47 2012 +0000
>>
>> net/davinci: do not use all descriptors for tx packets
>>
>> The driver uses a shared pool for both rx and tx descriptors.
>> During open it queues fixed number of 128 descriptors for receive
>> packets. For each received packet it tries to queue another
>> descriptor. If this fails the descriptor is lost for rx.
>> The driver has no limitation on tx descriptors to use, so it
>> can happen during a nmap / ping -f attack that the driver
>> allocates all descriptors for tx and looses all rx descriptors.
>> The driver stops working then.
>> To fix this limit the number of tx descriptors used to half of
>> the descriptors available, the rx path uses the other half.
>>
>> Tested on a custom board using nmap / ping -f to the board from
>> two different hosts.
>>
>> Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Will change the commit description and resubmit the patch.
Regards
Mugunthan V N
next prev parent reply other threads:[~2012-12-10 11:30 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-10 7:37 [PATCH 1/1] net: ethernet: davinci_cpdma: Add boundary for rx and tx descriptors Mugunthan V N
2012-12-10 7:37 ` Mugunthan V N
2012-12-10 7:37 ` Mugunthan V N
2012-12-10 8:11 ` Christian Riesch
2012-12-10 8:11 ` Christian Riesch
2012-12-10 11:28 ` Mugunthan V N
2012-12-10 11:28 ` Mugunthan V N
2012-12-10 11:28 ` Mugunthan V N
2012-12-10 8:24 ` Christian Riesch
2012-12-10 8:24 ` Christian Riesch
2012-12-10 11:29 ` Mugunthan V N [this message]
2012-12-10 11:29 ` Mugunthan V N
2012-12-10 11:29 ` Mugunthan V N
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50C5C780.9060606@ti.com \
--to=mugunthanvnm@ti.com \
--cc=christian.riesch@omicron.at \
--cc=davem@davemloft.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=s.hauer@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.