doc: add notes on service cores API updates
[dpdk.git] / doc / guides / rel_notes / known_issues.rst
1 ..  BSD LICENSE
2     Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
3     All rights reserved.
4
5     Redistribution and use in source and binary forms, with or without
6     modification, are permitted provided that the following conditions
7     are met:
8
9     * Redistributions of source code must retain the above copyright
10     notice, this list of conditions and the following disclaimer.
11     * Redistributions in binary form must reproduce the above copyright
12     notice, this list of conditions and the following disclaimer in
13     the documentation and/or other materials provided with the
14     distribution.
15     * Neither the name of Intel Corporation nor the names of its
16     contributors may be used to endorse or promote products derived
17     from this software without specific prior written permission.
18
19     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23     OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31
32 Known Issues and Limitations in Legacy Releases
33 ===============================================
34
35 This section describes known issues with the DPDK software that aren't covered in the version specific release
36 notes sections.
37
38
39 Unit Test for Link Bonding may fail at test_tlb_tx_burst()
40 ----------------------------------------------------------
41
42 **Description**:
43    Unit tests will fail in ``test_tlb_tx_burst()`` function with error for uneven distribution of packets.
44
45 **Implication**:
46    Unit test link_bonding_autotest will fail.
47
48 **Resolution/Workaround**:
49    There is no workaround available.
50
51 **Affected Environment/Platform**:
52    Fedora 20.
53
54 **Driver/Module**:
55    Link Bonding.
56
57
58 Pause Frame Forwarding does not work properly on igb
59 ----------------------------------------------------
60
61 **Description**:
62    For igb devices rte_eth_flow_ctrl_set does not work as expected.
63    Pause frames are always forwarded on igb, regardless of the ``RFCE``, ``MPMCF`` and ``DPF`` registers.
64
65 **Implication**:
66    Pause frames will never be rejected by the host on 1G NICs and they will always be forwarded.
67
68 **Resolution/Workaround**:
69    There is no workaround available.
70
71 **Affected Environment/Platform**:
72    All.
73
74 **Driver/Module**:
75    Poll Mode Driver (PMD).
76
77
78 In packets provided by the PMD, some flags are missing
79 ------------------------------------------------------
80
81 **Description**:
82    In packets provided by the PMD, some flags are missing.
83    The application does not have access to information provided by the hardware
84    (packet is broadcast, packet is multicast, packet is IPv4 and so on).
85
86 **Implication**:
87    The ``ol_flags`` field in the ``rte_mbuf`` structure is not correct and should not be used.
88
89 **Resolution/Workaround**:
90    The application has to parse the Ethernet header itself to get the information, which is slower.
91
92 **Affected Environment/Platform**:
93    All.
94
95 **Driver/Module**:
96    Poll Mode Driver (PMD).
97
98 The rte_malloc library is not fully implemented
99 -----------------------------------------------
100
101 **Description**:
102    The ``rte_malloc`` library is not fully implemented.
103
104 **Implication**:
105    All debugging features of rte_malloc library described in architecture documentation are not yet implemented.
106
107 **Resolution/Workaround**:
108    No workaround available.
109
110 **Affected Environment/Platform**:
111    All.
112
113 **Driver/Module**:
114    ``rte_malloc``.
115
116
117 HPET reading is slow
118 --------------------
119
120 **Description**:
121    Reading the HPET chip is slow.
122
123 **Implication**:
124    An application that calls ``rte_get_hpet_cycles()`` or ``rte_timer_manage()`` runs slower.
125
126 **Resolution/Workaround**:
127    The application should not call these functions too often in the main loop.
128    An alternative is to use the TSC register through ``rte_rdtsc()`` which is faster,
129    but specific to an lcore and is a cycle reference, not a time reference.
130
131 **Affected Environment/Platform**:
132    All.
133
134 **Driver/Module**:
135    Environment Abstraction Layer (EAL).
136
137
138 HPET timers do not work on the Osage customer reference platform
139 ----------------------------------------------------------------
140
141 **Description**:
142    HPET timers do not work on the Osage customer reference platform which includes an Intel® Xeon® processor 5500
143    series processor) using the released BIOS from Intel.
144
145 **Implication**:
146    On Osage boards, the implementation of the ``rte_delay_us()`` function must be changed to not use the HPET timer.
147
148 **Resolution/Workaround**:
149    This can be addressed by building the system with the ``CONFIG_RTE_LIBEAL_USE_HPET=n``
150    configuration option or by using the ``--no-hpet`` EAL option.
151
152 **Affected Environment/Platform**:
153    The Osage customer reference platform.
154    Other vendor platforms with Intel®  Xeon® processor 5500 series processors should
155    work correctly, provided the BIOS supports HPET.
156
157 **Driver/Module**:
158    ``lib/librte_eal/common/include/rte_cycles.h``
159
160
161 Not all variants of supported NIC types have been used in testing
162 -----------------------------------------------------------------
163
164 **Description**:
165    The supported network interface cards can come in a number of variants with different device ID's.
166    Not all of these variants have been tested with the DPDK.
167
168    The NIC device identifiers used during testing:
169
170    * Intel® Ethernet Controller XL710 for 40GbE QSFP+ [8086:1584]
171    * Intel® Ethernet Controller XL710 for 40GbE QSFP+ [8086:1583]
172    * Intel® Ethernet Controller X710 for 10GbE SFP+ [8086:1572]
173    * Intel® 82576 Gigabit Ethernet Controller [8086:10c9]
174    * Intel® 82576 Quad Copper Gigabit Ethernet Controller [8086:10e8]
175    * Intel® 82580 Dual Copper Gigabit Ethernet Controller [8086:150e]
176    * Intel® I350 Quad Copper Gigabit Ethernet Controller [8086:1521]
177    * Intel® 82599 Dual Fibre 10 Gigabit Ethernet Controller [8086:10fb]
178    * Intel® Ethernet Server Adapter X520-T2 [8086: 151c]
179    * Intel® Ethernet Controller X540-T2 [8086:1528]
180    * Intel® 82574L Gigabit Network Connection [8086:10d3]
181    * Emulated Intel® 82540EM Gigabit Ethernet Controller [8086:100e]
182    * Emulated Intel® 82545EM Gigabit Ethernet Controller [8086:100f]
183    * Intel® Ethernet Server Adapter X520-4 [8086:154a]
184    * Intel® Ethernet Controller I210 [8086:1533]
185
186 **Implication**:
187    Risk of issues with untested variants.
188
189 **Resolution/Workaround**:
190    Use tested NIC variants. For those supported Ethernet controllers, additional device
191    IDs may be added to the software if required.
192
193 **Affected Environment/Platform**:
194    All.
195
196 **Driver/Module**:
197    Poll-mode drivers
198
199
200 Multi-process sample app requires exact memory mapping
201 ------------------------------------------------------
202
203 **Description**:
204    The multi-process example application assumes that
205    it is possible to map the hugepage memory to the same virtual addresses in client and server applications.
206    Occasionally, very rarely with 64-bit, this does not occur and a client application will fail on startup.
207    The Linux "address-space layout randomization" security feature can sometimes cause this to occur.
208
209 **Implication**:
210    A multi-process client application fails to initialize.
211
212 **Resolution/Workaround**:
213    See the "Multi-process Limitations" section in the DPDK Programmer's Guide for more information.
214
215 **Affected Environment/Platform**:
216    All.
217
218 **Driver/Module**:
219    Multi-process example application
220
221
222 Packets are not sent by the 1 GbE/10 GbE SR-IOV driver when the source MAC is not the MAC assigned to the VF NIC
223 ----------------------------------------------------------------------------------------------------------------
224
225 **Description**:
226    The 1 GbE/10 GbE SR-IOV driver can only send packets when the Ethernet header's source MAC address is the same as
227    that of the VF NIC.
228    The reason for this is that the Linux ``ixgbe`` driver module in the host OS has its anti-spoofing feature enabled.
229
230 **Implication**:
231    Packets sent using the 1 GbE/10 GbE SR-IOV driver must have the source MAC address correctly set to that of the VF NIC.
232    Packets with other source address values are dropped by the NIC if the application attempts to transmit them.
233
234 **Resolution/Workaround**:
235    Configure the Ethernet source address in each packet to match that of the VF NIC.
236
237 **Affected Environment/Platform**:
238    All.
239
240 **Driver/Module**:
241    1 GbE/10 GbE VF Poll Mode Driver (PMD).
242
243
244 SR-IOV drivers do not fully implement the rte_ethdev API
245 --------------------------------------------------------
246
247 **Description**:
248    The SR-IOV drivers only supports the following rte_ethdev API functions:
249
250    * rte_eth_dev_configure()
251    * rte_eth_tx_queue_setup()
252    * rte_eth_rx_queue_setup()
253    * rte_eth_dev_info_get()
254    * rte_eth_dev_start()
255    * rte_eth_tx_burst()
256    * rte_eth_rx_burst()
257    * rte_eth_dev_stop()
258    * rte_eth_stats_get()
259    * rte_eth_stats_reset()
260    * rte_eth_link_get()
261    * rte_eth_link_get_no_wait()
262
263 **Implication**:
264    Calling an unsupported function will result in an application error.
265
266 **Resolution/Workaround**:
267    Do not use other rte_ethdev API functions in applications that use the SR-IOV drivers.
268
269 **Affected Environment/Platform**:
270    All.
271
272 **Driver/Module**:
273    VF Poll Mode Driver (PMD).
274
275
276 PMD does not work with --no-huge EAL command line parameter
277 -----------------------------------------------------------
278
279 **Description**:
280    Currently, the DPDK does not store any information about memory allocated by ``malloc()` (for example, NUMA node,
281    physical address), hence PMD drivers do not work when the ``--no-huge`` command line parameter is supplied to EAL.
282
283 **Implication**:
284    Sending and receiving data with PMD will not work.
285
286 **Resolution/Workaround**:
287    Use huge page memory or use VFIO to map devices.
288
289 **Affected Environment/Platform**:
290    Systems running the DPDK on Linux
291
292 **Driver/Module**:
293    Poll Mode Driver (PMD).
294
295
296 Some hardware off-load functions are not supported by the VF Driver
297 -------------------------------------------------------------------
298
299 **Description**:
300    Currently, configuration of the following items is not supported by the VF driver:
301
302    * IP/UDP/TCP checksum offload
303    * Jumbo Frame Receipt
304    * HW Strip CRC
305
306 **Implication**:
307    Any configuration for these items in the VF register will be ignored.
308    The behavior is dependent on the current PF setting.
309
310 **Resolution/Workaround**:
311    For the PF (Physical Function) status on which the VF driver depends, there is an option item under PMD in the
312    config file.
313    For others, the VF will keep the same behavior as PF setting.
314
315 **Affected Environment/Platform**:
316    All.
317
318 **Driver/Module**:
319    VF (SR-IOV) Poll Mode Driver (PMD).
320
321
322 Kernel crash on IGB port unbinding
323 ----------------------------------
324
325 **Description**:
326    Kernel crash may occur when unbinding 1G ports from the igb_uio driver, on 2.6.3x kernels such as shipped
327    with Fedora 14.
328
329 **Implication**:
330    Kernel crash occurs.
331
332 **Resolution/Workaround**:
333    Use newer kernels or do not unbind ports.
334
335 **Affected Environment/Platform**:
336    2.6.3x kernels such as  shipped with Fedora 14
337
338 **Driver/Module**:
339    IGB Poll Mode Driver (PMD).
340
341
342 Twinpond and Ironpond NICs do not report link status correctly
343 --------------------------------------------------------------
344
345 **Description**:
346    Twin Pond/Iron Pond NICs do not bring the physical link down when shutting down the port.
347
348 **Implication**:
349    The link is reported as up even after issuing ``shutdown`` command unless the cable is physically disconnected.
350
351 **Resolution/Workaround**:
352    None.
353
354 **Affected Environment/Platform**:
355    Twin Pond and Iron Pond NICs
356
357 **Driver/Module**:
358    Poll Mode Driver (PMD).
359
360
361 Discrepancies between statistics reported by different NICs
362 -----------------------------------------------------------
363
364 **Description**:
365    Gigabit Ethernet devices from Intel include CRC bytes when calculating packet reception statistics regardless
366    of hardware CRC stripping state, while 10-Gigabit Ethernet devices from Intel do so only when hardware CRC
367    stripping is disabled.
368
369 **Implication**:
370    There may be a  discrepancy in how different NICs display packet reception statistics.
371
372 **Resolution/Workaround**:
373    None
374
375 **Affected Environment/Platform**:
376    All.
377
378 **Driver/Module**:
379    Poll Mode Driver (PMD).
380
381
382 Error reported opening files on DPDK initialization
383 ---------------------------------------------------
384
385 **Description**:
386    On DPDK application startup, errors may be reported when opening files as part of the initialization process.
387    This occurs if a large number, for example, 500 or more, or if hugepages are used, due to the per-process
388    limit on the number of open files.
389
390 **Implication**:
391    The DPDK application may fail to run.
392
393 **Resolution/Workaround**:
394    If using 2 MB hugepages, consider switching to a fewer number of 1 GB pages.
395    Alternatively, use the ``ulimit`` command to increase the number of files which can be opened by a process.
396
397 **Affected Environment/Platform**:
398    All.
399
400 **Driver/Module**:
401    Environment Abstraction Layer (EAL).
402
403
404 Intel® QuickAssist Technology sample application does not work on a 32-bit OS on Shumway
405 ----------------------------------------------------------------------------------------
406
407 **Description**:
408    The Intel® Communications Chipset 89xx Series device does not fully support NUMA on a 32-bit OS.
409    Consequently, the sample application cannot work properly on Shumway, since it requires NUMA on both nodes.
410
411 **Implication**:
412    The sample application cannot work in 32-bit mode with emulated NUMA, on multi-socket boards.
413
414 **Resolution/Workaround**:
415    There is no workaround available.
416
417 **Affected Environment/Platform**:
418    Shumway
419
420 **Driver/Module**:
421    All.
422
423
424 Differences in how different Intel NICs handle maximum packet length for jumbo frame
425 ------------------------------------------------------------------------------------
426
427 **Description**:
428    10 Gigabit Ethernet devices from Intel do not take VLAN tags into account when calculating packet size
429    while Gigabit Ethernet devices do so for jumbo frames.
430
431 **Implication**:
432    When receiving packets with VLAN tags, the actual maximum size of useful payload that Intel Gigabit Ethernet
433    devices are able to receive is 4 bytes (or 8 bytes in the case of packets with extended VLAN tags) less than
434    that of Intel 10 Gigabit Ethernet devices.
435
436 **Resolution/Workaround**:
437    Increase the configured maximum packet size when using Intel Gigabit Ethernet devices.
438
439 **Affected Environment/Platform**:
440    All.
441
442 **Driver/Module**:
443    Poll Mode Driver (PMD).
444
445
446 Binding PCI devices to igb_uio fails on Linux kernel 3.9 when more than one device is used
447 ------------------------------------------------------------------------------------------
448
449 **Description**:
450    A known bug in the uio driver included in Linux kernel version 3.9 prevents more than one PCI device to be
451    bound to the igb_uio driver.
452
453 **Implication**:
454    The Poll Mode Driver (PMD) will crash on initialization.
455
456 **Resolution/Workaround**:
457    Use earlier or later kernel versions, or apply the following
458    `patch  <https://github.com/torvalds/linux/commit/5ed0505c713805f89473cdc0bbfb5110dfd840cb>`_.
459
460 **Affected Environment/Platform**:
461    Linux systems with kernel version 3.9
462
463 **Driver/Module**:
464    igb_uio module
465
466
467 GCC might generate Intel® AVX instructions for processors without Intel® AVX support
468 ------------------------------------------------------------------------------------
469
470 **Description**:
471    When compiling DPDK (and any DPDK app), gcc may generate Intel® AVX instructions, even when the
472    processor does not support Intel® AVX.
473
474 **Implication**:
475    Any DPDK app might crash while starting up.
476
477 **Resolution/Workaround**:
478    Either compile using icc or set ``EXTRA_CFLAGS='-O3'`` prior to compilation.
479
480 **Affected Environment/Platform**:
481    Platforms which processor does not support Intel® AVX.
482
483 **Driver/Module**:
484    Environment Abstraction Layer (EAL).
485
486 Ethertype filter could receive other packets (non-assigned) in Niantic
487 ----------------------------------------------------------------------
488
489 **Description**:
490    On Intel®  Ethernet Controller 82599EB When Ethertype filter (priority enable) was set, unmatched packets also
491    could be received on the assigned queue, such as ARP packets without 802.1q tags or with the user priority not
492    equal to set value.
493    Launch the testpmd by disabling RSS and with multiply queues, then add the ethertype filter like the following
494    and then start forwarding::
495
496       add_ethertype_filter 0 ethertype 0x0806 priority enable 3 queue 2 index 1
497
498    When sending ARP packets without 802.1q tag and with user priority as non-3 by tester, all the ARP packets can
499    be received on the assigned queue.
500
501 **Implication**:
502    The user priority comparing in Ethertype filter cannot work probably.
503    It is a NIC's issue due to the following: "In fact, ETQF.UP is not functional, and the information will
504    be added in errata of 82599 and X540."
505
506 **Resolution/Workaround**:
507    None
508
509 **Affected Environment/Platform**:
510    All.
511
512 **Driver/Module**:
513    Poll Mode Driver (PMD).
514
515
516 Cannot set link speed on Intel® 40G Ethernet controller
517 -------------------------------------------------------
518
519 **Description**:
520    On Intel® 40G Ethernet Controller you cannot set the link to specific speed.
521
522 **Implication**:
523    The link speed cannot be changed forcibly, though it can be configured by application.
524
525 **Resolution/Workaround**:
526    None
527
528 **Affected Environment/Platform**:
529    All.
530
531 **Driver/Module**:
532    Poll Mode Driver (PMD).
533
534
535 Devices bound to igb_uio with VT-d enabled do not work on Linux kernel 3.15-3.17
536 --------------------------------------------------------------------------------
537
538 **Description**:
539    When VT-d is enabled (``iommu=pt intel_iommu=on``), devices are 1:1 mapped.
540    In the Linux kernel unbinding devices from drivers removes that mapping which result in IOMMU errors.
541    Introduced in Linux `kernel 3.15 commit
542    <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/iommu/intel-iommu.c?id=816997d03bca9fabcee65f3481eb0297103eceb7>`_,
543    solved in Linux `kernel 3.18 commit
544    <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/iommu/intel-iommu.c?id=1196c2fb0407683c2df92d3d09f9144d42830894>`_.
545
546 **Implication**:
547    Devices will not be allowed to access memory, resulting in following kernel errors::
548
549       dmar: DRHD: handling fault status reg 2
550       dmar: DMAR:[DMA Read] Request device [02:00.0] fault addr a0c58000
551       DMAR:[fault reason 02] Present bit in context entry is clear
552
553 **Resolution/Workaround**:
554    Use earlier or later kernel versions, or avoid driver binding on boot by blacklisting the driver modules.
555    I.e., in the case of ``ixgbe``, we can pass the kernel command line option: ``modprobe.blacklist=ixgbe``.
556    This way we do not need to unbind the device to bind it to igb_uio.
557
558 **Affected Environment/Platform**:
559    Linux systems with kernel versions 3.15 to 3.17.
560
561 **Driver/Module**:
562    ``igb_uio`` module.
563
564
565 VM power manager may not work on systems with more than 64 cores
566 ----------------------------------------------------------------
567
568 **Description**:
569    When using VM power manager on a system with more than 64 cores, VM(s) should not use cores 64 or higher.
570
571 **Implication**:
572    VM power manager should not be used with VM(s) that are using cores 64 or above.
573
574 **Resolution/Workaround**:
575    Do not use cores 64 or above.
576
577 **Affected Environment/Platform**:
578    Platforms with more than 64 cores.
579
580 **Driver/Module**:
581    VM power manager application.
582
583
584 DPDK may not build on some Intel CPUs using clang < 3.7.0
585 ---------------------------------------------------------
586
587 **Description**:
588    When compiling DPDK with an earlier version than 3.7.0 of clang, CPU flags are not detected on some Intel platforms
589    such as Intel Broadwell/Skylake (and possibly future CPUs), and therefore compilation fails due to missing intrinsics.
590
591 **Implication**:
592    DPDK will not build when using a clang version < 3.7.0.
593
594 **Resolution/Workaround**:
595    Use clang 3.7.0 or higher, or gcc.
596
597 **Affected Environment/Platform**:
598    Platforms with Intel Broadwell/Skylake using an old clang version.
599
600 **Driver/Module**:
601    Environment Abstraction Layer (EAL).
602
603
604 The last EAL argument is replaced by the program name in argv[]
605 ---------------------------------------------------------------
606
607 **Description**:
608    The last EAL argument is replaced by program name in ``argv[]`` after ``eal_parse_args`` is called.
609    This is the intended behavior but it causes the pointer to the last EAL argument to be lost.
610
611 **Implication**:
612   If the last EAL argument in ``argv[]`` is generated by a malloc function, changing it will cause memory
613   issues when freeing the argument.
614
615 **Resolution/Workaround**:
616    An application should not consider the value in ``argv[]`` as unchanged.
617
618 **Affected Environment/Platform**:
619    ALL.
620
621 **Driver/Module**:
622    Environment Abstraction Layer (EAL).
623
624
625 I40e VF may not receive packets in the promiscuous mode
626 -------------------------------------------------------
627
628 **Description**:
629    Promiscuous mode is not supported by the DPDK i40e VF driver when using the
630    i40e Linux kernel driver as host driver.
631
632 **Implication**:
633    The i40e VF does not receive packets when the destination MAC address is unknown.
634
635 **Resolution/Workaround**:
636    Use a explicit destination MAC address that matches the VF.
637
638 **Affected Environment/Platform**:
639    All.
640
641 **Driver/Module**:
642    Poll Mode Driver (PMD).
643
644
645 uio pci generic module bind failed in X710/XL710/XXV710
646 -------------------------------------------------------
647
648 **Description**:
649    The ``uio_pci_generic`` module is not supported by XL710, since the errata of XL710
650    states that the Interrupt Status bit is not implemented. The errata is the item #71
651    from the `xl710 controller spec
652    <http://www.intel.com/content/www/us/en/embedded/products/networking/xl710-10-40-controller-spec-update.html>`_.
653    The hw limitation is the same as other X710/XXV710 NICs.
654
655 **Implication**:
656    When use ``--bind=uio_pci_generic``, the ``uio_pci_generic`` module probes device and check the Interrupt
657    Status bit. Since it is not supported by X710/XL710/XXV710, it return a *failed* value. The statement
658    that these products don’t support INTx masking, is indicated in the related `linux kernel commit
659    <https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/drivers/pci/quirks.c?id=8bcf4525c5d43306c5fd07e132bc8650e3491aec>`_.
660
661 **Resolution/Workaround**:
662    Do not bind the ``uio_pci_generic`` module in X710/XL710/XXV710 NICs.
663
664 **Affected Environment/Platform**:
665    All.
666
667 **Driver/Module**:
668    Poll Mode Driver (PMD).
669
670
671 virtio tx_burst() function cannot do TSO on shared packets
672 ----------------------------------------------------------
673
674 **Description**:
675    The standard TX function of virtio driver does not manage shared
676    packets properly when doing TSO. These packets should be read-only
677    but the driver modifies them.
678
679    When doing TSO, the virtio standard expects that the L4 checksum is
680    set to the pseudo header checksum in the packet data, which is
681    different than the DPDK API. The driver patches the L4 checksum to
682    conform to the virtio standard, but this solution is invalid when
683    dealing with shared packets (clones), because the packet data should
684    not be modified.
685
686 **Implication**:
687    In this situation, the shared data will be modified by the driver,
688    potentially causing race conditions with the other users of the mbuf
689    data.
690
691 **Resolution/Workaround**:
692    The workaround in the application is to ensure that the network
693    headers in the packet data are not shared.
694
695 **Affected Environment/Platform**:
696    Virtual machines running a virtio driver.
697
698 **Driver/Module**:
699    Poll Mode Driver (PMD).
700
701
702 igb uio legacy mode can not be used in X710/XL710/XXV710
703 --------------------------------------------------------
704
705 **Description**:
706    X710/XL710/XXV710 NICs lack support for indicating INTx is asserted via the interrupt
707    bit in the PCI status register. Linux delected them from INTx support table. The related
708    `commit <https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/drivers/pci/quirks.c?id=8bcf4525c5d43306c5fd07e132bc8650e3491aec>`_.
709
710 **Implication**:
711    When insmod ``igb_uio`` with ``intr_mode=legacy`` and test link status interrupt. Since
712    INTx interrupt is not supported by X710/XL710/XXV710, it will cause Input/Output error
713    when reading file descriptor.
714
715 **Resolution/Workaround**:
716    Do not bind ``igb_uio`` with legacy mode in X710/XL710/XXV710 NICs, or do not use kernel
717    version >4.7 when you bind ``igb_uio`` with legacy mode.
718
719 **Affected Environment/Platform**:
720    ALL.
721
722 **Driver/Module**:
723    Poll Mode Driver (PMD).
724
725
726 igb_uio can not be used when running l3fwd-power
727 ------------------------------------------------
728
729 **Description**:
730    Link Status Change(LSC) interrupt and packet receiving interrupt are all enabled in l3fwd-power
731    APP. Because of UIO only support one interrupt, so these two kinds of interrupt need to share
732    one, and the receiving interrupt have the higher priority, so can't get the right link status.
733
734 **Implication**:
735    When insmod ``igb_uio`` and running l3fwd-power APP, link status getting doesn't work properly.
736
737 **Resolution/Workaround**:
738    Use vfio-pci when LSC and packet receiving interrupt enabled.
739
740 **Affected Environment/Platform**:
741    ALL.
742
743 **Driver/Module**:
744    ``igb_uio`` module.