[PATCH v8 0/8] Introduce igb

Akihiko Odaki posted 8 patches 1 year, 2 months ago
There is a newer version of this series
MAINTAINERS                                   |    9 +
docs/system/device-emulation.rst              |    1 +
docs/system/devices/igb.rst                   |   71 +
hw/net/Kconfig                                |    5 +
hw/net/e1000.c                                |    1 +
hw/net/e1000_common.h                         |  102 +
hw/net/e1000_regs.h                           |  927 +---
hw/net/e1000e.c                               |    3 +-
hw/net/e1000e_core.c                          |    1 +
hw/net/e1000x_common.c                        |    1 +
hw/net/e1000x_common.h                        |   74 -
hw/net/e1000x_regs.h                          |  940 ++++
hw/net/igb.c                                  |  612 +++
hw/net/igb_common.h                           |  146 +
hw/net/igb_core.c                             | 4043 +++++++++++++++++
hw/net/igb_core.h                             |  144 +
hw/net/igb_regs.h                             |  648 +++
hw/net/igbvf.c                                |  327 ++
hw/net/meson.build                            |    2 +
hw/net/trace-events                           |   32 +
hw/pci/pcie_sriov.c                           |    5 +
include/hw/pci/pcie_sriov.h                   |    3 +
.../org.centos/stream/8/x86_64/test-avocado   |    1 +
tests/avocado/igb.py                          |   38 +
tests/qtest/e1000e-test.c                     |   25 +-
tests/qtest/fuzz/generic_fuzz_configs.h       |    5 +
tests/qtest/igb-test.c                        |  243 +
tests/qtest/libqos/e1000e.c                   |   12 -
tests/qtest/libqos/e1000e.h                   |   14 +
tests/qtest/libqos/igb.c                      |  185 +
tests/qtest/libqos/meson.build                |    1 +
tests/qtest/meson.build                       |    1 +
32 files changed, 7600 insertions(+), 1022 deletions(-)
create mode 100644 docs/system/devices/igb.rst
create mode 100644 hw/net/e1000_common.h
create mode 100644 hw/net/e1000x_regs.h
create mode 100644 hw/net/igb.c
create mode 100644 hw/net/igb_common.h
create mode 100644 hw/net/igb_core.c
create mode 100644 hw/net/igb_core.h
create mode 100644 hw/net/igb_regs.h
create mode 100644 hw/net/igbvf.c
create mode 100644 tests/avocado/igb.py
create mode 100644 tests/qtest/igb-test.c
create mode 100644 tests/qtest/libqos/igb.c
[PATCH v8 0/8] Introduce igb
Posted by Akihiko Odaki 1 year, 2 months ago
Based-on: <20230201033539.30049-1-akihiko.odaki@daynix.com>
([PATCH v5 00/29] e1000x cleanups (preliminary for IGB))

igb is a family of Intel's gigabit ethernet controllers. This series implements
82576 emulation in particular. You can see the last patch for the documentation.

Note that there is another effort to bring 82576 emulation. This series was
developed independently by Sriram Yagnaraman.
https://lists.gnu.org/archive/html/qemu-devel/2022-12/msg04670.html

V7 -> V8:
- Removed obsolete patch
  "hw/net/net_tx_pkt: Introduce net_tx_pkt_get_eth_hdr" (Cédric Le Goater)

V6 -> V7:
- Reordered statements in igb_receive_internal() so that checksum will be
  calculated only once and it will be more close to e1000e_receive_internal().

V5 -> V6:
- Rebased.
- Renamed "test" to "packet" in tests/qtest/e1000e-test.c.
- Fixed Rx logic so that a Rx pool without enough space won't prevent other
  pools from receiving, based on Sriram Yagnaraman's work.

V4 -> V5:
- Rebased.
- Squashed patches to copy from e1000e code and modify it.
- Listed the implemented features.
- Added a check for interrupts availablity on PF.
- Fixed the declaration of igb_receive_internal(). (Sriram Yagnaraman)

V3 -> V4:
- Rebased.
- Corrected PCIDevice specified for DMA.

V2 -> V3:
- Rebased.
- Fixed PCIDevice reference in hw/net/igbvf.c.
- Fixed TX packet switching when VM loopback is enabled.
- Fixed VMDq enablement check.
- Fixed RX descriptor length parser.
- Fixed the definitions of RQDPC readers.
- Implemented VLAN VM filter.
- Implemented VT_CTL.Def_PL.
- Implemented the combination of VMDq and RSS.
- Noted that igb is tested with Windows HLK.

V1 -> V2:
- Spun off e1000e general improvements to a distinct series.
- Restored vnet_hdr offload as there seems nothing preventing from that.

Akihiko Odaki (8):
  pcie: Introduce pcie_sriov_num_vfs
  e1000: Split header files
  Intrdocue igb device emulation
  tests/qtest/e1000e-test: Fabricate ethernet header
  tests/qtest/libqos/e1000e: Export macreg functions
  igb: Introduce qtest for igb device
  tests/avocado: Add igb test
  docs/system/devices/igb: Add igb documentation

 MAINTAINERS                                   |    9 +
 docs/system/device-emulation.rst              |    1 +
 docs/system/devices/igb.rst                   |   71 +
 hw/net/Kconfig                                |    5 +
 hw/net/e1000.c                                |    1 +
 hw/net/e1000_common.h                         |  102 +
 hw/net/e1000_regs.h                           |  927 +---
 hw/net/e1000e.c                               |    3 +-
 hw/net/e1000e_core.c                          |    1 +
 hw/net/e1000x_common.c                        |    1 +
 hw/net/e1000x_common.h                        |   74 -
 hw/net/e1000x_regs.h                          |  940 ++++
 hw/net/igb.c                                  |  612 +++
 hw/net/igb_common.h                           |  146 +
 hw/net/igb_core.c                             | 4043 +++++++++++++++++
 hw/net/igb_core.h                             |  144 +
 hw/net/igb_regs.h                             |  648 +++
 hw/net/igbvf.c                                |  327 ++
 hw/net/meson.build                            |    2 +
 hw/net/trace-events                           |   32 +
 hw/pci/pcie_sriov.c                           |    5 +
 include/hw/pci/pcie_sriov.h                   |    3 +
 .../org.centos/stream/8/x86_64/test-avocado   |    1 +
 tests/avocado/igb.py                          |   38 +
 tests/qtest/e1000e-test.c                     |   25 +-
 tests/qtest/fuzz/generic_fuzz_configs.h       |    5 +
 tests/qtest/igb-test.c                        |  243 +
 tests/qtest/libqos/e1000e.c                   |   12 -
 tests/qtest/libqos/e1000e.h                   |   14 +
 tests/qtest/libqos/igb.c                      |  185 +
 tests/qtest/libqos/meson.build                |    1 +
 tests/qtest/meson.build                       |    1 +
 32 files changed, 7600 insertions(+), 1022 deletions(-)
 create mode 100644 docs/system/devices/igb.rst
 create mode 100644 hw/net/e1000_common.h
 create mode 100644 hw/net/e1000x_regs.h
 create mode 100644 hw/net/igb.c
 create mode 100644 hw/net/igb_common.h
 create mode 100644 hw/net/igb_core.c
 create mode 100644 hw/net/igb_core.h
 create mode 100644 hw/net/igb_regs.h
 create mode 100644 hw/net/igbvf.c
 create mode 100644 tests/avocado/igb.py
 create mode 100644 tests/qtest/igb-test.c
 create mode 100644 tests/qtest/libqos/igb.c

