[dpdk-dev] [PATCH v3 00/13] ethdev: change promiscuous mode functions to return status
Andrew Rybchenko
arybchenko at solarflare.com
Sat Sep 14 13:37:20 CEST 2019
It is the second patch series to get rid of void returning functions
in ethdev in accordance with deprecation notice [1].
It should be applied on top of the first one [2] which is already
applied to dpdk-next-net, but not in main DPDK repo.
It could be applied separately, but few simple conflicts should
be resolved.
Functions which return void are bad since they do not provide explicit
information to the caller if everything is OK or not.
It is especially painful in the case of promiscuous mode since it is
not always supported, there are real cases when it fails to apply and
it affects traffic which is received by the port.
Driver maintainrs are encouraged to review the patch which changes
driver callbacks prototype. Changes are not always trivial when I tried
to provide real status of the operation. I used -EAGAIN when I failed
to choose better error code.
The following two drivers ignore status of internal functions and
definitely could be improved:
net/bnx2x: bnx2x_set_rx_mode() can report failure, but it is used in
other places and should be updated carefully.
net/igbvf: e1000_promisc_set_vf() provides return status, but it is
unclear how handle it properly.
[1] https://patches.dpdk.org/patch/56969/
[2] https://patches.dpdk.org/project/dpdk/list/?series=6391
v3:
- list and describe return values of promiscuous mode enable/disalbe callbacks
- improve net/failsafe logging in the case of rollback failure to
distinguish operation and rollback failure cases
- fix build issue in AF_XDP PMD
- fix build issue in mlx4 PMD
- do not use goto and return error directly in mlx5
- return -E_RTE_SECONDARY in net/enic in the case of secondary process
- fix examples/vm_power_manager build
v2:
- minor style fix in app/testpmd
- use fs_err() in net/failsafe in accordance with review from Gaetan
- fix net/mvpp2 build
- use eth_err() in ethdev
Andrew Rybchenko (2):
ethdev: change promiscuous callbacks to return status
ethdev: do nothing if promiscuous mode is applied again
Ivan Ilchenko (11):
ethdev: change promiscuous mode controllers to return errors
net/failsafe: check code of promiscuous mode switch
net/bonding: check code of promiscuous mode switch
app/pipeline: check code of promiscuous mode switch
app/testpmd: check code of promiscuous mode switch
app/eventdev: check code of promiscuous mode switch
app/pdump: check code of promiscuous mode switch
app/test: check code of promiscuous mode switch
kni: check code of promiscuous mode switch
test/bonding: check code of promiscuous mode switch
examples: take promiscuous mode switch result into account
app/pdump/main.c | 8 +-
app/test-eventdev/test_perf_common.c | 7 +-
app/test-eventdev/test_pipeline_common.c | 7 +-
app/test-pipeline/init.c | 5 +-
app/test-pmd/cmdline.c | 23 +++---
app/test-pmd/testpmd.c | 14 +++-
app/test-pmd/testpmd.h | 1 +
app/test-pmd/util.c | 16 ++++
app/test/test_event_eth_rx_adapter.c | 4 +-
app/test/test_event_eth_tx_adapter.c | 4 +-
app/test/test_kni.c | 7 +-
app/test/test_link_bonding.c | 55 +++++++++++---
app/test/test_link_bonding_mode4.c | 16 +++-
app/test/test_pmd_perf.c | 6 +-
app/test/virtual_pmd.c | 12 ++-
doc/guides/rel_notes/deprecation.rst | 1 -
doc/guides/rel_notes/release_19_11.rst | 4 +
doc/guides/sample_app_ug/flow_classify.rst | 6 +-
doc/guides/sample_app_ug/flow_filtering.rst | 15 +++-
doc/guides/sample_app_ug/rxtx_callbacks.rst | 5 +-
doc/guides/sample_app_ug/skeleton.rst | 6 +-
drivers/net/af_packet/rte_eth_af_packet.c | 22 ++++--
drivers/net/af_xdp/rte_eth_af_xdp.c | 22 ++++--
drivers/net/atlantic/atl_ethdev.c | 12 ++-
drivers/net/avp/avp_ethdev.c | 12 ++-
drivers/net/axgbe/axgbe_ethdev.c | 12 ++-
drivers/net/bnx2x/bnx2x_ethdev.c | 8 +-
drivers/net/bnxt/bnxt_ethdev.c | 26 +++++--
drivers/net/bonding/rte_eth_bond_8023ad.c | 17 ++++-
drivers/net/bonding/rte_eth_bond_pmd.c | 74 +++++++++++++++---
drivers/net/cxgbe/cxgbe_ethdev.c | 12 +--
drivers/net/cxgbe/cxgbe_pfvf.h | 4 +-
drivers/net/dpaa/dpaa_ethdev.c | 8 +-
drivers/net/dpaa2/dpaa2_ethdev.c | 12 ++-
drivers/net/e1000/em_ethdev.c | 12 ++-
drivers/net/e1000/igb_ethdev.c | 24 ++++--
drivers/net/enetc/enetc_ethdev.c | 8 +-
drivers/net/enic/enic.h | 2 +-
drivers/net/enic/enic_ethdev.c | 22 ++++--
drivers/net/enic/enic_main.c | 4 +-
drivers/net/failsafe/failsafe_ether.c | 8 +-
drivers/net/failsafe/failsafe_ops.c | 52 +++++++++++--
drivers/net/fm10k/fm10k_ethdev.c | 24 ++++--
drivers/net/hinic/hinic_pmd_ethdev.c | 16 +++-
drivers/net/i40e/i40e_ethdev.c | 35 ++++++---
drivers/net/i40e/i40e_ethdev_vf.c | 20 +++--
drivers/net/i40e/i40e_vf_representor.c | 8 +-
drivers/net/iavf/iavf_ethdev.c | 20 +++--
drivers/net/ice/ice_ethdev.c | 27 +++++--
drivers/net/ipn3ke/ipn3ke_ethdev.h | 4 +-
drivers/net/ipn3ke/ipn3ke_representor.c | 8 +-
drivers/net/ixgbe/ixgbe_ethdev.c | 50 +++++++++---
drivers/net/liquidio/lio_ethdev.c | 30 +++++---
drivers/net/mlx4/mlx4.h | 4 +-
drivers/net/mlx4/mlx4_ethdev.c | 28 +++++--
drivers/net/mlx5/mlx5.h | 4 +-
drivers/net/mlx5/mlx5_rxmode.c | 38 ++++++++--
drivers/net/mvneta/mvneta_ethdev.c | 22 ++++--
drivers/net/mvpp2/mrvl_ethdev.c | 28 +++++--
drivers/net/netvsc/hn_ethdev.c | 8 +-
drivers/net/netvsc/hn_var.h | 4 +-
drivers/net/netvsc/hn_vf.c | 22 +++++-
drivers/net/nfb/nfb_rxmode.c | 10 ++-
drivers/net/nfb/nfb_rxmode.h | 8 +-
drivers/net/nfp/nfp_net.c | 30 +++++---
drivers/net/octeontx/octeontx_ethdev.c | 16 ++--
drivers/net/octeontx2/otx2_ethdev.h | 4 +-
drivers/net/octeontx2/otx2_ethdev_ops.c | 8 +-
drivers/net/qede/qede_ethdev.c | 16 ++--
drivers/net/sfc/sfc_ethdev.c | 14 ++--
drivers/net/szedata2/rte_eth_szedata2.c | 6 +-
drivers/net/tap/rte_eth_tap.c | 52 ++++++++++---
drivers/net/thunderx/nicvf_ethdev.c | 3 +-
drivers/net/virtio/virtio_ethdev.c | 24 ++++--
drivers/net/vmxnet3/vmxnet3_ethdev.c | 12 ++-
examples/bbdev_app/main.c | 7 +-
examples/bond/main.c | 8 +-
examples/distributor/main.c | 4 +-
examples/eventdev_pipeline/main.c | 4 +-
examples/exception_path/main.c | 5 +-
examples/flow_classify/flow_classify.c | 4 +-
examples/flow_filtering/main.c | 7 +-
examples/ip_fragmentation/main.c | 6 +-
examples/ip_pipeline/link.c | 7 +-
examples/ip_reassembly/main.c | 6 +-
examples/ipsec-secgw/ipsec-secgw.c | 9 ++-
examples/kni/main.c | 9 ++-
examples/l2fwd-cat/l2fwd-cat.c | 4 +-
examples/l2fwd-crypto/main.c | 7 +-
examples/l2fwd-jobstats/main.c | 9 ++-
examples/l2fwd-keepalive/main.c | 6 +-
examples/l2fwd/main.c | 6 +-
examples/l3fwd-acl/main.c | 9 ++-
examples/l3fwd-power/main.c | 9 ++-
examples/l3fwd/main.c | 9 ++-
examples/link_status_interrupt/main.c | 6 +-
examples/load_balancer/init.c | 6 +-
.../client_server_mp/mp_server/init.c | 4 +-
examples/multi_process/symmetric_mp/main.c | 4 +-
examples/netmap_compat/bridge/bridge.c | 6 +-
examples/packet_ordering/main.c | 4 +-
.../performance-thread/l3fwd-thread/main.c | 9 ++-
examples/ptpclient/ptpclient.c | 7 +-
examples/qos_meter/main.c | 12 ++-
examples/qos_sched/init.c | 6 +-
examples/quota_watermark/qw/init.c | 6 +-
examples/rxtx_callbacks/main.c | 5 +-
examples/server_node_efd/server/init.c | 4 +-
examples/skeleton/basicfwd.c | 4 +-
examples/vhost/main.c | 11 ++-
examples/vm_power_manager/main.c | 4 +-
lib/librte_ethdev/rte_ethdev.c | 76 +++++++++++++++----
lib/librte_ethdev/rte_ethdev.h | 14 +++-
lib/librte_ethdev/rte_ethdev_core.h | 52 ++++++++++++-
lib/librte_kni/rte_kni.c | 14 +++-
115 files changed, 1202 insertions(+), 385 deletions(-)
--
2.17.1
More information about the dev
mailing list