path: root/drivers/net/fm10k
AgeCommit message (Collapse)Author
2019-03-29net/fm10k: fix VLAN strip offload flagXiao Wang
Since the VLAN header is stripped from mbuf data, PKT_RX_VLAN_STRIPPED should be set in offload flag. Fixes: 6b59a3bc82b1 ("fm10k: fix VLAN in Rx mbuf") Fixes: 7092be8437bd ("fm10k: add vector Rx") Cc: Signed-off-by: Xiao Wang <>
2019-01-14net/fm10k: fix internal switch initial statusJulien Meunier
sm_down is a boolean in order to check if the internal switch of the fm10k is up or down. This variable is configured though an interrupt by fm10k_dev_interrupt_handler_pf. If sm_down is uninitialized, we are not sure of its value at the first bring up. For example, if FM10K_EICR_SWITCHREADY is raised, the PMD will try to reconfigure the switch, but it does not make sense, as it's the first startup. The sm_down implementation has been introduced commit 6c9f37245583 ("net/fm10k: support switch restart on PF"). Fixes: 6f22f2f67268 ("net/fm10k: redefine link status semantics") Cc: Signed-off-by: Julien Meunier <> Acked-by: Xiao Wang <>
2018-12-13drivers/net: fix several Tx prepare functionsDidier Pallard
Since below commit, several tx_prep functions are broken, they fail to pass supported Tx offload features check: PKT_TX_IPVx must be set when any PKT_TX_L4 checksum is requested, but these values are not present in the mask of supported Tx offloads of several drivers that advertise PKT_TX_L4_MASK. So any packet sent to those drivers with a L4 checksum request and one of PKT_TX_IPVx bit set is rejected by the tx prepare function. Fixes: 1037ed842c37 ("mbuf: fix Tx offload mask") Cc: Signed-off-by: Didier Pallard <> Reviewed-by: Ferruh Yigit <>
2018-11-12eal: fix buildJerin Jacob
Some toolchain has fls() definition in string.h as argument type int, which is conflicting uint32_t argument type. /export/ error: conflicting types for ‘fls’ static inline int fls(uint32_t x) ^~~ /opt/marvell-tools-201/aarch64-marvell-elf/include/strings.h:59:6: note: previous declaration of ‘fls’ was here int fls(int) __pure2; FreeBSD string.h also has fls() with argument as int type. Fixing the conflict by using rte version of fls. Fixes: ffe3ec811ef5 ("sched: introduce reciprocal divide") Fixes: faf2b25c9f80 ("fm10k: support VMDQ in multi-queue configuration") Cc: Suggested-by: Thomas Monjalon <> Signed-off-by: Jerin Jacob <>
2018-10-29add missing static keyword to globalsFerruh Yigit
Some global variables can indeed be static, add static keyword to them. Signed-off-by: Ferruh Yigit <> Acked-by: Jerin Jacob <> Acked-by: Shreyansh Jain <>
2018-10-26ethdev: free all common data when releasing portThomas Monjalon
This is a clean-up of common ethdev data freeing. All data freeing are moved to rte_eth_dev_release_port() and done only in case of primary process. It is probably fixing some memory leaks for PMDs which were not freeing all data. Signed-off-by: Thomas Monjalon <> Acked-by: Andrew Rybchenko <>
2018-10-25eal: add macro for attribute weakKeith Wiles
eal: add shorthand __rte_weak macro qat: update code to use __rte_weak macro avf: update code to use __rte_weak macro fm10k: update code to use __rte_weak macro i40e: update code to use __rte_weak macro ixgbe: update code to use __rte_weak macro mlx5: update code to use __rte_weak macro virtio: update code to use __rte_weak macro acl: update code to use __rte_weak macro bpf: update code to use __rte_weak macro Signed-off-by: Keith Wiles <> Reviewed-by: Ferruh Yigit <>
2018-09-28net/fm10k: add imissed statsJulien Meunier
Add support of imissed and q_errors statistics, reported by PCIE_QPRDC register (see datasheet, section, which exposes the number of receive packets dropped for a queue. Signed-off-by: Julien Meunier <> Acked-by: Xiao Wang <>
2018-09-28net/fm10k: fix missing Tx multi-segs capabilityDidier Pallard
In former API, ETH_TXQ_FLAGS_NOMULTSEGS was merely a hint indicating that application will never send multisegmented packets, allowing pmd to choose different tx methods accordingly. In new API, DEV_TX_OFFLOAD_MULTI_SEGS became an offload capability that is advertised by pmds, some of them do not advertise it and expect to never receive fragmented packets (octeontx, axgbe) So an ethdev that supports multisegmented packets should properly advertise it. Problem was spotted and tested on e1000, should be also present in fm10k. Fixes: 30f3ce999e6a ("net/fm10k: convert to new Tx offloads API") Cc: Signed-off-by: Didier Pallard <> Acked-by: Konstantin Ananyev <>
2018-09-28net/*/base: allow use of experimental APIs in base codeBruce Richardson
The driver setting of "allow_experimental_apis" was not being used when building the base code. To allow this we can manually put in a check in the base code files for the setting and set the appropriate cflag if it's needed. Signed-off-by: Bruce Richardson <> Acked-by: Andrew Rybchenko <> Tested-by: Ilya Maximets <>
2018-09-14ethdev: make default behavior CRC strip on RxFerruh Yigit
Removed DEV_RX_OFFLOAD_CRC_STRIP offload flag. Without any specific Rx offload flag, default behavior by PMDs is to strip CRC. PMDs that support keeping CRC should advertise DEV_RX_OFFLOAD_KEEP_CRC Rx offload capability. Applications that require keeping CRC should check PMD capability first and if it is supported can enable this feature by setting DEV_RX_OFFLOAD_KEEP_CRC in Rx offload flag in rte_eth_dev_configure() Signed-off-by: Ferruh Yigit <> Acked-by: Tomasz Duszynski <> Acked-by: Shahaf Shuler <> Reviewed-by: Maxime Coquelin <> Acked-by: Jan Remes <> Acked-by: Jerin Jacob <> Acked-by: Hyong Youb Kim <>
2018-07-23net/fm10k: remove redundant queue id checksFerruh Yigit
remove queue id checks from dev_ops fm10k_dev_[rx/tx]_queue_[start/stop] queue id checks already done by ethdev APIs that are calling these dev_ops Signed-off-by: Ferruh Yigit <> Acked-by: Qi Zhang <>
2018-07-12remove useless constructor headersThomas Monjalon
A constructor is usually declared with RTE_INIT* macros. As it is a static function, no need to declare before its definition. The macro is used directly in the function definition. Signed-off-by: Thomas Monjalon <>
2018-07-04net/fm10k: remove unused constantThomas Monjalon
The macro FM10K_SIMPLE_TX_FLAG was used with old Tx queue flags. It is no longer used and was forgotten when cleaning old Tx flags. Fixes: 1778ef67e2e7 ("net/fm10k: remove dependence on Tx queue flags") Cc: Signed-off-by: Thomas Monjalon <> Acked-by: Ferruh Yigit <>
2018-07-03net/fm10k: support descriptor status APIWei Zhao
rte_eth_rx_descritpr_status and rte_eth_tx_descriptor_status are supported by fm10K. Signed-off-by: Wei Zhao <> Acked-by: Qi Zhang <>
2018-07-03ethdev: add new offload flag to keep CRCFerruh Yigit
DEV_RX_OFFLOAD_KEEP_CRC offload flag is added. PMDs that support keeping CRC should advertise this offload capability. DEV_RX_OFFLOAD_CRC_STRIP flag will remain one more release default behavior in PMDs are to keep the CRC until this flag removed Until DEV_RX_OFFLOAD_CRC_STRIP flag is removed: - Setting both KEEP_CRC & CRC_STRIP is INVALID - Setting only CRC_STRIP PMD should strip the CRC - Setting only KEEP_CRC PMD should keep the CRC - Not setting both PMD should keep the CRC A helper function rte_eth_dev_is_keep_crc() has been added to be able to change the no flag behavior with minimal changes in PMDs. The PMDs that doesn't report the DEV_RX_OFFLOAD_KEEP_CRC offload can remove rte_eth_dev_is_keep_crc() checks next release, related code commented to help the maintenance task. And DEV_RX_OFFLOAD_CRC_STRIP has been added to virtual drivers since they don't use CRC at all, when an application requires this offload virtual PMDs should not return error. Signed-off-by: Ferruh Yigit <> Acked-by: Allain Legacy <> Acked-by: Andrew Rybchenko <> Acked-by: Thomas Monjalon <>
2018-05-14ethdev: new Rx/Tx offloads APIWei Dai
This patch check if a input requested offloading is valid or not. Any reuqested offloading must be supported in the device capabilities. Any offloading is disabled by default if it is not set in the parameter dev_conf->[rt]xmode.offloads to rte_eth_dev_configure() and [rt]x_conf->offloads to rte_eth_[rt]x_queue_setup(). If any offloading is enabled in rte_eth_dev_configure() by application, it is enabled on all queues no matter whether it is per-queue or per-port type and no matter whether it is set or cleared in [rt]x_conf->offloads to rte_eth_[rt]x_queue_setup(). If a per-queue offloading hasn't be enabled in rte_eth_dev_configure(), it can be enabled or disabled for individual queue in ret_eth_[rt]x_queue_setup(). A new added offloading is the one which hasn't been enabled in rte_eth_dev_configure() and is reuqested to be enabled in rte_eth_[rt]x_queue_setup(), it must be per-queue type, otherwise trigger an error log. The underlying PMD must be aware that the requested offloadings to PMD specific queue_setup() function only carries those new added offloadings of per-queue type. This patch can make above such checking in a common way in rte_ethdev layer to avoid same checking in underlying PMD. This patch assumes that all PMDs in 18.05-rc2 have already converted to offload API defined in 17.11 . It also assumes that all PMDs can return correct offloading capabilities in rte_eth_dev_infos_get(). In the beginning of [rt]x_queue_setup() of underlying PMD, add offloads = [rt]xconf->offloads | dev->data->dev_conf.[rt]xmode.offloads; to keep same as offload API defined in 17.11 to avoid upper application broken due to offload API change. PMD can use the info that input [rt]xconf->offloads only carry the new added per-queue offloads to do some optimization or some code change on base of this patch. Signed-off-by: Wei Dai <> Signed-off-by: Ferruh Yigit <> Signed-off-by: Qi Zhang <>
2018-05-14net/fm10k: remove dependence on Tx queue flagsQi Zhang
Since we move to new offload APIs, txq_flags is no long needed. This patch remove the dependence on that. Fixes: 30f3ce999e6a ("net/fm10k: convert to new Tx offloads API") Signed-off-by: Qi Zhang <> Acked-by: Konstantin Ananyev <>
2018-04-27drivers/net: update link statusFerruh Yigit
Update link status related feature document items and minor updates in some link status related functions. Signed-off-by: Ferruh Yigit <> Acked-by: Adrien Mazarguil <>
2018-04-14drivers/net: fix icc deprecated parameter warningFerruh Yigit
With icc (ICC) 18.0.1 20171018, -wd usage generates following warning: icc: command line remark #10010: option '-wd3656' is deprecated and will be removed in a future release. See '-help deprecated' "icc -help deprecated" output is: -wd use -diag-disable Based on above information "-wd" converted to "-diag-disable" Cc: Signed-off-by: Ferruh Yigit <> Tested-by: Pablo de Lara <>
2018-04-14ethdev: replace bus specific struct with generic devFerruh Yigit
Public struct rte_eth_dev_info has a "struct rte_pci_device" field in it although it is common for all ethdev in all buses. Replacing pci specific struct with generic device struct and updating places that are using pci device in a way to get this information from generic device. Signed-off-by: Ferruh Yigit <> Reviewed-by: David Marchand <> Acked-by: Pablo de Lara <> Acked-by: Thomas Monjalon <>
2018-04-14net/fm10k: convert to new Tx offloads APIWei Dai
Ethdev Tx offloads API has changed since: commit cba7f53b717d ("ethdev: introduce Tx queue offloads API") This commit support the new Rx and Tx offloads API. Signed-off-by: Wei Dai <> Acked-by: Qi Zhang <>
2018-04-14net/fm10k: convert to new Rx offloads APIWei Dai
Ethdev Rx offloads API has changed since: commit ce17eddefc20 ("ethdev: introduce Rx queue offloads API") This commit support the new Rx offloads API. Signed-off-by: Wei Dai <> Acked-by: Qi Zhang <>
2018-01-31net/fm10k: align dynamic log names with standardHarry van Haaren
This commit aligns the names for dynamic logging with the newly defined logging format. Signed-off-by: Harry van Haaren <> Acked-by: Bruce Richardson <>
2018-01-30build: replace license text with SPDX tagBruce Richardson
Signed-off-by: Bruce Richardson <> Reviewed-by: Luca Boccassi <>
2018-01-30build: build as both static and shared libsBruce Richardson
This patch changes the build process to group all .o files for a driver or library into a static archive first, and then link the .o files together into a shared library. This eliminates the need for separate static or shared object builds when packaging, for instance. The "default_library" configuration option now only affects the apps and examples, which are either linked against the static or shared library versions depending on the value of the option. Signed-off-by: Bruce Richardson <> Acked-by: Luca Boccassi <>
2018-01-30build: remove library special casesBruce Richardson
The EAL and compat libraries were special-cases in the library build process, the former because of it's complexity, and the latter because it only consists of a single header file. By reworking the EAL files, we can eliminate the need for it to be a special case, by having it build up and return the list of sources, headers, and objects and return those to the higher level build file. This should also simplify the building of EAL, as we can eliminate a number of files that would no longer be needed, and have fewer, but larger files (9 now vs 14 previous) - thereby making the logic easier to follow and items easier to find. Once done, we can pull eal into the main library loop, with some modifications to support it. Compat can also be pulled it once we add in a check to handle the case of an empty sources list. Signed-off-by: Bruce Richardson <> Acked-by: Luca Boccassi <>
2018-01-30drivers/net: build Intel NIC PMDs with mesonBruce Richardson
Add the e1000, fm10k, i40e and ixgbe drivers to the meson & ninja build. Signed-off-by: Bruce Richardson <> Reviewed-by: Harry van Haaren <> Acked-by: Keith Wiles <> Acked-by: Luca Boccassi <>
2018-01-22ethdev: separate driver APIsFerruh Yigit
Create a rte_ethdev_driver.h file and move PMD specific APIs here. Drivers updated to include this new header file. There is no update in header content and since ethdev.h included by ethdev_driver.h, nothing changed from driver point of view, only logically grouping of APIs. From applications point of view they can't access to driver specific APIs anymore and they shouldn't. More PMD specific data structures still remain in ethdev.h because of inline functions in header use them. Those will be handled separately. Signed-off-by: Ferruh Yigit <> Acked-by: Shreyansh Jain <> Acked-by: Andrew Rybchenko <> Acked-by: Thomas Monjalon <>
2018-01-16ethdev: remove useless parameter in callback processThomas Monjalon
The pointer to the user parameter of the callback registration is automatically pass to the callback function. There is no point to allow changing this user parameter by a caller. That's why this parameter is always set to NULL by PMDs and set only in ethdev layer before calling the callback function. The history is that the user parameter was initially used by the callback implementation to pass some information between the application and the driver: c1ceaf3ad056 ("ethdev: add an argument to internal callback function") Then a new parameter has been added to leave the user parameter to its standard usage of context given at registration: d6af1a13d7a1 ("ethdev: add return values to callback process API") The NULL parameter in the internal callback processing function is now removed. It makes clear that the callback parameter is user managed and opaque from a DPDK point of view. Signed-off-by: Thomas Monjalon <> Reviewed-by: Ferruh Yigit <>
2018-01-16net/fm10k: implement dynamic loggingStephen Hemminger
Signed-off-by: Stephen Hemminger <>
2018-01-16net/fm10k: remove RSS restriction with num of queuesYangchao Zhou
FM10K HW does not have such restrictions. Enabling RSS with single queue is not used to distribute flow, but it can be used to compute a RSS hash value. It can reduce CPU cycles of computing a hash value with five tuples. In addition, there is an explicit method to disable RSS instead of an obscure way. Signed-off-by: Yangchao Zhou <> Acked-by: Qi Zhang <>
2018-01-16net/fm10k: fix logical port deleteXiao Wang
When closing port, we need to send mailbox messages to switch manager to reset multicast mode and delete logical port. In the latest IES_SDK, e.g. v4.3.3, switch takes longer time to handle these mailbox messages. So this patch adds longer delay to accommodate this change. Otherwise, the mailbox will be closed before all the messages are handled, as a result, the logical port remains in switch manager after port is closed. Fixes: b961fe9344dd ("net/fm10k: fix MAC address removal from switch") Cc: Signed-off-by: Xiao Wang <> Acked-by: Helin Zhang <>
2018-01-11fix typosThierry Herbelot
Repeated occurrences of 'the'. The change was obtained using the following command: sed -i "s;the the ;the ;" `git grep -l "the "` Signed-off-by: Thierry Herbelot <>
2018-01-04drivers: use SPDX tag for Intel copyright filesBruce Richardson
Replace the BSD license header with the SPDX tag for files with only an Intel copyright on them. Signed-off-by: Bruce Richardson <>
2017-11-06mbuf: rename physical address to IOVASantosh Shukla
Rename buf_physaddr to buf_iova. Keep the deprecated name in an anonymous union to avoid breaking the API. Signed-off-by: Santosh Shukla <> Reviewed-by: Anatoly Burakov <> Signed-off-by: Thomas Monjalon <> Acked-by: Olivier Matz <>
2017-11-06memzone: rename address from physical to IOVAThomas Monjalon
The struct rte_memzone field .phys_addr is renamed to .iova. The deprecated name is kept in an anonymous union to avoid breaking the API. Signed-off-by: Thomas Monjalon <> Acked-by: Santosh Shukla <>
2017-10-26pci: introduce library and driverGaetan Rivet
The PCI lib defines the types and methods allowing to use PCI elements. The PCI bus implements a bus driver for PCI devices by constructing rte_bus elements using the PCI lib. Move the relevant code out of the EAL to its expected place. Libraries, drivers, unit tests and applications are updated to use the new rte_bus_pci.h header when necessary. Signed-off-by: Gaetan Rivet <>
2017-10-26ethdev: allow returning error on VLAN offload opsDavid Harton
Some devices may not support or fail setting VLAN offload configuration based on dynamic circumstances so the vlan_offload_set_t vector is modified to return an int so the caller can determine success or not. rte_eth_dev_set_vlan_offload is updated to return the value provided by the vector when called along with restoring the original offload configs on failure. Existing vlan_offload_set_t vectors are modified to return an int. Majority of cases return 0 but a few that actually can fail now return their failure codes. Finally, a vlan_offload_set_t vector is added to virtio to facilitate dynamically turning VLAN strip on or off. Signed-off-by: David Harton <> Signed-off-by: Ferruh Yigit <>
2017-10-26mbuf: rename deprecated VLAN flagsOlivier Matz
PKT_RX_VLAN_PKT and PKT_RX_QINQ_PKT are deprecated for a while. As explained in [1], these flags were kept to let the applications and PMDs move to the new flag. There is also a need to support Rx vlan offload without vlan strip (at least for the ixgbe driver). This patch renames the old flags for this feature, knowing that some PMDs were using PKT_RX_VLAN_PKT and PKT_RX_QINQ_PKT to indicate that the vlan tci has been saved in the mbuf structure. It is likely that some PMDs do not set the proper flags when doing vlan offload, and it would be worth making a pass on all of them. Link: [1] Signed-off-by: Olivier Matz <> Reviewed-by: Ferruh Yigit <>
2017-10-26ethdev: remove detachable device flagGaetan Rivet
This flag is not necessary at the ether layer anymore. Buses are able to advertise their hotplug support. The ether layer can rely upon this capability instead of a special flag. Signed-off-by: Gaetan Rivet <> Acked-by: Andrew Rybchenko <> Acked-by: John McNamara <> Acked-by: Thomas Monjalon <>
2017-10-26net/fm10k: support switch restart on VFXiao Wang
For VF events indicating a change in the state of the switch manager, the driver will restore the basic port configurations and then pass this event to application so that the application can restore any additional configurations if required. In this way, once the switch manager restarts, the DPDK application can resume its network. Signed-off-by: Xiao Wang <> Reviewed-by: Ferruh Yigit <>
2017-10-26net/fm10k: support switch restart on PFXiao Wang
For PF events indicating a change in the state of the switch manager, the driver will restore the basic port configurations and then pass this event to application so that the application can restore any additional configurations if required. In this way, once the switch manager restarts, the DPDK application can resume its network. Signed-off-by: Xiao Wang <> Reviewed-by: Ferruh Yigit <>
2017-10-26net/fm10k: redefine link status semanticsXiao Wang
As fm10k host interface is not directly connected to PHY, marking the link status as UP doesn't mean a lot to the application. So, this patch basically redefines the link status as the state of switch manager: when switch manager is running, it's LINK_UP; when switch manager goes down by calling the fmTerminate function, status turns to LINK_DOWN. Signed-off-by: Xiao Wang <> Reviewed-by: Ferruh Yigit <>
2017-10-24mk: do not generate LDLIBS from directory dependenciesOlivier Matz
The list of libraries in LDLIBS was generated from the DEPDIRS-xyz variable. This is valid when the subdirectory name match the library name, but it's not always the case, especially for PMDs. The patches removes this feature and explicitly adds the proper libraries in LDLIBS. Some DEPDIRS-xyz variables become useless, remove them. Reported-by: Gage Eads <> Signed-off-by: Olivier Matz <> Reviewed-by: Gage Eads <>
2017-10-13net/fm10k: fix port id typeZhiyong Yang
The variable "port" should be defined as uint16_t, fix it here. Fixes: f8244c6399d9 ("ethdev: increase port id range") Signed-off-by: Zhiyong Yang <>
2017-10-12mk: sort source files before compilationLuca Boccassi
In order to achieve reproducible builds, always use the same order when listing files for compilation. Signed-off-by: Luca Boccassi <>
2017-10-12drivers/net: enable IOVA mode for Intel PMDsJianfeng Tan
If we want to enable IOVA mode, introduced by commit 93878cf0255e ("eal: introduce helper API for IOVA mode"), we need PMDs (for PCI devices) to expose this flag. Signed-off-by: Jianfeng Tan <> Acked-by: Anatoly Burakov <> Reviewed-by: Santosh Shukla <>
2017-10-12ethdev: add return value to stats get dev opMatan Azrad
The stats_get dev op API doesn't include return value, so PMD cannot return an error in case of failure at stats getting process time. Since PCI devices can be removed and there is a time between the physical removal to the RMV interrupt, the user may get invalid stats without any indication. This patch changes the stats_get API return value to be int instead of void. All the net PMDs stats_get dev ops are adjusted by this patch. Signed-off-by: Matan Azrad <> Reviewed-by: Ferruh Yigit <>
2017-10-09mem: remove API to get physical address in dom0Jianfeng Tan
Previously, to get MFN address in dom0, this API is a wrapper to obtain the "physical address". As we will removed xen dom0 support, this API is not necessary. Signed-off-by: Jianfeng Tan <> Acked-by: Bruce Richardson <>