-- 
2.39.1


Re: [PATCH v8 0/8] Introduce igb
Posted by Cédric Le Goater 1 year, 2 months ago
On 2/4/23 05:36, Akihiko Odaki wrote:
> Based-on: <20230201033539.30049-1-akihiko.odaki@daynix.com>
> ([PATCH v5 00/29] e1000x cleanups (preliminary for IGB))

For both series,

Tested-by: Cédric Le Goater <clg@redhat.com>

In a KVM guest with two VFs, one of which being pass-through in a nested KVM.

Thanks,

C.


> igb is a family of Intel's gigabit ethernet controllers. This series implements
> 82576 emulation in particular. You can see the last patch for the documentation.
> 
> Note that there is another effort to bring 82576 emulation. This series was
> developed independently by Sriram Yagnaraman.
> https://lists.gnu.org/archive/html/qemu-devel/2022-12/msg04670.html


> 
> V7 -> V8:
> - Removed obsolete patch
>    "hw/net/net_tx_pkt: Introduce net_tx_pkt_get_eth_hdr" (Cédric Le Goater)
> 
> V6 -> V7:
> - Reordered statements in igb_receive_internal() so that checksum will be
>    calculated only once and it will be more close to e1000e_receive_internal().
> 
> V5 -> V6:
> - Rebased.
> - Renamed "test" to "packet" in tests/qtest/e1000e-test.c.
> - Fixed Rx logic so that a Rx pool without enough space won't prevent other
>    pools from receiving, based on Sriram Yagnaraman's work.
> 
> V4 -> V5:
> - Rebased.
> - Squashed patches to copy from e1000e code and modify it.
> - Listed the implemented features.
> - Added a check for interrupts availablity on PF.
> - Fixed the declaration of igb_receive_internal(). (Sriram Yagnaraman)
> 
> V3 -> V4:
> - Rebased.
> - Corrected PCIDevice specified for DMA.
> 
> V2 -> V3:
> - Rebased.
> - Fixed PCIDevice reference in hw/net/igbvf.c.
> - Fixed TX packet switching when VM loopback is enabled.
> - Fixed VMDq enablement check.
> - Fixed RX descriptor length parser.
> - Fixed the definitions of RQDPC readers.
> - Implemented VLAN VM filter.
> - Implemented VT_CTL.Def_PL.
> - Implemented the combination of VMDq and RSS.
> - Noted that igb is tested with Windows HLK.
> 
> V1 -> V2:
> - Spun off e1000e general improvements to a distinct series.
> - Restored vnet_hdr offload as there seems nothing preventing from that.
> 
> Akihiko Odaki (8):
>    pcie: Introduce pcie_sriov_num_vfs
>    e1000: Split header files
>    Intrdocue igb device emulation
>    tests/qtest/e1000e-test: Fabricate ethernet header
>    tests/qtest/libqos/e1000e: Export macreg functions
>    igb: Introduce qtest for igb device
>    tests/avocado: Add igb test
>    docs/system/devices/igb: Add igb documentation
> 
>   MAINTAINERS                                   |    9 +
>   docs/system/device-emulation.rst              |    1 +
>   docs/system/devices/igb.rst                   |   71 +
>   hw/net/Kconfig                                |    5 +
>   hw/net/e1000.c                                |    1 +
>   hw/net/e1000_common.h                         |  102 +
>   hw/net/e1000_regs.h                           |  927 +---
>   hw/net/e1000e.c                               |    3 +-
>   hw/net/e1000e_core.c                          |    1 +
>   hw/net/e1000x_common.c                        |    1 +
>   hw/net/e1000x_common.h                        |   74 -
>   hw/net/e1000x_regs.h                          |  940 ++++
>   hw/net/igb.c                                  |  612 +++
>   hw/net/igb_common.h                           |  146 +
>   hw/net/igb_core.c                             | 4043 +++++++++++++++++
>   hw/net/igb_core.h                             |  144 +
>   hw/net/igb_regs.h                             |  648 +++
>   hw/net/igbvf.c                                |  327 ++
>   hw/net/meson.build                            |    2 +
>   hw/net/trace-events                           |   32 +
>   hw/pci/pcie_sriov.c                           |    5 +
>   include/hw/pci/pcie_sriov.h                   |    3 +
>   .../org.centos/stream/8/x86_64/test-avocado   |    1 +
>   tests/avocado/igb.py                          |   38 +
>   tests/qtest/e1000e-test.c                     |   25 +-
>   tests/qtest/fuzz/generic_fuzz_configs.h       |    5 +
>   tests/qtest/igb-test.c                        |  243 +
>   tests/qtest/libqos/e1000e.c                   |   12 -
>   tests/qtest/libqos/e1000e.h                   |   14 +
>   tests/qtest/libqos/igb.c                      |  185 +
>   tests/qtest/libqos/meson.build                |    1 +
>   tests/qtest/meson.build                       |    1 +
>   32 files changed, 7600 insertions(+), 1022 deletions(-)
>   create mode 100644 docs/system/devices/igb.rst
>   create mode 100644 hw/net/e1000_common.h
>   create mode 100644 hw/net/e1000x_regs.h
>   create mode 100644 hw/net/igb.c
>   create mode 100644 hw/net/igb_common.h
>   create mode 100644 hw/net/igb_core.c
>   create mode 100644 hw/net/igb_core.h
>   create mode 100644 hw/net/igb_regs.h
>   create mode 100644 hw/net/igbvf.c
>   create mode 100644 tests/avocado/igb.py
>   create mode 100644 tests/qtest/igb-test.c
>   create mode 100644 tests/qtest/libqos/igb.c
> 


