xref: /openbmc/qemu/docs/system/devices/igb.rst (revision 764a6ee9)
1.. SPDX-License-Identifier: GPL-2.0-or-later
2.. _igb:
3
4igb
5---
6
7igb is a family of Intel's gigabit ethernet controllers. In QEMU, 82576
8emulation is implemented in particular. Its datasheet is available at [1]_.
9
10This implementation is expected to be useful to test SR-IOV networking without
11requiring physical hardware.
12
13Limitations
14===========
15
16This igb implementation was tested with Linux Test Project [2]_ and Windows HLK
17[3]_ during the initial development. Later it was also tested with DPDK Test
18Suite [4]_. The command used when testing with LTP is:
19
20.. code-block:: shell
21
22  network.sh -6mta
23
24Be aware that this implementation lacks many functionalities available with the
25actual hardware, and you may experience various failures if you try to use it
26with a different operating system other than DPDK, Linux, and Windows or if you
27try functionalities not covered by the tests.
28
29Using igb
30=========
31
32Using igb should be nothing different from using another network device. See
33:ref:`Network_emulation` in general.
34
35However, you may also need to perform additional steps to activate SR-IOV
36feature on your guest. For Linux, refer to [5]_.
37
38Developing igb
39==============
40
41igb is the successor of e1000e, and e1000e is the successor of e1000 in turn.
42As these devices are very similar, if you make a change for igb and the same
43change can be applied to e1000e and e1000, please do so.
44
45Please do not forget to run tests before submitting a change. As tests included
46in QEMU is very minimal, run some application which is likely to be affected by
47the change to confirm it works in an integrated system.
48
49Testing igb
50===========
51
52A qtest of the basic functionality is available. Run the below at the build
53directory:
54
55.. code-block:: shell
56
57  meson test qtest-x86_64/qos-test
58
59ethtool can test register accesses, interrupts, etc. It is automated as an
60Avocado test and can be ran with the following command:
61
62.. code:: shell
63
64  make check-avocado AVOCADO_TESTS=tests/avocado/netdev-ethtool.py
65
66References
67==========
68
69.. [1] https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/82576eb-gigabit-ethernet-controller-datasheet.pdf
70.. [2] https://github.com/linux-test-project/ltp
71.. [3] https://learn.microsoft.com/en-us/windows-hardware/test/hlk/
72.. [4] https://doc.dpdk.org/dts/gsg/
73.. [5] https://docs.kernel.org/PCI/pci-iov-howto.html
74