From: Li Dongpo <lidongpo@hisilicon.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: <f.fainelli@gmail.com>, <robh+dt@kernel.org>,
<mark.rutland@arm.com>, <davem@davemloft.net>,
<xuejiancheng@hisilicon.com>, <netdev@vger.kernel.org>,
<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 3/3] net: hisilicon: Add Fast Ethernet MAC driver
Date: Tue, 14 Jun 2016 21:17:44 +0800 [thread overview]
Message-ID: <576003F8.3090000@hisilicon.com> (raw)
In-Reply-To: <4004629.ilZU8AvAjF@wuerfel>
On 2016/6/13 17:06, Arnd Bergmann wrote:
> On Monday, June 13, 2016 2:07:56 PM CEST Dongpo Li wrote:
>
>> +- reset-names: should contain the reset signal name "mac_reset"(required)
>> + and "phy_reset"(optional).
>
> Maybe just name the resets 'mac' and 'phy'? The '_reset' part is
> implied by the property.
>
Hi, Arnd,
Thank you for your advice. It's ok to omit the '_reset', I'll fix it in next version.
> I gave the driver a brief review and basically everything looks
> great, very nice work!
>
> There are two small things that I noticed:
>
>> +
>> + do {
>> + hisi_femac_xmit_reclaim(dev);
>> + num = hisi_femac_rx(dev, task);
>> + work_done += num;
>> + task -= num;
>> + if ((work_done >= budget) || (num == 0))
>> + break;
>> +
>> + ints = readl(priv->glb_base + GLB_IRQ_STAT);
>> + writel(ints & DEF_INT_MASK,
>> + priv->glb_base + GLB_IRQ_RAW);
>> + } while (ints & DEF_INT_MASK);
>> +
>> + if (work_done < budget) {
>> + napi_complete(napi);
>> + hisi_femac_irq_enable(priv, DEF_INT_MASK);
>> + }
>
> You tx function uses BQL to optimize the queue length, and that
> is great. You also check xmit reclaim for rx interrupts, so
> as long as you have both rx and tx traffic, this should work
> great.
>
> However, I notice that you only have a 'tx fifo empty'
> interrupt triggering the napi poll, so I guess on a tx-only
> workload you will always end up pushing packets into the
> queue until BQL throttles tx, and then get the interrupt
> after all packets have been sent, which will cause BQL to
> make the queue longer up to the maximum queue size, and that
> negates the effect of BQL.
>
> Is there any way you can get a tx interrupt earlier than
> this in order to get a more balanced queue, or is it ok
> to just rely on rx packets to come in occasionally, and
> just use the tx fifo empty interrupt as a fallback?
>
In tx direction, there are only two kinds of interrupts, 'tx fifo empty'
and 'tx one packet finish'. I didn't use 'tx one packet finish' because
it would lead to high hardware interrupts rate. This has been verified in
our chips. It's ok to just use tx fifo empty interrupt.
>> + priv->phy_mode = of_get_phy_mode(node);
>> + if (priv->phy_mode < 0) {
>> + dev_err(dev, "not find phy-mode\n");
>> + ret = -EINVAL;
>> + goto out_disable_clk;
>> + }
>> +
>> + priv->phy_node = of_parse_phandle(node, "phy-handle", 0);
>> + if (!priv->phy_node) {
>> + dev_err(dev, "not find phy-handle\n");
>> + ret = -EINVAL;
>> + goto out_disable_clk;
>> + }
>> +
>> + priv->phy = of_phy_connect(ndev, priv->phy_node,
>> + hisi_femac_adjust_link, 0, priv->phy_mode);
>> + if (!(priv->phy) || IS_ERR(priv->phy)) {
>> + dev_err(dev, "connect to PHY failed!\n");
>> + ret = -ENODEV;
>> + goto out_phy_node;
>> + }
>
> I wonder if we could generalize this set of three calls, I
> get the impression that we duplicate this across several
> drivers that shouldn't need to bother with the specific
> phy-handle and phy-mode properties.
>
Some drivers only call 'of_phy_connect' when ndo_open called,
some call when driver probed. But 'phy_mode' and 'phy_node' are
usually initialized when driver probed.
So I think it's not suitable to combine 'of_phy_connect' with
'of_get_phy_mode' and 'of_parse_phandle'.
Do you have any more suggestions ?
> Arnd
>
>
> .
>
Regards,
Dongpo
.
next prev parent reply other threads:[~2016-06-14 13:17 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-13 6:07 [PATCH 0/3] Add Hisilicon MDIO bus driver and FEMAC driver Dongpo Li
2016-06-13 6:07 ` [PATCH 1/3] net: Add MDIO bus driver for the Hisilicon FEMAC Dongpo Li
2016-06-13 13:32 ` Andrew Lunn
2016-06-14 8:24 ` Li Dongpo
2016-06-14 22:27 ` Rob Herring
2016-06-15 7:49 ` Li Dongpo
2016-06-13 6:07 ` [PATCH 2/3] ethtool: Add common functions for get and set settings Dongpo Li
[not found] ` <1465798076-176393-3-git-send-email-lidongpo-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org>
2016-06-13 7:36 ` kbuild test robot
2016-06-13 8:11 ` kbuild test robot
2016-06-13 8:38 ` kbuild test robot
2016-06-13 6:07 ` [PATCH 3/3] net: hisilicon: Add Fast Ethernet MAC driver Dongpo Li
[not found] ` <1465798076-176393-4-git-send-email-lidongpo-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org>
2016-06-13 7:12 ` kbuild test robot
2016-06-14 22:31 ` Rob Herring
2016-06-15 10:08 ` Dongpo Li
2016-06-13 9:06 ` Arnd Bergmann
2016-06-14 13:17 ` Li Dongpo [this message]
[not found] ` <576003F8.3090000-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org>
2016-06-14 21:20 ` Arnd Bergmann
2016-06-15 9:56 ` Dongpo Li
2016-06-28 9:21 ` Dongpo Li
[not found] ` <5772418F.9040101-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org>
2016-06-28 9:34 ` Arnd Bergmann
2016-07-11 3:44 ` Dongpo Li
2016-07-11 8:16 ` Arnd Bergmann
2016-07-11 8:33 ` Dongpo Li
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=576003F8.3090000@hisilicon.com \
--to=lidongpo@hisilicon.com \
--cc=arnd@arndb.de \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=f.fainelli@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=netdev@vger.kernel.org \
--cc=robh+dt@kernel.org \
--cc=xuejiancheng@hisilicon.com \
/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).