Re: [PATCH v8 0/8] Introduce igb
Posted by Akihiko Odaki 1 year, 2 months ago
Hi Jason,

Let me remind that every patches in this series now has Reviewed-by: or 
Acked-by: tag though I forgot to include tags the prior versions of this 
series received to the latest version:

"Introduce igb"
https://lore.kernel.org/qemu-devel/DBBP189MB143365704198DC9A0684DEA595D09@DBBP189MB1433.EURP189.PROD.OUTLOOK.COM/

"docs/system/devices/igb: Add igb documentation"
https://lore.kernel.org/qemu-devel/741a0975-9f7a-b4bc-9651-cf45f03d1787@kaod.org/

Regards,
Akihiko Odaki

On 2023/02/04 13:36, Akihiko Odaki wrote:
> Based-on: <20230201033539.30049-1-akihiko.odaki@daynix.com>
> ([PATCH v5 00/29] e1000x cleanups (preliminary for IGB))
> 
> igb is a family of Intel's gigabit ethernet controllers. This series implements
> 82576 emulation in particular. You can see the last patch for the documentation.
> 
> Note that there is another effort to bring 82576 emulation. This series was
> developed independently by Sriram Yagnaraman.
> https://lists.gnu.org/archive/html/qemu-devel/2022-12/msg04670.html
> 
> V7 -> V8:
> - Removed obsolete patch
>    "hw/net/net_tx_pkt: Introduce net_tx_pkt_get_eth_hdr" (Cédric Le Goater)
> 
> V6 -> V7:
> - Reordered statements in igb_receive_internal() so that checksum will be
>    calculated only once and it will be more close to e1000e_receive_internal().
> 
> V5 -> V6:
> - Rebased.
> - Renamed "test" to "packet" in tests/qtest/e1000e-test.c.
> - Fixed Rx logic so that a Rx pool without enough space won't prevent other
>    pools from receiving, based on Sriram Yagnaraman's work.
> 
> V4 -> V5:
> - Rebased.
> - Squashed patches to copy from e1000e code and modify it.
> - Listed the implemented features.
> - Added a check for interrupts availablity on PF.
> - Fixed the declaration of igb_receive_internal(). (Sriram Yagnaraman)
> 
> V3 -> V4:
> - Rebased.
> - Corrected PCIDevice specified for DMA.
> 
> V2 -> V3:
> - Rebased.
> - Fixed PCIDevice reference in hw/net/igbvf.c.
> - Fixed TX packet switching when VM loopback is enabled.
> - Fixed VMDq enablement check.
> - Fixed RX descriptor length parser.
> - Fixed the definitions of RQDPC readers.
> - Implemented VLAN VM filter.
> - Implemented VT_CTL.Def_PL.
> - Implemented the combination of VMDq and RSS.
> - Noted that igb is tested with Windows HLK.
> 
> V1 -> V2:
> - Spun off e1000e general improvements to a distinct series.
> - Restored vnet_hdr offload as there seems nothing preventing from that.
> 
> Akihiko Odaki (8):
>    pcie: Introduce pcie_sriov_num_vfs
>    e1000: Split header files
>    Intrdocue igb device emulation
>    tests/qtest/e1000e-test: Fabricate ethernet header
>    tests/qtest/libqos/e1000e: Export macreg functions
>    igb: Introduce qtest for igb device
>    tests/avocado: Add igb test
>    docs/system/devices/igb: Add igb documentation
> 
>   MAINTAINERS                                   |    9 +
>   docs/system/device-emulation.rst              |    1 +
>   docs/system/devices/igb.rst                   |   71 +
>   hw/net/Kconfig                                |    5 +
>   hw/net/e1000.c                                |    1 +
>   hw/net/e1000_common.h                         |  102 +
>   hw/net/e1000_regs.h                           |  927 +---
>   hw/net/e1000e.c                               |    3 +-
>   hw/net/e1000e_core.c                          |    1 +
>   hw/net/e1000x_common.c                        |    1 +
>   hw/net/e1000x_common.h                        |   74 -
>   hw/net/e1000x_regs.h                          |  940 ++++
>   hw/net/igb.c                                  |  612 +++
>   hw/net/igb_common.h                           |  146 +
>   hw/net/igb_core.c                             | 4043 +++++++++++++++++
>   hw/net/igb_core.h                             |  144 +
>   hw/net/igb_regs.h                             |  648 +++
>   hw/net/igbvf.c                                |  327 ++
>   hw/net/meson.build                            |    2 +
>   hw/net/trace-events                           |   32 +
>   hw/pci/pcie_sriov.c                           |    5 +
>   include/hw/pci/pcie_sriov.h                   |    3 +
>   .../org.centos/stream/8/x86_64/test-avocado   |    1 +
>   tests/avocado/igb.py                          |   38 +
>   tests/qtest/e1000e-test.c                     |   25 +-
>   tests/qtest/fuzz/generic_fuzz_configs.h       |    5 +
>   tests/qtest/igb-test.c                        |  243 +
>   tests/qtest/libqos/e1000e.c                   |   12 -
>   tests/qtest/libqos/e1000e.h                   |   14 +
>   tests/qtest/libqos/igb.c                      |  185 +
>   tests/qtest/libqos/meson.build                |    1 +
>   tests/qtest/meson.build                       |    1 +
>   32 files changed, 7600 insertions(+), 1022 deletions(-)
>   create mode 100644 docs/system/devices/igb.rst
>   create mode 100644 hw/net/e1000_common.h
>   create mode 100644 hw/net/e1000x_regs.h
>   create mode 100644 hw/net/igb.c
>   create mode 100644 hw/net/igb_common.h
>   create mode 100644 hw/net/igb_core.c
>   create mode 100644 hw/net/igb_core.h
>   create mode 100644 hw/net/igb_regs.h
>   create mode 100644 hw/net/igbvf.c
>   create mode 100644 tests/avocado/igb.py
>   create mode 100644 tests/qtest/igb-test.c
>   create mode 100644 tests/qtest/libqos/igb.c
> 

