> Add support for device firmware flash on mlxsw spectrum. The firmware files
> are expected to be in the Mellanox Firmware Archive version 2 (MFA2)
> format.
> 
> The firmware flash can be triggered via "ethtool -f" or on driver 
> initialization
> time if the device firmware version does not meet the minimum firmware
> version supported by the driver.
> 
> Currently, to activate the newly flashed firmware, the user needs to reboot
> his system.
> 
> The first patch introduces the mlxfw module, which implements common
> logic needed for the firmware flash process on Mellanox products, such as
> the
> MFA2 format parsing and the firmware flash state machine logic. As the
> module implements common logic which will be needed by various different
> Mellanox drivers, it defines a set of callbacks needed to interact with the
> specific device.
> 
> Patches 1-5 implement the needed mlxfw callbacks in the mlxsw spectrum
> driver.
> 
> Patches 6-8 add the "ethtool -f" and the boot-time firmware upgrade on the
> mlxsw spectrum driver.

When we tried using `ethtool -E' for qed we got burned for trying to use the 
magic
value [1]. When we suggested extending it to allow some private data 
indications,
Ben claimed that this entire ethtool infrastructure is a thing of the past,
and we should try using MTD instead - a claim no one bothered to counter.

Creating proprietary file-formats, filling them with metadata and
complementary driver state-machines could easily overcome the original
obstacle we faced. But it raises the question of whether these APIs are
valid or obsolete.

[1] http://marc.info/?l=linux-netdev&m=146093513926921&w=4
[2] http://marc.info/?l=linux-netdev&m=146514461214421&w=2

> Patch 9 adds a fix needed for new firmware versions.
> 
> Ido Schimmel (1):
>   mlxsw: spectrum_router: Adjust RIF configuration for new firmware
>     versions
> 
> Yotam Gigi (8):
>   Add the mlxfw module for Mellanox firmware flash process
>   mlxsw: reg: Add Management Component Query Information register
>   mlxsw: reg: Add Management Component Control register
>   mlxsw: reg: Add Management Component Data Access register
>   mlxsw: spectrum: Add the needed callbacks for mlxfw integration
>   mlxsw: spectrum: Implement the ethtool flash_device callback
>   mlxsw: core: Create the mlxsw_fw_rev struct
>   mlxsw: spectrum: Validate firmware revision on init
> 
>  MAINTAINERS                                        |   8 +
>  drivers/net/ethernet/mellanox/Kconfig              |   1 +
>  drivers/net/ethernet/mellanox/Makefile             |   1 +
>  drivers/net/ethernet/mellanox/mlxfw/Kconfig        |   6 +
>  drivers/net/ethernet/mellanox/mlxfw/Makefile       |   2 +
>  drivers/net/ethernet/mellanox/mlxfw/mlxfw.h        | 102 ++++
>  drivers/net/ethernet/mellanox/mlxfw/mlxfw_fsm.c    | 273 +++++++++
>  drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2.c   | 620
> +++++++++++++++++++++
>  drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2.h   |  66 +++
>  .../net/ethernet/mellanox/mlxfw/mlxfw_mfa2_file.h  |  60 ++
>  .../ethernet/mellanox/mlxfw/mlxfw_mfa2_format.h    | 103 ++++
>  .../net/ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv.h   |  98 ++++
>  .../ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv_multi.c | 126 +++++
> .../ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv_multi.h |  71 +++
>  drivers/net/ethernet/mellanox/mlxsw/Kconfig        |   1 +
>  drivers/net/ethernet/mellanox/mlxsw/core.h         |  12 +-
>  drivers/net/ethernet/mellanox/mlxsw/reg.h          | 219 ++++++++
>  drivers/net/ethernet/mellanox/mlxsw/spectrum.c     | 266 +++++++++
>  .../net/ethernet/mellanox/mlxsw/spectrum_router.c  |  22 +
>  19 files changed, 2052 insertions(+), 5 deletions(-)  create mode 100644
> drivers/net/ethernet/mellanox/mlxfw/Kconfig
>  create mode 100644 drivers/net/ethernet/mellanox/mlxfw/Makefile
>  create mode 100644 drivers/net/ethernet/mellanox/mlxfw/mlxfw.h
>  create mode 100644 drivers/net/ethernet/mellanox/mlxfw/mlxfw_fsm.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2.h
>  create mode 100644
> drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2_file.h
>  create mode 100644
> drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2_format.h
>  create mode 100644
> drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv.h
>  create mode 100644
> drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv_multi.c
>  create mode 100644
> drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv_multi.h
> 
> --
> 2.9.3

Reply via email to