summaryrefslogtreecommitdiff
path: root/lib/librte_ethdev
AgeCommit message (Collapse)Author
2019-11-27ethdev: limit maximum number of queuesThomas Monjalon
A buffer overflow happens in testpmd with some drivers since the queue arrays are limited to RTE_MAX_QUEUES_PER_PORT. The advertised capabilities of mlx4, mlx5 and softnic for the number of queues were the maximum number: UINT16_MAX. They must be limited by the configured RTE_MAX_QUEUES_PER_PORT that applications expect to be respected. The limitation is applied at ethdev level (function rte_eth_dev_info_get), in order to force the configured limit for all drivers. Fixes: 14b53e27b30e ("ethdev: fix crash with multiprocess") Cc: stable@dpdk.org Reported-by: Raslan Darawsheh <rasland@mellanox.com> Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> Reviewed-by: David Marchand <david.marchand@redhat.com>
2019-11-26ethdev: fix item expansion for RSS flowMatan Azrad
When the last item in flow pattern includes "next protocol" field which is relevant for RSS flow expansion, a new item is added to the pattern according to the "next protocol" field. This field is called missed field. The missed field wrongly was not initialized what caused to some of the flow item fields to contain garbage values. As a result, the PMDs internal flow engine may crash. For example, the spec value may include garbage pointer and to cause crash. Initialize the missed field with zeroes. Fixes: fc2dd8dd492f ("ethdev: fix expand RSS flows") Cc: stable@dpdk.org Signed-off-by: Matan Azrad <matan@mellanox.com> Acked-by: Ori Kam <orika@mellanox.com>
2019-11-20build: align symbols with global ABI versionPawel Modrak
Merge all versions in linker version script files to DPDK_20.0. This commit was generated by running the following command: :~/DPDK$ buildtools/update-abi.sh 20.0 Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
2019-11-20build: remove individual library versionsAnatoly Burakov
Since the library versioning for both stable and experimental ABI's is now managed globally, the LIBABIVER and version variables no longer serve any useful purpose, and can be removed. The replacement in Makefiles was done using the following regex: ^(#.*\n)?LIBABIVER\s*:=\s*\d+\n(\s*\n)? (LIBABIVER := numbers, optionally preceded by a comment and optionally succeeded by an empty line) The replacement for meson files was done using the following regex: ^(#.*\n)?version\s*=\s*\d+\n(\s*\n)? (version = numbers, optionally preceded by a comment and optionally succeeded by an empty line) [David]: those variables are manually removed for the files: - drivers/common/qat/Makefile - lib/librte_eal/meson.build [David]: the LIBABIVER is restored for the external ethtool example library. Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> Signed-off-by: David Marchand <david.marchand@redhat.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
2019-11-20ethdev: avoid undefined behaviour on configuration copyAndrew Rybchenko
memcpy() source and destination areas must not overlap and equal pointers is the case which is really met, so handle it. Fixes: 68b931bff287 ("ethdev: eliminate interim variable") Cc: stable@dpdk.org Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-11-20ethdev: improve message about not disabled offloadAndrew Rybchenko
Avoid usaged of "failed" in the message about not requested but enabled offload, since it is not a failure. Fixes: 1daa33805824 ("ethdev: validate offloads set by PMD") Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Ferruh Yigit <ferruh.yigit@intel.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
2019-11-20ethdev: decrease verbosity of not disabled offload logsAndrew Rybchenko
Right now a PMD decides if it is critical that an offload cannot be disabled (i.e. not requested, but still enabled). If PMD treaks it as OK, we should not spam logs with corresponding messages by default. Default log level in ethdev is INFO, so change the message level to DEBUG. Fixes: 1daa33805824 ("ethdev: validate offloads set by PMD") Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Ferruh Yigit <ferruh.yigit@intel.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
2019-11-20ethdev: fix log line feedPavan Nikhilesh
Fix missing new line token at the end of log. Fixes: 5d308972954c ("ethdev: add mbuf RSS update as an offload") Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-11-12ethdev: fix last item detection on RSS flow expandMatan Azrad
There is a rte_flow API which expands a RSS flow pattern to multiple patterns according to the RSS hash types in the RSS action configuration. As part of the expansion, detection of the last item of the flow uses the "next proto" field of the last configured item in the pattern list. Wrongly, the mask of this field was not considered in order to validate the field. Ignore "next proto" fields when their corresponded masks invalidate them. Fixes: fc2dd8dd492f ("ethdev: fix expand RSS flows") Cc: stable@dpdk.org Signed-off-by: Matan Azrad <matan@mellanox.com> Acked-by: Xiaoyu Min <jackmin@mellanox.com> Acked-by: Ori Kam <orika@mellanox.com>
2019-11-12ethdev: add maximum LRO packet sizeDekel Peled
This patch implements API for configuration and validation of max size for LRO aggregated packet. Signed-off-by: Dekel Peled <dekelp@mellanox.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Matan Azrad <matan@mellanox.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-11-11ethdev: reserve space in main structs for extensionThomas Monjalon
In order to allow smooth addition of features without breaking ABI compatibility, some space is reserved in several core structs of ethdev API. The struct rte_eth_dev and rte_eth_dev_data are supposed to be used internally only, but there is a chance that increasing their size would break ABI for some applications. Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-11-11ethdev: validate offloads set by PMDPavan Nikhilesh
Some PMDs cannot work when certain offloads are enable/disabled, as a workaround PMDs auto enable/disable offloads internally and expose it through dev->data->dev_conf.rxmode.offloads. After device specific dev_configure is called compare the requested offloads to the offloads exposed by the PMD and, if the PMD failed to enable a given offload then log it and return -EINVAL from rte_eth_dev_configure, else if the PMD failed to disable a given offload log and continue with rte_eth_dev_configure. Suggested-by: Andrew Rybchenko <arybchenko@solarflare.com> Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-11-11ethdev: add mbuf RSS update as an offloadPavan Nikhilesh
Add new Rx offload flag `DEV_RX_OFFLOAD_RSS_HASH` which can be used to enable/disable PMDs write to `rte_mbuf::hash::rss`. PMDs notify the validity of `rte_mbuf::hash:rss` to the application by enabling `PKT_RX_RSS_HASH ` flag in `rte_mbuf::ol_flags`. Also update testpmd rx_offload command to include RSS_HASH Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-11-11ethdev: add packet type range functionPavan Nikhilesh
Add `rte_eth_dev_set_ptypes` function that will allow the application to inform the PMD about reduced range of packet types to handle. Based on the ptypes set PMDs can optimize their Rx path. -If application doesn’t want any ptype information it can call `rte_eth_dev_set_ptypes(ethdev_id, RTE_PTYPE_UNKNOWN, NULL, 0)` and PMD may skip packet type processing and set rte_mbuf::packet_type to RTE_PTYPE_UNKNOWN. -If application doesn’t call `rte_eth_dev_set_ptypes` PMD can return `rte_mbuf::packet_type` with `rte_eth_dev_get_supported_ptypes`. -If application is interested only in L2/L3 layer, it can inform the PMD to update `rte_mbuf::packet_type` with L2/L3 ptype by calling `rte_eth_dev_set_ptypes(ethdev_id, RTE_PTYPE_L2_MASK | RTE_PTYPE_L3_MASK, NULL, 0)`. Suggested-by: Konstantin Ananyev <konstantin.ananyev@intel.com> Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-11-08ethdev: fix expand RSS flowsXiaoyu Min
rte_flow_expand_rss expands rte_flow item list based on the RSS types. In another word, some additional rules are added if the user specified items are not complete enough according to the RSS type, for example: ... pattern eth / end actions rss type tcp end ... User only provides item eth but want to do RSS on tcp traffic. The pattern is not complete enough to filter TCP traffic only. This will be a problem for some HWs. So some PMDs use rte_flow_expand_rss to expand above user provided flow to: ... pattern eth / end actions rss types tcp ... pattern eth / ipv4 / tcp / end actions rss types tcp ... ... pattern eth / ipv6 / tcp / end actions rss types tcp ... in order to filter TCP traffic only and do RSS correctly. However the current expansion cannot handle pattern as below, which provides ethertype or ip next proto instead of providing an item: ... pattern eth type is 0x86DD / end actions rss types tcp ... rte_flow_expand_rss will expand above flow to: ... pattern eth type is 0x86DD / ipv4 / tcp end ... which has conflicting values: 0x86DD vs. ipv4 and some HWs will refuse to create flow. This patch will fix above by checking the last item's spec and to expand RSS flows correctly. Currently only support to complete item list based on ether type or ip next proto. Fixes: 4ed05fcd441b ("ethdev: add flow API to expand RSS flows") Cc: stable@dpdk.org Signed-off-by: Xiaoyu Min <jackmin@mellanox.com> Acked-by: Ori Kam <orika@mellanox.com>
2019-11-08ethdev: move egress metadata to dynamic fieldViacheslav Ovsiienko
The dynamic mbuf fields were introduced by [1]. The egress metadata is good candidate to be moved from statically allocated field tx_metadata to dynamic one. Because mbufs are used in half-duplex fashion only, it is safe to share this dynamic field with ingress metadata. The shared dynamic field contains either egress (if application going to transmit mbuf with tx_burst) or ingress (if mbuf is received with rx_burst) metadata and can be accessed by RTE_FLOW_DYNF_METADATA() macro or with rte_flow_dynf_metadata_set() and rte_flow_dynf_metadata_get() helper routines. PKT_TX_DYNF_METADATA/PKT_RX_DYNF_METADATA flag will be set along with the data. The mbuf dynamic field must be registered by calling rte_flow_dynf_metadata_register() prior accessing the data. The availability of dynamic mbuf metadata field can be checked with rte_flow_dynf_metadata_avail() routine. DEV_TX_OFFLOAD_MATCH_METADATA offload and configuration flag is removed. The metadata support in PMDs is engaged on dynamic field registration. Metadata feature is getting complex. We might have some set of actions and items that might be supported by PMDs in multiple combinations, the supported values and masks are the subjects to query by perfroming trials (with rte_flow_validate). [1] http://patches.dpdk.org/patch/62040/ Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Ori Kam <orika@mellanox.com>
2019-11-08ethdev: extend flow metadataViacheslav Ovsiienko
Currently, metadata can be set on egress path via mbuf tx_metadata field with PKT_TX_METADATA flag and RTE_FLOW_ITEM_TYPE_META matches metadata. This patch extends the metadata feature usability. 1) RTE_FLOW_ACTION_TYPE_SET_META When supporting multiple tables, Tx metadata can also be set by a rule and matched by another rule. This new action allows metadata to be set as a result of flow match. 2) Metadata on ingress There's also need to support metadata on ingress. Metadata can be set by SET_META action and matched by META item like Tx. The final value set by the action will be delivered to application via metadata dynamic field of mbuf which can be accessed by RTE_FLOW_DYNF_METADATA() macro or with rte_flow_dynf_metadata_set() and rte_flow_dynf_metadata_get() helper routines. PKT_RX_DYNF_METADATA flag will be set along with the data. The mbuf dynamic field must be registered by calling rte_flow_dynf_metadata_register() prior to use SET_META action. The availability of dynamic mbuf metadata field can be checked with rte_flow_dynf_metadata_avail() routine. If application is going to engage the metadata feature it registers the metadata dynamic fields, then PMD checks the metadata field availability and handles the appropriate fields in datapath. For loopback/hairpin packet, metadata set on Rx/Tx may or may not be propagated to the other path depending on hardware capability. MARK and METADATA look similar and might operate in similar way, but not interacting. Initially, there were proposed two metadata related actions: - RTE_FLOW_ACTION_TYPE_FLAG - RTE_FLOW_ACTION_TYPE_MARK These actions set the special flag in the packet metadata, MARK action stores some specified value in the metadata storage, and, on the packet receiving PMD puts the flag and value to the mbuf and applications can see the packet was threated inside flow engine according to the appropriate RTE flow(s). MARK and FLAG are like some kind of gateway to transfer some per-packet information from the flow engine to the application via receiving datapath. Also, there is the item of type RTE_FLOW_ITEM_TYPE_MARK provided. It allows us to extend the flow match pattern with the capability to match the metadata values set by MARK/FLAG actions on other flows. From the datapath point of view, the MARK and FLAG are related to the receiving side only. It would useful to have the same gateway on the transmitting side and there was the feature of type RTE_FLOW_ITEM_TYPE_META was proposed. The application can fill the field in mbuf and this value will be transferred to some field in the packet metadata inside the flow engine. It did not matter whether these metadata fields are shared because of MARK and META items belonged to different domains (receiving and transmitting) and could be vendor-specific. So far, so good, DPDK proposes some entities to control metadata inside the flow engine and gateways to exchange these values on a per-packet basis via datapaths. As we can see, the MARK and META means are not symmetric, there is absent action which would allow us to set META value on the transmitting path. So, the action of type: - RTE_FLOW_ACTION_TYPE_SET_META was proposed. The next, applications raise the new requirements for packet metadata. The flow ngines are getting more complex, internal switches are introduced, multiple ports might be supported within the same flow engine namespace. From the DPDK points of view, it means the packets might be sent on one eth_dev port and received on the other one, and the packet path inside the flow engine entirely belongs to the same hardware device. The simplest example is SR-IOV with PF, VFs and the representors. And there is a brilliant opportunity to provide some out-of-band channel to transfer some extra data from one port to another one, besides the packet data itself. And applications would like to use this opportunity. It is supposed for application to use trials (with rte_flow_validate) to detect which metadata features (FLAG, MARK, META) actually supported by PMD and underlying hardware. It might depend on PMD configuration, system software, hardware settings, etc., and should be detected in run time. Signed-off-by: Yongseok Koh <yskoh@mellanox.com> Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Ori Kam <orika@mellanox.com>
2019-11-08ethdev: enhance burst mode information APIHaiyue Wang
Change the type of burst mode information from bit field to free string data, so that each PMD can describe the Rx/Tx busrt functions flexibly. Fixes: eb5902504a13 ("ethdev: add API for getting burst mode information") Fixes: 6b6609f68ccd ("net/i40e: support Rx/Tx burst mode info") Fixes: e9a10e6c2102 ("net/ice: support Rx/Tx burst mode info") Fixes: 7fe108edcf53 ("app/testpmd: show Rx/Tx burst mode description") Signed-off-by: Haiyue Wang <haiyue.wang@intel.com> Acked-by: Ray Kinsella <ray.kinsella@intel.com> Acked-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
2019-11-08ethdev: add flow tagViacheslav Ovsiienko
A tag is a transient data which can be used during flow match. This can be used to store match result from a previous table so that the same pattern need not be matched again on the next table. Even if outer header is decapsulated on the previous match, the match result can be kept. Some device expose internal registers of its flow processing pipeline and those registers are quite useful for stateful connection tracking as it keeps status of flow matching. Multiple tags are supported by specifying index. Example testpmd commands are: flow create 0 ingress pattern ... / end actions set_tag index 2 value 0xaa00bb mask 0xffff00ff / set_tag index 3 value 0x123456 mask 0xffffff / vxlan_decap / jump group 1 / end flow create 0 ingress pattern ... / end actions set_tag index 2 value 0xcc00 mask 0xff00 / set_tag index 3 value 0x123456 mask 0xffffff / vxlan_decap / jump group 1 / end flow create 0 ingress group 1 pattern tag index is 2 value spec 0xaa00bb value mask 0xffff00ff / eth ... / end actions ... jump group 2 / end flow create 0 ingress group 1 pattern tag index is 2 value spec 0xcc00 value mask 0xff00 / tag index is 3 value spec 0x123456 value mask 0xffffff / eth ... / end actions ... / end flow create 0 ingress group 2 pattern tag index is 3 value spec 0x123456 value mask 0xffffff / eth ... / end actions ... / end Signed-off-by: Yongseok Koh <yskoh@mellanox.com> Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Acked-by: Ori Kam <orika@mellanox.com>
2019-11-08ethdev: remove deprecated port count functionThomas Monjalon
The function rte_eth_dev_count() was marked as deprecated in DPDK 18.05 in commit d9a42a69febf ("ethdev: deprecate port count function"). It was planned to be removed after 19.11 LTS release, but given we must not break ABI between 19.11 and 20.11, it is removed now. Note the ABI version is not dumped in this commit because other changes already did. Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Reviewed-by: David Marchand <david.marchand@redhat.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Reviewed-by: Jerin Jacob <jerinj@marvell.com>
2019-11-08ethdev: add hairpin queueOri Kam
This commit introduce hairpin queue type. The hairpin queue in build from Rx queue binded to Tx queue. It is used to offload traffic coming from the wire and redirect it back to the wire. There are 3 new functions: - rte_eth_dev_hairpin_capability_get - rte_eth_rx_hairpin_queue_setup - rte_eth_tx_hairpin_queue_setup In order to use the queue, there is a need to create rte_flow with queue / RSS action that targets one or more of the Rx queues. Signed-off-by: Ori Kam <orika@mellanox.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-11-08ethdev: move queue state defines to private fileOri Kam
The queue state defines are internal to the DPDK. This commit moves them to a private header file. Signed-off-by: Ori Kam <orika@mellanox.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-10-27rename private header filesDharmik Thakkar
Some of the internal header files have 'rte_' prefix and some don't. Remove 'rte_' prefix from all internal header files. Suggested-by: Thomas Monjalon <thomas@monjalon.net> Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com> Reviewed-by: Phil Yang <phil.yang@arm.com> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
2019-10-27ethdev: bump library versionDavid Marchand
Let's stick to the current model of per library ABI version until the new model is in place. The ABI changed in the incriminated commit. The release notes were updated accordingly but the compiled version number has been missed. Fixes: 4f25d7d2252f ("ethdev: add return code to device info get function") Signed-off-by: David Marchand <david.marchand@redhat.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
2019-10-25ethdev: fix include of ethernet header fileCiara Power
The include for rte_ether.h in each of these files should not use quotes, as the header file is not in the librte_ethdev directory. These are now updated to use <> symbols, to search directories pre-designated by the compiler. Fixes: 57668ed7bc08 ("net: move ethernet definitions to the net library") Cc: stable@dpdk.org Signed-off-by: Ciara Power <ciara.power@intel.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
2019-10-23ethdev: add HIGIG2 key field to flow APIKiran Kumar K
Add new rte_flow_item_higig2_hdr in order to match higig2 header. It is a layer 2.5 protocol and used in Broadcom switches. Header format is based on the following document. http://read.pudn.com/downloads558/doc/comm/2301468/HiGig_protocol.pdf Signed-off-by: Kiran Kumar K <kirankumark@marvell.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Olivier Matz <olivier.matz@6wind.com>
2019-10-23ethdev: check device promiscuous stateCiara Power
The promiscuous enable and disable functions now check the promiscuous state of the device before checking if the dev_ops function exists for the device. This change is necessary to allow sample applications run on virtual PMDs, as previously -ENOTSUP returned when the promiscuous enable function was called. This caused the sample application to fail unnecessarily. Signed-off-by: Ciara Power <ciara.power@intel.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-10-23ethdev: extend RSS offload typesSimei Su
This patch reserves several bits as input set selection from the high end of the 64 bits. It is combined with exisiting ETH_RSS_* to represent RSS types. This patch also checks the simultaneous use of SRC_ONLY and DST_ONLY of the same level. Signed-off-by: Simei Su <simei.su@intel.com> Reviewed-by: Qi Zhang <qi.z.zhang@intel.com> Acked-by: Ori Kam <orika@mellanox.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-10-23ethdev: decouple flow types and RSS offload typesSimei Su
This patch decouples RTE_ETH_FLOW_* and ETH_RSS_*. The former defines flow types and the latter defines RSS offload types. Signed-off-by: Simei Su <simei.su@intel.com> Reviewed-by: Qi Zhang <qi.z.zhang@intel.com> Acked-by: Ori Kam <orika@mellanox.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-10-23ethdev: add API for getting burst mode informationHaiyue Wang
Some PMDs have more than one Rx/Tx burst paths, add the ethdev API that allows an application to retrieve the mode information about Rx/Tx packet burst such as Scalar or Vector, and Vector technology like AVX2. Signed-off-by: Haiyue Wang <haiyue.wang@intel.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-10-23ethdev: fix QinQ offloadVivek Sharma
Use correct flag for indicating QinQ strip rx offload. Fixes: dfebfc9882fb ("ethdev: support dynamic configuration of QinQ strip") Cc: stable@dpdk.org Signed-off-by: Vivek Sharma <viveksharma@marvell.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-10-23ethdev: add GTPU flow typeKiran Kumar K
Adding support to enable GTPU eth flow type for RSS hash index calculation. Signed-off-by: Kiran Kumar K <kirankumark@marvell.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-10-23ethdev: add definitions for EEPROM standardsDekel Peled
This patch add definitions of maximal data length in module EEPROM, values are compatible with include/uapi/linux/ethtool.h. These definitions can be used by application to validate data length. Signed-off-by: Dekel Peled <dekelp@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-10-23ethdev: add AH key field to flow APIKiran Kumar K
Add new rte_flow_item_ah in order to match the Authentication Header based on RFC 2402. Signed-off-by: Kiran Kumar K <kirankumark@marvell.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-10-23ethdev: add IGMP key field to flow APIKiran Kumar K
Add new rte_flow_item_igmp in order to match the Internet Group Management Protocol based on RFC 2236. Signed-off-by: Kiran Kumar K <kirankumark@marvell.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-10-23ethdev: add NSH key field to flow APIKiran Kumar K
Add new rte_flow_item_nsh in order to match the network service header based on RFC 8300. Signed-off-by: Kiran Kumar K <kirankumark@marvell.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-10-07ethdev: add symmetric Toeplitz hashSimei Su
Currently, there are DEFAULT,TOEPLITZ and SIMPLE_XOR hash function. To support symmetric hash by rte_flow RSS action, this patch adds new hash function "Symmetric Toeplitz" which is supported by some hardware. Signed-off-by: Simei Su <simei.su@intel.com> Reviewed-by: Qi Zhang <qi.z.zhang@intel.com> Acked-by: Ori Kam <orika@mellanox.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-10-07ethdev: add PPPoE to flow APIYing A Wang
- RTE_FLOW_ITEM_TYPE_PPPOES: matches a PPPoE session header. - RTE_FLOW_ITEM_TYPE_PPPOED: matches a PPPoE discovery header. - RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID: matches a PPPoE session protocol identifier. Signed-off-by: Ying A Wang <ying.a.wang@intel.com> Acked-by: Ori Kam <orika@mellanox.com> Reviewed-by: Qi Zhang <qi.z.zhang@intel.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-10-07ethdev: add GTP extension header to flow APIYing A Wang
- RTE_FLOW_ITEM_TYPE_GTP_PSC: matches a GTP - RTE_FLOW_ITEM_TYPE_GTP_PSC: matches a GTP PDU extension header (PDU session container). Signed-off-by: Ying A Wang <ying.a.wang@intel.com> Acked-by: Ori Kam <orika@mellanox.com> Reviewed-by: Qi Zhang <qi.z.zhang@intel.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-10-07ethdev: do nothing if all-multicast mode is applied againAndrew Rybchenko
Since driver callbacks return status code now, there is no necessity to enable or disable all-multicast mode once again if it is already successfully enabled or disabled. Configuration restore at startup tries to ensure that configured all-multicast mode is applied and start will return error if it fails. Also it avoids theoretical cases when already configured all-multicast mode is applied once again and fails. In this cases it is unclear which value should be reported on get (configured or opposite). Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-10-07ethdev: change allmulticast callbacks to return statusIvan Ilchenko
Enabling/disabling of allmulticast mode is not always successful and it should be taken into account to be able to handle it properly. When correct return status is unclear from driver code, -EAGAIN is used. Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Hyong Youb Kim <hyonkim@cisco.com>
2019-10-07ethdev: change allmulticast mode API to return errorsIvan Ilchenko
Change rte_eth_allmulticast_enable()/rte_eth_allmulticast_disable() return value from void to int and return negative errno values in case of error conditions. Modify usage of these functions across the ethdev according to new return type. Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-10-07ethdev: change owner delete function to return intIgor Romanov
Change rte_eth_dev_owner_delete() return value from void to int and return negative errno values in case of error conditions. Right now there is only one error case for rte_eth_dev_owner_delete() - invalid owner, but it still makes sense to return error to catch bugs in the code which uses the function. Also update the usage of the function in drivers/netvsc according to the new return type. Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-10-07ethdev: change MAC address get function to return intIgor Romanov
Change rte_eth_macaddr_get() return value from void to int and return negative errno values in case of error conditions. Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-10-07ethdev: change link status get functions to return intIgor Romanov
Change rte_eth_link_get() and rte_eth_link_get_nowait() return value from void to int and return negative errno values in case of error conditions. Return value of link_update callback is ignored since the callback returns not errors but whether link up status has changed or not. Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-10-07ethdev: make stats and xstats reset callbacks return intIgor Romanov
Change return value of the callbacks from void to int. Make implementations across all drivers return negative errno values in case of error conditions. Both callbacks are updated together because a large number of drivers assign the same function to both callbacks. Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-10-07ethdev: change xstats reset function to return intIgor Romanov
Change rte_eth_xstats_reset() return value from void to int and return negative errno values in case of error conditions. Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-10-07ethdev: do nothing if promiscuous mode is applied againAndrew Rybchenko
Since driver callbacks return status code now, there is no necessity to enable or disable promiscuous mode once again if it is already successfully enabled or disabled. Configuration restore at startup tries to ensure that configured promiscuous mode is applied and start will return error if it fails. Also it avoids theoretical cases when already configured promiscuous mode is applied once again and fails. In this cases it is unclear which value should be reported on get (configured or opposite). Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
2019-10-07ethdev: change promiscuous callbacks to return statusAndrew Rybchenko
Enabling/disabling of promiscuous mode is not always successful and it should be taken into account to be able to handle it properly. When correct return status is unclear from driver code, -EAGAIN is used. Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Matan Azrad <matan@mellanox.com> Acked-by: Hyong Youb Kim <hyonkim@cisco.com>
2019-10-07ethdev: change promiscuous mode controllers to return errorsIvan Ilchenko
Change rte_eth_promiscuous_enable()/rte_eth_promiscuous_disable() return value from void to int and return negative errno values in case of error conditions. Modify usage of these functions across the ethdev according to new return type. Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>