netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Jiawen Wu" <jiawenwu@trustnetic.com>
To: "'Russell King \(Oracle\)'" <linux@armlinux.org.uk>
Cc: <netdev@vger.kernel.org>, <davem@davemloft.net>,
	<edumazet@google.com>, <kuba@kernel.org>, <pabeni@redhat.com>,
	<andrew@lunn.ch>, <hkallweit1@gmail.com>,
	<Jose.Abreu@synopsys.com>, <mengyuanlou@net-swift.com>
Subject: RE: [PATCH net-next v2 3/7] net: pcs: xpcs: add 1000BASE-X AN interrupt support
Date: Wed, 16 Aug 2023 16:20:19 +0800	[thread overview]
Message-ID: <014b01d9d01a$7e79aa10$7b6cfe30$@trustnetic.com> (raw)
In-Reply-To: <081e01d9c9d4$f350d170$d9f27450$@trustnetic.com>

On Tuesday, August 8, 2023 4:47 PM, Jiawen Wu wrote:
> On Tuesday, August 8, 2023 4:21 PM, Russell King (Oracle) wrote:
> > On Tue, Aug 08, 2023 at 10:17:04AM +0800, Jiawen Wu wrote:
> > > Enable CL37 AN complete interrupt for DW XPCS. It requires to clear the
> > > bit(0) [CL37_ANCMPLT_INTR] of VR_MII_AN_INTR_STS after AN completed.
> > >
> > > And there is a quirk for Wangxun devices to enable CL37 AN in backplane
> > > configurations because of the special hardware design.
> >
> > Where is the interrupt handler?
> 
> PCS interrupt is directly connected to the PCI interrupt on the board, so the
> interrupt handler is txgbe_irq_handler() in the ethernet driver.
> 
> >
> > > @@ -759,6 +762,8 @@ static int xpcs_config_aneg_c37_1000basex(struct dw_xpcs *xpcs,
> > >  		return ret;
> > >
> > >  	ret &= ~DW_VR_MII_PCS_MODE_MASK;
> > > +	if (!xpcs->pcs.poll)
> > > +		ret |= DW_VR_MII_AN_INTR_EN;
> >
> > Does this interrupt only work in 1000baseX mode?
> 
> AN interrupt now only be implemented in 1000baseX mode.
> 
> >
> > >  	ret = xpcs_write(xpcs, MDIO_MMD_VEND2, DW_VR_MII_AN_CTRL, ret);
> > >  	if (ret < 0)
> > >  		return ret;
> > > @@ -1012,6 +1017,17 @@ static int xpcs_get_state_c37_1000basex(struct dw_xpcs *xpcs,
> > >  		if (bmsr < 0)
> > >  			return bmsr;
> > >
> > > +		/* Clear AN complete interrupt */
> > > +		if (!xpcs->pcs.poll) {
> > > +			int an_intr;
> > > +
> > > +			an_intr = xpcs_read(xpcs, MDIO_MMD_VEND2, DW_VR_MII_AN_INTR_STS);
> > > +			if (an_intr & DW_VR_MII_AN_STS_C37_ANCMPLT_INTR) {
> > > +				an_intr &= ~DW_VR_MII_AN_STS_C37_ANCMPLT_INTR;
> > > +				xpcs_write(xpcs, MDIO_MMD_VEND2, DW_VR_MII_AN_INTR_STS, an_intr);
> > > +			}
> > > +		}
> > > +
> >
> > get_state isn't supposed to be used as a way to acknowledge interrupts,
> > because that will get called quite a bit later after the interrupt has
> > been received.
> 
> I think it's just to clear the AN complete bit here. Actually, ethernet driver
> handle interrupt and call phylink_mac_change() to check PCS state. It does
> get called later, though.
> 
> >
> > As an example of PCS that use interrupts, please see the converted
> > mv88e6xxx PCS, for example:
> >
> >  drivers/net/dsa/mv88e6xxx/pcs-6352.c
> >
> > If the interrupt handler for the PCS is threaded, then it can access
> > the DW_VR_MII_AN_INTR_STS register to acknowledge the interrupt and
> > call phylink_pcs_change() or phylink_mac_change().
> 
> I'll check the usage of this method, thanks.

If interrupt handler is to be implemented in PCS, the codes about interrupts in
txgbe driver needs to be all refactored. This will affect GPIO, SFP... 

Could I refactor these codes in a future patch, and keep the current IRQ structure
in this series?



  parent reply	other threads:[~2023-08-16  8:23 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-08  2:17 [PATCH net-next v2 0/7] support more link mode for TXGBE Jiawen Wu
2023-08-08  2:17 ` [PATCH net-next v2 1/7] net: pcs: xpcs: add specific vendor supoprt for Wangxun 10Gb NICs Jiawen Wu
2023-08-08  9:21   ` Russell King (Oracle)
     [not found]     ` <082101d9c9dd$2595f400$70c1dc00$@trustnetic.com>
2023-08-08 10:01       ` Russell King (Oracle)
2023-08-08 20:41         ` Andrew Lunn
2023-08-09  6:49           ` Jiawen Wu
2023-08-09 13:07             ` Andrew Lunn
2023-08-08  2:17 ` [PATCH net-next v2 2/7] net: pcs: xpcs: support to switch mode for Wangxun NICs Jiawen Wu
2023-08-08  2:17 ` [PATCH net-next v2 3/7] net: pcs: xpcs: add 1000BASE-X AN interrupt support Jiawen Wu
2023-08-08  8:21   ` Russell King (Oracle)
     [not found]     ` <081e01d9c9d4$f350d170$d9f27450$@trustnetic.com>
2023-08-16  8:20       ` Jiawen Wu [this message]
2023-08-08  2:17 ` [PATCH net-next v2 4/7] net: pcs: xpcs: adapt Wangxun NICs for SGMII mode Jiawen Wu
2023-08-08  2:17 ` [PATCH net-next v2 5/7] net: txgbe: support switching mode to 1000BASE-X and SGMII Jiawen Wu
2023-08-08  2:17 ` [PATCH net-next v2 6/7] net: txgbe: support copper NIC with external PHY Jiawen Wu
2023-08-08  2:17 ` [PATCH net-next v2 7/7] net: ngbe: move mdio access registers to libwx Jiawen Wu

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='014b01d9d01a$7e79aa10$7b6cfe30$@trustnetic.com' \
    --to=jiawenwu@trustnetic.com \
    --cc=Jose.Abreu@synopsys.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hkallweit1@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mengyuanlou@net-swift.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.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).