From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Jiawen Wu <jiawenwu@trustnetic.com>
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: Tue, 8 Aug 2023 09:21:06 +0100 [thread overview]
Message-ID: <ZNH68qtZvaXp5c5j@shell.armlinux.org.uk> (raw)
In-Reply-To: <20230808021708.196160-4-jiawenwu@trustnetic.com>
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?
> @@ -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?
> 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.
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().
Thanks.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2023-08-08 19:06 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) [this message]
[not found] ` <081e01d9c9d4$f350d170$d9f27450$@trustnetic.com>
2023-08-16 8:20 ` Jiawen Wu
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=ZNH68qtZvaXp5c5j@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=Jose.Abreu@synopsys.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hkallweit1@gmail.com \
--cc=jiawenwu@trustnetic.com \
--cc=kuba@kernel.org \
--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 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.