mbox series

[net-next,0/6] mlxsw: Line cards status tracking

Message ID 20220419145431.2991382-1-idosch@nvidia.com (mailing list archive)
Headers show
Series mlxsw: Line cards status tracking | expand

Message

Ido Schimmel April 19, 2022, 2:54 p.m. UTC
When a line card is provisioned, netdevs corresponding to the ports
found on the line card are registered. User space can then perform
various logical configurations (e.g., splitting, setting MTU) on these
netdevs.

However, since the line card is not present / powered on (i.e., it is
not in 'active' state), user space cannot access the various components
found on the line card. For example, user space cannot read the
temperature of gearboxes or transceiver modules found on the line card
via hwmon / thermal. Similarly, it cannot dump the EEPROM contents of
these transceiver modules. The above is only possible when the line card
becomes active.

This patchset solves the problem by tracking the status of each line
card and invoking callbacks from interested parties when a line card
becomes active / inactive.

Patchset overview:

Patch #1 adds the infrastructure in the line cards core that allows
users to registers a set of callbacks that are invoked when a line card
becomes active / inactive. To avoid races, if a line card is already
active during registration, the got_active() callback is invoked.

Patches #2-#3 are preparations.

Patch #4 changes the port module core to register a set of callbacks
with the line cards core. See detailed description with examples in the
commit message.

Patches #5-#6 do the same with regards to thermal / hwmon support, so
that user space will be able to monitor the temperature of various
components on the line card when it becomes active.

Jiri Pirko (1):
  mlxsw: core_linecards: Introduce ops for linecards status change
    tracking

Vadim Pasternak (5):
  mlxsw: core: Add bus argument to environment init API
  mlxsw: core_env: Split module power mode setting to a separate
    function
  mlxsw: core_env: Add interfaces for line card initialization and
    de-initialization
  mlxsw: core_thermal: Add interfaces for line card initialization and
    de-initialization
  mlxsw: core_hwmon: Add interfaces for line card initialization and
    de-initialization

 drivers/net/ethernet/mellanox/mlxsw/core.c    |   2 +-
 drivers/net/ethernet/mellanox/mlxsw/core.h    |  17 ++
 .../net/ethernet/mellanox/mlxsw/core_env.c    | 213 ++++++++++++++++--
 .../net/ethernet/mellanox/mlxsw/core_env.h    |   4 +-
 .../net/ethernet/mellanox/mlxsw/core_hwmon.c  |  84 +++++++
 .../ethernet/mellanox/mlxsw/core_linecards.c  | 137 +++++++++++
 .../ethernet/mellanox/mlxsw/core_thermal.c    |  74 ++++++
 7 files changed, 513 insertions(+), 18 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org April 20, 2022, 2:10 p.m. UTC | #1
Hello:

This series was applied to netdev/net-next.git (master)
by David S. Miller <davem@davemloft.net>:

On Tue, 19 Apr 2022 17:54:25 +0300 you wrote:
> When a line card is provisioned, netdevs corresponding to the ports
> found on the line card are registered. User space can then perform
> various logical configurations (e.g., splitting, setting MTU) on these
> netdevs.
> 
> However, since the line card is not present / powered on (i.e., it is
> not in 'active' state), user space cannot access the various components
> found on the line card. For example, user space cannot read the
> temperature of gearboxes or transceiver modules found on the line card
> via hwmon / thermal. Similarly, it cannot dump the EEPROM contents of
> these transceiver modules. The above is only possible when the line card
> becomes active.
> 
> [...]

Here is the summary with links:
  - [net-next,1/6] mlxsw: core_linecards: Introduce ops for linecards status change tracking
    https://git.kernel.org/netdev/net-next/c/de28976d2650
  - [net-next,2/6] mlxsw: core: Add bus argument to environment init API
    https://git.kernel.org/netdev/net-next/c/7b261af9f641
  - [net-next,3/6] mlxsw: core_env: Split module power mode setting to a separate function
    https://git.kernel.org/netdev/net-next/c/a11e1ec141ea
  - [net-next,4/6] mlxsw: core_env: Add interfaces for line card initialization and de-initialization
    https://git.kernel.org/netdev/net-next/c/06a0fc43bb10
  - [net-next,5/6] mlxsw: core_thermal: Add interfaces for line card initialization and de-initialization
    https://git.kernel.org/netdev/net-next/c/f11a323da46c
  - [net-next,6/6] mlxsw: core_hwmon: Add interfaces for line card initialization and de-initialization
    https://git.kernel.org/netdev/net-next/c/99a03b3193f6

You are awesome, thank you!