From: andrew@lunn.ch (Andrew Lunn)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 2/4] net: nb8800: Simplify nb8800_pause_config()
Date: Wed, 15 Nov 2017 15:17:07 +0100 [thread overview]
Message-ID: <20171115141707.GB2130@lunn.ch> (raw)
In-Reply-To: <6f534b2b-f69a-bda5-dc5b-0281bf0df129@sigmadesigns.com>
On Wed, Nov 15, 2017 at 11:53:23AM +0100, Marc Gonzalez wrote:
> On 14/11/2017 14:22, M?ns Rullg?rd wrote:
>
> > Marc Gonzalez wrote:
> >
> >> On 14/11/2017 13:38, M?ns Rullg?rd wrote:
> >>
> >>> Marc Gonzalez writes:
> >>>
> >>>> The "flow control enable" bit can be tweaked, even if DMA is enabled.
> >>>
> >>> No, it can't. Maybe on some of your newer chips it can, but not on the
> >>> older ones.
> >>
> >> Again, I suppose you are referring to your SMP8642-based board.
> >>
> >> Are you saying you tested this patch, and it doesn't work?
> >> What are the symptoms?
> >
> > I didn't test that patch per se. I did initially try simply changing
> > that bit, and this didn't work. Either it had no effect, or it locked
> > up the controller, I forget which. The manual explicitly states that
> > writes are forbidden while the DMA enabled bit is set.
> >
> > If shutting down the DMA really isn't possible, I would rather just
> > allow changing the flow control setting only when the interface is
> > stopped. The normal case of getting the initial setting from the
> > auto-negotiation will still work properly. It just won't be possible to
> > change it while the link is active.
>
> Hello Mans,
>
> With the default setup,
>
> priv->pause_aneg = true;
> priv->pause_rx = true;
> priv->pause_tx = true;
Hi Marc
So you are assuming the peer supports pause? Is that a safe assumption
to make? Should you not have it disabled until auto-neg has completed
and you then know what the peer can do?
>
> even the very first call to nb8800_pause_config() occurs with netif_running=1
> as well as the RX DMA bit enabled.
>
> buildroot login: root
> # ip addr add 172.27.64.23/18 brd 172.27.127.255 dev eth0
> # ip link set eth0 up
> [ 25.771000] ENTER nb8800_pause_config: netif_running=1
> [ 25.776195] CPU: 0 PID: 193 Comm: kworker/0:1 Not tainted 4.9.54-1-rc6 #18
> [ 25.783102] Hardware name: Sigma Tango DT
> [ 25.787138] Workqueue: events_power_efficient phy_state_machine
> [ 25.793107] [<c010f290>] (unwind_backtrace) from [<c010af34>] (show_stack+0x10/0x14)
> [ 25.800896] [<c010af34>] (show_stack) from [<c02d06e8>] (dump_stack+0x88/0x9c)
> [ 25.808160] [<c02d06e8>] (dump_stack) from [<c03967e4>] (nb8800_pause_config+0x28/0xf0)
> [ 25.816208] [<c03967e4>] (nb8800_pause_config) from [<c03969e0>] (nb8800_link_reconfigure+0x134/0x148)
> [ 25.825565] [<c03969e0>] (nb8800_link_reconfigure) from [<c0391d84>] (phy_state_machine+0x348/0x468)
> [ 25.834750] [<c0391d84>] (phy_state_machine) from [<c012e858>] (process_one_work+0x1d8/0x3f0)
> [ 25.843323] [<c012e858>] (process_one_work) from [<c012f6a4>] (worker_thread+0x4c/0x560)
> [ 25.851459] [<c012f6a4>] (worker_thread) from [<c0134354>] (kthread+0xec/0xf4)
> [ 25.858721] [<c0134354>] (kthread) from [<c01078f8>] (ret_from_fork+0x14/0x3c)
> [ 25.874597] nb8800 26000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
>
>
> This makes sense, since nb8800_open() calls nb8800_start_rx()
> before phy_start().
>
> Moving nb8800_start_rx() to after nb8800_pause_config() does
> appear to work, but I'm not sure it is the correct action?
nb8800_link_reconfigure() can be called whenever the link to the peer
changes. auto-neg may happen later because the cable was not plugged
in until later, etc.
Andrew
next prev parent reply other threads:[~2017-11-15 14:17 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-14 10:53 [PATCH v3 0/4] Various nb8800 tweaks Marc Gonzalez
2017-11-14 10:54 ` [PATCH v3 1/4] net: nb8800: Drop generic support Marc Gonzalez
2017-11-14 12:37 ` Måns Rullgård
2017-11-14 12:47 ` Marc Gonzalez
2017-11-14 13:03 ` Måns Rullgård
2017-11-14 10:55 ` [PATCH v3 2/4] net: nb8800: Simplify nb8800_pause_config() Marc Gonzalez
2017-11-14 12:38 ` Måns Rullgård
2017-11-14 12:56 ` Marc Gonzalez
2017-11-14 13:22 ` Måns Rullgård
2017-11-15 10:53 ` Marc Gonzalez
2017-11-15 14:17 ` Andrew Lunn [this message]
2017-11-15 14:33 ` Marc Gonzalez
2017-11-15 15:03 ` Andrew Lunn
2017-11-15 15:19 ` Marc Gonzalez
2017-11-15 15:36 ` Måns Rullgård
2017-11-15 21:12 ` Andrew Lunn
2017-11-14 10:56 ` [PATCH v3 3/4] net: nb8800: Move HW init to ndo_open() Marc Gonzalez
2017-11-14 12:40 ` Måns Rullgård
2017-11-14 13:26 ` Marc Gonzalez
2017-11-14 13:54 ` Måns Rullgård
2017-11-14 16:41 ` Marc Gonzalez
2017-11-14 16:55 ` Måns Rullgård
2017-11-14 17:07 ` Marc Gonzalez
2017-11-15 14:58 ` Marc Gonzalez
2017-11-15 15:11 ` Måns Rullgård
2017-11-15 16:15 ` Marc Gonzalez
2017-11-16 12:21 ` Marc Gonzalez
2017-11-16 16:23 ` Andrew Lunn
2017-11-16 16:52 ` Marc Gonzalez
2017-11-14 12:04 ` [PATCH v3 4/4] net: nb8800: Add support for suspend/resume Marc Gonzalez
2017-11-14 13:02 ` Måns Rullgård
2017-11-14 14:22 ` Marc Gonzalez
2017-11-14 16:31 ` Andrew Lunn
2017-11-14 17:08 ` Marc Gonzalez
2017-11-14 17:33 ` Andrew Lunn
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=20171115141707.GB2130@lunn.ch \
--to=andrew@lunn.ch \
--cc=linux-arm-kernel@lists.infradead.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).