xref: /freebsd/sys/dev/e1000/README (revision 78d146160dc5339c9cdf7799551bcc442a6eb95b)
1*702cac6cSKevin BowlingFreeBSD* Driver for Intel(R) Ethernet
2*702cac6cSKevin Bowling=====================================
38cfa0ad2SJack F Vogel
4*702cac6cSKevin BowlingAugust 7, 2019
58cfa0ad2SJack F Vogel
68cfa0ad2SJack F VogelContents
78cfa0ad2SJack F Vogel========
88cfa0ad2SJack F Vogel
98cfa0ad2SJack F Vogel- Overview
108cfa0ad2SJack F Vogel- Identifying Your Adapter
118cfa0ad2SJack F Vogel- Building and Installation
12*702cac6cSKevin Bowling- Additional Features and Configurations
13*702cac6cSKevin Bowling- Known Issues/Troubleshooting
148cfa0ad2SJack F Vogel- Support
158cfa0ad2SJack F Vogel- License
168cfa0ad2SJack F Vogel
178cfa0ad2SJack F Vogel
188cfa0ad2SJack F VogelOverview
198cfa0ad2SJack F Vogel========
20*702cac6cSKevin BowlingThis file describes the FreeBSD* driver for Intel(R) Ethernet. This driver has
21*702cac6cSKevin Bowlingbeen developed for use with all community-supported versions of FreeBSD.
228cfa0ad2SJack F Vogel
238cfa0ad2SJack F VogelFor questions related to hardware requirements, refer to the documentation
24*702cac6cSKevin Bowlingsupplied with your Intel Ethernet Adapter. All hardware requirements listed
258cfa0ad2SJack F Vogelapply to use with FreeBSD.
268cfa0ad2SJack F Vogel
278cfa0ad2SJack F Vogel
288cfa0ad2SJack F VogelIdentifying Your Adapter
298cfa0ad2SJack F Vogel========================
30*702cac6cSKevin BowlingThis release includes two gigabit FreeBSD base Drivers for Intel(R) Ethernet.
31*702cac6cSKevin BowlingThese drivers are em and igb.
328cfa0ad2SJack F Vogel
33*702cac6cSKevin Bowling- The igb driver supports all 82575 and 82576-based gigabit network connections.
34*702cac6cSKevin Bowling- The em driver supports all other gigabit network connections.
35*702cac6cSKevin Bowling- Gigabit devices base on the Intel(R) Ethernet Controller X722 are supported by
36*702cac6cSKevin Bowling  the ixl driver.
378cfa0ad2SJack F Vogel
388cfa0ad2SJack F VogelNOTE: The Intel(R) 82562v 10/100 Network Connection only provides 10/100
398cfa0ad2SJack F Vogelsupport.
408cfa0ad2SJack F Vogel
41*702cac6cSKevin BowlingFor information on how to identify your adapter, and for the latest Intel
42*702cac6cSKevin Bowlingnetwork drivers, refer to the Intel Support website:
43*702cac6cSKevin Bowlinghttp://www.intel.com/support
44*702cac6cSKevin Bowling
45*702cac6cSKevin Bowling
468cfa0ad2SJack F VogelBuilding and Installation
478cfa0ad2SJack F Vogel=========================
48*702cac6cSKevin BowlingNOTE: This driver package is to be used only as a standalone archive and the
49*702cac6cSKevin Bowlinguser should not attempt to incorporate it into the kernel source tree.
508cfa0ad2SJack F Vogel
51*702cac6cSKevin BowlingIn the instructions below, x.x.x is the driver version as indicated in the name
52*702cac6cSKevin Bowlingof the driver tar file.
538cfa0ad2SJack F Vogel
548cfa0ad2SJack F Vogel1. Move the base driver tar file to the directory of your choice. For
558cfa0ad2SJack F Vogel   example, use /home/username/em or /usr/local/src/em.
568cfa0ad2SJack F Vogel
578cfa0ad2SJack F Vogel2. Untar/unzip the archive:
588cfa0ad2SJack F Vogel
59*702cac6cSKevin Bowling   # tar xzf em-x.x.x.tar.gz
608cfa0ad2SJack F Vogel
61*702cac6cSKevin BowlingThis will create the em-x.x.x directory.
628cfa0ad2SJack F Vogel
63*702cac6cSKevin Bowling3. To install man page:
648cfa0ad2SJack F Vogel
65*702cac6cSKevin Bowling   # cd em-x.x.x
66*702cac6cSKevin Bowling   # gzip -c em.4 > /usr/share/man/man4/em.4.gz
678cfa0ad2SJack F Vogel
68*702cac6cSKevin Bowling4. To load the driver onto a running system:
698cfa0ad2SJack F Vogel
70*702cac6cSKevin Bowling   # cd em-x.x.x/src
71*702cac6cSKevin Bowling   # make
72*702cac6cSKevin Bowling   # kldload ./if_em.ko
738cfa0ad2SJack F Vogel
748cfa0ad2SJack F Vogel5. To assign an IP address to the interface, enter the following:
758cfa0ad2SJack F Vogel
76*702cac6cSKevin Bowling   # ifconfig em<interface_num> <IP_address>
778cfa0ad2SJack F Vogel
788cfa0ad2SJack F Vogel6. Verify that the interface works. Enter the following, where <IP_address>
798cfa0ad2SJack F Vogel   is the IP address for another machine on the same subnet as the interface
808cfa0ad2SJack F Vogel   that is being tested:
818cfa0ad2SJack F Vogel
82*702cac6cSKevin Bowling   # ping <IP_address>
838cfa0ad2SJack F Vogel
84*702cac6cSKevin Bowling7. If you want the driver to load automatically when the system is booted:
85*702cac6cSKevin Bowling
86*702cac6cSKevin Bowling   # cd em-x.x.x/src
87*702cac6cSKevin Bowling   # make
88*702cac6cSKevin Bowling   # make install
89*702cac6cSKevin Bowling
90*702cac6cSKevin BowlingEdit /boot/loader.conf, and add the following line:
91*702cac6cSKevin Bowling   if_em_load="YES"
92*702cac6cSKevin Bowling
93*702cac6cSKevin BowlingEdit /etc/rc.conf, and create the appropriate ifconfig_em<interface_num> entry:
948cfa0ad2SJack F Vogel
958cfa0ad2SJack F Vogel   ifconfig_em<interface_num>="<ifconfig_settings>"
968cfa0ad2SJack F Vogel
978cfa0ad2SJack F VogelExample usage:
988cfa0ad2SJack F Vogel   ifconfig_em0="inet 192.168.10.1 netmask 255.255.255.0"
998cfa0ad2SJack F Vogel
1008cfa0ad2SJack F Vogel    NOTE: For assistance, see the ifconfig man page.
1018cfa0ad2SJack F Vogel
1028cfa0ad2SJack F Vogel
103*702cac6cSKevin BowlingAdditional Features and Configurations
104*702cac6cSKevin Bowling======================================
105*702cac6cSKevin Bowling
1068cfa0ad2SJack F VogelSpeed and Duplex Configuration
107*702cac6cSKevin Bowling------------------------------
108*702cac6cSKevin BowlingIn addressing speed and duplex configuration issues, you need to distinguish
109*702cac6cSKevin Bowlingbetween copper-based adapters and fiber-based adapters.
1108cfa0ad2SJack F Vogel
111*702cac6cSKevin BowlingIn the default mode, an Intel(R) Ethernet Network Adapter using copper
112*702cac6cSKevin Bowlingconnections will attempt to auto-negotiate with its link partner to determine
113*702cac6cSKevin Bowlingthe best setting. If the adapter cannot establish link with the link partner
114*702cac6cSKevin Bowlingusing auto-negotiation, you may need to manually configure the adapter and link
115*702cac6cSKevin Bowlingpartner to identical settings to establish link and pass packets. This should
116*702cac6cSKevin Bowlingonly be needed when attempting to link with an older switch that does not
117*702cac6cSKevin Bowlingsupport auto-negotiation or one that has been forced to a specific speed or
118*702cac6cSKevin Bowlingduplex mode. Your link partner must match the setting you choose. 1 Gbps speeds
119*702cac6cSKevin Bowlingand higher cannot be forced. Use the autonegotiation advertising setting to
120*702cac6cSKevin Bowlingmanually set devices for 1 Gbps and higher.
1218cfa0ad2SJack F Vogel
122*702cac6cSKevin BowlingCaution: Only experienced network administrators should force speed and duplex
123*702cac6cSKevin Bowlingor change autonegotiation advertising manually. The settings at the switch must
124*702cac6cSKevin Bowlingalways match the adapter settings. Adapter performance may suffer or your
125*702cac6cSKevin Bowlingadapter may not operate if you configure the adapter differently from your
126*702cac6cSKevin Bowlingswitch.
1278cfa0ad2SJack F Vogel
128*702cac6cSKevin BowlingAn Intel(R) Ethernet Network Adapter using fiber-based connections, however,
129*702cac6cSKevin Bowlingwill not attempt to auto-negotiate with its link partner since those adapters
130*702cac6cSKevin Bowlingoperate only in full duplex and only at their native speed.
1318cfa0ad2SJack F Vogel
132*702cac6cSKevin BowlingBy default, the adapter auto-negotiates the speed and duplex of the connection.
133*702cac6cSKevin BowlingIf there is a specific need, the ifconfig utility can be used to configure the
134*702cac6cSKevin Bowlingspeed and duplex settings on the adapter.
1358cfa0ad2SJack F Vogel
136*702cac6cSKevin BowlingExample usage:
1378cfa0ad2SJack F Vogel
138*702cac6cSKevin Bowling# ifconfig emX <IP_address> media 100baseTX mediaopt full-duplex
139*702cac6cSKevin Bowling
140*702cac6cSKevin BowlingNOTE: Only use mediaopt to set the driver to full-duplex. If mediaopt is not
141*702cac6cSKevin Bowlingspecified and you are not running at gigabit speed, the driver defaults to
142*702cac6cSKevin Bowlinghalf-duplex.
143*702cac6cSKevin Bowling
144*702cac6cSKevin BowlingIf the interface is currently forced to 100 full duplex, you must use this
145*702cac6cSKevin Bowlingcommand to change to half duplex:
146*702cac6cSKevin Bowling
147*702cac6cSKevin Bowling# ifconfig emX <IP_address> media 100baseTX -mediaopt full-duplex
1488cfa0ad2SJack F Vogel
1498cfa0ad2SJack F VogelThis driver supports the following media type options:
1508cfa0ad2SJack F Vogel
151*702cac6cSKevin BowlingMedia Type		Description
152*702cac6cSKevin Bowling----------		-----------
153*702cac6cSKevin Bowlingautoselect		Enables auto-negotiation for speed and duplex.
154*702cac6cSKevin Bowling10baseT/UTP		Sets speed to 10 Mbps. Use the ifconfig mediaopt
1558cfa0ad2SJack F Vogel			option to select full-duplex mode.
156*702cac6cSKevin Bowling100baseTX		Sets speed to 100 Mbps. Use the ifconfig mediaopt
1578cfa0ad2SJack F Vogel			option to select full-duplex mode.
158*702cac6cSKevin Bowling1000baseTX		Sets speed to 1000 Mbps. In this case, the driver
1598cfa0ad2SJack F Vogel			supports only full-duplex mode.
160*702cac6cSKevin Bowling1000baseSX		Sets speed to 1000 Mbps. In this case, the driver
1618cfa0ad2SJack F Vogel			supports only full-duplex mode.
1628cfa0ad2SJack F Vogel
1638cfa0ad2SJack F VogelFor more information on the ifconfig utility, see the ifconfig man page.
1648cfa0ad2SJack F Vogel
1658cfa0ad2SJack F VogelJumbo Frames
1668cfa0ad2SJack F Vogel------------
167*702cac6cSKevin BowlingJumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU)
168*702cac6cSKevin Bowlingto a value larger than the default value of 1500.
1698cfa0ad2SJack F Vogel
170*702cac6cSKevin BowlingUse the ifconfig command to increase the MTU size. For example, enter the
171*702cac6cSKevin Bowlingfollowing where X is the interface number:
1728cfa0ad2SJack F Vogel
173*702cac6cSKevin Bowling# ifconfig emX mtu 9000
174*702cac6cSKevin Bowling
175*702cac6cSKevin BowlingTo confirm an interface's MTU value, use the ifconfig command.
1768cfa0ad2SJack F Vogel
1778cfa0ad2SJack F VogelTo confirm the MTU used between two specific devices, use:
1788cfa0ad2SJack F Vogel
179*702cac6cSKevin Bowling# route get <destination_IP_address>
1808cfa0ad2SJack F Vogel
181*702cac6cSKevin BowlingNOTE: The maximum MTU setting for Jumbo Frames is 16110. This value coincides
182*702cac6cSKevin Bowlingwith the maximum Jumbo Frames size of 16132 bytes.
1838cfa0ad2SJack F Vogel
184*702cac6cSKevin BowlingNOTE: Using Jumbo frames at 10 or 100 Mbps is not supported and may result in
185*702cac6cSKevin Bowlingpoor performance or loss of link.
1868cfa0ad2SJack F Vogel
187*702cac6cSKevin BowlingNOTE: Packet loss may have a greater impact on throughput when you use jumbo
188*702cac6cSKevin Bowlingframes. If you observe a drop in performance after enabling jumbo frames,
189*702cac6cSKevin Bowlingenabling flow control may mitigate the issue.
1908cfa0ad2SJack F Vogel
191*702cac6cSKevin BowlingNOTE: Some Intel gigabit adapters that support Jumbo Frames have a frame size
192*702cac6cSKevin Bowlinglimit of 9238 bytes, with a corresponding MTU size limit of 9216 bytes. The
193*702cac6cSKevin Bowlingadapters with this limitation are based on the Intel(R) 82571EB, 82572EI,
194*702cac6cSKevin Bowling82573L, 82566, 82562, and 80003ES2LAN controller. These correspond to the
195*702cac6cSKevin Bowlingfollowing product names:
1968cfa0ad2SJack F Vogel   Intel(R) PRO/1000 PT Server Adapter
1978cfa0ad2SJack F Vogel   Intel(R) PRO/1000 PT Desktop Adapter
1988cfa0ad2SJack F Vogel   Intel(R) PRO/1000 PT Network Connection
1998cfa0ad2SJack F Vogel   Intel(R) PRO/1000 PT Dual Port Server Adapter
2008cfa0ad2SJack F Vogel   Intel(R) PRO/1000 PT Dual Port Network Connection
2018cfa0ad2SJack F Vogel   Intel(R) PRO/1000 PT Quad Port Server Adapter
2028cfa0ad2SJack F Vogel   Intel(R) PRO/1000 PF Quad Port Server Adapter
2038cfa0ad2SJack F Vogel   Intel(R) PRO/1000 PF Server Adapter
2048cfa0ad2SJack F Vogel   Intel(R) PRO/1000 PF Network Connection
2058cfa0ad2SJack F Vogel   Intel(R) PRO/1000 PF Dual Port Server Adapter
2068cfa0ad2SJack F Vogel   Intel(R) PRO/1000 PB Server Connection
2078cfa0ad2SJack F Vogel   Intel(R) PRO/1000 PL Network Connection
2088cfa0ad2SJack F Vogel   Intel(R) PRO/1000 EB Network Connection with I/O Acceleration
2098cfa0ad2SJack F Vogel   Intel(R) PRO/1000 EB Backplane Connection with I/O Acceleration
2108cfa0ad2SJack F Vogel   Intel(R) 82566DM-2 Gigabit Network Connection
211*702cac6cSKevin Bowling   Intel(R) 82574L Gigabit Network Connection
212*702cac6cSKevin Bowling   Intel(R) Gigabit CT Desktop Adapter
213*702cac6cSKevin Bowling   Intel(R) 82567LM-4 Gigabit Network Connection
214*702cac6cSKevin Bowling   Intel(R) 82567LM-3 Gigabit Network Connection
215*702cac6cSKevin Bowling   Intel(R) 82567LF-3 Gigabit Network Connection
2168cfa0ad2SJack F Vogel
217*702cac6cSKevin BowlingNOTE: The following adapters limit Jumbo Frames sized packets to a maximum of
218*702cac6cSKevin Bowling4088 bytes:
219*702cac6cSKevin Bowling  - Intel(R) 82578DM Gigabit Network Connection
220*702cac6cSKevin Bowling  - Intel(R) 82577LM Gigabit Network Connection
2218cfa0ad2SJack F Vogel- The following adapters do not support Jumbo Frames:
222*702cac6cSKevin Bowling  - Intel(R) PRO/1000 Gigabit Server Adapter
223*702cac6cSKevin Bowling  - Intel(R) PRO/1000 PM Network Connection
224*702cac6cSKevin Bowling  - Intel(R) 82562G 10/100 Network Connection
225*702cac6cSKevin Bowling  - Intel(R) 82562G-2 10/100 Network Connection
226*702cac6cSKevin Bowling  - Intel(R) 82562GT 10/100 Network Connection
227*702cac6cSKevin Bowling  - Intel(R) 82562GT-2 10/100 Network Connection
228*702cac6cSKevin Bowling  - Intel(R) 82562V 10/100 Network Connection
229*702cac6cSKevin Bowling  - Intel(R) 82562V-2 10/100 Network Connection
230*702cac6cSKevin Bowling  - Intel(R) 82566DC Gigabit Network Connection
231*702cac6cSKevin Bowling  - Intel(R) 82566DC-2 Gigabit Network Connection
232*702cac6cSKevin Bowling  - Intel(R) 82566DM Gigabit Network Connection
233*702cac6cSKevin Bowling  - Intel(R) 82566MC Gigabit Network Connection
234*702cac6cSKevin Bowling  - Intel(R) 82566MM Gigabit Network Connection
235*702cac6cSKevin Bowling  - Intel(R) 82567V-3 Gigabit Network Connection
236*702cac6cSKevin Bowling  - Intel(R) 82577LC Gigabit Network Connection
237*702cac6cSKevin Bowling  - Intel(R) 82578DC Gigabit Network Connection
238*702cac6cSKevin Bowling- Jumbo Frames cannot be configured on an 82579-based Network device if
239*702cac6cSKevin Bowling  MACSec is enabled on the system.
2408cfa0ad2SJack F Vogel
241*702cac6cSKevin Bowling
242*702cac6cSKevin BowlingVLANS
2438cfa0ad2SJack F Vogel-----
2448cfa0ad2SJack F VogelTo create a new VLAN interface:
2458cfa0ad2SJack F Vogel
246*702cac6cSKevin Bowling# ifconfig <vlan_name> create
2478cfa0ad2SJack F Vogel
248*702cac6cSKevin BowlingTo associate the VLAN interface with a physical interface and assign a VLAN ID,
249*702cac6cSKevin BowlingIP address, and netmask:
2508cfa0ad2SJack F Vogel
251*702cac6cSKevin Bowling# ifconfig <vlan_name> <ip_address> netmask <subnet_mask> vlan <vlan_id>
252*702cac6cSKevin Bowlingvlandev <physical_interface>
2538cfa0ad2SJack F Vogel
2548cfa0ad2SJack F VogelExample:
2558cfa0ad2SJack F Vogel
256*702cac6cSKevin Bowling# ifconfig vlan10 10.0.0.1 netmask 255.255.255.0 vlan 10 vlandev em0
2578cfa0ad2SJack F Vogel
258*702cac6cSKevin BowlingIn this example, all packets will be marked on egress with 802.1Q VLAN tags,
259*702cac6cSKevin Bowlingspecifying a VLAN ID of 10.
2608cfa0ad2SJack F Vogel
2618cfa0ad2SJack F VogelTo remove a VLAN interface:
2628cfa0ad2SJack F Vogel
263*702cac6cSKevin Bowling# ifconfig <vlan_name> destroy
2648cfa0ad2SJack F Vogel
2658cfa0ad2SJack F Vogel
2668cfa0ad2SJack F VogelPolling
2678cfa0ad2SJack F Vogel-------
268*702cac6cSKevin BowlingNOTES:
269*702cac6cSKevin Bowling- Device Polling is only valid for non-SMP kernels.
270*702cac6cSKevin Bowling- The driver has to be built into the kernel for Device Polling to be
271*702cac6cSKevin Bowling  enabled in the driver.
2728cfa0ad2SJack F Vogel
2738cfa0ad2SJack F VogelTo enable polling in the driver, add the following options to the kernel
2748cfa0ad2SJack F Vogelconfiguration, and then recompile the kernel:
2758cfa0ad2SJack F Vogel
2768cfa0ad2SJack F Vogel  options DEVICE_POLLING
2778cfa0ad2SJack F Vogel  options HZ=1000
2788cfa0ad2SJack F Vogel
2798cfa0ad2SJack F VogelAt runtime use:
2808cfa0ad2SJack F Vogel  ifconfig emX polling (to turn polling on)
2818cfa0ad2SJack F Vogeland:
2828cfa0ad2SJack F Vogel  ifconfig emX -polling (to turn it off)
2838cfa0ad2SJack F Vogel
2848cfa0ad2SJack F Vogel
2858cfa0ad2SJack F VogelChecksum Offload
2868cfa0ad2SJack F Vogel----------------
2878cfa0ad2SJack F VogelChecksum offloading is not supported on 82542 Gigabit adapters.
2888cfa0ad2SJack F Vogel
289*702cac6cSKevin BowlingChecksum offloading supports both TCP and UDP packets and is supported for both
290*702cac6cSKevin Bowlingtransmit and receive.
2918cfa0ad2SJack F Vogel
292*702cac6cSKevin BowlingChecksum offloading can be enabled or disabled using ifconfig. Both transmit
293*702cac6cSKevin Bowlingand receive offloading will be either enabled or disabled together. You cannot
294*702cac6cSKevin Bowlingenable/disable one without the other.
2958cfa0ad2SJack F Vogel
2968cfa0ad2SJack F VogelTo enable checksum offloading:
2978cfa0ad2SJack F Vogel
298*702cac6cSKevin Bowling# ifconfig emX rxcsum
2998cfa0ad2SJack F Vogel
3008cfa0ad2SJack F VogelTo disable checksum offloading:
3018cfa0ad2SJack F Vogel
302*702cac6cSKevin Bowling# ifconfig emX -rxcsum
3038cfa0ad2SJack F Vogel
3048cfa0ad2SJack F VogelTo confirm the current setting:
3058cfa0ad2SJack F Vogel
306*702cac6cSKevin Bowling# ifconfig emX
3078cfa0ad2SJack F Vogel
3088cfa0ad2SJack F VogelLook for the presence or absence of the following line:
3098cfa0ad2SJack F Vogel  options=3 <RXCSUM,TXCSUM>
3108cfa0ad2SJack F Vogel
3118cfa0ad2SJack F VogelSee the ifconfig man page for further information.
3128cfa0ad2SJack F Vogel
3138cfa0ad2SJack F Vogel
3148cfa0ad2SJack F VogelTSO
3158cfa0ad2SJack F Vogel---
316*702cac6cSKevin BowlingTSO (TCP Segmentation Offload) supports both IPv4 and IPv6. TSO can be disabled
317*702cac6cSKevin Bowlingand enabled using the ifconfig utility or sysctl.
3188cfa0ad2SJack F Vogel
319*702cac6cSKevin BowlingNOTE: TSO requires Tx checksum, if Tx checksum is disabled, TSO will also be
320*702cac6cSKevin Bowlingdisabled.
3218cfa0ad2SJack F Vogel
322*702cac6cSKevin BowlingNOTE: By default only PCI-Express adapters are ENABLED to do TSO. Others can be
323*702cac6cSKevin Bowlingenabled by the user at their own risk. TSO is not supported on 82547 or
324*702cac6cSKevin Bowling82544-based adapters, as well as older adapters.
3258cfa0ad2SJack F Vogel
326*702cac6cSKevin BowlingTo enable/disable TSO in the stack:
3278cfa0ad2SJack F Vogel
328*702cac6cSKevin Bowling# sysctl net.inet.tcp.tso=0 (or 1 to enable it)
3298cfa0ad2SJack F Vogel
330*702cac6cSKevin BowlingDoing this disables/enables TSO in the stack and affects all installed adapters.
3318cfa0ad2SJack F Vogel
332*702cac6cSKevin BowlingTo disable BOTH TSO IPv4 and IPv6:
3338cfa0ad2SJack F Vogel
334*702cac6cSKevin Bowling# ifconfig em<interface_num> -tso
3358cfa0ad2SJack F Vogel
336*702cac6cSKevin BowlingTo enable BOTH TSO IPv4 and IPv6:
337*702cac6cSKevin Bowling
338*702cac6cSKevin Bowling# ifconfig em<interface_num> tso
339*702cac6cSKevin Bowling
340*702cac6cSKevin BowlingYou can also enable/disable IPv4 TSO or IPv6 TSO individually. Simply replace
341*702cac6cSKevin Bowlingtso|-tso in the above command with tso4 or tso6. For example, to disable
342*702cac6cSKevin BowlingTSO IPv4:
343*702cac6cSKevin Bowling
344*702cac6cSKevin Bowling# ifconfig em<interface_num> -tso4
345*702cac6cSKevin Bowling
346*702cac6cSKevin BowlingTo disable TSO IPv6:
347*702cac6cSKevin Bowling
348*702cac6cSKevin Bowling# ifconfig em<interface_num> -tso6
3498cfa0ad2SJack F Vogel
3508cfa0ad2SJack F Vogel
351*702cac6cSKevin BowlingMSI-X
352*702cac6cSKevin Bowling-----
353*702cac6cSKevin BowlingMSI or MSI-X can be turned off by an entry in /etc/sysctl.conf
354*702cac6cSKevin Bowling
355*702cac6cSKevin Bowling  hw.em.enable_msi=0
356*702cac6cSKevin Bowling
357*702cac6cSKevin BowlingUnload and reload the driver.
358*702cac6cSKevin Bowling
359*702cac6cSKevin Bowling
360*702cac6cSKevin BowlingKnown Issues/Troubleshooting
361*702cac6cSKevin Bowling============================
3628cfa0ad2SJack F Vogel
3638cfa0ad2SJack F VogelDetected Tx Unit Hang in Quad Port Adapters
3648cfa0ad2SJack F Vogel-------------------------------------------
365*702cac6cSKevin BowlingIn some cases ports 3 and 4 don't pass traffic and report 'Detected Tx Unit
366*702cac6cSKevin BowlingHang' followed by 'NETDEV WATCHDOG: emX: transmit timed out' errors. Ports 1
367*702cac6cSKevin Bowlingand 2 do not show any errors and will pass traffic.
3688cfa0ad2SJack F Vogel
369*702cac6cSKevin BowlingThis issue may be resolved by updating to the latest kernel and BIOS. You
370*702cac6cSKevin Bowlingshould use an OS that fully supports Message Signaled Interrupts (MSI) and make
371*702cac6cSKevin Bowlingsure that MSI is enabled in your system's BIOS.
3728cfa0ad2SJack F Vogel
3738cfa0ad2SJack F Vogel
3748cfa0ad2SJack F VogelThere are known performance issues with this driver when running UDP traffic
3758cfa0ad2SJack F Vogelwith Jumbo Frames.
3768cfa0ad2SJack F Vogel----------------------------------------------------------------------------
3778cfa0ad2SJack F Vogel
378*702cac6cSKevin Bowling
3798cfa0ad2SJack F Vogel82541/82547 can't link or is slow to link with some link partners
3808cfa0ad2SJack F Vogel-----------------------------------------------------------------
3818cfa0ad2SJack F VogelThere is a known compatibility issue where time to link is slow or link is not
3828cfa0ad2SJack F Vogelestablished between 82541/82547 controllers and some switches. Known switches
3838cfa0ad2SJack F Vogelinclude:
3848cfa0ad2SJack F Vogel  Planex FXG-08TE
3858cfa0ad2SJack F Vogel  I-O Data ETG-SH8
3868cfa0ad2SJack F Vogel
3878cfa0ad2SJack F VogelThe driver can be compiled with the following changes:
3888cfa0ad2SJack F Vogel
3898cfa0ad2SJack F Vogel  Edit ./em.x.x.x/src/if_em.h to change the #define EM_MASTER_SLAVE
390*702cac6cSKevin Bowling
3918cfa0ad2SJack F VogelFor example, change from:
3928cfa0ad2SJack F Vogel
3938cfa0ad2SJack F Vogel  #define EM_MASTER_SLAVE  e1000_ms_hw_default
394*702cac6cSKevin Bowling
3958cfa0ad2SJack F Vogelto:
396*702cac6cSKevin Bowling
3978cfa0ad2SJack F Vogel  #define EM_MASTER_SLAVE  2
3988cfa0ad2SJack F Vogel
3998cfa0ad2SJack F VogelUse one of the following options:
4008cfa0ad2SJack F Vogel  1 = Master mode
4018cfa0ad2SJack F Vogel  2 = Slave mode
4028cfa0ad2SJack F Vogel  3 = Auto master/slave
4038cfa0ad2SJack F VogelSetting 2 is recommended.
4048cfa0ad2SJack F Vogel
4058cfa0ad2SJack F VogelRecompile the module:
4068cfa0ad2SJack F Vogel  a. To compile the module
4078cfa0ad2SJack F Vogel	cd em-x.x.x
4088cfa0ad2SJack F Vogel	make clean
4098cfa0ad2SJack F Vogel	make
4108cfa0ad2SJack F Vogel  b. To install the compiled module in system directory:
4118cfa0ad2SJack F Vogel	make install
4128cfa0ad2SJack F Vogel
4138cfa0ad2SJack F Vogel
4148cfa0ad2SJack F VogelSupport
4158cfa0ad2SJack F Vogel=======
416*702cac6cSKevin BowlingFor general information, go to the Intel support website at:
417*702cac6cSKevin Bowlinghttp://www.intel.com/support/
4188cfa0ad2SJack F Vogel
419*702cac6cSKevin BowlingIf an issue is identified with the released source code on a supported kernel
420*702cac6cSKevin Bowlingwith a supported adapter, email the specific information related to the issue
421*702cac6cSKevin Bowlingto freebsd@intel.com
4228cfa0ad2SJack F Vogel
4238cfa0ad2SJack F Vogel
424*702cac6cSKevin BowlingCopyright(c) 1999-2019 Intel Corporation.
4258cfa0ad2SJack F Vogel
426*702cac6cSKevin Bowling
427*702cac6cSKevin BowlingTrademarks
428*702cac6cSKevin Bowling==========
429*702cac6cSKevin BowlingIntel is a trademark or registered trademark of Intel Corporation or its
430*702cac6cSKevin Bowlingsubsidiaries in the United States and/or other countries.
4318cfa0ad2SJack F Vogel
4328cfa0ad2SJack F Vogel* Other names and brands may be claimed as the property of others.
433