All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Daniel Mack <daniel@zonque.org>,
	Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>,
	"David S . Miller" <davem@davemloft.net>,
	Sasha Levin <sashal@kernel.org>,
	netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: [PATCH AUTOSEL 5.11 15/51] net: axienet: allow setups without MDIO
Date: Mon, 12 Apr 2021 12:22:20 -0400	[thread overview]
Message-ID: <20210412162256.313524-15-sashal@kernel.org> (raw)
In-Reply-To: <20210412162256.313524-1-sashal@kernel.org>

From: Daniel Mack <daniel@zonque.org>

[ Upstream commit de9c7854e6e1589f639c6352112956d08243b659 ]

In setups with fixed-link settings there is no mdio node in DTS.
axienet_probe() already handles that gracefully but lp->mii_bus is
then NULL.

Fix code that tries to blindly grab the MDIO lock by introducing two helper
functions that make the locking conditional.

Signed-off-by: Daniel Mack <daniel@zonque.org>
Reviewed-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/xilinx/xilinx_axienet.h      | 12 ++++++++++++
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 12 ++++++------
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet.h b/drivers/net/ethernet/xilinx/xilinx_axienet.h
index a03c3ca1b28d..9e2cddba3b5b 100644
--- a/drivers/net/ethernet/xilinx/xilinx_axienet.h
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet.h
@@ -497,6 +497,18 @@ static inline u32 axinet_ior_read_mcr(struct axienet_local *lp)
 	return axienet_ior(lp, XAE_MDIO_MCR_OFFSET);
 }
 
+static inline void axienet_lock_mii(struct axienet_local *lp)
+{
+	if (lp->mii_bus)
+		mutex_lock(&lp->mii_bus->mdio_lock);
+}
+
+static inline void axienet_unlock_mii(struct axienet_local *lp)
+{
+	if (lp->mii_bus)
+		mutex_unlock(&lp->mii_bus->mdio_lock);
+}
+
 /**
  * axienet_iow - Memory mapped Axi Ethernet register write
  * @lp:         Pointer to axienet local structure
diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
index 4cd701a9277d..82176dd2cdf3 100644
--- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
@@ -1053,9 +1053,9 @@ static int axienet_open(struct net_device *ndev)
 	 * including the MDIO. MDIO must be disabled before resetting.
 	 * Hold MDIO bus lock to avoid MDIO accesses during the reset.
 	 */
-	mutex_lock(&lp->mii_bus->mdio_lock);
+	axienet_lock_mii(lp);
 	ret = axienet_device_reset(ndev);
-	mutex_unlock(&lp->mii_bus->mdio_lock);
+	axienet_unlock_mii(lp);
 
 	ret = phylink_of_phy_connect(lp->phylink, lp->dev->of_node, 0);
 	if (ret) {
@@ -1148,9 +1148,9 @@ static int axienet_stop(struct net_device *ndev)
 	}
 
 	/* Do a reset to ensure DMA is really stopped */
-	mutex_lock(&lp->mii_bus->mdio_lock);
+	axienet_lock_mii(lp);
 	__axienet_device_reset(lp);
-	mutex_unlock(&lp->mii_bus->mdio_lock);
+	axienet_unlock_mii(lp);
 
 	cancel_work_sync(&lp->dma_err_task);
 
@@ -1664,9 +1664,9 @@ static void axienet_dma_err_handler(struct work_struct *work)
 	 * including the MDIO. MDIO must be disabled before resetting.
 	 * Hold MDIO bus lock to avoid MDIO accesses during the reset.
 	 */
-	mutex_lock(&lp->mii_bus->mdio_lock);
+	axienet_lock_mii(lp);
 	__axienet_device_reset(lp);
