[PATCH v5 10/11] wifi: ath10k: Use RMW accessors for changing LNKCTL

2023-07-17 Thread Ilpo Järvinen
Don't assume that only the driver would be accessing LNKCTL. ASPM
policy changes can trigger write to LNKCTL outside of driver's control.

Use RMW capability accessors which does proper locking to avoid losing
concurrent updates to the register value. On restore, clear the ASPMC
field properly.

Fixes: 76d870ed09ab ("ath10k: enable ASPM")
Suggested-by: Lukas Wunner 
Signed-off-by: Ilpo Järvinen 
Reviewed-by: Simon Horman 
Acked-by: Kalle Valo 
Cc: sta...@vger.kernel.org
---
 drivers/net/wireless/ath/ath10k/pci.c | 9 +
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/pci.c 
b/drivers/net/wireless/ath/ath10k/pci.c
index a7f44f6335fb..9275a672f90c 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -1963,8 +1963,9 @@ static int ath10k_pci_hif_start(struct ath10k *ar)
ath10k_pci_irq_enable(ar);
ath10k_pci_rx_post(ar);
 
-   pcie_capability_write_word(ar_pci->pdev, PCI_EXP_LNKCTL,
-  ar_pci->link_ctl);
+   pcie_capability_clear_and_set_word(ar_pci->pdev, PCI_EXP_LNKCTL,
+  PCI_EXP_LNKCTL_ASPMC,
+  ar_pci->link_ctl & 
PCI_EXP_LNKCTL_ASPMC);
 
return 0;
 }