Re: [PATCH v8 0/8] Introduce igb
Posted by Jason Wang 1 year, 2 months ago
在 2023/2/6 20:30, Akihiko Odaki 写道:
> Hi Jason,
>
> Let me remind that every patches in this series now has Reviewed-by: 
> or Acked-by: tag though I forgot to include tags the prior versions of 
> this series received to the latest version:


No worries, I can do that.

But when I try, it doesn't apply cleanly on master, are there any 
dependence I missed?

# git am *.eml
Applying: pcie: Introduce pcie_sriov_num_vfs
Applying: e1000: Split header files
error: patch failed: hw/net/e1000_regs.h:470
error: hw/net/e1000_regs.h: patch does not apply
error: patch failed: hw/net/e1000x_common.c:29
error: hw/net/e1000x_common.c: patch does not apply
Patch failed at 0002 e1000: Split header files
hint: Use 'git am --show-current-patch' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

Thanks


>
> "Introduce igb"
> https://lore.kernel.org/qemu-devel/DBBP189MB143365704198DC9A0684DEA595D09@DBBP189MB1433.EURP189.PROD.OUTLOOK.COM/ 
>
>
> "docs/system/devices/igb: Add igb documentation"
> https://lore.kernel.org/qemu-devel/741a0975-9f7a-b4bc-9651-cf45f03d1787@kaod.org/ 
>
>
> Regards,
> Akihiko Odaki
>
> On 2023/02/04 13:36, Akihiko Odaki wrote:
>> Based-on: <20230201033539.30049-1-akihiko.odaki@daynix.com>
>> ([PATCH v5 00/29] e1000x cleanups (preliminary for IGB))
>>
>> igb is a family of Intel's gigabit ethernet controllers. This series 
>> implements
>> 82576 emulation in particular. You can see the last patch for the 
>> documentation.
>>
>> Note that there is another effort to bring 82576 emulation. This 
>> series was
>> developed independently by Sriram Yagnaraman.
>> https://lists.gnu.org/archive/html/qemu-devel/2022-12/msg04670.html
>>
>> V7 -> V8:
>> - Removed obsolete patch
>>    "hw/net/net_tx_pkt: Introduce net_tx_pkt_get_eth_hdr" (Cédric Le 
>> Goater)
>>
>> V6 -> V7:
>> - Reordered statements in igb_receive_internal() so that checksum 
>> will be
>>    calculated only once and it will be more close to 
>> e1000e_receive_internal().
>>
>> V5 -> V6:
>> - Rebased.
>> - Renamed "test" to "packet" in tests/qtest/e1000e-test.c.
>> - Fixed Rx logic so that a Rx pool without enough space won't prevent 
>> other
>>    pools from receiving, based on Sriram Yagnaraman's work.
>>
>> V4 -> V5:
>> - Rebased.
>> - Squashed patches to copy from e1000e code and modify it.
>> - Listed the implemented features.
>> - Added a check for interrupts availablity on PF.
>> - Fixed the declaration of igb_receive_internal(). (Sriram Yagnaraman)
>>
>> V3 -> V4:
>> - Rebased.
>> - Corrected PCIDevice specified for DMA.
>>
>> V2 -> V3:
>> - Rebased.
>> - Fixed PCIDevice reference in hw/net/igbvf.c.
>> - Fixed TX packet switching when VM loopback is enabled.
>> - Fixed VMDq enablement check.
>> - Fixed RX descriptor length parser.
>> - Fixed the definitions of RQDPC readers.
>> - Implemented VLAN VM filter.
>> - Implemented VT_CTL.Def_PL.
>> - Implemented the combination of VMDq and RSS.
>> - Noted that igb is tested with Windows HLK.
>>
>> V1 -> V2:
>> - Spun off e1000e general improvements to a distinct series.
>> - Restored vnet_hdr offload as there seems nothing preventing from that.
>>
>> Akihiko Odaki (8):
>>    pcie: Introduce pcie_sriov_num_vfs
>>    e1000: Split header files
>>    Intrdocue igb device emulation
>>    tests/qtest/e1000e-test: Fabricate ethernet header
>>    tests/qtest/libqos/e1000e: Export macreg functions
>>    igb: Introduce qtest for igb device
>>    tests/avocado: Add igb test
>>    docs/system/devices/igb: Add igb documentation
>>
>>   MAINTAINERS                                   |    9 +
>>   docs/system/device-emulation.rst              |    1 +
>>   docs/system/devices/igb.rst                   |   71 +
>>   hw/net/Kconfig                                |    5 +
>>   hw/net/e1000.c                                |    1 +
>>   hw/net/e1000_common.h                         |  102 +
>>   hw/net/e1000_regs.h                           |  927 +---
>>   hw/net/e1000e.c                               |    3 +-
>>   hw/net/e1000e_core.c                          |    1 +
>>   hw/net/e1000x_common.c                        |    1 +
>>   hw/net/e1000x_common.h                        |   74 -
>>   hw/net/e1000x_regs.h                          |  940 ++++
>>   hw/net/igb.c                                  |  612 +++
>>   hw/net/igb_common.h                           |  146 +
>>   hw/net/igb_core.c                             | 4043 +++++++++++++++++
>>   hw/net/igb_core.h                             |  144 +
>>   hw/net/igb_regs.h                             |  648 +++
>>   hw/net/igbvf.c                                |  327 ++
>>   hw/net/meson.build                            |    2 +
>>   hw/net/trace-events                           |   32 +
>>   hw/pci/pcie_sriov.c                           |    5 +
>>   include/hw/pci/pcie_sriov.h                   |    3 +
>>   .../org.centos/stream/8/x86_64/test-avocado   |    1 +
>>   tests/avocado/igb.py                          |   38 +
>>   tests/qtest/e1000e-test.c                     |   25 +-
>>   tests/qtest/fuzz/generic_fuzz_configs.h       |    5 +
>>   tests/qtest/igb-test.c                        |  243 +
>>   tests/qtest/libqos/e1000e.c                   |   12 -
>>   tests/qtest/libqos/e1000e.h                   |   14 +
>>   tests/qtest/libqos/igb.c                      |  185 +
>>   tests/qtest/libqos/meson.build                |    1 +
>>   tests/qtest/meson.build                       |    1 +
>>   32 files changed, 7600 insertions(+), 1022 deletions(-)
>>   create mode 100644 docs/system/devices/igb.rst
>>   create mode 100644 hw/net/e1000_common.h
>>   create mode 100644 hw/net/e1000x_regs.h
>>   create mode 100644 hw/net/igb.c
>>   create mode 100644 hw/net/igb_common.h
>>   create mode 100644 hw/net/igb_core.c
>>   create mode 100644 hw/net/igb_core.h
>>   create mode 100644 hw/net/igb_regs.h
>>   create mode 100644 hw/net/igbvf.c
>>   create mode 100644 tests/avocado/igb.py
>>   create mode 100644 tests/qtest/igb-test.c
>>   create mode 100644 tests/qtest/libqos/igb.c
>>
>


