← Documents Documentation/networking/device_drivers/ethernet/intel/fm10k.rst GitHub 원문 ↗

Linux 6.18.37 · Networking

Linux Base Driver for Intel(R) Ethernet Multi-host Controller

Intel fm10k의 flow-control 제한, SR-IOV VF와 VLAN 전환 절차, Jumbo Frame, GRO 및 ethtool flow-hash filtering을 설명합니다.

Source pathDocumentation/networking/device_drivers/ethernet/intel/fm10k.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

fm10k.rst:1-137

fm10k는 switch host interface 특성상 pause-frame Flow Control이 없고, SR-IOV VF를 sysfs에서 관리합니다. VF VLAN 변경은 기존 filter 제거 후 새 filter 추가 순서를 지켜야 하며, receive 성능은 multi-page Jumbo buffer와 software GRO로 보완합니다.

Flow Control 부재
switch host interface trafficFlow Control 미지원pause frame 없음frame drop 가능

pause frame을 보내지 않으므로 congestion에서 frame drop 가능성을 고려해야 합니다.

VF 관리
작업범위
VF 활성화$num_vf_enabled1-64
VF 비활성화00
VF mapping 확인sysfsOS가 지원하는 경우

sriov_numvfs에 쓰는 값으로 VF 수를 제어합니다.

VF VLAN 변경 순서
VF 0: VLAN 100vlan 0으로 기존 filter 삭제vlan 200으로 새 filter 추가VF 0: VLAN 200

hardware VLAN filtering이 유지되므로 이전 filter를 먼저 제거합니다.

Jumbo Frame 구성
항목값·동작
활성화MTU > 1500
예시 MTU9000
최대 MTU15342
최대 frame15364 bytes
수신 bufferpacket당 page-size buffer 여러 개

MTU와 receive buffer 운용 조건입니다.

GRO receive 처리
여러 Rx packetin-kernel software GRO큰 data chunklarge Rx load의 CPU 사용 감소
TCP 외 protocolGRO coalescingbridging / iSCSI에서도 안전

여러 Rx packet을 큰 chunk로 합쳐 protocol 처리 비용을 줄입니다.

ethtool flow filtering
작업Command·option
classification 조회-n --show-nfc
hash option 조회rx-flow-hash <traffic-type>
classification 구성-N --config-nfc
L4 bytes 0-1f
L4 bytes 2-3n

