[dpdk-dev] [PATCH v6 0/6] Fail-safe\ethdev: fix removal handling lack

Matan Azrad matan at mellanox.com
Thu Jan 18 12:27:08 CET 2018


There is time between the physical removal of the device until sub-device PMDs get a RMV interrupt. 
At this time DPDK PMDs and applications still don't know about the removal and may call sub-device control operation which should return an error.

This series adds new ethdev operation to check device removal, adds support for it in mlx PMDs, adjust ethdev APIs to return -EIO in case of removal and fixes the fail-safe bug of removal error report.

V2:
Remove ENODEV definition.
Remove checks from all mlx control commands.
Add new devop - "is_removed".
Implement it in mlx4 and mlx5.
Fix failsafe bug by the new devop.

V3:
Adjust ethdev APIs removal error report.
Change failsafe check to check eth_dev* return values.
Remove backporting of fail-safe patch.

V4:
Improve fail-safe internal API to adjust the actual error value as discussed.
Remove "Fixes" lines from fail-safe patch.
No changes in ethdev\mlx patches.

V5:
Rebase on top of master-net-mlx. 

V6:
Move ethdev new API to be EXPERIMENTAL.

Matan Azrad (6):
  ethdev: add devop to check removal status
  net/mlx4: support a device removal check operation
  net/mlx5: support a device removal check operation
  ethdev: adjust APIs removal error report
  ethdev: adjust flow APIs removal error report
  net/failsafe: fix removed device handling

 drivers/net/failsafe/failsafe_flow.c    |  18 ++-
 drivers/net/failsafe/failsafe_ops.c     |  35 +++--
 drivers/net/failsafe/failsafe_private.h |  11 ++
 drivers/net/mlx4/mlx4.c                 |   1 +
 drivers/net/mlx4/mlx4.h                 |   1 +
 drivers/net/mlx4/mlx4_ethdev.c          |  20 +++
 drivers/net/mlx5/mlx5.c                 |   2 +
 drivers/net/mlx5/mlx5.h                 |   1 +
 drivers/net/mlx5/mlx5_ethdev.c          |  20 +++
 lib/librte_ether/rte_ethdev.c           | 218 +++++++++++++++++++++-----------
 lib/librte_ether/rte_ethdev.h           |  71 ++++++++++-
 lib/librte_ether/rte_ethdev_version.map |   1 +
 lib/librte_ether/rte_flow.c             |  34 ++++-
 lib/librte_ether/rte_flow.h             |   2 +
 14 files changed, 335 insertions(+), 100 deletions(-)

-- 
1.8.3.1



More information about the dev mailing list