It is the first patch series to get rid of void returning functions in ethdev in accordance with deprecation notice [1].
Functions which return void are bad since they do not provide explicit information to the caller if everything is OK or not. It was bugs in rte_eth_dev_info_get() recently which kept device information uninitialized if port ID is invalid. The patch series updates rte_eth_dev_info_get() straightforward to simply return error if port ID is invalid or driver does not provide corresponding callback. In the future default callback which fills in generic non driver specific information could be added to help secondary processes cases when driver has no callback in secondary process. Also the idea to make the callback mandatory should be considered. Patches to update examples are kept separately to simplify review, but could be squashed on apply since logically it is the same change in all applicable examples. [1] https://patches.dpdk.org/patch/56969/ v4: - add acks - use fs_err() in net/failsafe v3: - add acks received on v2 patches - fix callback patch to take callback return value into account - use newer Git version to generate easier to review patches - return -1 from get_mac_addr_index() and get_hash_mac_addr_index() - rollback dev_conf in the case of rte_eth_dev_info_get() failure v2: - add a patch to change dev_infos_get prototype to return int as well - fix issue with ring_pmd_autotest (just inverted assert condition) - add missing net/failsafe patch - fix net/netsvc patch in accordance with review notes from Stephen - fix app/testpmd patch in accordance with review notes from Ferruh - add net/bnxt ack Andrew Rybchenko (1): ethdev: remove redundunt device info cleanup before get Ivan Ilchenko (53): ethdev: change rte_eth_dev_info_get() return value to int app/testpmd: check status of getting ethdev info app/eventdev: check status of getting ethdev info kni: check status of getting ethdev info latency: check status of getting ethdev info pdump: check status of getting ethdev info ring: check status of getting ethdev info app/procinfo: check status of getting ethdev info app/test: check status of getting ethdev info in bonding app/test: check ethdev info get result in event Rx adapter net/bnxt: check status of getting ethdev info net/bonding: check status of getting ethdev info net/failsafe: check status of getting ethdev info net/netvsc: check status of getting ethdev info net/softnic: check status of getting ethdev info ethdev: change device info get callback to return int examples/rxtx_callbacks: check status of getting ethdev info examples/l3fwd: check status of getting ethdev info examples/qos_meter: check status of getting ethdev info examples/ip_frag: check status of getting ethdev info examples/performance-thread: check dev info get result examples/vmdq: check status of getting ethdev info examples/distributor: check status of getting ethdev info examples/l3fwd-acl: check status of getting ethdev info examples/vm_power: check status of getting ethdev info examples/qos_sched: check status of getting ethdev info examples/flow_filtering: check status of getting ethdev info examples/l3fwd-power: check status of getting ethdev info examples/l2fwd: check status of getting ethdev info examples/skeleton: check status of getting ethdev info examples/vmdq_dcb: check status of getting ethdev info examples/ipv4_multicast: check status of getting ethdev info examples/l2fwd-jobstats: check status of getting ethdev info examples/bond: check status of getting ethdev info examples/eventdev: check status of getting ethdev info examples/ip_reassembly: check status of getting ethdev info examples/vhost: check status of getting ethdev info examples/ptpclient: check status of getting ethdev info examples/link_status_interrupt: check dev info get result examples/tep_termination: check dev info get result examples/server_node_efd: check dev info get result examples/flow_classify: check status of getting ethdev info examples/packet_ordering: check dev info get result examples/l2fwd-crypto: check status of getting ethdev info examples/multi_process: check status of getting ethdev info examples/ipsec-secgw: check status of getting ethdev info examples/netmap_compat: check status of getting ethdev info examples/l2fwd-keepalive: check dev info get result examples/ip_pipeline: check status of getting ethdev info examples/load_balancer: check status of getting ethdev info examples/kni: check status of getting ethdev info examples/ethtool: check status of getting ethdev info examples/exception_path: check status of getting ethdev info app/proc-info/main.c | 15 ++- app/test-eventdev/test_perf_common.c | 8 +- app/test-eventdev/test_pipeline_common.c | 9 +- app/test-pmd/cmdline.c | 124 ++++++++++++++---- app/test-pmd/cmdline_flow.c | 5 +- app/test-pmd/config.c | 80 +++++++++-- app/test-pmd/parameters.c | 8 +- app/test-pmd/testpmd.c | 41 ++++-- app/test-pmd/testpmd.h | 3 + app/test-pmd/util.c | 28 +++- app/test/test_event_eth_rx_adapter.c | 4 +- app/test/test_kni.c | 27 +++- app/test/test_link_bonding_rssconf.c | 33 ++++- app/test/test_pmd_ring.c | 9 +- app/test/virtual_pmd.c | 4 +- doc/guides/rel_notes/deprecation.rst | 1 - doc/guides/rel_notes/release_19_11.rst | 5 +- drivers/net/af_packet/rte_eth_af_packet.c | 4 +- drivers/net/af_xdp/rte_eth_af_xdp.c | 4 +- drivers/net/ark/ark_ethdev.c | 8 +- drivers/net/atlantic/atl_ethdev.c | 11 +- drivers/net/avp/avp_ethdev.c | 8 +- drivers/net/axgbe/axgbe_ethdev.c | 6 +- drivers/net/bnx2x/bnx2x_ethdev.c | 4 +- drivers/net/bnxt/bnxt_ethdev.c | 12 +- drivers/net/bnxt/rte_pmd_bnxt.c | 122 +++++++++++++++-- drivers/net/bonding/rte_eth_bond_api.c | 10 +- drivers/net/bonding/rte_eth_bond_pmd.c | 40 +++++- drivers/net/cxgbe/cxgbe_ethdev.c | 15 ++- drivers/net/cxgbe/cxgbe_pfvf.h | 4 +- drivers/net/dpaa/dpaa_ethdev.c | 16 ++- drivers/net/dpaa2/dpaa2_ethdev.c | 4 +- drivers/net/e1000/em_ethdev.c | 12 +- drivers/net/e1000/igb_ethdev.c | 30 +++-- drivers/net/ena/ena_ethdev.c | 8 +- drivers/net/enetc/enetc_ethdev.c | 4 +- drivers/net/enic/enic_ethdev.c | 4 +- drivers/net/failsafe/failsafe_ops.c | 10 +- drivers/net/fm10k/fm10k_ethdev.c | 8 +- drivers/net/hinic/hinic_pmd_ethdev.c | 4 +- drivers/net/i40e/i40e_ethdev.c | 8 +- drivers/net/i40e/i40e_ethdev_vf.c | 8 +- drivers/net/i40e/i40e_vf_representor.c | 4 +- drivers/net/iavf/iavf_ethdev.c | 6 +- drivers/net/ice/ice_ethdev.c | 8 +- drivers/net/ipn3ke/ipn3ke_representor.c | 4 +- drivers/net/ixgbe/ixgbe_ethdev.c | 21 ++- drivers/net/ixgbe/ixgbe_vf_representor.c | 4 +- drivers/net/kni/rte_eth_kni.c | 4 +- drivers/net/liquidio/lio_ethdev.c | 4 +- drivers/net/memif/rte_eth_memif.c | 4 +- drivers/net/mlx4/mlx4.h | 4 +- drivers/net/mlx4/mlx4_ethdev.c | 4 +- drivers/net/mlx5/mlx5.h | 2 +- drivers/net/mlx5/mlx5_ethdev.c | 4 +- drivers/net/mvneta/mvneta_ethdev.c | 4 +- drivers/net/mvpp2/mrvl_ethdev.c | 4 +- drivers/net/netvsc/hn_ethdev.c | 16 ++- drivers/net/netvsc/hn_var.h | 2 +- drivers/net/netvsc/hn_vf.c | 15 ++- drivers/net/nfb/nfb_ethdev.c | 4 +- drivers/net/nfp/nfp_net.c | 8 +- drivers/net/null/rte_eth_null.c | 6 +- drivers/net/octeontx/octeontx_ethdev.c | 4 +- drivers/net/octeontx2/otx2_ethdev.h | 4 +- drivers/net/octeontx2/otx2_ethdev_ops.c | 4 +- drivers/net/pcap/rte_eth_pcap.c | 4 +- drivers/net/qede/qede_ethdev.c | 10 +- drivers/net/ring/rte_eth_ring.c | 4 +- drivers/net/sfc/sfc_ethdev.c | 4 +- drivers/net/softnic/rte_eth_softnic.c | 4 +- drivers/net/softnic/rte_eth_softnic_link.c | 5 +- drivers/net/szedata2/rte_eth_szedata2.c | 4 +- drivers/net/tap/rte_eth_tap.c | 4 +- drivers/net/thunderx/nicvf_ethdev.c | 4 +- drivers/net/vhost/rte_eth_vhost.c | 6 +- drivers/net/virtio/virtio_ethdev.c | 6 +- drivers/net/vmxnet3/vmxnet3_ethdev.c | 8 +- examples/bond/main.c | 14 +- examples/distributor/main.c | 8 +- examples/ethtool/ethtool-app/main.c | 8 +- examples/ethtool/lib/rte_ethtool.c | 21 ++- examples/eventdev_pipeline/main.c | 8 +- examples/exception_path/main.c | 7 +- examples/flow_classify/flow_classify.c | 8 +- examples/flow_filtering/main.c | 7 +- examples/ip_fragmentation/main.c | 14 +- examples/ip_pipeline/kni.c | 5 +- examples/ip_pipeline/link.c | 3 +- examples/ip_reassembly/main.c | 7 +- examples/ipsec-secgw/ipsec-secgw.c | 6 +- examples/ipsec-secgw/ipsec.c | 9 +- examples/ipsec-secgw/sa.c | 10 +- examples/ipv4_multicast/main.c | 7 +- examples/kni/main.c | 26 +++- examples/l2fwd-crypto/main.c | 9 +- examples/l2fwd-jobstats/main.c | 8 +- examples/l2fwd-keepalive/main.c | 8 +- examples/l2fwd/main.c | 8 +- examples/l3fwd-acl/main.c | 22 +++- examples/l3fwd-power/main.c | 22 +++- examples/l3fwd/main.c | 14 +- examples/link_status_interrupt/main.c | 8 +- examples/load_balancer/init.c | 7 +- examples/multi_process/symmetric_mp/main.c | 8 +- examples/netmap_compat/lib/compat_netmap.c | 9 +- examples/packet_ordering/main.c | 8 +- .../performance-thread/l3fwd-thread/main.c | 15 ++- examples/ptpclient/ptpclient.c | 9 +- examples/qos_meter/main.c | 16 ++- examples/qos_sched/init.c | 8 +- examples/rxtx_callbacks/main.c | 9 +- examples/server_node_efd/server/init.c | 5 +- examples/skeleton/basicfwd.c | 8 +- examples/tep_termination/vxlan_setup.c | 6 +- examples/vhost/main.c | 9 +- examples/vm_power_manager/main.c | 8 +- examples/vmdq/main.c | 16 ++- examples/vmdq_dcb/main.c | 18 ++- lib/librte_ethdev/rte_ethdev.c | 78 +++++++---- lib/librte_ethdev/rte_ethdev.h | 6 +- lib/librte_ethdev/rte_ethdev_core.h | 4 +- lib/librte_latencystats/rte_latencystats.c | 23 +++- lib/librte_pdump/rte_pdump.c | 9 +- 124 files changed, 1228 insertions(+), 293 deletions(-) -- 2.17.1