Re: [PATCH v8 0/8] Introduce igb
Posted by Akihiko Odaki 1 year, 2 months ago
On 2023/02/20 16:01, Jason Wang wrote:
> 
> 在 2023/2/6 20:30, Akihiko Odaki 写道:
>> Hi Jason,
>>
>> Let me remind that every patches in this series now has Reviewed-by: 
>> or Acked-by: tag though I forgot to include tags the prior versions of 
>> this series received to the latest version:
> 
> 
> No worries, I can do that.
> 
> But when I try, it doesn't apply cleanly on master, are there any 
> dependence I missed?
> 
> # git am *.eml
> Applying: pcie: Introduce pcie_sriov_num_vfs
> Applying: e1000: Split header files
> error: patch failed: hw/net/e1000_regs.h:470
> error: hw/net/e1000_regs.h: patch does not apply
> error: patch failed: hw/net/e1000x_common.c:29
> error: hw/net/e1000x_common.c: patch does not apply
> Patch failed at 0002 e1000: Split header files
> hint: Use 'git am --show-current-patch' to see the failed patch
> When you have resolved this problem, run "git am --continue".
> If you prefer to skip this patch, run "git am --skip" instead.
> To restore the original branch and stop patching, run "git am --abort".

It is Based-on: <20230201033539.30049-1-akihiko.odaki@daynix.com>.
([PATCH v5 00/29] e1000x cleanups (preliminary for IGB))

Please apply the series first.

Regards,
Akihiko Odaki

> 
> Thanks
> 
> 
>>
>> "Introduce igb"
>> https://lore.kernel.org/qemu-devel/DBBP189MB143365704198DC9A0684DEA595D09@DBBP189MB1433.EURP189.PROD.OUTLOOK.COM/
>>
>> "docs/system/devices/igb: Add igb documentation"
>> https://lore.kernel.org/qemu-devel/741a0975-9f7a-b4bc-9651-cf45f03d1787@kaod.org/
>>
>> Regards,
>> Akihiko Odaki
>>
>> On 2023/02/04 13:36, Akihiko Odaki wrote:
>>> Based-on: <20230201033539.30049-1-akihiko.odaki@daynix.com>
>>> ([PATCH v5 00/29] e1000x cleanups (preliminary for IGB))
>>>
>>> igb is a family of Intel's gigabit ethernet controllers. This series 
>>> implements
>>> 82576 emulation in particular. You can see the last patch for the 
>>> documentation.
>>>
>>> Note that there is another effort to bring 82576 emulation. This 
>>> series was
>>> developed independently by Sriram Yagnaraman.
>>> https://lists.gnu.org/archive/html/qemu-devel/2022-12/msg04670.html
>>>
>>> V7 -> V8:
>>> - Removed obsolete patch
>>>    "hw/net/net_tx_pkt: Introduce net_tx_pkt_get_eth_hdr" (Cédric Le 
>>> Goater)
>>>
>>> V6 -> V7:
>>> - Reordered statements in igb_receive_internal() so that checksum 
>>> will be
>>>    calculated only once and it will be more close to 
>>> e1000e_receive_internal().
>>>
>>> V5 -> V6:
>>> - Rebased.
>>> - Renamed "test" to "packet" in tests/qtest/e1000e-test.c.
>>> - Fixed Rx logic so that a Rx pool without enough space won't prevent 
>>> other
>>>    pools from receiving, based on Sriram Yagnaraman's work.
>>>
>>> V4 -> V5:
>>> - Rebased.
>>> - Squashed patches to copy from e1000e code and modify it.
>>> - Listed the implemented features.
>>> - Added a check for interrupts availablity on PF.
>>> - Fixed the declaration of igb_receive_internal(). (Sriram Yagnaraman)
>>>
>>> V3 -> V4:
>>> - Rebased.
>>> - Corrected PCIDevice specified for DMA.
>>>
>>> V2 -> V3:
>>> - Rebased.
>>> - Fixed PCIDevice reference in hw/net/igbvf.c.
>>> - Fixed TX packet switching when VM loopback is enabled.
>>> - Fixed VMDq enablement check.
>>> - Fixed RX descriptor length parser.
>>> - Fixed the definitions of RQDPC readers.
>>> - Implemented VLAN VM filter.
>>> - Implemented VT_CTL.Def_PL.
>>> - Implemented the combination of VMDq and RSS.
>>> - Noted that igb is tested with Windows HLK.
>>>
>>> V1 -> V2:
>>> - Spun off e1000e general improvements to a distinct series.
>>> - Restored vnet_hdr offload as there seems nothing preventing from that.
>>>
>>> Akihiko Odaki (8):
>>>    pcie: Introduce pcie_sriov_num_vfs
>>>    e1000: Split header files
>>>    Intrdocue igb device emulation
>>>    tests/qtest/e1000e-test: Fabricate ethernet header
>>>    tests/qtest/libqos/e1000e: Export macreg functions
>>>    igb: Introduce qtest for igb device
>>>    tests/avocado: Add igb test
>>>    docs/system/devices/igb: Add igb documentation
>>>
>>>   MAINTAINERS                                   |    9 +
>>>   docs/system/device-emulation.rst              |    1 +
>>>   docs/system/devices/igb.rst                   |   71 +
>>>   hw/net/Kconfig                                |    5 +
>>>   hw/net/e1000.c                                |    1 +
>>>   hw/net/e1000_common.h                         |  102 +
>>>   hw/net/e1000_regs.h                           |  927 +---
>>>   hw/net/e1000e.c                               |    3 +-
>>>   hw/net/e1000e_core.c                          |    1 +
>>>   hw/net/e1000x_common.c                        |    1 +
>>>   hw/net/e1000x_common.h                        |   74 -
>>>   hw/net/e1000x_regs.h                          |  940 ++++
>>>   hw/net/igb.c                                  |  612 +++
>>>   hw/net/igb_common.h                           |  146 +
>>>   hw/net/igb_core.c                             | 4043 +++++++++++++++++
>>>   hw/net/igb_core.h                             |  144 +
>>>   hw/net/igb_regs.h                             |  648 +++
>>>   hw/net/igbvf.c                                |  327 ++
>>>   hw/net/meson.build                            |    2 +
>>>   hw/net/trace-events                           |   32 +
>>>   hw/pci/pcie_sriov.c                           |    5 +
>>>   include/hw/pci/pcie_sriov.h                   |    3 +
>>>   .../org.centos/stream/8/x86_64/test-avocado   |    1 +
>>>   tests/avocado/igb.py                          |   38 +
>>>   tests/qtest/e1000e-test.c                     |   25 +-
>>>   tests/qtest/fuzz/generic_fuzz_configs.h       |    5 +
>>>   tests/qtest/igb-test.c                        |  243 +
>>>   tests/qtest/libqos/e1000e.c                   |   12 -
>>>   tests/qtest/libqos/e1000e.h                   |   14 +
>>>   tests/qtest/libqos/igb.c                      |  185 +
>>>   tests/qtest/libqos/meson.build                |    1 +
>>>   tests/qtest/meson.build                       |    1 +
>>>   32 files changed, 7600 insertions(+), 1022 deletions(-)
>>>   create mode 100644 docs/system/devices/igb.rst
>>>   create mode 100644 hw/net/e1000_common.h
>>>   create mode 100644 hw/net/e1000x_regs.h
>>>   create mode 100644 hw/net/igb.c
>>>   create mode 100644 hw/net/igb_common.h
>>>   create mode 100644 hw/net/igb_core.c
>>>   create mode 100644 hw/net/igb_core.h
>>>   create mode 100644 hw/net/igb_regs.h
>>>   create mode 100644 hw/net/igbvf.c
>>>   create mode 100644 tests/avocado/igb.py
>>>   create mode 100644 tests/qtest/igb-test.c
>>>   create mode 100644 tests/qtest/libqos/igb.c
>>>
>>
> 