조회와 구성 command 및 hash selector입니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0+
2
3 =============================================================
4 Linux Base Driver for Intel(R) Ethernet Multi-host Controller
5 =============================================================
6
7 August 20, 2018
8 Copyright(c) 2015-2018 Intel Corporation.
9
10 Contents
11 ========
12 - Identifying Your Adapter
13 - Additional Configurations
14 - Performance Tuning
15 - Known Issues
16 - Support
17
18 Identifying Your Adapter
19 ========================
20 The driver in this release is compatible with devices based on the Intel(R)
21 Ethernet Multi-host Controller.
22
23 For information on how to identify your adapter, and for the latest Intel
24 network drivers, refer to the Intel Support website:
25 https://www.intel.com/support
26
27
28 Flow Control
29 ------------
30 The Intel(R) Ethernet Switch Host Interface Driver does not support Flow
31 Control. It will not send pause frames. This may result in dropped frames.
32
33
34 Virtual Functions (VFs)
35 -----------------------
36 Use sysfs to enable VFs.
37 Valid Range: 0-64
38
39 For example::
40
41 echo $num_vf_enabled > /sys/class/net/$dev/device/sriov_numvfs //enable VFs
42 echo 0 > /sys/class/net/$dev/device/sriov_numvfs //disable VFs
43
44 NOTE: Neither the device nor the driver control how VFs are mapped into config
45 space. Bus layout will vary by operating system. On operating systems that
46 support it, you can check sysfs to find the mapping.
47
48 NOTE: When SR-IOV mode is enabled, hardware VLAN filtering and VLAN tag
49 stripping/insertion will remain enabled. Please remove the old VLAN filter
50 before the new VLAN filter is added. For example::
51
52 ip link set eth0 vf 0 vlan 100 // set vlan 100 for VF 0
53 ip link set eth0 vf 0 vlan 0 // Delete vlan 100
54 ip link set eth0 vf 0 vlan 200 // set a new vlan 200 for VF 0
55
56
57 Additional Features and Configurations
58 ======================================
59
60 Jumbo Frames
61 ------------
62 Jumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU)
63 to a value larger than the default value of 1500.
64
65 Use the ifconfig command to increase the MTU size. For example, enter the
66 following where <x> is the interface number::
67
68 ifconfig eth<x> mtu 9000 up
69
70 Alternatively, you can use the ip command as follows::
71
72 ip link set mtu 9000 dev eth<x>
73 ip link set up dev eth<x>
74
75 This setting is not saved across reboots. The setting change can be made
76 permanent by adding 'MTU=9000' to the file:
77
78 - For RHEL: /etc/sysconfig/network-scripts/ifcfg-eth<x>
79 - For SLES: /etc/sysconfig/network/<config_file>
80
81 NOTE: The maximum MTU setting for Jumbo Frames is 15342. This value coincides
82 with the maximum Jumbo Frames size of 15364 bytes.
83
84 NOTE: This driver will attempt to use multiple page sized buffers to receive
85 each jumbo packet. This should help to avoid buffer starvation issues when
86 allocating receive packets.
87
88
89 Generic Receive Offload, aka GRO
90 --------------------------------
91 The driver supports the in-kernel software implementation of GRO. GRO has
92 shown that by coalescing Rx traffic into larger chunks of data, CPU
93 utilization can be significantly reduced when under large Rx load. GRO is an
94 evolution of the previously-used LRO interface. GRO is able to coalesce
95 other protocols besides TCP. It's also safe to use with configurations that
96 are problematic for LRO, namely bridging and iSCSI.
97
98
99
100 Supported ethtool Commands and Options for Filtering
101 ----------------------------------------------------
102 -n --show-nfc
103 Retrieves the receive network flow classification configurations.
104
105 rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|tcp6|udp6|ah6|esp6|sctp6
106 Retrieves the hash options for the specified network traffic type.
107
108 -N --config-nfc
109 Configures the receive network flow classification.
110
111 rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|tcp6|udp6|ah6|esp6|sctp6 m|v|t|s|d|f|n|r
112 Configures the hash options for the specified network traffic type.
113
114 - udp4: UDP over IPv4
115 - udp6: UDP over IPv6
116 - f Hash on bytes 0 and 1 of the Layer 4 header of the rx packet.
117 - n Hash on bytes 2 and 3 of the Layer 4 header of the rx packet.
118
119
120 Known Issues/Troubleshooting
121 ============================
122
123 Enabling SR-IOV in a 64-bit Microsoft Windows Server 2012/R2 guest OS under Linux KVM
124 -------------------------------------------------------------------------------------
125 KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM. This
126 includes traditional PCIe devices, as well as SR-IOV-capable devices based on
127 the Intel Ethernet Controller XL710.
128
129
130 Support
131 =======
132 For general information, go to the Intel support website at:
133 https://www.intel.com/support/
134
135 If an issue is identified with the released source code on a supported kernel
136 with a supported adapter, email the specific information related to the issue
137 to intel-wired-lan@lists.osuosl.org.
138

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

문서 범위와 adapter 식별

1-27

이 문서는 `GPL-2.0+` 라이선스를 따릅니다.

Intel(R) Ethernet Multi-host Controller용 Linux Base Driver

2018년 8월 20일

Copyright(c) 2015-2018 Intel Corporation.

목차

  • Adapter 식별
  • 추가 configuration
  • Performance tuning
  • 알려진 문제
  • 지원

Adapter 식별

이 release의 드라이버는 Intel(R) Ethernet Multi-host Controller 기반 device와 호환됩니다.

adapter 식별 방법과 최신 Intel network driver는 Intel Support website `https://www.intel.com/support`를 참고하십시오.

.. SPDX-License-Identifier: GPL-2.0+

=============================================================
Linux Base Driver for Intel(R) Ethernet Multi-host Controller
=============================================================

August 20, 2018
Copyright(c) 2015-2018 Intel Corporation.

Contents
========
- Identifying Your Adapter
- Additional Configurations
- Performance Tuning
- Known Issues
- Support