-	mutex_unlock(&lp->mii_bus->mdio_lock);
+	axienet_unlock_mii(lp);
 
 	for (i = 0; i < lp->tx_bd_num; i++) {
 		cur_p = &lp->tx_bd_v[i];
-- 
2.30.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Daniel Mack <daniel@zonque.org>,
	Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>,
	"David S . Miller" <davem@davemloft.net>,
	Sasha Levin <sashal@kernel.org>,
	netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: [PATCH AUTOSEL 5.11 15/51] net: axienet: allow setups without MDIO
Date: Mon, 12 Apr 2021 12:22:20 -0400	[thread overview]
Message-ID: <20210412162256.313524-15-sashal@kernel.org> (raw)
In-Reply-To: <20210412162256.313524-1-sashal@kernel.org>

From: Daniel Mack <daniel@zonque.org>

[ Upstream commit de9c7854e6e1589f639c6352112956d08243b659 ]

In setups with fixed-link settings there is no mdio node in DTS.
axienet_probe() already handles that gracefully but lp->mii_bus is
then NULL.

Fix code that tries to blindly grab the MDIO lock by introducing two helper
functions that make the locking conditional.

Signed-off-by: Daniel Mack <daniel@zonque.org>
Reviewed-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/xilinx/xilinx_axienet.h      | 12 ++++++++++++
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 12 ++++++------
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet.h b/drivers/net/ethernet/xilinx/xilinx_axienet.h
index a03c3ca1b28d..9e2cddba3b5b 100644
--- a/drivers/net/ethernet/xilinx/xilinx_axienet.h
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet.h
@@ -497,6 +497,18 @@ static inline u32 axinet_ior_read_mcr(struct axienet_local *lp)
 	return axienet_ior(lp, XAE_MDIO_MCR_OFFSET);
 }
 
+static inline void axienet_lock_mii(struct axienet_local *lp)
+{
+	if (lp->mii_bus)
+		mutex_lock(&lp->mii_bus->mdio_lock);
+}
+
+static inline void axienet_unlock_mii(struct axienet_local *lp)
+{
+	if (lp->mii_bus)
+		mutex_unlock(&lp->mii_bus->mdio_lock);
+}
+
 /**
  * axienet_iow - Memory mapped Axi Ethernet register write
  * @lp:         Pointer to axienet local structure
diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
index 4cd701a9277d..82176dd2cdf3 100644
--- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
@@ -1053,9 +1053,9 @@ static int axienet_open(struct net_device *ndev)
 	 * including the MDIO. MDIO must be disabled before resetting.
 	 * Hold MDIO bus lock to avoid MDIO accesses during the reset.
 	 */
-	mutex_lock(&lp->mii_bus->mdio_lock);
+	axienet_lock_mii(lp);
 	ret = axienet_device_reset(ndev);
-	mutex_unlock(&lp->mii_bus->mdio_lock);
+	axienet_unlock_mii(lp);
 
 	ret = phylink_of_phy_connect(lp->phylink, lp->dev->of_node, 0);
 	if (ret) {
@@ -1148,9 +1148,9 @@ static int axienet_stop(struct net_device *ndev)
 	}
 
 	/* Do a reset to ensure DMA is really stopped */
-	mutex_lock(&lp->mii_bus->mdio_lock);
+	axienet_lock_mii(lp);
 	__axienet_device_reset(lp);
-	mutex_unlock(&lp->mii_bus->mdio_lock);
+	axienet_unlock_mii(lp);
 
 	cancel_work_sync(&lp->dma_err_task);
 
@@ -1664,9 +1664,9 @@ static void axienet_dma_err_handler(struct work_struct *work)
 	 * including the MDIO. MDIO must be disabled before resetting.
 	 * Hold MDIO bus lock to avoid MDIO accesses during the reset.
 	 */
-	mutex_lock(&lp->mii_bus->mdio_lock);
+	axienet_lock_mii(lp);
 	__axienet_device_reset(lp);