Re: [PATCH v8 0/8] Introduce igb
Posted by Jason Wang 1 year, 2 months ago
On Mon, Feb 20, 2023 at 3:04 PM Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>
> On 2023/02/20 16:01, Jason Wang wrote:
> >
> > 在 2023/2/6 20:30, Akihiko Odaki 写道:
> >> Hi Jason,
> >>
> >> Let me remind that every patches in this series now has Reviewed-by:
> >> or Acked-by: tag though I forgot to include tags the prior versions of
> >> this series received to the latest version:
> >
> >
> > No worries, I can do that.
> >
> > But when I try, it doesn't apply cleanly on master, are there any
> > dependence I missed?
> >
> > # git am *.eml
> > Applying: pcie: Introduce pcie_sriov_num_vfs
> > Applying: e1000: Split header files
> > error: patch failed: hw/net/e1000_regs.h:470
> > error: hw/net/e1000_regs.h: patch does not apply
> > error: patch failed: hw/net/e1000x_common.c:29
> > error: hw/net/e1000x_common.c: patch does not apply
> > Patch failed at 0002 e1000: Split header files
> > hint: Use 'git am --show-current-patch' to see the failed patch
> > When you have resolved this problem, run "git am --continue".
> > If you prefer to skip this patch, run "git am --skip" instead.
> > To restore the original branch and stop patching, run "git am --abort".
>
> It is Based-on: <20230201033539.30049-1-akihiko.odaki@daynix.com>.
> ([PATCH v5 00/29] e1000x cleanups (preliminary for IGB))
>
> Please apply the series first.

The e1000x cleanups applies cleanly, but when I try to apply igb series, I got:

# git am *.eml
Applying: pcie: Introduce pcie_sriov_num_vfs
Applying: e1000: Split header files
Applying: Intrdocue igb device emulation
Applying: tests/qtest/e1000e-test: Fabricate ethernet header
Applying: tests/qtest/libqos/e1000e: Export macreg functions
Applying: igb: Introduce qtest for igb device
error: patch failed: tests/qtest/meson.build:256
error: tests/qtest/meson.build: patch does not apply
Patch failed at 0006 igb: Introduce qtest for igb device
hint: Use 'git am --show-current-patch' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

The patches seem to require a rebase.

Thanks