Identifying Your Adapter
========================
The driver in this release is compatible with devices based on the Intel(R)
Ethernet Multi-host Controller.

For information on how to identify your adapter, and for the latest Intel
network drivers, refer to the Intel Support website:
https://www.intel.com/support

Flow Control과 Virtual Function

28-56

Flow Control

Intel(R) Ethernet Switch Host Interface Driver는 Flow Control을 지원하지 않으며 pause frame을 보내지 않습니다. 이로 인해 frame이 drop될 수 있습니다.

Virtual Function(VF)

sysfs로 VF를 활성화합니다. 유효 범위는 `0-64`입니다.

echo $num_vf_enabled > /sys/class/net/$dev/device/sriov_numvfs //enable VFs
echo 0 > /sys/class/net/$dev/device/sriov_numvfs //disable VFs

device와 driver 어느 쪽도 VF가 configuration space에 mapping되는 방식을 제어하지 않습니다. bus layout은 operating system마다 다르며 지원하는 OS에서는 sysfs에서 mapping을 확인할 수 있습니다.

SR-IOV mode가 활성화되어도 hardware VLAN filtering과 VLAN tag stripping/insertion은 계속 활성화됩니다. 새 VLAN filter를 추가하기 전에 이전 VLAN filter를 제거해야 합니다.

ip link set eth0 vf 0 vlan 100 // set vlan 100 for VF 0
ip link set eth0 vf 0 vlan 0   // delete vlan 100
ip link set eth0 vf 0 vlan 200 // set a new vlan 200 for VF 0
Flow Control
------------
The Intel(R) Ethernet Switch Host Interface Driver does not support Flow
Control. It will not send pause frames. This may result in dropped frames.


Virtual Functions (VFs)
-----------------------
Use sysfs to enable VFs.
Valid Range: 0-64

For example::

    echo $num_vf_enabled > /sys/class/net/$dev/device/sriov_numvfs //enable VFs
    echo 0 > /sys/class/net/$dev/device/sriov_numvfs //disable VFs

NOTE: Neither the device nor the driver control how VFs are mapped into config
space. Bus layout will vary by operating system. On operating systems that
support it, you can check sysfs to find the mapping.

NOTE: When SR-IOV mode is enabled, hardware VLAN filtering and VLAN tag
stripping/insertion will remain enabled. Please remove the old VLAN filter
before the new VLAN filter is added. For example::

    ip link set eth0 vf 0 vlan 100        // set vlan 100 for VF 0
    ip link set eth0 vf 0 vlan 0        // Delete vlan 100
    ip link set eth0 vf 0 vlan 200        // set a new vlan 200 for VF 0

Jumbo Frame

57-88

추가 기능과 configuration

Jumbo Frame

MTU(Maximum Transmission Unit)를 default `1500`보다 크게 변경하면 Jumbo Frame 지원이 활성화됩니다.

ifconfig 또는 ip command로 MTU를 늘릴 수 있습니다.

ifconfig eth<x> mtu 9000 up
ip link set mtu 9000 dev eth<x>
ip link set up dev eth<x>

이 설정은 reboot 후 유지되지 않습니다. 영구 설정은 RHEL의 `/etc/sysconfig/network-scripts/ifcfg-eth<x>` 또는 SLES의 `/etc/sysconfig/network/<config_file>`에 `MTU=9000`을 추가합니다.

Jumbo Frame의 최대 MTU는 `15342`, 최대 frame size는 `15364 bytes`입니다.

드라이버는 jumbo packet 하나를 수신할 때 page 크기 buffer 여러 개를 사용하려고 합니다. 이는 receive packet 할당 시 buffer starvation을 피하는 데 도움이 됩니다.

Additional Features and Configurations
======================================

Jumbo Frames
------------
Jumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU)
to a value larger than the default value of 1500.

Use the ifconfig command to increase the MTU size. For example, enter the
following where <x> is the interface number::

    ifconfig eth<x> mtu 9000 up

Alternatively, you can use the ip command as follows::

    ip link set mtu 9000 dev eth<x>
    ip link set up dev eth<x>

This setting is not saved across reboots. The setting change can be made
permanent by adding 'MTU=9000' to the file:

- For RHEL: /etc/sysconfig/network-scripts/ifcfg-eth<x>
- For SLES: /etc/sysconfig/network/<config_file>

NOTE: The maximum MTU setting for Jumbo Frames is 15342. This value coincides
with the maximum Jumbo Frames size of 15364 bytes.

NOTE: This driver will attempt to use multiple page sized buffers to receive
each jumbo packet. This should help to avoid buffer starvation issues when
allocating receive packets.

Generic Receive Offload

89-99

Generic Receive Offload(GRO)

드라이버는 kernel 내부의 software GRO 구현을 지원합니다. GRO는 Rx traffic을 더 큰 data chunk로 합쳐 large Rx load에서 CPU utilization을 크게 줄일 수 있습니다.

GRO는 이전 LRO interface의 발전형으로 TCP 이외의 protocol도 합칠 수 있습니다. bridging과 iSCSI처럼 LRO에 문제가 되는 configuration에서도 안전하게 사용할 수 있습니다.

Generic Receive Offload, aka GRO
--------------------------------
The driver supports the in-kernel software implementation of GRO. GRO has
shown that by coalescing Rx traffic into larger chunks of data, CPU
utilization can be significantly reduced when under large Rx load. GRO is an
evolution of the previously-used LRO interface. GRO is able to coalesce
other protocols besides TCP. It's also safe to use with configurations that
are problematic for LRO, namely bridging and iSCSI.


Filtering용 ethtool command

100-119

Filtering을 지원하는 ethtool command와 option

`-n --show-nfc`는 receive network flow classification configuration을 조회합니다.

`rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|tcp6|udp6|ah6|esp6|sctp6`는 지정한 network traffic type의 hash option을 조회합니다.

`-N --config-nfc`는 receive network flow classification을 구성합니다.

`rx-flow-hash ... m|v|t|s|d|f|n|r` 형식으로 지정한 traffic type의 hash option을 구성합니다.

  • `udp4`: IPv4 위의 UDP
  • `udp6`: IPv6 위의 UDP
  • `f`: Rx packet Layer 4 header의 byte 0과 1을 hash
  • `n`: Rx packet Layer 4 header의 byte 2와 3을 hash
Supported ethtool Commands and Options for Filtering
----------------------------------------------------
-n --show-nfc
  Retrieves the receive network flow classification configurations.

rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|tcp6|udp6|ah6|esp6|sctp6
  Retrieves the hash options for the specified network traffic type.

-N --config-nfc
  Configures the receive network flow classification.

rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|tcp6|udp6|ah6|esp6|sctp6 m|v|t|s|d|f|n|r
  Configures the hash options for the specified network traffic type.

- udp4: UDP over IPv4
- udp6: UDP over IPv6
- f Hash on bytes 0 and 1 of the Layer 4 header of the rx packet.
- n Hash on bytes 2 and 3 of the Layer 4 header of the rx packet.

알려진 문제와 troubleshooting

120-129

알려진 문제와 troubleshooting

Linux KVM 아래의 64-bit Microsoft Windows Server 2012/R2 guest OS에서 SR-IOV를 활성화하는 경우를 다룹니다.

KVM Hypervisor/VMM은 PCIe device를 VM에 direct assignment하는 기능을 지원합니다. 여기에는 전통적인 PCIe device와 Intel Ethernet Controller XL710 기반 SR-IOV-capable device가 포함됩니다.

Known Issues/Troubleshooting
============================

Enabling SR-IOV in a 64-bit Microsoft Windows Server 2012/R2 guest OS under Linux KVM
-------------------------------------------------------------------------------------
KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM. This
includes traditional PCIe devices, as well as SR-IOV-capable devices based on
the Intel Ethernet Controller XL710.

지원

130-137

지원

일반 정보는 Intel support website `https://www.intel.com/support/`를 참고하십시오.

지원되는 adapter와 kernel에서 공개 source code의 문제가 확인되면 구체적인 정보를 `intel-wired-lan@lists.osuosl.org`로 보내십시오.

Support
=======
For general information, go to the Intel support website at:
https://www.intel.com/support/

If an issue is identified with the released source code on a supported kernel
with a supported adapter, email the specific information related to the issue
to intel-wired-lan@lists.osuosl.org.