@@ -2821,8 +2822,8 @@ static int ath10k_pci_hif_power_up(struct ath10k *ar,
 
pcie_capability_read_word(ar_pci->pdev, PCI_EXP_LNKCTL,
  _pci->link_ctl);
-   pcie_capability_write_word(ar_pci->pdev, PCI_EXP_LNKCTL,
-  ar_pci->link_ctl & ~PCI_EXP_LNKCTL_ASPMC);
+   pcie_capability_clear_word(ar_pci->pdev, PCI_EXP_LNKCTL,
+  PCI_EXP_LNKCTL_ASPMC);
 
/*
 * Bring the target up cleanly.
-- 
2.30.2


___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH] net: Explicitly include correct DT includes

2023-07-17 Thread Jérôme Pouiller
On Friday 14 July 2023 19:48:00 CEST Rob Herring wrote:
> 
> The DT of_device.h and of_platform.h date back to the separate
> of_platform_bus_type before it as merged into the regular platform bus.
> As part of that merge prepping Arm DT support 13 years ago, they
> "temporarily" include each other. They also include platform_device.h
> and of.h. As a result, there's a pretty much random mix of those include
> files used throughout the tree. In order to detangle these headers and
> replace the implicit includes with struct declarations, users need to
> explicitly include the correct includes.
> 
> Signed-off-by: Rob Herring 
> ---
>  drivers/net/can/bxcan.c | 1 -
>  drivers/net/can/ifi_canfd/ifi_canfd.c   | 1 -
>  drivers/net/can/m_can/m_can.c   | 1 -
>  drivers/net/can/m_can/m_can.h   | 1 -
>  drivers/net/can/rcar/rcar_canfd.c   | 1 -
>  drivers/net/can/sja1000/sja1000_platform.c  | 1 -
>  drivers/net/can/sun4i_can.c | 1 -
>  drivers/net/can/ti_hecc.c   | 1 -
>  drivers/net/dsa/b53/b53_mdio.c  | 1 +
>  drivers/net/dsa/b53/b53_mmap.c  | 1 +
>  drivers/net/dsa/hirschmann/hellcreek.c  | 1 -
>  drivers/net/dsa/hirschmann/hellcreek_ptp.c  | 1 +
>  drivers/net/dsa/lan9303-core.c  | 1 +
>  drivers/net/dsa/microchip/ksz8863_smi.c | 3 +++
>  drivers/net/dsa/microchip/ksz_common.c  | 2 +-
>  drivers/net/dsa/mt7530-mmio.c   | 3 ++-
>  drivers/net/dsa/mv88e6xxx/chip.c| 2 +-
>  drivers/net/dsa/ocelot/felix_vsc9959.c  | 1 +
>  drivers/net/dsa/ocelot/seville_vsc9953.c| 3 ++-
>  drivers/net/dsa/qca/qca8k-leds.c| 1 +
>  drivers/net/dsa/realtek/realtek-mdio.c  | 2 +-
>  drivers/net/dsa/realtek/realtek-smi.c   | 1 -
>  drivers/net/dsa/sja1105/sja1105_main.c  | 1 -
>  drivers/net/dsa/vitesse-vsc73xx-core.c  | 1 -
>  drivers/net/dsa/xrs700x/xrs700x.c   | 2 +-
>  drivers/net/ethernet/aeroflex/greth.c   | 4 ++--
>  drivers/net/ethernet/amd/sunlance.c | 2 +-
>  drivers/net/ethernet/apm/xgene-v2/main.h| 1 +
>  drivers/net/ethernet/arc/emac_main.c| 2 +-
>  drivers/net/ethernet/atheros/ag71xx.c   | 3 ++-
>  drivers/net/ethernet/cadence/macb_main.c| 1 -
>  drivers/net/ethernet/cirrus/cs89x0.c| 1 -
>  drivers/net/ethernet/ezchip/nps_enet.c  | 5 ++---
>  drivers/net/ethernet/freescale/dpaa/dpaa_eth.c  | 3 ++-
>  drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c  | 2 ++
>  drivers/net/ethernet/freescale/enetc/enetc_ierb.c   | 2 +-
>  drivers/net/ethernet/freescale/fec_mpc52xx.c| 4 ++--
>  drivers/net/ethernet/freescale/fec_mpc52xx_phy.c| 3 ++-
>  drivers/net/ethernet/freescale/fec_ptp.c| 1 -
>  drivers/net/ethernet/freescale/fman/fman.c  | 1 +
>  drivers/net/ethernet/freescale/fman/fman_port.c | 1 +
>  drivers/net/ethernet/freescale/fman/mac.c   | 2 ++
>  drivers/net/ethernet/freescale/fs_enet/mac-fcc.c| 1 -
>  drivers/net/ethernet/freescale/fs_enet/mac-fec.c| 1 -
>  drivers/net/ethernet/freescale/fs_enet/mac-scc.c| 1 -
>  drivers/net/ethernet/freescale/fsl_pq_mdio.c| 1 +
>  drivers/net/ethernet/freescale/gianfar.c| 2 +-
>  drivers/net/ethernet/freescale/gianfar_ethtool.c| 2 ++
>  drivers/net/ethernet/freescale/ucc_geth.c   | 3 ++-
>  drivers/net/ethernet/freescale/xgmac_mdio.c | 4 ++--
>  drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c   | 3 ---
>  drivers/net/ethernet/hisilicon/hns/hns_dsaf_rcb.c   | 4 
>  drivers/net/ethernet/ibm/ehea/ehea_main.c   | 1 +
>  drivers/net/ethernet/ibm/emac/core.c| 1 +
>  drivers/net/ethernet/ibm/emac/core.h| 1 -
>  drivers/net/ethernet/ibm/emac/mal.c | 2 ++
>  drivers/net/ethernet/ibm/emac/rgmii.c   | 2 ++
>  drivers/net/ethernet/ibm/emac/tah.c | 2 ++
>  drivers/net/ethernet/ibm/emac/zmii.c| 2 ++
>  drivers/net/ethernet/korina.c   | 2 +-
>  drivers/net/ethernet/marvell/mvmdio.c   | 2 +-
>  drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 1 -
>  drivers/net/ethernet/marvell/prestera/prestera_rxtx.c   | 3 ---
>  drivers/net/ethernet/marvell/sky2.c | 1 -
>  drivers/net/ethernet/mediatek/mtk_eth_soc.c | 3 ++-
>  drivers/net/ethernet/mediatek/mtk_star_emac.c   | 1 -
>