>
> Regards,
> Akihiko Odaki
>
> >
> > Thanks
> >
> >
> >>
> >> "Introduce igb"
> >> https://lore.kernel.org/qemu-devel/DBBP189MB143365704198DC9A0684DEA595D09@DBBP189MB1433.EURP189.PROD.OUTLOOK.COM/
> >>
> >> "docs/system/devices/igb: Add igb documentation"
> >> https://lore.kernel.org/qemu-devel/741a0975-9f7a-b4bc-9651-cf45f03d1787@kaod.org/
> >>
> >> Regards,
> >> Akihiko Odaki
> >>
> >> On 2023/02/04 13:36, Akihiko Odaki wrote:
> >>> Based-on: <20230201033539.30049-1-akihiko.odaki@daynix.com>
> >>> ([PATCH v5 00/29] e1000x cleanups (preliminary for IGB))
> >>>
> >>> igb is a family of Intel's gigabit ethernet controllers. This series
> >>> implements
> >>> 82576 emulation in particular. You can see the last patch for the
> >>> documentation.
> >>>
> >>> Note that there is another effort to bring 82576 emulation. This
> >>> series was
> >>> developed independently by Sriram Yagnaraman.
> >>> https://lists.gnu.org/archive/html/qemu-devel/2022-12/msg04670.html
> >>>
> >>> V7 -> V8:
> >>> - Removed obsolete patch
> >>>    "hw/net/net_tx_pkt: Introduce net_tx_pkt_get_eth_hdr" (Cédric Le
> >>> Goater)
> >>>
> >>> V6 -> V7:
> >>> - Reordered statements in igb_receive_internal() so that checksum
> >>> will be
> >>>    calculated only once and it will be more close to
> >>> e1000e_receive_internal().
> >>>
> >>> V5 -> V6:
> >>> - Rebased.
> >>> - Renamed "test" to "packet" in tests/qtest/e1000e-test.c.
> >>> - Fixed Rx logic so that a Rx pool without enough space won't prevent
> >>> other
> >>>    pools from receiving, based on Sriram Yagnaraman's work.
> >>>
> >>> V4 -> V5:
> >>> - Rebased.
> >>> - Squashed patches to copy from e1000e code and modify it.
> >>> - Listed the implemented features.
> >>> - Added a check for interrupts availablity on PF.
> >>> - Fixed the declaration of igb_receive_internal(). (Sriram Yagnaraman)
> >>>
> >>> V3 -> V4:
> >>> - Rebased.
> >>> - Corrected PCIDevice specified for DMA.
> >>>
> >>> V2 -> V3:
> >>> - Rebased.
> >>> - Fixed PCIDevice reference in hw/net/igbvf.c.
> >>> - Fixed TX packet switching when VM loopback is enabled.
> >>> - Fixed VMDq enablement check.
> >>> - Fixed RX descriptor length parser.
> >>> - Fixed the definitions of RQDPC readers.
> >>> - Implemented VLAN VM filter.
> >>> - Implemented VT_CTL.Def_PL.
> >>> - Implemented the combination of VMDq and RSS.
> >>> - Noted that igb is tested with Windows HLK.
> >>>
> >>> V1 -> V2:
> >>> - Spun off e1000e general improvements to a distinct series.
> >>> - Restored vnet_hdr offload as there seems nothing preventing from that.
> >>>
> >>> Akihiko Odaki (8):
> >>>    pcie: Introduce pcie_sriov_num_vfs
> >>>    e1000: Split header files
> >>>    Intrdocue igb device emulation
> >>>    tests/qtest/e1000e-test: Fabricate ethernet header
> >>>    tests/qtest/libqos/e1000e: Export macreg functions
> >>>    igb: Introduce qtest for igb device
> >>>    tests/avocado: Add igb test
> >>>    docs/system/devices/igb: Add igb documentation
> >>>
> >>>   MAINTAINERS                                   |    9 +
> >>>   docs/system/device-emulation.rst              |    1 +
> >>>   docs/system/devices/igb.rst                   |   71 +
> >>>   hw/net/Kconfig                                |    5 +
> >>>   hw/net/e1000.c                                |    1 +
> >>>   hw/net/e1000_common.h                         |  102 +
> >>>   hw/net/e1000_regs.h                           |  927 +---
> >>>   hw/net/e1000e.c                               |    3 +-
> >>>   hw/net/e1000e_core.c                          |    1 +
> >>>   hw/net/e1000x_common.c                        |    1 +
> >>>   hw/net/e1000x_common.h                        |   74 -
> >>>   hw/net/e1000x_regs.h                          |  940 ++++
> >>>   hw/net/igb.c                                  |  612 +++
> >>>   hw/net/igb_common.h                           |  146 +
> >>>   hw/net/igb_core.c                             | 4043 +++++++++++++++++
> >>>   hw/net/igb_core.h                             |  144 +
> >>>   hw/net/igb_regs.h                             |  648 +++
> >>>   hw/net/igbvf.c                                |  327 ++
> >>>   hw/net/meson.build                            |    2 +
> >>>   hw/net/trace-events                           |   32 +
> >>>   hw/pci/pcie_sriov.c                           |    5 +
> >>>   include/hw/pci/pcie_sriov.h                   |    3 +
> >>>   .../org.centos/stream/8/x86_64/test-avocado   |    1 +
> >>>   tests/avocado/igb.py                          |   38 +
> >>>   tests/qtest/e1000e-test.c                     |   25 +-
> >>>   tests/qtest/fuzz/generic_fuzz_configs.h       |    5 +
> >>>   tests/qtest/igb-test.c                        |  243 +
> >>>   tests/qtest/libqos/e1000e.c                   |   12 -
> >>>   tests/qtest/libqos/e1000e.h                   |   14 +
> >>>   tests/qtest/libqos/igb.c                      |  185 +
> >>>   tests/qtest/libqos/meson.build                |    1 +
> >>>   tests/qtest/meson.build                       |    1 +
> >>>   32 files changed, 7600 insertions(+), 1022 deletions(-)
> >>>   create mode 100644 docs/system/devices/igb.rst
> >>>   create mode 100644 hw/net/e1000_common.h
> >>>   create mode 100644 hw/net/e1000x_regs.h
> >>>   create mode 100644 hw/net/igb.c
> >>>   create mode 100644 hw/net/igb_common.h
> >>>   create mode 100644 hw/net/igb_core.c
> >>>   create mode 100644 hw/net/igb_core.h
> >>>   create mode 100644 hw/net/igb_regs.h
> >>>   create mode 100644 hw/net/igbvf.c
> >>>   create mode 100644 tests/avocado/igb.py
> >>>   create mode 100644 tests/qtest/igb-test.c
> >>>   create mode 100644 tests/qtest/libqos/igb.c
> >>>
> >>
> >
>
RE: [PATCH v8 0/8] Introduce igb
Posted by Sriram Yagnaraman 1 year, 2 months ago
> -----Original Message-----
> From: Akihiko Odaki <akihiko.odaki@daynix.com>
> Sent: Saturday, 4 February 2023 05:36
> Cc: Jason Wang <jasowang@redhat.com>; Dmitry Fleytman
> <dmitry.fleytman@gmail.com>; Michael S . Tsirkin <mst@redhat.com>;
> Marcel Apfelbaum <marcel.apfelbaum@gmail.com>; Alex Bennée
> <alex.bennee@linaro.org>; Philippe Mathieu-Daudé <philmd@linaro.org>;
> Thomas Huth <thuth@redhat.com>; Wainer dos Santos Moschetta
> <wainersm@redhat.com>; Beraldo Leal <bleal@redhat.com>; Cleber Rosa
> <crosa@redhat.com>; Laurent Vivier <lvivier@redhat.com>; Paolo Bonzini
> <pbonzini@redhat.com>; Alexander Bulekov <alxndr@bu.edu>; Bandan Das
> <bsd@redhat.com>; Stefan Hajnoczi <stefanha@redhat.com>; Darren Kenny
> <darren.kenny@oracle.com>; Qiuhao Li <Qiuhao.Li@outlook.com>; qemu-
> devel@nongnu.org; qemu-ppc@nongnu.org; devel@daynix.com; Yan
> Vugenfirer <yvugenfi@redhat.com>; Yuri Benditovich
> <yuri.benditovich@daynix.com>; Sriram Yagnaraman
> <sriram.yagnaraman@est.tech>; Gal Hammer <gal.hammer@sap.com>;
> Akihiko Odaki <akihiko.odaki@daynix.com>
> Subject: [PATCH v8 0/8] Introduce igb
> 
> Based-on: <20230201033539.30049-1-akihiko.odaki@daynix.com>
> ([PATCH v5 00/29] e1000x cleanups (preliminary for IGB))
> 
> igb is a family of Intel's gigabit ethernet controllers. This series implements
> 82576 emulation in particular. You can see the last patch for the
> documentation.
> 
> Note that there is another effort to bring 82576 emulation. This series was
> developed independently by Sriram Yagnaraman.
> https://lists.gnu.org/archive/html/qemu-devel/2022-12/msg04670.html
> 
> V7 -> V8:
> - Removed obsolete patch
>   "hw/net/net_tx_pkt: Introduce net_tx_pkt_get_eth_hdr" (Cédric Le Goater)
> 
> V6 -> V7:
> - Reordered statements in igb_receive_internal() so that checksum will be
>   calculated only once and it will be more close to e1000e_receive_internal().
> 
> V5 -> V6:
> - Rebased.
> - Renamed "test" to "packet" in tests/qtest/e1000e-test.c.
> - Fixed Rx logic so that a Rx pool without enough space won't prevent other
>   pools from receiving, based on Sriram Yagnaraman's work.
> 
> V4 -> V5:
> - Rebased.
> - Squashed patches to copy from e1000e code and modify it.
> - Listed the implemented features.
> - Added a check for interrupts availablity on PF.
> - Fixed the declaration of igb_receive_internal(). (Sriram Yagnaraman)
> 
> V3 -> V4:
> - Rebased.
> - Corrected PCIDevice specified for DMA.
> 
> V2 -> V3:
> - Rebased.
> - Fixed PCIDevice reference in hw/net/igbvf.c.
> - Fixed TX packet switching when VM loopback is enabled.
> - Fixed VMDq enablement check.
> - Fixed RX descriptor length parser.
> - Fixed the definitions of RQDPC readers.
> - Implemented VLAN VM filter.
> - Implemented VT_CTL.Def_PL.
> - Implemented the combination of VMDq and RSS.
> - Noted that igb is tested with Windows HLK.
> 
> V1 -> V2:
> - Spun off e1000e general improvements to a distinct series.
> - Restored vnet_hdr offload as there seems nothing preventing from that.
> 
> Akihiko Odaki (8):
>   pcie: Introduce pcie_sriov_num_vfs
>   e1000: Split header files
>   Intrdocue igb device emulation
>   tests/qtest/e1000e-test: Fabricate ethernet header
>   tests/qtest/libqos/e1000e: Export macreg functions
>   igb: Introduce qtest for igb device
>   tests/avocado: Add igb test
>   docs/system/devices/igb: Add igb documentation
> 
>  MAINTAINERS                                   |    9 +
>  docs/system/device-emulation.rst              |    1 +
>  docs/system/devices/igb.rst                   |   71 +
>  hw/net/Kconfig                                |    5 +
>  hw/net/e1000.c                                |    1 +
>  hw/net/e1000_common.h                         |  102 +
>  hw/net/e1000_regs.h                           |  927 +---
>  hw/net/e1000e.c                               |    3 +-
>  hw/net/e1000e_core.c                          |    1 +
>  hw/net/e1000x_common.c                        |    1 +
>  hw/net/e1000x_common.h                        |   74 -
>  hw/net/e1000x_regs.h                          |  940 ++++
>  hw/net/igb.c                                  |  612 +++
>  hw/net/igb_common.h                           |  146 +
>  hw/net/igb_core.c                             | 4043 +++++++++++++++++
>  hw/net/igb_core.h                             |  144 +
>  hw/net/igb_regs.h                             |  648 +++
>  hw/net/igbvf.c                                |  327 ++
>  hw/net/meson.build                            |    2 +
>  hw/net/trace-events                           |   32 +
>  hw/pci/pcie_sriov.c                           |    5 +
>  include/hw/pci/pcie_sriov.h                   |    3 +
>  .../org.centos/stream/8/x86_64/test-avocado   |    1 +
>  tests/avocado/igb.py                          |   38 +
>  tests/qtest/e1000e-test.c                     |   25 +-
>  tests/qtest/fuzz/generic_fuzz_configs.h       |    5 +
>  tests/qtest/igb-test.c                        |  243 +
>  tests/qtest/libqos/e1000e.c                   |   12 -
>  tests/qtest/libqos/e1000e.h                   |   14 +
>  tests/qtest/libqos/igb.c                      |  185 +
>  tests/qtest/libqos/meson.build                |    1 +
>  tests/qtest/meson.build                       |    1 +
>  32 files changed, 7600 insertions(+), 1022 deletions(-)  create mode 100644
> docs/system/devices/igb.rst  create mode 100644 hw/net/e1000_common.h
> create mode 100644 hw/net/e1000x_regs.h  create mode 100644
> hw/net/igb.c  create mode 100644 hw/net/igb_common.h  create mode
> 100644 hw/net/igb_core.c  create mode 100644 hw/net/igb_core.h  create
> mode 100644 hw/net/igb_regs.h  create mode 100644 hw/net/igbvf.c  create
> mode 100644 tests/avocado/igb.py  create mode 100644 tests/qtest/igb-
> test.c  create mode 100644 tests/qtest/libqos/igb.c

Tested the series with Linux kernel v6.1 igb/igbvf drivers, looks great to me.
Reviewed-by: Sriram Yagnaraman <sriram.yagnaraman@est.tech>
Tested-by: Sriram Yagnaraman <sriram.yagnaraman@est.tech>

> 
> --
> 2.39.1