2023-11-21 12:35:08

by Ilpo Järvinen

[permalink] [raw]
Subject: [PATCH v4 0/3] net/ethernet/intel: PCI cleanups

Resending these PCI related cleanups for Intel Ethernet drivers. No
other changes except removing the accepted patches in v4.

These can go through the usual driver tree as there are no PCI tree
related dependencies.

v4:
- Removed accepted patches

Ilpo Järvinen (3):
igb: Use FIELD_GET() to extract Link Width
e1000e: Use PCI_EXP_LNKSTA_NLW & FIELD_GET() instead of custom
defines/code
e1000e: Use pcie_capability_read_word() for reading LNKSTA

drivers/net/ethernet/intel/e1000e/defines.h | 3 ---
drivers/net/ethernet/intel/e1000e/mac.c | 18 ++++++++----------
drivers/net/ethernet/intel/igb/e1000_mac.c | 6 +++---
3 files changed, 11 insertions(+), 16 deletions(-)

--
2.30.2


2023-11-21 12:35:18

by Ilpo Järvinen

[permalink] [raw]
Subject: [PATCH v4 2/3] e1000e: Use PCI_EXP_LNKSTA_NLW & FIELD_GET() instead of custom defines/code

e1000e has own copy of PCI Negotiated Link Width field defines. Use the
ones from include/uapi/linux/pci_regs.h instead of the custom ones and
remove the custom ones and convert to FIELD_GET().

Suggested-by: Jonathan Cameron <[email protected]>
Signed-off-by: Ilpo Järvinen <[email protected]>
Reviewed-by: Jonathan Cameron <[email protected]>
---
drivers/net/ethernet/intel/e1000e/defines.h | 2 --
drivers/net/ethernet/intel/e1000e/mac.c | 7 ++++---
2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/e1000e/defines.h b/drivers/net/ethernet/intel/e1000e/defines.h
index 63c3c79380a1..a4d29c9e03a6 100644
--- a/drivers/net/ethernet/intel/e1000e/defines.h
+++ b/drivers/net/ethernet/intel/e1000e/defines.h
@@ -681,8 +681,6 @@
#define PCIE_LINK_STATUS 0x12

#define PCI_HEADER_TYPE_MULTIFUNC 0x80
-#define PCIE_LINK_WIDTH_MASK 0x3F0
-#define PCIE_LINK_WIDTH_SHIFT 4

#define PHY_REVISION_MASK 0xFFFFFFF0
#define MAX_PHY_REG_ADDRESS 0x1F /* 5 bit address bus (0-0x1F) */
diff --git a/drivers/net/ethernet/intel/e1000e/mac.c b/drivers/net/ethernet/intel/e1000e/mac.c
index 5df7ad93f3d7..5340cf73778d 100644
--- a/drivers/net/ethernet/intel/e1000e/mac.c
+++ b/drivers/net/ethernet/intel/e1000e/mac.c
@@ -1,6 +1,8 @@
// SPDX-License-Identifier: GPL-2.0
/* Copyright(c) 1999 - 2018 Intel Corporation. */

+#include <linux/bitfield.h>
+
#include "e1000.h"

/**
@@ -25,9 +27,8 @@ s32 e1000e_get_bus_info_pcie(struct e1000_hw *hw)
pci_read_config_word(adapter->pdev,
cap_offset + PCIE_LINK_STATUS,
&pcie_link_status);
- bus->width = (enum e1000_bus_width)((pcie_link_status &
- PCIE_LINK_WIDTH_MASK) >>
- PCIE_LINK_WIDTH_SHIFT);
+ bus->width = (enum e1000_bus_width)FIELD_GET(PCI_EXP_LNKSTA_NLW,
+ pcie_link_status);
}

mac->ops.set_lan_id(hw);
--
2.30.2

2023-11-21 12:36:05

by Ilpo Järvinen

[permalink] [raw]
Subject: [PATCH v4 3/3] e1000e: Use pcie_capability_read_word() for reading LNKSTA

Use pcie_capability_read_word() for reading LNKSTA and remove the
custom define that matches to PCI_EXP_LNKSTA.

As only single user for cap_offset remains, replace it with a call to
pci_pcie_cap(). Instead of e1000_adapter, make local variable out of
pci_dev because both users are interested in it.

Signed-off-by: Ilpo Järvinen <[email protected]>
Reviewed-by: Jonathan Cameron <[email protected]>
---
drivers/net/ethernet/intel/e1000e/defines.h | 1 -
drivers/net/ethernet/intel/e1000e/mac.c | 11 ++++-------
2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/intel/e1000e/defines.h b/drivers/net/ethernet/intel/e1000e/defines.h
index a4d29c9e03a6..23a58cada43a 100644
--- a/drivers/net/ethernet/intel/e1000e/defines.h
+++ b/drivers/net/ethernet/intel/e1000e/defines.h
@@ -678,7 +678,6 @@

/* PCI/PCI-X/PCI-EX Config space */
#define PCI_HEADER_TYPE_REGISTER 0x0E
-#define PCIE_LINK_STATUS 0x12

