Bug 144561

Summary: [ixgbe] [patch] ixgbe driver errors
Product: Base System Reporter: Tom Hicks <thicks>
Component: kernAssignee: Eric Joyner <erj>
Status: Closed Overcome By Events    
Severity: Affects Only Me CC: hiren, sbruno
Priority: Normal Keywords: IntelNetworking
Version: 7.1-RELEASE   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
file.diff none

Description Tom Hicks 2010-03-08 19:50:01 UTC
I have encountered the following problems in the HEAD version of the driver (but compiled to run on FreeBSD 7.1).  All of the problems identified should exist in any version of the kernel though.

1.  memory corruption of mbuf headers.

2.  TCP segmentation offload not usable with checksum offload enabled

3.  Add-in cards without SFP+ modules plugged in will fail ixgbe_attach (regression from 7.1 version of the driver)

4.  Interfaces will be reset when an AF_INET address is added (via SIOCSIFADDR) (regression from 7.1 version of the driver)

5.  Requested alignment (1 byte alignment) of the receive/transmit descriptor rings does not match the hardware alignment.  This is probably not a real problem today, as the returned memory always appears to be 4K aligned anyhow, but could become a problem on new architectures.

6.  Errored frames (crc errors, length errors) cause kernel panics on next use of the receive ring entry.  This problem exists in all versions of the ixgbe driver (including the 7.1 version).

Fix: Patch attached with submission follows:
How-To-Repeat: For 1, try to use the driver with either an 82598 or 82599 based card.  The kernel will panic quickly

For 2, try to enable TSO, send large segments by enqueuing 4K+ data in repeated send calls using a TCP socket, and monitor the tso counts in the driver.

For 3, don't plug in an SFP+ module.  A corresponding interface (ie. ix0) will only show up when an SFP+ module is inserted.

For 4:
ifconfig ix0 (verify that status is active)
ifconfig ix0 192.168.1.2 netmask 255.255.255.0 (add address)
ifconfig ix0 (status will show no carrier for 5-10 seconds, then active again)

For 5:  not really repeatable, this was found while looking for the memory corruption in 1 as part of a code review.

For 6, cause an errored packet to be injected (via a raw socket), or put in a fail point that causes a packet properly received to be rejected in ixgbe_rxeof.
Comment 1 Bruce Cran freebsd_committer freebsd_triage 2010-03-08 20:30:13 UTC
Class Changed
From-To: change-request->sw-bug
Comment 2 Bruce Cran freebsd_committer freebsd_triage 2010-03-08 20:30:13 UTC
Responsible Changed
From-To: freebsd-bugs->freebsd-net

Over to maintainer(s).
Comment 3 Andre Oppermann freebsd_committer freebsd_triage 2010-08-23 15:35:23 UTC
Responsible Changed
From-To: freebsd-net->jfv

Over to maintainer.
Comment 4 Sean Bruno freebsd_committer freebsd_triage 2015-06-30 17:56:40 UTC
This diff seems to apply to both if_ix.c and if_txrx.c now.  Probably it needs to be audited and/or regenerated.
Comment 5 Eitan Adler freebsd_committer freebsd_triage 2018-05-28 19:43:39 UTC
batch change:

For bugs that match the following
-  Status Is In progress 
AND
- Untouched since 2018-01-01.
AND
- Affects Base System OR Documentation

DO:

Reset to open status.


Note:
I did a quick pass but if you are getting this email it might be worthwhile to double check to see if this bug ought to be closed.
Comment 6 Sean Bruno freebsd_committer freebsd_triage 2018-05-29 15:32:58 UTC
Most of this is not applicable any longer due to the conversion to IFLIB.  IF you have the time or inclination, reopen with a regenerated patchset that you'd like to see applied.