[SRU][F:linux-bluefield][PATCH v1 1/1] UBUNTU: SAUCE: mlxbf_gige: syncup with v1.21 content

David Thompson davthompson at nvidia.com
Tue May 4 19:22:45 UTC 2021


BugLink: https://bugs.launchpad.net/bugs/1927134

This delivery provides a syncup of the mlxbf_gige driver
with the Mellanox-internal v1.21 content.

a) v1.20 changes - properly handle negotiated pause settings
   This delivery updates the logic in mlxbf_gige_adjust_link()
   to store the negotiated pause settings into the driver's
   private settings. The pause settings, as reported by the
   PHY device when link comes up, are thereafter returned in
   the get_pauseparam() driver callback.

b) v1.21 changes - modify copyright notice from Nvidia back to Mellanox

Reviewed-by: Asmaa Mnebhi <asmaa at nvidia.com>
Signed-off-by: David Thompson <davthompson at nvidia.com>
---
 .../net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h  |  2 +-
 .../mellanox/mlxbf_gige/mlxbf_gige_ethtool.c       |  6 +--
 .../ethernet/mellanox/mlxbf_gige/mlxbf_gige_intr.c |  2 +-
 .../ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c | 51 ++++++++++++++--------
 .../ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c |  2 +-
 .../ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h |  2 +-
 .../ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c   |  2 +-
 .../ethernet/mellanox/mlxbf_gige/mlxbf_gige_tx.c   |  2 +-
 8 files changed, 41 insertions(+), 28 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h
index e8cf26f..1c59cad 100644
--- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h
+++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h
@@ -4,7 +4,7 @@
  * - this file contains software data structures and any chip-specific
  *   data structures (e.g. TX WQE format) that are memory resident.
  *
- * Copyright (c) 2020-2021 NVIDIA Corporation.
+ * Copyright (C) 2020-2021 Mellanox Technologies, Ltd. ALL RIGHTS RESERVED.
  */
 
 #ifndef __MLXBF_GIGE_H__
diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_ethtool.c b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_ethtool.c
index 55b5d67..1d68b8b 100644
--- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_ethtool.c
+++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_ethtool.c
@@ -2,7 +2,7 @@
 
 /* Ethtool support for Mellanox Gigabit Ethernet driver
  *
- * Copyright (c) 2020-2021 NVIDIA Corporation.
+ * Copyright (C) 2020-2021 Mellanox Technologies, Ltd. ALL RIGHTS RESERVED.
  */
 
 #include <linux/phy.h>
@@ -158,8 +158,8 @@ static void mlxbf_gige_get_pauseparam(struct net_device *netdev,
 	struct mlxbf_gige *priv = netdev_priv(netdev);
 
 	pause->autoneg = priv->aneg_pause;
-	pause->rx_pause = priv->tx_pause;
-	pause->tx_pause = priv->rx_pause;
+	pause->rx_pause = priv->rx_pause;
+	pause->tx_pause = priv->tx_pause;
 }
 
 const struct ethtool_ops mlxbf_gige_ethtool_ops = {
diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_intr.c b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_intr.c
index f67826a..c63a74d 100644
--- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_intr.c
+++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_intr.c
@@ -2,7 +2,7 @@
 
 /* Interrupt related logic for Mellanox Gigabit Ethernet driver
  *
- * Copyright (c) 2020-2021 NVIDIA Corporation.
+ * Copyright (C) 2020-2021 Mellanox Technologies, Ltd. ALL RIGHTS RESERVED.
  */
 
 #include <linux/interrupt.h>
diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c
index c5ffa68..2513c35 100644
--- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c
+++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c
@@ -2,7 +2,7 @@
 
 /* Gigabit Ethernet driver for Mellanox BlueField SoC
  *
- * Copyright (c) 2020-2021 NVIDIA Corporation.
+ * Copyright (C) 2020-2021 Mellanox Technologies, Ltd. ALL RIGHTS RESERVED.
  */
 
 #include <linux/acpi.h>
@@ -21,7 +21,12 @@
 #include "mlxbf_gige_regs.h"
 
 #define DRV_NAME    "mlxbf_gige"
-#define DRV_VERSION 1.19
+#define DRV_VERSION 1.21
+
+/* This setting defines the version of the ACPI table
+ * content that is compatible with this driver version.
+ */
+#define MLXBF_GIGE_ACPI_TABLE_VERSION 1
 
 /* Allocate SKB whose payload pointer aligns with the Bluefield
  * hardware DMA limitation, i.e. DMA operation can't cross
@@ -71,6 +76,7 @@ static void mlxbf_gige_initial_mac(struct mlxbf_gige *priv)
 	u8 mac[ETH_ALEN];
 	u64 local_mac;
 
+	memset(mac, 0, ETH_ALEN);
 	mlxbf_gige_get_mac_rx_filter(priv, MLXBF_GIGE_LOCAL_MAC_FILTER_IDX,
 				     &local_mac);
 	u64_to_ether_addr(local_mac, mac);
@@ -212,8 +218,8 @@ static void mlxbf_gige_set_rx_mode(struct net_device *netdev)
 			mlxbf_gige_enable_promisc(priv);
 		else
 			mlxbf_gige_disable_promisc(priv);
-        }
-}
+		}
+	}
 
 static void mlxbf_gige_get_stats64(struct net_device *netdev,
 				   struct rtnl_link_stats64 *stats)
@@ -247,7 +253,15 @@ static const struct net_device_ops mlxbf_gige_netdev_ops = {
 
 static void mlxbf_gige_adjust_link(struct net_device *netdev)
 {
-	/* Only one speed and one duplex supported, simply return */
+	struct mlxbf_gige *priv = netdev_priv(netdev);
+	struct phy_device *phydev = netdev->phydev;
+
+	if (phydev->link) {
+		priv->rx_pause = phydev->pause;
+		priv->tx_pause = phydev->pause;
+	}
+
+	phy_print_status(phydev);
 }
 
 static int mlxbf_gige_probe(struct platform_device *pdev)
