Netdev List
 help / color / mirror / Atom feed
* [PATCH net-next v2 5/9] net: ethernet: oa_tc6: Adding vendor specific MMS
@ 2026-05-11 18:19 Selvamani Rajagopal
  2026-05-11 19:35 ` Andrew Lunn
  0 siblings, 1 reply; 4+ messages in thread
From: Selvamani Rajagopal @ 2026-05-11 18:19 UTC (permalink / raw)
  To: Piergiorgio Beruto, parthiban.veerasooran@microchip.com,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org

Vendor1 MMD value is mapped to vendor specific memory map
selector fom table 6 of Open Alliance 10BASET1x MACPHY
Serial Interface specification.

Signed-off-by: Selvamani Rajagopal <Selvamani.Rajagopal@onsemi.com>
---
 drivers/net/ethernet/oa_tc6.c | 23 ++++++++++++++++++++---
 include/linux/oa_tc6.h        |  5 +++++
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/oa_tc6.c b/drivers/net/ethernet/oa_tc6.c
index 91a906a79..beeac008f 100644
--- a/drivers/net/ethernet/oa_tc6.c
+++ b/drivers/net/ethernet/oa_tc6.c
@@ -129,6 +129,7 @@ struct oa_tc6 {
 	u8 rx_chunks_available;
 	bool rx_buf_overflow;
 	bool int_flag;
+	int vend1_mms;
 };
 
 enum oa_tc6_header_type {
@@ -190,6 +191,19 @@ static int oa_tc6_get_parity(u32 p)
 	return !((p >> 28) & 1);
 }
 
+/**
+ * Add vendor specific MDIO_MMD to OA TC6 MMS mapper value.
+ * @tc6: oa_tc6 struct.
+ * @mms: vendor defined MMS value.
+ *
+ * Return: 0 on success otherwise failed.
+ */
+void oa_tc6_set_vend1_mms(struct oa_tc6 *tc6, int mms)
+{
+	tc6->vend1_mms = mms;
+}
+EXPORT_SYMBOL_GPL(oa_tc6_set_vend1_mms);
+
 static __be32 oa_tc6_prepare_ctrl_header(u32 addr, u8 length,
 					 enum oa_tc6_register_op reg_op)
 {
@@ -443,7 +457,7 @@ static int oa_tc6_mdiobus_write(struct mii_bus *bus, int addr, int regnum,
 				     val);
 }
 
-static int oa_tc6_get_phy_c45_mms(int devnum)
+static int oa_tc6_get_phy_c45_mms(struct oa_tc6 *tc6, int devnum)
 {
 	switch (devnum) {
 	case MDIO_MMD_PCS:
@@ -456,6 +470,8 @@ static int oa_tc6_get_phy_c45_mms(int devnum)
 		return OA_TC6_PHY_C45_AUTO_NEG_MMS5;
 	case MDIO_MMD_POWER_UNIT:
 		return OA_TC6_PHY_C45_POWER_UNIT_MMS6;
+	case MDIO_MMD_VEND1:
+		return tc6->vend1_mms;
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -468,7 +484,7 @@ static int oa_tc6_mdiobus_read_c45(struct mii_bus *bus, int addr, int devnum,
 	u32 regval;
 	int ret;
 
-	ret = oa_tc6_get_phy_c45_mms(devnum);
+	ret = oa_tc6_get_phy_c45_mms(tc6, devnum);
 	if (ret < 0)
 		return ret;
 
@@ -485,7 +501,7 @@ static int oa_tc6_mdiobus_write_c45(struct mii_bus *bus, int addr, int devnum,
 	struct oa_tc6 *tc6 = bus->priv;
 	int ret;
 
-	ret = oa_tc6_get_phy_c45_mms(devnum);
+	ret = oa_tc6_get_phy_c45_mms(tc6, devnum);
 	if (ret < 0)
 		return ret;
 
@@ -1246,6 +1262,7 @@ struct oa_tc6 *oa_tc6_init(struct spi_device *spi, struct net_device *netdev)
 	SET_NETDEV_DEV(netdev, &spi->dev);
 	mutex_init(&tc6->spi_ctrl_lock);
 	spin_lock_init(&tc6->tx_skb_lock);
+	tc6->vend1_mms = -EOPNOTSUPP;
 
 	/* Set the SPI controller to pump at realtime priority */
 	tc6->spi->rt = true;
diff --git a/include/linux/oa_tc6.h b/include/linux/oa_tc6.h
index 15f58e3c5..d3c74555f 100644
--- a/include/linux/oa_tc6.h
+++ b/include/linux/oa_tc6.h
@@ -7,6 +7,9 @@
  * Author: Parthiban Veerasooran <parthiban.veerasooran@microchip.com>
  */
 
+#ifndef _LINUX_OA_TC6_H
+#define _LINUX_OA_TC6_H
+
 #include <linux/etherdevice.h>
 #include <linux/spi/spi.h>
 
@@ -22,3 +25,5 @@ int oa_tc6_read_registers(struct oa_tc6 *tc6, u32 address, u32 value[],
 			  u8 length);
 netdev_tx_t oa_tc6_start_xmit(struct oa_tc6 *tc6, struct sk_buff *skb);
 int oa_tc6_zero_align_receive_frame_enable(struct oa_tc6 *tc6);
+void oa_tc6_set_vend1_mms(struct oa_tc6 *tc6, int mms);
+#endif /* _LINUX_OA_TC6_H */
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next v2 5/9] net: ethernet: oa_tc6: Adding vendor specific MMS
  2026-05-11 18:19 [PATCH net-next v2 5/9] net: ethernet: oa_tc6: Adding vendor specific MMS Selvamani Rajagopal
@ 2026-05-11 19:35 ` Andrew Lunn
  2026-05-12  4:57   ` Selvamani Rajagopal
  0 siblings, 1 reply; 4+ messages in thread
From: Andrew Lunn @ 2026-05-11 19:35 UTC (permalink / raw)
  To: Selvamani Rajagopal
  Cc: Piergiorgio Beruto, parthiban.veerasooran@microchip.com,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org

> -static int oa_tc6_get_phy_c45_mms(int devnum)
> +static int oa_tc6_get_phy_c45_mms(struct oa_tc6 *tc6, int devnum)
>  {
>  	switch (devnum) {
>  	case MDIO_MMD_PCS:
> @@ -456,6 +470,8 @@ static int oa_tc6_get_phy_c45_mms(int devnum)
>  		return OA_TC6_PHY_C45_AUTO_NEG_MMS5;
>  	case MDIO_MMD_POWER_UNIT:
>  		return OA_TC6_PHY_C45_POWER_UNIT_MMS6;
> +	case MDIO_MMD_VEND1:
> +		return tc6->vend1_mms;

MMS 0 would be against the specification. So i would do

	case MDIO_MMD_VEND1:
		if (!tc6->vend1_mms)
			return -EOPNOTSUPP;
		return tc6->vend1_mms;

That should catch uses of VEND1 without first defining the mapping to
the MMS.

	Andrew

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH net-next v2 5/9] net: ethernet: oa_tc6: Adding vendor specific MMS
  2026-05-11 19:35 ` Andrew Lunn
