mbox series

[net-next,v4,0/6] net/ncsi: Allow enabling multiple packages & channels

Message ID 20181116045159.4980-1-sam@mendozajonas.com
Headers show
Series net/ncsi: Allow enabling multiple packages & channels | expand

Message

Sam Mendoza-Jonas Nov. 16, 2018, 4:51 a.m. UTC
This series extends the NCSI driver to configure multiple packages
and/or channels simultaneously. Since the RFC series this includes a few
extra changes to fix areas in the driver that either made this harder or
were roadblocks due to deviations from the NCSI specification.

Patches 1 & 2 fix two issues where the driver made assumptions about the
capabilities of the NCSI topology.
Patches 3 & 4 change some internal semantics slightly to make multi-mode
easier.
Patch 5 introduces a cleaner way of reconfiguring the NCSI configuration
and keeping track of channel states.
Patch 6 implements the main multi-package/multi-channel configuration,
configured via the Netlink interface.

Readers who have an interesting NCSI setup - especially multi-package
with HWA - please test! I think I've covered all permutations but I
don't have infinite hardware to test on.

Changes in v2:
- Updated use of the channel lock in ncsi_reset_dev(), making the
channel invisible and leaving the monitor check to
ncsi_stop_channel_monitor().
- Fixed ncsi_channel_is_tx() to consider the state of channels in other
packages.
Changes in v3:
- Fixed bisectability bug in patch 1
- Consider channels on all packages in a few places when multi-package
is enabled.
- Avoid doubling up reset operations, and check the current driver state
before reset to let any running operations complete.
- Reorganise the LSC handler slightly to avoid enabling Tx twice.
Changes in v4:
- Fix failover in the single-channel case
- Better handle ncsi_reset_dev() entry during a current config/suspend
operation.

Samuel Mendoza-Jonas (6):
  net/ncsi: Don't enable all channels when HWA available
  net/ncsi: Probe single packages to avoid conflict
  net/ncsi: Don't deselect package in suspend if active
  net/ncsi: Don't mark configured channels inactive
  net/ncsi: Reset channel state in ncsi_start_dev()
  net/ncsi: Configure multi-package, multi-channel modes with failover

 include/uapi/linux/ncsi.h |  15 ++
 net/ncsi/internal.h       |  19 +-
 net/ncsi/ncsi-aen.c       |  75 ++++--
 net/ncsi/ncsi-manage.c    | 522 +++++++++++++++++++++++++++-----------
 net/ncsi/ncsi-netlink.c   | 233 ++++++++++++++---
 net/ncsi/ncsi-rsp.c       |   2 +-
 6 files changed, 660 insertions(+), 206 deletions(-)

Comments

Justin.Lee1@Dell.com Nov. 16, 2018, 8:17 p.m. UTC | #1
Hi Samuel,

I have reviewed/tested it. It works well. Thanks for supporting these features!

Justin


Reviewed-by: Justin Lee <justin.lee1@dell.com>
Tested-by: Justin Lee <justin.lee1@dell.com>


> This series extends the NCSI driver to configure multiple packages and/or channels simultaneously. Since the RFC series this includes a few extra changes to fix areas in the driver that either made this harder or were roadblocks due to deviations from the NCSI specification.
> 
> Patches 1 & 2 fix two issues where the driver made assumptions about the capabilities of the NCSI topology.
> Patches 3 & 4 change some internal semantics slightly to make multi-mode easier.
> Patch 5 introduces a cleaner way of reconfiguring the NCSI configuration and keeping track of channel states.
> Patch 6 implements the main multi-package/multi-channel configuration, configured via the Netlink interface.
> 
> Readers who have an interesting NCSI setup - especially multi-package with HWA - please test! I think I've covered all permutations but I don't have infinite hardware to test on.
> 
> Changes in v2:
> - Updated use of the channel lock in ncsi_reset_dev(), making the channel invisible and leaving the monitor check to ncsi_stop_channel_monitor().
> - Fixed ncsi_channel_is_tx() to consider the state of channels in other packages.
> Changes in v3:
> - Fixed bisectability bug in patch 1
> - Consider channels on all packages in a few places when multi-package is enabled.
> - Avoid doubling up reset operations, and check the current driver state before reset to let any running operations complete.
> - Reorganise the LSC handler slightly to avoid enabling Tx twice.
> Changes in v4:
> - Fix failover in the single-channel case
> - Better handle ncsi_reset_dev() entry during a current config/suspend operation.
> 
> Samuel Mendoza-Jonas (6):
>   net/ncsi: Don't enable all channels when HWA available
>   net/ncsi: Probe single packages to avoid conflict
>   net/ncsi: Don't deselect package in suspend if active
>   net/ncsi: Don't mark configured channels inactive
>   net/ncsi: Reset channel state in ncsi_start_dev()
>   net/ncsi: Configure multi-package, multi-channel modes with failover
> 
>  include/uapi/linux/ncsi.h |  15 ++
>  net/ncsi/internal.h       |  19 +-
>  net/ncsi/ncsi-aen.c       |  75 ++++--
>  net/ncsi/ncsi-manage.c    | 522 +++++++++++++++++++++++++++-----------
>  net/ncsi/ncsi-netlink.c   | 233 ++++++++++++++---
>  net/ncsi/ncsi-rsp.c       |   2 +-
>  6 files changed, 660 insertions(+), 206 deletions(-)
> 
> --
> 2.19.1
David Miller Nov. 18, 2018, 5:10 a.m. UTC | #2
From: Samuel Mendoza-Jonas <sam@mendozajonas.com>
Date: Fri, 16 Nov 2018 15:51:53 +1100

> This series extends the NCSI driver to configure multiple packages
> and/or channels simultaneously. Since the RFC series this includes a few
> extra changes to fix areas in the driver that either made this harder or
> were roadblocks due to deviations from the NCSI specification.
> 
> Patches 1 & 2 fix two issues where the driver made assumptions about the
> capabilities of the NCSI topology.
> Patches 3 & 4 change some internal semantics slightly to make multi-mode
> easier.
> Patch 5 introduces a cleaner way of reconfiguring the NCSI configuration
> and keeping track of channel states.
> Patch 6 implements the main multi-package/multi-channel configuration,
> configured via the Netlink interface.
> 
> Readers who have an interesting NCSI setup - especially multi-package
> with HWA - please test! I think I've covered all permutations but I
> don't have infinite hardware to test on.
> 
> Changes in v2:
> - Updated use of the channel lock in ncsi_reset_dev(), making the
> channel invisible and leaving the monitor check to
> ncsi_stop_channel_monitor().
> - Fixed ncsi_channel_is_tx() to consider the state of channels in other
> packages.
> Changes in v3:
> - Fixed bisectability bug in patch 1
> - Consider channels on all packages in a few places when multi-package
> is enabled.
> - Avoid doubling up reset operations, and check the current driver state
> before reset to let any running operations complete.
> - Reorganise the LSC handler slightly to avoid enabling Tx twice.
> Changes in v4:
> - Fix failover in the single-channel case
> - Better handle ncsi_reset_dev() entry during a current config/suspend
> operation.

Series applied.