@@ -262,18 +276,21 @@ static int mlxbf_gige_probe(struct platform_device *pdev)
 	void __iomem *llu_base;
 	void __iomem *plu_base;
 	void __iomem *base;
-	int addr, version;
+	u32 version;
 	u64 control;
-	int err = 0;
+	int addr;
+	int err;
 
-	if (device_property_read_u32(&pdev->dev, "version", &version)) {
-		dev_err(&pdev->dev, "Version Info not found\n");
+	version = 0;
+	err = device_property_read_u32(&pdev->dev, "version", &version);
+	if (err) {
+		dev_err(&pdev->dev, "ACPI table version not found\n");
 		return -EINVAL;
 	}
 
-	if (version != (int)DRV_VERSION) {
-		dev_err(&pdev->dev, "Version Mismatch. Expected %d Returned %d\n",
-			(int)DRV_VERSION, version);
+	if (version != MLXBF_GIGE_ACPI_TABLE_VERSION) {
+		dev_err(&pdev->dev, "ACPI table version mismatch: expected %d found %d\n",
+			MLXBF_GIGE_ACPI_TABLE_VERSION, version);
 		return -EINVAL;
 	}
 
@@ -367,10 +384,6 @@ static int mlxbf_gige_probe(struct platform_device *pdev)
 	addr = phydev->mdio.addr;
 	phydev->irq = priv->mdiobus->irq[addr] = priv->phy_irq;
 
-	/* Sets netdev->phydev to phydev; which will eventually
-	 * be used in ioctl calls.
-	 * Cannot pass NULL handler.
-	 */
 	err = phy_connect_direct(netdev, phydev,
 				 mlxbf_gige_adjust_link,
 				 PHY_INTERFACE_MODE_GMII);
@@ -390,9 +403,9 @@ static int mlxbf_gige_probe(struct platform_device *pdev)
 	/* MAC supports symmetric flow control */
 	phy_support_sym_pause(phydev);
 
-	/* Enable pause */
-	priv->rx_pause = phydev->pause;
-	priv->tx_pause = phydev->pause;
+	/* Initialise pause frame settings */
+	priv->rx_pause = 0;
+	priv->tx_pause = 0;
 	priv->aneg_pause = AUTONEG_ENABLE;
 
 	/* Display information about attached PHY device */
diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c
index af4a754..d164317 100644
--- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c
+++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c
@@ -2,7 +2,7 @@
 
 /* MDIO support for Mellanox Gigabit Ethernet driver
  *
- * Copyright (c) 2020-2021 NVIDIA Corporation.
+ * Copyright (C) 2020-2021 Mellanox Technologies, Ltd. ALL RIGHTS RESERVED.
  */
 
 #include <linux/acpi.h>
diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h
index 30ad896..d4652f9 100644
--- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h
+++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h
@@ -2,7 +2,7 @@
 
 /* Header file for Mellanox BlueField GigE register defines
  *
- * Copyright (c) 2020-2021 NVIDIA Corporation.
+ * Copyright (C) 2020-2021 Mellanox Technologies, Ltd. ALL RIGHTS RESERVED.
  */
 
 #ifndef __MLXBF_GIGE_REGS_H__
diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c
index 1cf8be2..9e4c507 100644
--- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c
+++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c
@@ -2,7 +2,7 @@
 
 /* Packet receive logic for Mellanox Gigabit Ethernet driver
  *
- * Copyright (c) 2020-2021 NVIDIA Corporation.
+ * Copyright (C) 2020-2021 Mellanox Technologies, Ltd. ALL RIGHTS RESERVED.
  */
 
 #include <linux/etherdevice.h>
diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_tx.c b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_tx.c
index 257dd02..0c35b2f 100644
--- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_tx.c
+++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_tx.c
@@ -2,7 +2,7 @@
 
 /* Packet transmit logic for Mellanox Gigabit Ethernet driver
  *
- * Copyright (c) 2020-2021 NVIDIA Corporation.
+ * Copyright (C) 2020-2021 Mellanox Technologies, Ltd. ALL RIGHTS RESERVED.
  */
 
 #include <linux/skbuff.h>
-- 
2.1.2




More information about the kernel-team mailing list