@ 2026-05-12  4:57   ` Selvamani Rajagopal
  2026-05-12 14:02     ` Andrew Lunn
  0 siblings, 1 reply; 4+ messages in thread
From: Selvamani Rajagopal @ 2026-05-12  4:57 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Piergiorgio Beruto, parthiban.veerasooran@microchip.com,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org

[..]

> 
> > -static int oa_tc6_get_phy_c45_mms(int devnum)
> > +static int oa_tc6_get_phy_c45_mms(struct oa_tc6 *tc6, int devnum)
> > {
> > switch (devnum) {
> > case MDIO_MMD_PCS:
> > @@ -456,6 +470,8 @@ static int oa_tc6_get_phy_c45_mms(int devnum)
> > return OA_TC6_PHY_C45_AUTO_NEG_MMS5;
> > case MDIO_MMD_POWER_UNIT:
> > return OA_TC6_PHY_C45_POWER_UNIT_MMS6;
> > + case MDIO_MMD_VEND1:
> > + return tc6->vend1_mms;
> 
> MMS 0 would be against the specification. So i would do
> 
> case MDIO_MMD_VEND1:
> if (!tc6->vend1_mms)
> return -EOPNOTSUPP;
> return tc6->vend1_mms;
> 
> That should catch uses of VEND1 without first defining the mapping to
> the MMS.


vend1_mms is initialized to -EOPNOTSUPP in oa_tc6_init. So, it won't be 0 by default.
Hopefully this is ok, unless you want to remove initializing with -EOPNOTSUPP and add the check you mentioned.

> 
> Andrew


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next v2 5/9] net: ethernet: oa_tc6: Adding vendor specific MMS
  2026-05-12  4:57   ` Selvamani Rajagopal
@ 2026-05-12 14:02     ` Andrew Lunn
  0 siblings, 0 replies; 4+ messages in thread
From: Andrew Lunn @ 2026-05-12 14:02 UTC (permalink / raw)
  To: Selvamani Rajagopal
  Cc: Piergiorgio Beruto, parthiban.veerasooran@microchip.com,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org

On Tue, May 12, 2026 at 04:57:01AM +0000, Selvamani Rajagopal wrote:
> [..]
> 
> > 
> > > -static int oa_tc6_get_phy_c45_mms(int devnum)
> > > +static int oa_tc6_get_phy_c45_mms(struct oa_tc6 *tc6, int devnum)
> > > {
> > > switch (devnum) {
> > > case MDIO_MMD_PCS:
> > > @@ -456,6 +470,8 @@ static int oa_tc6_get_phy_c45_mms(int devnum)
> > > return OA_TC6_PHY_C45_AUTO_NEG_MMS5;
> > > case MDIO_MMD_POWER_UNIT:
> > > return OA_TC6_PHY_C45_POWER_UNIT_MMS6;
> > > + case MDIO_MMD_VEND1:
> > > + return tc6->vend1_mms;
> > 
> > MMS 0 would be against the specification. So i would do
> > 
> > case MDIO_MMD_VEND1:
> > if (!tc6->vend1_mms)
> > return -EOPNOTSUPP;
> > return tc6->vend1_mms;
> > 
> > That should catch uses of VEND1 without first defining the mapping to
> > the MMS.
> 
> 
> vend1_mms is initialized to -EOPNOTSUPP in oa_tc6_init. So, it won't be 0 by default.

Ah, missed that. So this is O.K.

    Andrew

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-05-12 14:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-11 18:19 [PATCH net-next v2 5/9] net: ethernet: oa_tc6: Adding vendor specific MMS Selvamani Rajagopal
2026-05-11 19:35 ` Andrew Lunn
2026-05-12  4:57   ` Selvamani Rajagopal
2026-05-12 14:02     ` Andrew Lunn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox