aboutsummaryrefslogtreecommitdiffstats
path: root/vnet/vnet/devices/dpdk/init.c
AgeCommit message (Collapse)AuthorFilesLines
2016-12-28Reorganize source tree to use single autotools instanceDamjan Marion1-1803/+0
Change-Id: I7b51f88292e057c6443b12224486f2d0c9f8ae23 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-12-26dpdk: Add support for Mellanox ConnectX-4 devicesDamjan Marion1-26/+60
Due to external library dependency support for Mellanox devices is disabled. To enable it uncoment following line: vpp_uses_dpdk_mlx5_pmd = yes in build-data/platforms/vpp.mk and install OFED libraries. Change-Id: I131d52b5d449a958349f31f9cc04311948f78b71 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-12-20Improve dpdk-input node to handle drivers not setting mbuf PTYPEJohn Lo1-0/+3
For drivers that do not provide dpdk rte_mbuf PTYPE information, check ethernet header Etype to acccelerate IP4 and IP6 forwarding path. Update packet trace for dpdk-input node to provide more info from DPDK rte_mbuf offload flags and packet types. Change-Id: I207158797a155305314d002726c0af97b8cb0eb3 Signed-off-by: John Lo <loj@cisco.com>
2016-11-23dpdk: input node next and error optimizationsDamjan Marion1-5/+0
Change-Id: Iee90ed725e824a3beed2660d21d74dae48c76eb0 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-11-22dpdk: quad loop dpdk tx and code optimizationsDamjan Marion1-1/+1
Beside performance optimization this change also introduces rte_mbuf validation in dpdk tx code. If packet is arrving from non-DPDK source like self-originated packets or non-dpdk devices (tuntap, af_packet, netmap, pg) it is not anymore exepcted that it contains valid rte_mbuf metadata unless it is explictely stated by setting VNET_BUFFER_RTE_MBUF_VALID flag. dpdk-input node sets VNET_BUFFER_RTE_MBUF_VALID on all packets and that reduces cost of validation in tx node. Change-Id: I4ad40f398f7b5cf90656a2069a27c0f6fc13efba Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-11-18dpdk: quad loop dpdk-input nodeDamjan Marion1-0/+1
Change-Id: I761af883403b6740bd24ce196ae0bfe6bc77b409 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-11-18Fix bug in configure 'vlan-strip-offload on' first, then configure "set ↵jerryian1-0/+1
interface mtu" command, vlan-strip-offload option will be changed to off. Change-Id: I1f39628fc8cde4e46ed5b2e3208253a07327de81 Signed-off-by: jerryian <gu.jian1@zte.com.cn>
2016-11-18dpdk: maintain per-worker trace bufferDamjan Marion1-0/+3
Change-Id: I8234054cef4cadada6745a8c00c8df2c20daac33 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-11-17dpdk: remove efdDamjan Marion1-8/+1
Change-Id: I761af883403b6740bd24ce196ae0bfe6bc77b408 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-11-09Fix a batch of coverity warnings, VPP-486Dave Barach1-1/+1
Change-Id: I0379844824b4c2eb42588d0fb8e1a7eb441e923f Signed-off-by: Dave Barach <dave@barachs.net>
2016-11-02Allow empty DPDK device init configPierre Pfister1-0/+1
This patch allows for empty dpdk device configuration such as: dpdk { dev 0000:0a:00.0 { } } Instead of exiting. Change-Id: If9488eecc7fb1e0b5c6626f9c074649b39b727d3 Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-11-01vppinfra: add STATIC_ASSERT macroDamjan Marion1-4/+9
Change-Id: Icc4e74ae1627c5b97746ed64955a3dc089e3998f Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-10-26dpdk: enable building with dpdk 16.11-rc1Damjan Marion1-0/+8
Works with: http://dpdk.org/browse/dpdk/snapshot/dpdk-16.11-rc1.tar.xz placed into dpdk/ or ~/Downloads Change-Id: I17f6a721529dbefc796f555e2525d157b9bf8740 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-10-26dpdk: remove support for dpdk 16.04Damjan Marion1-40/+0
This also removes old DPDK vhost-user code which doesn't help much with DPDK 16.07 or newer. Change-Id: Ic996df1eaccc33acd3fa6cabeaf7381a672c2a90 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-10-26dpdk: remove support for dpdk 2.2Damjan Marion1-49/+0
Change-Id: I2d1a7063f3776a9070e75a627beb5d0e45a67874 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-10-26dpdk: remove KNI supportDamjan Marion1-74/+0
This code is outdated and without real use case Change-Id: I30628cc4ca293e5249aea3891173507cbfad8b61 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-10-13vpp_lite: add cpu pinning support (VPP-467)Pavel Kotucek1-2/+2
Proper cpu pinning in vpp_lite platform, like in normal vpp image. Extended “show threads” command to show propper information. Changed handling of coreID and socketID for threads in "show threads" CLI, pthread_getaffinity is used instead of info stored in DPDK. Change-Id: Ic8299ec5e284472bb10a37a95fadeed57b6edae8 Signed-off-by: Pavel Kotucek <pkotucek@cisco.com>
2016-10-05dpdk: fix issue in parsing startup.conf dpdk sectionDamjan Marion1-1/+1
Change-Id: Ibbcce6f54bc76b8922b1c649278643c6294d13f9 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-09-28DPDK HQoS: Enable Hierarchical Scheduler in VPPJasvinder Singh1-3/+85
This commit extends the vpp framework with new thread type "hqos-threads" that runs the Hierarchical Quality of Service (HQoS) scheduler associted with output interface. HQoS Scheduler prioritize the packets from different users and ensures sufficient bandwidth to pass the more important traffic. At high level, HQoS scheduler is a buffer that can temporarily store a large number of packets. In otherwords, it is a collection of large number of queues organized into hierarchy of 5 levels; the port (i.e. the physical interface) is at the root of the hierarchy followed by the subport (a set of users), the pipes (individual users), the traffic classes (each with a strict priority) and at the leaves, the queues. In each HQoS scheduler, three operations are performed; classification (setting HQoS port, subport, pipe, traffic class and queue within traffic class from packet fields), enqueue (selecting HQoS queue for the packet, and to drop the packet if the queue is full) and dequeue (schedule the packet based on its length and available credits, and handover the scheduled packet to the output interface). In vpp, the number of hqos threads will be equal to cpu cores specified in corelist-hqos-threads parameter cpu section of the vpp configuration file. One hqos thread can run HQoS for multiple output interfaces. A particular HQoS instance is initialised with default parameters required to configure hqos port, subport, pipe and queues. Some of them can be re-configured in run-time through CLI commands as well binary APIs. Following illustrates the sample startup configuration file with 4x worker threads feeding 2x hqos threads that handle each HQoS for 1x output interface. For more details on HQoS configuration please refer to DPDK Programmer's Guide. dpdk { socket-mem 16384,16384 dev 0000:02:00.0 { num-rx-queues 2 hqos } dev 0000:06:00.0 { num-rx-queues 2 hqos } num-mbufs 1000000 } cpu { main-core 0 corelist-workers 1, 2, 3, 4 corelist-hqos-threads 5, 6 } Change-Id: I635c3395a7c4ddf0a239ef77b0b0a31a6dfc4767 Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
2016-09-27Fix hugepage detection issueDamjan Marion1-40/+5
Per-numa free hugepages number was not read correctly due to wrong sysfs path. Change-Id: I889111027d7f93c42e2e4673d8d4e8f75ae065b6 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-09-21dpdk: fix wrong tx ring size calculationsDamjan Marion1-2/+2
At many places code was using constant ring size od 4096 which was defined in macro DPDK_TX_RING_SIZE. As we support differnet ring size and default value s now 1024, we need to remove DPDK_TX_RING_SIZE and use value stored in device structure. For that reason dpdk_device_t.nb_tx_desc is moved to first cacheline. Change-Id: I2c2ac11f0f5e8ae779d34f9a9104eaf2921ec34c Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-09-20dpdk: use flags for identifying interface typesDamjan Marion1-4/+4
This will allow us to handle some more complex situations like in case when hqos needs to be enabled only for some PMDs. Change-Id: I5421a8d4cf29b8394b9e956cc4e39737dd07dbbb Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-09-13Add some help into startup.confDamjan Marion1-0/+2
Change-Id: I84e9d7c3ccd32814c3eebf1cef0a4887c75812a8 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-09-07Fix MTU size for the bonded interfaceSteve Shin1-0/+12
Configure the MTU/L3 packet size of the bonded interface as the lowest value of the slave intefaces Change-Id: I34fb4c2156e8ad3d9bf45efe332405d53f72867c Signed-off-by: Steve Shin <jonshin@cisco.com>
2016-08-23Fix PCI vendor_id/device_id detection for SR-IOV devicesDamjan Marion1-9/+7
Change-Id: I06ae392c7c8c3b4be7fd46560add442f42927c22 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-08-23dpdk: Remove obsolete VMXNET3 driver start/stop workaroundDamjan Marion1-10/+14
Change-Id: I4f46f2965891b0bd0d69a2c426068b0fb1ba881e Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-08-16Coding standards cleanup in vnet/vnet/devices/dpdk, partially fixes VPP-248Damjan Marion1-775/+846
Change-Id: Ie3ee4ccc126c5db9020779cbd06b0d1da99c8411 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-08-16Fix coverity issues in DPDK code, fixes VPP-189Damjan Marion1-5/+17
Change-Id: Ie2ebb29451200158504bda8c616d57821edbd749 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-08-10VPP-189 Fix coverity warningsDave Barach1-4/+20
Change-Id: Iea6d338e60a95f7f30c10c2e751d4827e816f700 Signed-off-by: Dave Barach <dave@barachs.net>
2016-07-30Remove per-worker destination frame queueDamjan Marion1-6/+0
This frame queue is not part of the dpdk code anymore, so it can be removed. It will save some space in the 1st cacelineof dpdk device data struct. Change-Id: If839861961548750601400a511a609be7ae84b30 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-07-22Add DPDK 16.07 support (rc3 based)Damjan Marion1-0/+8
DPDK vhost-user support is disabled due to significan changes in the DPDK vhost-user code which are not compatible with current VPP code. Change-Id: I3f0d28cb75f6370282ec7e33d57cbfb77e1a3ce1 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-07-21Add support for Chelsio T540-CR and T580-CRDamjan Marion1-0/+6
Change-Id: Ibe927027c2aea6f2d85a9c50bf462c552b63861c Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-07-21Improve interface naming for NICs ports sharing same PCI IDDamjan Marion1-0/+27
Change-Id: I68d708f5dd76dc7a46c3c8634aa8f18c515177e5 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-07-19On bonded interface admin-down, should stop all slave linksJohn Lo1-12/+6
When bonded interface is set to admin down, all slave links should also be stopped or they will continue to receive packets and then be dropped because bonded interface is down. Also remove setting bonded interface L3 packet size limit to that of slave on startup - it is not needed and can cause undesirable side effect if its value become incompatible with bonded interface MTU. Change-Id: Ibdd8acac0ca41a867131441eb26518592bb7d98a Signed-off-by: John Lo <loj@cisco.com>
2016-07-09dpdk: disable CRC strippingDamjan Marion1-1/+1
Change-Id: I7006a3068c22e18e62c84abb8cc6124695b9ca44 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-07-08Allow DPDK per interface startup config to enable/disable VLAN strippingJohn Lo1-8/+22
The init of VIC/ENIC ports enable VLAN stripping of received packets by default, which is different to all other devices. The VLAN stripping of ENIC ports can be disabled by adding the per device DPDK config as "vlan-strip-offload off" such as: dpdk {... dev 0000:0c:00.0 {vlan-strip-offload off} ...} The per device config "vlan-strip-offload on" can be used for enabling VLAN stripping for other devices which support this function but is disabled by default. Change-Id: I9c81904a87c26868a07900b03677aeeb57f72372 Signed-off-by: John Lo <loj@cisco.com>
2016-07-07Retire support for DPDK 2.1.0 and olderDamjan Marion1-48/+2
Change-Id: I3c3427c61e32d4727360aa802950bb9ab44afd84 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-29Decouple worker thread code from dpdk, enable worker threads in vpp_liteDamjan Marion1-1/+1
Change-Id: I28616f1a89f2da95484438ec1a1db64845f15ef6 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-28Reduce ring size for dpdk NICs and overtal mem footprintDamjan Marion1-1/+1
Size of interface descriptor rings have direct impact on Last Level Cache utilization, and can significantly affect performance. So generally having smaller ring size is good idea as long as there is enough buffer in the ring to accomodate line rate. Here we are reducing rings sizes to 1024 which is still bigger than lab verified 512 buffers per ring. Indirectly, this also affects memory footprint, as we can have smaller buffer allocation, which is now 16384 (previously it was 32768) This patch also fixes issue with i40e vector PMD which was leaking buffers when previous default ring sizes were set. Change-Id: I58fb40586304b2f0cb5de9a444055da3cd3acb53 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-17VNET: Initialization support for NXP DPAA2 poll mode driverSachin1-0/+3
- NXP proposed a poll mode driver "rte_dpaa2_dpni" in DPDK upstream. - When using external DPDK with the given dpaa2 driver, VPP needs modification to initialize the PMD and to understand the DPAA2 N/W interfaces. Change-Id: I00eb127fa88c71fb430d3def238d50ba68fd595f Signed-off-by: Sachin <sachin.saxena@nxp.com>
2016-06-14Add dpdk per-interface startup config parameter to support rss-flagSrivatsa Sangli1-1/+11
New parameter allows specifying rss-flag - one or more of following ipv4-frag ipv4-tcp ipv4-udp ipv4-sctp ipv4-other ipv4 ipv6-tcp-ex ipv6-udp-ex ipv6-frag ipv6-tcp ipv6-udp ipv6-sctp ipv6-other l2-payload ipv6-ex ipv6 Sample config: dpdk { dev 0000:86:00.0 { rss { ipv4 ipv4-tcp ipv4-udp } } } Change-Id: I33c047d69ef8710b8ba3c7e1a1964d5d54f6e880 Signed-off-by: Srivatsa Sangli <srivrama@cisco.com>
2016-06-14Add dpdk per-interface startup config parameter to specify worker threadsDamjan Marion1-23/+53
New parameter allows specifying which worker threads will process rx queues. Parameter arguments is list of cores and number of worker specified must be equal to the number of rx queues configured (num-rx-queues). If num-rx-queues is not specified, it will be automatically set to number of workers. Sample config: dpdk { dev 0000:86:00.0 { workers 2,3 num-rx-queues 2 } } Change-Id: I88bc381e0e542eb02def09a726c6f04de3e1ae17 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-14Retire io threads and main-thread-io modeDamjan Marion1-17/+3
Change-Id: I64f5ec5e32f200834c63ec3b304f9f20cef332a7 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-09Fix DPDK init crash if bonded interface is created by startup confJohn Lo1-7/+10
Change-Id: I4d7d4a56aba010aa868b1f4c2c4e8db0b4c21fd7 Signed-off-by: John Lo <loj@cisco.com>
2016-06-07Fix missing null termination in DPDK EAL ArgsDamjan Marion1-2/+2
Change-Id: I8292628ad359a19e02ff79568d773ad2b1af51ec Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-06Add startup conf options to set per-interface descriptor ring sizeDamjan Marion1-1/+9
This patch introduces following 2 startup options: num-rx-desc num-tx-desc Which can be specified under the dpdk { dev PCI_ADDR {...} } or dpdk { dev default {...} } . "show hardware" output is extended to display what is set: TenGigabitEthernet2/0/0 5 down TenGigabitEthernet2/0/0 Ethernet address 90:e2:ba:96:d0:54 Intel 82599 carrier up full duplex speed 10000 mtu 9216 rx queues 2, rx desc 512, tx queues 2, tx desc 1024 cpu socket 0 Change-Id: Ia832885c8e5cf0eb0575367e97581e7065934753 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-05Add per-device startup config supportDamjan Marion1-66/+151
This change adds support for providing per-interface parameters in the startup config. Sample configuration: dpdk { dev default { num-rx-queues 3 num-tx-queues 3 } dev 0000:02:00.0 { num-rx-queues 2 num-tx-queues 2 } dev 0000:02:00.1 } Change-Id: Ia7d9ae2ac9c4fd9baaa480d061a395f8a421a722 Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-06-04Add dpdk config parameter: poll-sleep <nn>Dave Barach1-1/+3
Sleep <nn> milliseconds after each dpdk input device poll, useful when oversubscribing CPUs. Change-Id: I90ad1f21dae7eeeda56bfe845911118aa46f83ec Signed-off-by: Dave Barach <dave@barachs.net>
2016-05-28VPP-96 ENID driver update for rx of jumbo pkts using muliple mbuf'sJohn Lo1-2/+1
Change-Id: I0e985b079da3224f4886e3ee2cece4d046e291eb Signed-off-by: John Lo <loj@cisco.com>
2016-05-25Move dpdk startup config data to separate structDamjan Marion1-90/+92
This is preparation work for moving DPDK EAL and mempool initialization to vlib. Change-Id: I2dc35aa53edec0e07fc2650d630aa625831154c3 Signed-off-by: Damjan Marion <damarion@cisco.com>