#define PCI_HEADER_TYPE_MULTIFUNC 0x80

diff --git a/drivers/net/ethernet/intel/e1000e/mac.c b/drivers/net/ethernet/intel/e1000e/mac.c
index 5340cf73778d..694a779e718d 100644
--- a/drivers/net/ethernet/intel/e1000e/mac.c
+++ b/drivers/net/ethernet/intel/e1000e/mac.c
@@ -17,16 +17,13 @@ s32 e1000e_get_bus_info_pcie(struct e1000_hw *hw)
{
struct e1000_mac_info *mac = &hw->mac;
struct e1000_bus_info *bus = &hw->bus;
- struct e1000_adapter *adapter = hw->adapter;
- u16 pcie_link_status, cap_offset;
+ struct pci_dev *pdev = hw->adapter->pdev;
+ u16 pcie_link_status;

- cap_offset = adapter->pdev->pcie_cap;
- if (!cap_offset) {
+ if (!pci_pcie_cap(pdev)) {
bus->width = e1000_bus_width_unknown;
} else {
- pci_read_config_word(adapter->pdev,
- cap_offset + PCIE_LINK_STATUS,
- &pcie_link_status);
+ pcie_capability_read_word(pdev, PCI_EXP_LNKSTA, &pcie_link_status);
bus->width = (enum e1000_bus_width)FIELD_GET(PCI_EXP_LNKSTA_NLW,
pcie_link_status);
}
--
2.30.2

2023-11-23 11:58:43

by Simon Horman

[permalink] [raw]
Subject: Re: [PATCH v4 3/3] e1000e: Use pcie_capability_read_word() for reading LNKSTA

On Tue, Nov 21, 2023 at 02:34:28PM +0200, Ilpo Järvinen wrote:
> Use pcie_capability_read_word() for reading LNKSTA and remove the
> custom define that matches to PCI_EXP_LNKSTA.
>
> As only single user for cap_offset remains, replace it with a call to
> pci_pcie_cap(). Instead of e1000_adapter, make local variable out of
> pci_dev because both users are interested in it.
>
> Signed-off-by: Ilpo Järvinen <[email protected]>
> Reviewed-by: Jonathan Cameron <[email protected]>

Reviewed-by: Simon Horman <[email protected]>

2023-11-23 11:59:13

by Simon Horman

[permalink] [raw]
Subject: Re: [PATCH v4 2/3] e1000e: Use PCI_EXP_LNKSTA_NLW & FIELD_GET() instead of custom defines/code

On Tue, Nov 21, 2023 at 02:34:27PM +0200, Ilpo Järvinen wrote:
> e1000e has own copy of PCI Negotiated Link Width field defines. Use the
> ones from include/uapi/linux/pci_regs.h instead of the custom ones and
> remove the custom ones and convert to FIELD_GET().
>
> Suggested-by: Jonathan Cameron <[email protected]>
> Signed-off-by: Ilpo Järvinen <[email protected]>
> Reviewed-by: Jonathan Cameron <[email protected]>

Reviewed-by: Simon Horman <[email protected]>

2023-12-07 12:53:42

by naamax.meir

[permalink] [raw]
Subject: Re: [Intel-wired-lan] [PATCH v4 3/3] e1000e: Use pcie_capability_read_word() for reading LNKSTA

On 11/21/2023 14:34, Ilpo Järvinen wrote:
> Use pcie_capability_read_word() for reading LNKSTA and remove the
> custom define that matches to PCI_EXP_LNKSTA.
>
> As only single user for cap_offset remains, replace it with a call to
> pci_pcie_cap(). Instead of e1000_adapter, make local variable out of
> pci_dev because both users are interested in it.
>
> Signed-off-by: Ilpo Järvinen <[email protected]>
> Reviewed-by: Jonathan Cameron <[email protected]>
> ---
> drivers/net/ethernet/intel/e1000e/defines.h | 1 -
> drivers/net/ethernet/intel/e1000e/mac.c | 11 ++++-------
> 2 files changed, 4 insertions(+), 8 deletions(-)

Tested-by: Naama Meir <[email protected]>

2023-12-10 10:10:16

by naamax.meir

[permalink] [raw]
Subject: Re: [Intel-wired-lan] [PATCH v4 2/3] e1000e: Use PCI_EXP_LNKSTA_NLW & FIELD_GET() instead of custom defines/code

On 11/21/2023 14:34, Ilpo Järvinen wrote:
> e1000e has own copy of PCI Negotiated Link Width field defines. Use the
> ones from include/uapi/linux/pci_regs.h instead of the custom ones and
> remove the custom ones and convert to FIELD_GET().
>
> Suggested-by: Jonathan Cameron <[email protected]>
> Signed-off-by: Ilpo Järvinen <[email protected]>
> Reviewed-by: Jonathan Cameron <[email protected]>
> ---
> drivers/net/ethernet/intel/e1000e/defines.h | 2 --
> drivers/net/ethernet/intel/e1000e/mac.c | 7 ++++---
> 2 files changed, 4 insertions(+), 5 deletions(-)


Tested-by: Naama Meir <[email protected]>