From: Andrew Lunn <andrew@lunn.ch>
To: Chunhao Lin <hau@realtek.com>
Cc: hkallweit1@gmail.com, netdev@vger.kernel.org,
nic_swsd@realtek.com, kuba@kernel.org, davem@davemloft.net
Subject: Re: [PATCH v3 net-next] r8169: add support for rtl8168h(revid 0x2a) + rtl8211fs fiber application
Date: Mon, 22 Aug 2022 21:58:43 +0200 [thread overview]
Message-ID: <YwPf8yXud3mYFvnW@lunn.ch> (raw)
In-Reply-To: <20220822160714.2904-1-hau@realtek.com>
> @@ -914,8 +952,12 @@ static void r8168g_mdio_write(struct rtl8169_private *tp, int reg, int value)
> if (tp->ocp_base != OCP_STD_PHY_BASE)
> reg -= 0x10;
>
> - if (tp->ocp_base == OCP_STD_PHY_BASE && reg == MII_BMCR)
> + if (tp->ocp_base == OCP_STD_PHY_BASE && reg == MII_BMCR) {
> + if (tp->sfp_if_type != RTL_SFP_IF_NONE && value & BMCR_PDOWN)
> + return;
> +
Please could you explain this change.
> +/* Data I/O pin control */
> +static void rtl_mdio_dir(struct mdiobb_ctrl *ctrl, int output)
> +{
> + struct bb_info *bitbang = container_of(ctrl, struct bb_info, ctrl);
> + struct rtl8169_private *tp = bitbang->tp;
> + const u16 reg = PINOE;
> + const u16 mask = bitbang->sfp_mask.mdio_oe_mask;
> + u16 value;
Reverse christmas tree please. Please sort this, longest first.
> +/* MDIO bus init function */
> +static int rtl_mdio_bitbang_init(struct rtl8169_private *tp)
> +{
> + struct bb_info *bitbang;
> + struct device *d = tp_to_dev(tp);
> + struct mii_bus *new_bus;
> +
> + /* create bit control struct for PHY */
> + bitbang = devm_kzalloc(d, sizeof(struct bb_info), GFP_KERNEL);
> + if (!bitbang)
> + return -ENOMEM;
> +
> + /* bitbang init */
> + bitbang->tp = tp;
> + bitbang->ctrl.ops = &bb_ops;
> + bitbang->ctrl.op_c22_read = MDIO_READ;
> + bitbang->ctrl.op_c22_write = MDIO_WRITE;
> +
> + /* MII controller setting */
> + new_bus = devm_mdiobus_alloc(d);
> + if (!new_bus)
> + return -ENOMEM;
> +
> + new_bus->read = mdiobb_read;
> + new_bus->write = mdiobb_write;
> + new_bus->priv = &bitbang->ctrl;
Please use alloc_mdio_bitbang().
> +static u16 rtl_sfp_mdio_read(struct rtl8169_private *tp,
> + u8 reg)
> +{
> + struct mii_bus *bus = tp->mii_bus;
> + struct bb_info *bitbang;
> +
> + if (!bus)
> + return ~0;
> +
> + bitbang = container_of(bus->priv, struct bb_info, ctrl);
> +
> + return bus->read(bus, bitbang->sfp_mask.phy_addr, reg);
By doing this, you are bypassing all the locking. You don't normally
need operations like this. When you register the MDIO bus to the core,
it will go find any PHYs on the bus. You can then use phylib to access
the PHY. A MAC accessing the PHY is generally wrong.
Andrew
next prev parent reply other threads:[~2022-08-22 19:59 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-22 16:07 [PATCH v3 net-next] r8169: add support for rtl8168h(revid 0x2a) + rtl8211fs fiber application Chunhao Lin
2022-08-22 19:58 ` Andrew Lunn [this message]
2022-08-23 15:17 ` Hau
2022-08-23 15:31 ` Andrew Lunn
2022-08-23 15:48 ` Hau
2022-08-23 17:16 ` Andrew Lunn
2022-08-24 19:20 ` Hau
2022-08-22 20:19 ` Heiner Kallweit
2022-08-23 15:34 ` Hau
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=YwPf8yXud3mYFvnW@lunn.ch \
--to=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=hau@realtek.com \
--cc=hkallweit1@gmail.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nic_swsd@realtek.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.