* [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