224 Commits

Author SHA1 Message Date
Rahul Lakkireddy
386c993e95 ethdev: add a missing sanity check for Tx queue setup
Add a sanity check for number of tx descriptors requested during tx
queue setup.  Return -EINVAL if the number requested does not meet
the tx descriptor requirements of the device.

Fixes: 80a1deb4c77a ("ethdev: add API to retrieve queue information")

Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-11-23 23:51:14 +01:00
Panu Matilainen
87ea252421 ethdev: fix missing symbol export
It prevents some drivers to load:
	undefined symbol: rte_eth_dma_zone_reserve

Fixes: 719dbebceb81 ("xen: allow determining DOM0 at runtime")

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
2015-11-23 22:26:16 +01:00
Daniel Mrzyglod
eb1cbcba48 ethdev: add ieee1588 functions for device clock time
Add additional functions to support the existing IEEE1588
functionality.

  * rte_eth_timesync_write_time():  set the device clock time.
  * rte_eth_timesync_read_time():   get the device clock time.
  * rte_eth_timesync_adjust_time(): adjust the device clock time.

Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
2015-11-13 17:43:05 +01:00
Stephen Hemminger
719dbebceb xen: allow determining DOM0 at runtime
Add memory infrastructure for runtime Xen DOM0 support.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Jijiang Liu <jijiang.liu@intel.com>
2015-11-13 11:34:53 +01:00
Stephen Hemminger
5a1940f080 ethdev: mark deprecated statistics with attribute
Use deprecated attribute to highlight any use of fields that
are marked as going away in the rte_ether device statistics.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
2015-11-12 23:05:36 +01:00
Harry van Haaren
ee4340a69d ethdev: format generic xstats per queue always
This patch refactors the generic queue stats to be exposed
by rte_ethdev_xstats_get().

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Maryam Tahhan <maryam.tahhan@intel.com>
2015-11-12 17:35:26 +01:00
Bernard Iremonger
7a69f72451 ethdev: fix error handling in PCI fields copy
add return statement to if branch

Dereferencing NULL pointer reported by Coverity, CID 119256.
Dereferencing NULL pointer reported by Coverity, CID 119257.

Fixes: 494adb7f63f2 ("ethdev: add device fields from PCI layer")

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
2015-11-10 17:06:53 +01:00
Tim Shearer
d5790b03b3 ethdev: fix link status race condition
Calling the Ethernet driver's link_update function from
rte_eth_dev_start can result in a race condition if the NIC raises
the link interrupt at the same time.
Depending on the interrupt handler implementation, the race can cause
the it to think that it received two consecutive link up interrupts,
and it exits without calling the user callback. Appears to impact
E1000/IGB and virtio drivers only.

Signed-off-by: Tim Shearer <tim.shearer@overturenetworks.com>
2015-11-04 23:06:52 +01:00
Simon Kagstrom
b375513c11 ethdev: clarify rate limit parameter
The tx_rate unit is Mbps.

Gleaned from the ixgbe implementation, the 82599 datasheet and the use
in test-pmd.

Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
2015-11-04 23:01:12 +01:00
Andrey Chilikin
13834ea7c0 i40e: add flow director passthru
Add support for RTE_ETH_FDIR_PASSTHRU flow director behavior so
output queue is assigned by other filters.

Signed-off-by: Andrey Chilikin <andrey.chilikin@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
2015-11-04 22:51:57 +01:00
Pablo de Lara
6b6861c171 ethdev: check queue state before starting or stopping
Following the same approach taken with dev_started field
in rte_eth_dev_data structure, this patch adds two new fields
in it, rx_queue_state and tx_queue_state arrays, which track
which queues have been started and which not.

This is important to avoid trying to start/stop twice a queue,
which will result in undefined behaviour
(which may cause RX/TX disruption).

