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]. 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=6279 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 | 20 +++-- 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 | 24 ++++-- drivers/net/mlx5/mlx5.h | 4 +- drivers/net/mlx5/mlx5_rxmode.c | 40 ++++++++-- 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 | 4 +- lib/librte_kni/rte_kni.c | 14 +++- 115 files changed, 1155 insertions(+), 380 deletions(-) -- 2.17.1