-	mutex_unlock(&lp->mii_bus->mdio_lock);
+	axienet_unlock_mii(lp);
 
 	for (i = 0; i < lp->tx_bd_num; i++) {
 		cur_p = &lp->tx_bd_v[i];
-- 
2.30.2


  parent reply	other threads:[~2021-04-12 16:25 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-12 16:22 [PATCH AUTOSEL 5.11 01/51] net: ieee802154: fix nl802154 del llsec key Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 02/51] net: ieee802154: fix nl802154 del llsec dev Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 03/51] net: ieee802154: fix nl802154 add llsec key Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 04/51] net: ieee802154: fix nl802154 del llsec devkey Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 05/51] net: ieee802154: nl-mac: fix check on panid Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 06/51] ARM: dts: Drop duplicate sha2md5_fck to fix clk_disable race Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 07/51] ARM: dts: Fix moving mmc devices with aliases for omap4 & 5 Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 08/51] remoteproc: pru: Fix loading of GNU Binutils ELF Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 09/51] lockdep: Add a missing initialization hint to the "INFO: Trying to register non-static key" message Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 10/51] arc: kernel: Return -EFAULT if copy_to_user() fails Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 11/51] iwlwifi: Fix softirq/hardirq disabling in iwl_pcie_enqueue_hcmd() Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 12/51] xfrm: BEET mode doesn't support fragments for inner packets Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 13/51] ASoC: max98373: Changed amp shutdown register as volatile Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 14/51] ASoC: max98373: Added 30ms turn on/off time delay Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` Sasha Levin [this message]
2021-04-12 16:22   ` [PATCH AUTOSEL 5.11 15/51] net: axienet: allow setups without MDIO Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 16/51] gpu/xen: Fix a use after free in xen_drm_drv_init Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 17/51] bpf: Take module reference for trampoline in module Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 18/51] neighbour: Disregard DEAD dst in neigh_update Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 19/51] powerpc/signal32: Fix Oops on sigreturn with unmapped VDSO Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 20/51] ARM: keystone: fix integer overflow warning Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 21/51] ARM: omap1: fix building with clang IAS Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 22/51] drivers: net: fix memory leak in atusb_probe Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 23/51] drivers: net: fix memory leak in peak_usb_create_dev Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 24/51] drm/msm: Fix a5xx/a6xx timestamps Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 25/51] ASoC: fsl_esai: Fix TDM slot setup for I2S mode Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 26/51] scsi: scsi_transport_srp: Don't block target in SRP_PORT_LOST state Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 27/51] iwlwifi: add support for Qu with AX201 device Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 28/51] net: ieee802154: forbid monitor for set llsec params Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 29/51] net: ieee802154: stop dump llsec keys for monitors Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 30/51] net: ieee802154: forbid monitor for add llsec key Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 31/51] net: ieee802154: forbid monitor for del " Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 32/51] net: ieee802154: stop dump llsec devs for monitors Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 33/51] net: ieee802154: forbid monitor for add llsec dev Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 34/51] net: ieee802154: forbid monitor for del " Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 35/51] net: ieee802154: stop dump llsec devkeys for monitors Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 36/51] net: ieee802154: forbid monitor for add llsec devkey Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 37/51] net: ieee802154: forbid monitor for del " Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 38/51] net: ieee802154: stop dump llsec seclevels for monitors Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 39/51] net: ieee802154: forbid monitor for add llsec seclevel Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 40/51] net: ieee802154: forbid monitor for del " Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 41/51] net: ieee802154: stop dump llsec params for monitors Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 42/51] net: mac802154: Fix general protection fault Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 43/51] pcnet32: Use pci_resource_len to validate PCI resource Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 44/51] net: tun: set tun->dev->addr_len during TUNSETLINK processing Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 45/51] net/rds: Avoid potential use after free in rds_send_remove_from_sock Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 46/51] net: tipc: Fix spelling errors in net/tipc module Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 47/51] drm/amd/display: Add missing mask for DCN3 Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 48/51] mac80211: clear sta->fast_rx when STA removed from 4-addr VLAN Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 49/51] cfg80211: remove WARN_ON() in cfg80211_sme_connect Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 50/51] virt_wifi: Return micros for BSS TSF values Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 51/51] lib: fix kconfig dependency on ARCH_WANT_FRAME_POINTERS Sasha Levin

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=20210412162256.313524-15-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=daniel@zonque.org \
    --cc=davem@davemloft.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=radhey.shyam.pandey@xilinx.com \
    --cc=stable@vger.kernel.org \
    /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.