From: Zhangfei Gao <zhangfei.gao@gmail.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Zhangfei Gao <zhangfei.gao@linaro.org>,
netdev <netdev@vger.kernel.org>,
"David S. Miller" <davem@davemloft.net>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: [PATCH 3/3] net: hisilicon: new hip04 ethernet driver
Date: Fri, 21 Mar 2014 15:56:04 +0800 [thread overview]
Message-ID: <CAMj5BkgAv-6fBvf73mXULPF+Cw3VqWfPhi0YRR6WyUS75uD4yw@mail.gmail.com> (raw)
In-Reply-To: <4951263.YfedV5kHCP@wuerfel>
Dear Arnd
On Fri, Mar 21, 2014 at 3:37 PM, Arnd Bergmann <arnd@arndb.de> wrote:
>> >> >> +static int hip04_alloc_ring(struct net_device *ndev, struct device *d)
>> >> >> +{
>> >> >> + struct hip04_priv *priv = netdev_priv(ndev);
>> >> >> + int i;
>> >> >> +
>> >> >> + priv->rx_buf_size = RX_BUF_SIZE +
>> >> >> + SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
>> >> >> +
>> >> >> + priv->desc_pool = dma_pool_create(DRV_NAME, d, sizeof(struct tx_desc),
>> >> >> + SKB_DATA_ALIGN(sizeof(struct tx_desc)), 0);
>> >> >> + if (!priv->desc_pool)
>> >> >> + return -ENOMEM;
>> >> >> +
>> >> >> + for (i = 0; i < TX_DESC_NUM; i++) {
>> >> >> + priv->td_ring[i] = dma_pool_alloc(priv->desc_pool,
>> >> >> + GFP_ATOMIC, &priv->td_phys[i]);
>> >> >> + if (!priv->td_ring[i])
>> >> >> + return -ENOMEM;
>> >> >> + }
>> >> >
>> >> > Why do you create a dma pool here, when you do all the allocations upfront?
>> >> >
>> >> > It looks to me like you could simply turn the td_ring array of pointers
>> >> > to tx descriptors into a an array of tx descriptors (no pointers) and allocate
>> >> > that one using dma_alloc_coherent.
>> >>
>> >> dma pool used here mainly because of alignment,
>> >> the desc has requirement of SKB_DATA_ALIGN,
>> >> so use the simplest way
>> >> priv->desc_pool = dma_pool_create(DRV_NAME, d, sizeof(struct tx_desc),
>> >> SKB_DATA_ALIGN(sizeof(struct tx_desc)), 0);
>> >
>> > dma_alloc_coherent() will actually give you PAGE_SIZE alignment, so that's
>> > still easier.
>> However since the alignment requirement, it can not simply use desc[i]
>> to get each desc.
>> desc = dma_alloc_coherent(d, size, &phys, GFP_KERNEL);
>> desc[i] is not what we want.
>> So still prefer using dma_pool_alloc here.
>
> Ah, I see what you mean: struct tx_desc is actually smaller than the
> required alignment. You can fix that by marking the structure
> "____cacheline_aligned".
>
Yes, after recheck the method carefully, it works with __aligned(0x40).
"____cacheline_aligned" is much better.
The desc can be get with either table or pointer.
Will update accordingly, it is simpler.
Thanks
next prev parent reply other threads:[~2014-03-21 7:56 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-18 8:40 [PATCH 0/3] add hisilicon hip04 ethernet driver Zhangfei Gao
2014-03-18 8:40 ` [PATCH 1/3] Documentation: add Device tree bindings for Hisilicon hip04 ethernet Zhangfei Gao
2014-03-18 12:34 ` Mark Rutland
[not found] ` <20140318123451.GA2941-NuALmloUBlrZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2014-03-21 12:59 ` Zhangfei Gao
2014-03-18 12:51 ` Sergei Shtylyov
2014-03-21 13:04 ` Zhangfei Gao
2014-03-18 17:39 ` Florian Fainelli
2014-03-20 11:29 ` Zhangfei Gao
2014-03-18 8:40 ` [PATCH 2/3] net: hisilicon: new hip04 MDIO driver Zhangfei Gao
[not found] ` <1395132017-15928-3-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-03-18 17:28 ` Florian Fainelli
2014-03-20 10:53 ` Zhangfei Gao
2014-03-20 17:59 ` Florian Fainelli
2014-03-21 5:27 ` Zhangfei Gao
[not found] ` <1395132017-15928-1-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-03-18 8:40 ` [PATCH 3/3] net: hisilicon: new hip04 ethernet driver Zhangfei Gao
[not found] ` <1395132017-15928-4-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-03-18 10:46 ` Russell King - ARM Linux
2014-03-20 9:51 ` Zhangfei Gao
2014-03-24 14:17 ` Rob Herring
2014-03-26 14:22 ` Zhangfei Gao
2014-03-18 11:25 ` Arnd Bergmann
2014-03-20 14:00 ` Zhangfei Gao
2014-03-20 14:31 ` Arnd Bergmann
[not found] ` <201403201531.20416.arnd-r2nGTMty4D4@public.gmane.org>
2014-03-21 5:19 ` Zhangfei Gao
2014-03-21 7:37 ` Arnd Bergmann
2014-03-21 7:56 ` Zhangfei Gao [this message]
2014-03-24 8:17 ` Zhangfei Gao
2014-03-24 10:02 ` Arnd Bergmann
2014-03-24 13:23 ` Zhangfei Gao
2014-03-18 10:27 ` [PATCH 0/3] add hisilicon " Ding Tianhong
-- strict thread matches above, loose matches on Subject: below --
2014-03-21 15:09 [PATCH v2 " Zhangfei Gao
2014-03-21 15:09 ` [PATCH 3/3] net: hisilicon: new " Zhangfei Gao
2014-03-21 15:27 ` Arnd Bergmann
2014-03-22 1:18 ` zhangfei
2014-03-22 8:08 ` Arnd Bergmann
2014-03-24 14:14 [PATCH v3 0/3] add hisilicon " Zhangfei Gao
2014-03-24 14:14 ` [PATCH 3/3] net: hisilicon: new " Zhangfei Gao
[not found] ` <1395670496-17381-4-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-03-24 15:18 ` Arnd Bergmann
2014-03-25 4:06 ` Zhangfei Gao
2014-03-25 8:12 ` Arnd Bergmann
2014-03-25 17:00 ` Florian Fainelli
2014-03-25 17:05 ` Arnd Bergmann
2014-03-25 17:16 ` Florian Fainelli
2014-03-25 17:57 ` Arnd Bergmann
2014-03-26 9:55 ` David Laight
2014-03-25 17:17 ` David Laight
2014-03-25 17:21 ` Eric Dumazet
2014-03-25 17:54 ` Arnd Bergmann
2014-03-27 12:53 ` zhangfei
2014-03-24 16:32 ` Florian Fainelli
2014-03-24 17:23 ` Arnd Bergmann
2014-03-24 17:35 ` Florian Fainelli
2014-03-27 6:27 ` Zhangfei Gao
2014-03-28 15:35 [PATCH v4 0/3] add hisilicon " Zhangfei Gao
2014-03-28 15:36 ` [PATCH 3/3] net: hisilicon: new " Zhangfei Gao
2014-04-01 13:27 [PATCH v5 0/3] add hisilicon " Zhangfei Gao
2014-04-01 13:27 ` [PATCH 3/3] net: hisilicon: new " Zhangfei Gao
[not found] ` <1396358832-15828-4-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-04-02 9:21 ` Arnd Bergmann
2014-04-02 9:51 ` zhangfei
2014-04-02 15:24 ` Arnd Bergmann
2014-04-02 10:04 ` David Laight
2014-04-02 15:49 ` Arnd Bergmann
2014-04-03 6:24 ` Zhangfei Gao
[not found] ` <CAMj5BkgfwE1hHpVeqH9WRitwCB30x3c4w0qw7sXT3PiOV-QcPQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-03 8:35 ` Arnd Bergmann
2014-04-03 15:22 ` David Miller
2014-04-03 15:38 ` zhangfei
2014-04-03 15:27 ` Russell King - ARM Linux
2014-04-03 15:42 ` David Laight
2014-04-03 15:50 ` Russell King - ARM Linux
2014-04-03 17:57 ` Arnd Bergmann
2014-04-04 6:52 ` Zhangfei Gao
2014-04-04 15:16 [PATCH v6 0/3] add hisilicon " Zhangfei Gao
[not found] ` <1396624597-390-1-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-04-04 15:16 ` [PATCH 3/3] net: hisilicon: new " Zhangfei Gao
2014-04-05 4:35 [PATCH v7 0/3] add hisilicon " Zhangfei Gao
2014-04-05 4:35 ` [PATCH 3/3] net: hisilicon: new " Zhangfei Gao
2014-04-07 18:53 ` David Miller
2014-04-08 8:07 ` zhangfei
2014-04-08 8:30 ` David Laight
[not found] ` <063D6719AE5E284EB5DD2968C1650D6D0F6F1434-VkEWCZq2GCInGFn1LkZF6NBPR1lH4CV8@public.gmane.org>
2014-04-08 9:42 ` Arnd Bergmann
2014-04-08 14:47 ` zhangfei
2014-04-18 13:17 ` zhangfei
2014-04-07 18:56 ` David Miller
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=CAMj5BkgAv-6fBvf73mXULPF+Cw3VqWfPhi0YRR6WyUS75uD4yw@mail.gmail.com \
--to=zhangfei.gao@gmail.com \
--cc=arnd@arndb.de \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=netdev@vger.kernel.org \
--cc=zhangfei.gao@linaro.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).