All of lore.kernel.org
 help / color / mirror / Atom feed
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

WARNING: multiple messages have this Message-ID (diff)
From: Andrew Lunn <andrew@lunn.ch>
To: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
Cc: Mans Rullgard <mans@mansr.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Mason <slash.tmp@free.fr>, netdev <netdev@vger.kernel.org>,
	Thibaud Cornic <thibaud_cornic@sigmadesigns.com>,
	David Miller <davem@davemloft.net>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>
Subject: Re: [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

  reply	other threads:[~2017-11-15 14:17 UTC|newest]

Thread overview: 70+ 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:53 ` Marc Gonzalez
2017-11-14 10:54 ` [PATCH v3 1/4] net: nb8800: Drop generic support Marc Gonzalez
2017-11-14 10:54   ` Marc Gonzalez
2017-11-14 12:37   ` Måns Rullgård
2017-11-14 12:37     ` Måns Rullgård
2017-11-14 12:47     ` Marc Gonzalez
2017-11-14 12:47       ` Marc Gonzalez
2017-11-14 13:03       ` Måns Rullgård
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 10:55   ` Marc Gonzalez
2017-11-14 12:38   ` Måns Rullgård
2017-11-14 12:38     ` Måns Rullgård
2017-11-14 12:56     ` Marc Gonzalez
2017-11-14 12:56       ` Marc Gonzalez
2017-11-14 13:22       ` Måns Rullgård
2017-11-14 13:22         ` Måns Rullgård
2017-11-15 10:53         ` Marc Gonzalez
2017-11-15 10:53           ` Marc Gonzalez
2017-11-15 14:17           ` Andrew Lunn [this message]
2017-11-15 14:17             ` Andrew Lunn
2017-11-15 14:33             ` Marc Gonzalez
2017-11-15 14:33               ` Marc Gonzalez
2017-11-15 15:03               ` Andrew Lunn
2017-11-15 15:03                 ` Andrew Lunn
2017-11-15 15:19                 ` Marc Gonzalez
2017-11-15 15:19                   ` Marc Gonzalez
2017-11-15 15:36                   ` Måns Rullgård
2017-11-15 15:36                     ` Måns Rullgård
2017-11-15 21:12                   ` Andrew Lunn
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 10:56   ` Marc Gonzalez
2017-11-14 12:40   ` Måns Rullgård
2017-11-14 12:40     ` Måns Rullgård
2017-11-14 13:26     ` Marc Gonzalez
2017-11-14 13:26       ` Marc Gonzalez
2017-11-14 13:54       ` Måns Rullgård
2017-11-14 13:54         ` Måns Rullgård
2017-11-14 16:41         ` Marc Gonzalez
2017-11-14 16:41           ` Marc Gonzalez
2017-11-14 16:55           ` Måns Rullgård
2017-11-14 16:55             ` Måns Rullgård
2017-11-14 17:07             ` Marc Gonzalez
2017-11-14 17:07               ` Marc Gonzalez
2017-11-15 14:58             ` Marc Gonzalez
2017-11-15 14:58               ` Marc Gonzalez
2017-11-15 15:11               ` Måns Rullgård
2017-11-15 15:11                 ` Måns Rullgård
2017-11-15 16:15                 ` Marc Gonzalez
2017-11-15 16:15                   ` Marc Gonzalez
2017-11-16 12:21                   ` Marc Gonzalez
2017-11-16 12:21                     ` Marc Gonzalez
2017-11-16 16:23                     ` Andrew Lunn
2017-11-16 16:23                       ` Andrew Lunn
2017-11-16 16:52                       ` Marc Gonzalez
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 12:04   ` Marc Gonzalez
2017-11-14 13:02   ` Måns Rullgård
2017-11-14 13:02     ` Måns Rullgård
2017-11-14 14:22     ` Marc Gonzalez
2017-11-14 14:22       ` Marc Gonzalez
2017-11-14 16:31       ` Andrew Lunn
2017-11-14 16:31         ` Andrew Lunn
2017-11-14 17:08         ` Marc Gonzalez
2017-11-14 17:08           ` Marc Gonzalez
2017-11-14 17:33           ` Andrew Lunn
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 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.