Mind that only the PMDs which have queue_start/stop functions
have been changed to update this field, as the functions will
check the queue state before switching it.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-11-04 17:52:14 +01:00
Jingjing Wu
99d7e55750 ethdev: extend flow director to support VF
This patch extends struct rte_eth_fdir_flow_ext to support flow
director in VFs.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
2015-11-04 13:39:25 +01:00
Thomas Monjalon
e6e6440d33 doc: fix doxygen syntax of some comments
Some comments have a wrong space between /** and <.
Seen with
	git grep '\*\* <'

Reported-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-11-04 11:56:37 +01:00
Helin Zhang
da0ab5da69 i40e: select GRE key length for filtering
By default, only first 3 bytes of GRE key will be used for hash or
FD calculation. With these changes, it can select 3 or 4 bytes of
GRE key for hash or FD calculation.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Signed-off-by: Andrey Chilikin <andrey.chilikin@intel.com>
2015-11-04 00:37:27 +01:00
Helin Zhang
98f0557076 i40e: configure input fields for RSS or flow director
The default input set of fields of a received packet are loaded from
firmware, which cannot be modified even users want to use different
fields for RSS or flow director. Here adds more flexibilities of
selecting packet fields for hash calculation or flow director for
users.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Signed-off-by: Andrey Chilikin <andrey.chilikin@intel.com>
2015-11-04 00:20:02 +01:00
Bernard Iremonger
b1fb53a39d ethdev: remove some PCI specific handling
use dev_type to distinguish between vdev's and pdev's.
remove pci_dev branches.

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2015-11-03 18:41:03 +01:00
Bernard Iremonger
494adb7f63 ethdev: add device fields from PCI layer
The driver fields have been added the rte_eth_dev_data so that it is no
longer necessary access this data through the pci_dev pointer.

The following fields have been added to rte_eth_dev_data:

dev_flags, and macros for dev_flags.
kdrv
numa_node
drv_name

Add function rte_eth_copy_pci_info

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
[Thomas: remove useless flags]
2015-11-03 18:39:23 +01:00
Ravi Kerur
9c5b8d8b9f ethdev: clean port id retrieval when attaching
Removed following functions
   > rte_eth_dev_save and
   > rte_eth_dev_get_changed_port

Added 2 new functions
   > rte_eth_dev_get_port_by_name
   > rte_eth_dev_get_port_by_addr

Compiled on Linux for following targets
   > x86_64-native-linuxapp-gcc
   > x86_64-native-linuxapp-clang
   > x86_x32-native-linuxapp-gcc

Compiled on FreeBSD for following targets
   > x86_64-native-bsdapp-clang
   > x86_64-native-bsdapp-gcc

Tested on Linux/FreeBSD:
   > port attach eth_null
   > port start all
   > port stop all
   > port close all
   > port detach 0
   > port attach eth_null
   > port start all
   > port stop all
   > port close all
   > port detach 0

Successful run of checkpatch.pl on the diffs

Successful validate_abi on Linux for following targets

   > x86_64-native-linuxapp-gcc
   > x86_64-native-linuxapp-clang

Signed-off-by: Ravi Kerur <rkerur@gmail.com>
Acked-by: Tetsuya Mukawa <mukawa@igel.co.jp>
2015-11-03 14:18:34 +01:00
Maryam Tahhan
4eadb8ba11 ethdev: do not deprecate imissed counter
Remove the deprecation tag and notice for imissed as it is a generic
register that accounts for packets that were dropped by the HW,
because there are no available mbufs (RX queues are full). imissed is
different to ierrors and can help with general debug.

Fixes: 49f386542af4 ("ethdev: remove driver specific stats")

Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
2015-11-03 00:39:45 +01:00
Harry van Haaren
b291f3f96d ethdev: update extending stats strings
Update the strings used for presenting stats to adhere
to the scheme previously presented. Updated xstats_get()
function to handle Q information only if xstats() is not
implemented in the PMD, providing the PMD with the needed
flexibility to expose its extended Q stats.

Add extended statistic section to the programmers
guide, poll mode driver section. This section describes
how the strings stats are formatted, and how the client
code can use this to gather information about the stat.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Maryam Tahhan <maryam.tahhan@intel.com>
2015-11-03 00:07:15 +01:00
Konstantin Ananyev
80a1deb4c7 ethdev: add API to retrieve queue information
Add the ability for the upper layer to query RX/TX queue information.
Add into rte_eth_dev_info new fields to represent information about
RX/TX descriptors min/max/alig nnumbers per queue for the device.

Add new structures:
struct rte_eth_rxq_info
struct rte_eth_txq_info

new functions:
rte_eth_rx_queue_info_get
rte_eth_tx_queue_info_get

into rte_etdev API.

Left extra free space in the queue info structures,
so extra fields could be added later without ABI breakage.

Add new fields:
rx_desc_lim
tx_desc_lim
into rte_eth_dev_info.

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Remy Horton <remy.horton@intel.com>
2015-11-02 00:13:59 +01:00
Jingjing Wu
89d6728c78 ethdev: get DCB information
This patch adds one new API to get dcb related info.
  rte_eth_dev_get_dcb_info

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Jijiang Liu <jijiang.liu@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
2015-11-01 14:52:06 +01:00
Jingjing Wu
27b609cbd1 ethdev: move the multi-queue mode check to specific drivers
Different NIC has its specific constraint on the multi-queue
configuration, so move the checking from ethdev lib to drivers.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Jijiang Liu <jijiang.liu@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
2015-11-01 14:44:31 +01:00
Jingjing Wu
cb60ede6e3 ethdev: rename DCB field in config structs
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Jijiang Liu <jijiang.liu@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
2015-11-01 14:44:31 +01:00
Wenzhuo Lu
62dbd2ffea ethdev: add more flow director modes
Define the new modes and modify the filter and mask structures for
the mac vlan and tunnel modes.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-10-29 00:02:14 +01:00
Jingjing Wu
a421b86a4a ethdev: remove old flow director API
Old flow director API have been replaced by rte_eth_dev_filter_ctrl
since release 2.0. And no driver in current code support these functions.
All the removed functions are listed below:
  - rte_eth_dev_fdir_add_perfect_filter;
  - rte_eth_dev_fdir_add_signature_filter;
  - rte_eth_dev_fdir_get_infos;
  - rte_eth_dev_fdir_remove_perfect_filter;
  - rte_eth_dev_fdir_remove_signature_filter;
  - rte_eth_dev_fdir_set_masks;
  - rte_eth_dev_fdir_update_perfect_filter;
  - rte_eth_dev_fdir_update_signature_filter;

The library version was already incremented in a previous patch.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
[Thomas: fix mlx4 and update release notes]
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-09-30 01:19:19 +02:00
Thomas Monjalon
51c764c1d7 ethdev: remove SCTP flow entries switch
The extended SCTP flow entries are now part of the standard API.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-09-03 19:22:48 +02:00
Thomas Monjalon
d8c4ae2755 ethdev: remove Rx interrupt switch
The Rx interrupt feature is now part of the standard ABI.
Because of changes in rte_intr_handle and struct rte_eth_conf,
the eal and ethdev library versions are incremented.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-09-03 19:22:48 +02:00
Tetsuya Mukawa
5c11cefe0e ethdev: fix illegal port access
To obtain detachable flag, pci_drv is accessed in rte_eth_dev_is_detachable().
But pci_drv is only valid if port is enabled. Not to cause illegal access,
add rte_eth_dev_is_valid_port() before accessing.

Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
2015-08-09 19:48:12 +02:00
John McNamara
5668a2b58e ethdev: fix ABI breakage
Fix for ABI breakage introduced in LRO addition. Moves
lro bitfield to the end of the struct/member.

Fixes: 8eecb3295aed (ixgbe: add LRO support)

Signed-off-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Vlad Zolotarov <vladz@cloudius-systems.com>
2015-08-03 12:43:01 +02:00
Cunming Liang
a201b45fb8 ethdev: add Rx interrupt control functions
The patch adds two dev_ops functions to enable and disable rx queue
interrupts.
In addition, it adds rte_eth_dev_rx_intr_ctl/rx_intr_q to support
per port or per queue rx intr event set.

Signed-off-by: Danny Zhou <danny.zhou@intel.com>
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
2015-07-27 23:13:57 +02:00
Konstantin Ananyev
48cc0baf8a ethdev: fix C linkage type of latest functions
Move #ifdef __cplusplus to the end of the file.

Fixes: 64b7acd861b1 ("ethdev: add multicast address filtering")

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-07-26 14:57:41 +02:00
Stephen Hemminger
ac2f69c9fc ethdev: fix crash if malloc of user callback fails
Found by coccinelle script.
If rte_zmalloc() failed in rte_eth_dev_callback_register
then NULL pointer would be dereferenced.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
[Thomas: restore pointer comparison style]
2015-07-22 15:57:57 +02:00
Stephen Hemminger
393775d5c0 ethdev: export function to check port validity
The function rte_eth_dev_is_valid_port is good way to have all
drivers using same function and solves several hotplug related
bugs from drivers not checking attached flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2015-07-20 02:47:38 +02:00
Jingjing Wu
b90f64b51b ethdev: add ports to SCTP flow director
Add sport and dport into the input set of sctp flow.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
2015-07-20 01:13:08 +02:00
Bernard Iremonger
5cd40a8416 ethdev: free queue array when closing
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
Acked-by: Michael Qiu <michael.qiu@intel.com>
2015-07-19 21:16:09 +02:00
Thomas Monjalon
d281632b36 ethdev: fix doxygen internal comments
The internal functions must be marked with the doxygen command @internal.

The allocate and release_port functions are not restricted only to dummy
drivers.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-19 12:50:07 +02:00
Thomas Monjalon
ff3ae4d446 ethdev: refactor port release
Use DEV_DETACHED constant and deduplicate code in init.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-19 12:50:02 +02:00
Thomas Monjalon
d800f55ff0 pci: fix detach and uninit naming
There are close and detach functions in ethdev.
To keep a consistent naming, PCI functions called by ethdev detach
must be named "detach" instead of "close".
Fix also comments which mix close and uninit names.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-18 22:04:30 +02:00
Maryam Tahhan
49f386542a ethdev: remove driver specific stats
Remove non generic stats in rte_stats_strings and mark the relevant
fields in struct rte_eth_stats as deprecated.

Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
2015-07-17 02:26:32 +02:00
Maryam Tahhan
d4fef8b0d5 ethdev: expose generic and driver specific stats in xstats
Extend rte_eth_xstats_get to retrieve additional stats from the device
driver as well the ethdev generic stats.

Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
2015-07-17 02:26:14 +02:00
Liang-Min Larry Wang
7a3f27cbf5 ethdev: add access to specific device info
add new apis:
- rte_eth_dev_get_reg_length
- rte_eth_dev_get_reg_info
- rte_eth_dev_get_eeprom_length
- rte_eth_dev_get_eeprom
- rte_eth_dev_set_eeprom

to enable reading device parameters (register and
eeprom) based upon ethtool alike data parameter specification.

Signed-off-by: Liang-Min Larry Wang <liang-min.wang@intel.com>
Acked-by: Andrew Harvey <agh@cisco.com>
Acked-by: David Harton <dharton@cisco.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-07-16 23:56:13 +02:00
Liang-Min Larry Wang
854d8ad4ef ethdev: add default mac address modifier
Add new api:
- rte_eth_dev_default_mac_addr_set

The new api, rte_eth_dev_default_mac_addr_set, uses the
existing dev_op, mac_addr_set, to enable setting mac
addr from ethdev level.

Signed-off-by: Liang-Min Larry Wang <liang-min.wang@intel.com>
Acked-by: Andrew Harvey <agh@cisco.com>
Acked-by: David Harton <dharton@cisco.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-07-16 23:56:13 +02:00
Liang-Min Larry Wang
1ca4d3429c ethdev: fix error returned for invalid port id
Fix return value, using the macro input instead of -EINVAL.

Fixes: 75acd57ad025 ("ethdev: introduce valid port helper")

Signed-off-by: Liang-Min Larry Wang <liang-min.wang@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-16 23:56:12 +02:00
John McNamara
073208ebab ethdev: call Rx and Tx callbacks in the order they were added
Change the order that user supplied RX and TX callbacks are called
to the order that they were added (fifo).

The previous calling order was the reverse of this (lifo) and was
counter intuitive for users.

Suggested-by: Robert Sanford <rsanford@akamai.com>
Signed-off-by: John McNamara <john.mcnamara@intel.com>
2015-07-12 23:36:18 +02:00
Tetsuya Mukawa
980995f8cc ethdev: improve API comments of close and detach functions
The patch fixes doxygen comments of below functions.
 - rte_eth_dev_close()
   Add description about when the function can be called and also about
   what kind of resources will be freed.
 - rte_eth_dev_detach()
   Add description about when the function can be called.

Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-11 00:32:34 +02:00
John McNamara
aee686ea17 ethdev: add ieee1588 timestamping
Add ethdev API to enable and read IEEE1588/802.1AS PTP timestamps
from devices that support it. The following functions are added:

    rte_eth_timesync_enable()
    rte_eth_timesync_disable()
    rte_eth_timesync_read_rx_timestamp()
    rte_eth_timesync_read_tx_timestamp()

Signed-off-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
[Thomas: merged with new macro VALID_PORTID_OR_ERR_RET]
2015-07-10 02:26:01 +02:00
Helin Zhang
8208e85a22 ethdev: add the hash key size per device
To support querying hash key size per port, an new field of
'hash_key_size' was added in 'struct rte_eth_dev_info' for storing
hash key size in bytes.

The correct hash key size in bytes should be filled into the
'struct rte_eth_dev_info', to support querying it.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-07-09 01:14:51 +02:00
Tetsuya Mukawa
390cb6b89c eal: enable port hotplug as default for linux and bsd
This patch removes CONFIG_RTE_LIBRTE_EAL_HOTPLUG option, and enables it
as default in both Linux and BSD.
Also, to support port hotplug, rte_eal_pci_scan() and below missing
symbols should be exported to ethdev library.
 - rte_eal_parse_devargs_str()
 - rte_eal_pci_close_one()
 - rte_eal_pci_probe_one()
 - rte_eal_pci_scan()
 - rte_eal_vdev_init()
 - rte_eal_vdev_uninit()

Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
2015-07-09 00:18:25 +02:00
Tetsuya Mukawa
35b3313e32 pci: merge mapping functions for linux and bsd
The patch consolidates below functions, and implemented in common
eal code.
 - pci_map_device()
 - pci_unmap_device()

Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
Acked-by: David Marchand <david.marchand@6wind.com>
2015-07-08 23:50:22 +02:00