Project

General

Profile

Actions

Regression #12821

open

Intel e1000 driver (em & igb) cannot pass VLAN0 tagged packets

Added by Hayden Hill 4 months ago. Updated 24 days ago.

Status:
Confirmed
Priority:
Normal
Assignee:
-
Category:
Hardware / Drivers
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Plus Target Version:
Plus-Next
Release Notes:
Default
Affected Version:
2.6.0
Affected Architecture:
amd64

Description

Hello!

There are a few of us that have noticed a possible issue with the igb driver in the latest pfSense releases. I am not technical enough to know exactly what the issue is but I have found what I believe is the resolution. This issue became apparent when the latest release broke a start-up script many of use to authenticate / connect directly to some FTTH ONT's.

For reference here is the GitHub issue for this particular script that contains a lot of useful discussion. https://github.com/MonkWho/pfatt/issues/67

It appears in this release the if_igb.ko driver is simply a shortcut to if_em.ko. This leads me to believe this is the current driver in use? https://www.intel.com/content/www/us/en/download/15187/intel-network-adapter-gigabit-base-driver-for-freebsd.html. I believe there is an issue with this driver preventing something from working properly. I wish I was able to describe the "something" but I can't. Maybe it promiscuous mode issues, issues interacting with Netgraph, VLAN 0, I don't know.

Regardless, compiling and using this (updated?) igb driver fixes this issue. https://www.intel.com/content/www/us/en/download/14610/intel-network-adapter-driver-for-82575-6-and-82580-based-gigabit-network-connections-under-freebsd.html?wapkw=i350%20freebsd

Is it possible we could get this driver included in a future release?


Files

if_igb.ko (217 KB) if_igb.ko FreeBSD 12.3 Intel Custom Driver Kris Phillips, 03/26/2022 09:38 PM
Actions #1

Updated by Hayden Hill 4 months ago

Also, some related discussion towards the end of this post https://forum.netgate.com/topic/99190/att-uverse-rg-bypass-0-2-btc/402?_=1644931323812

Actions #2

Updated by Hayden Hill 4 months ago

User @lnxsrt over on GitHub may have found the related FreeBSD Bug. https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260068

GitHum Comment: https://github.com/MonkWho/pfatt/issues/67#issuecomment-1043433763

Actions #3

Updated by Steve Wheeler 4 months ago

  • Tracker changed from Bug to Regression

It looks likely that bug would cause this since it requires VLAN 0. That's fixed here but isn't yet in the dev branch:
https://github.com/pfsense/FreeBSD-src/commit/cf101bd5ceebe2b2d229faa949dbf3e146d04382

It works with the updated igb module because that is not the merged e1000 iflib driver. It would be interesting to test Intel's updated merged driver also.

Actions #4

Updated by Hayden Hill 4 months ago

Steve Wheeler wrote in #note-3:

It looks likely that bug would cause this since it requires VLAN 0. That's fixed here but isn't yet in the dev branch:
https://github.com/pfsense/FreeBSD-src/commit/cf101bd5ceebe2b2d229faa949dbf3e146d04382

It works with the updated igb module because that is not the merged e1000 iflib driver. It would be interesting to test Intel's updated merged driver also.

Thanks for the additional information! I am assuming this is the merged driver you are referring to? https://www.intel.com/content/www/us/en/download/15187/intel-network-adapter-gigabit-base-driver-for-freebsd.html

If so, I would be willing to compile it and give it a shot if it would be of use?

Actions #5

Updated by Kris Phillips 4 months ago

I can confirm the iflib driver issue as well. I may spin up a FreeBSD 12.3 install to compile the newer driver as well for an additional point of testing.

Actions #6

Updated by Kris Phillips 3 months ago

I have compiled the igb driver for 12.3 to test this weekend.

Additionally, patches for the VLAN issue should be in 2.7 and 22.05 DEVEL releases, by my understanding, so we should test the latest dev snapshots.

Actions #7

Updated by Kris Phillips 3 months ago

Tested the igb driver. Issue is no longer present in 22.01 or 2.6 with the custom driver compiled from kernel source here:

https://www.intel.com/content/www/us/en/download/14610/intel-network-adapter-driver-for-82575-6-and-82580-based-gigabit-network-connections-under-freebsd.html?wapkw=i350%20freebsd

Added the driver to /boot/modules and added the following to /boot/loader.conf.local before completing the upgrade from 21.05.2 with a working environment to 22.01:

if_igb_load="YES"
if_igb_name="/boot/modules/if_igb.ko"

Attached is the compiled driver.

Next I need to test 2.7 and 22.05 DEVEL as the driver supposedly includes patches from upstream in FreeBSD 12.3 on the standard em driver that supposedly resolves this.

Actions #8

Updated by Kris Phillips about 2 months ago

Tested pfatt on 22.05 April 29th build and getting the following crash report:

Fatal error: Uncaught Error: Call to undefined function pfSense_ngctl_attach() in Command line code:1
Stack trace:
#0 {main}
thrown in Command line code on line 1

Actions #9

Updated by Kris Phillips about 2 months ago

Command I was trying to run manually after I noticed it failing:

/usr/local/bin/php -r "pfSense_ngctl_attach('.', 'igb0');"

Actions #10

Updated by Hayden Hill about 2 months ago

Kris Phillips wrote in #note-9:

Command I was trying to run manually after I noticed it failing:

/usr/local/bin/php -r "pfSense_ngctl_attach('.', 'igb0');"

Okay. I gave it a shot tonight. 22.05. I did not see the same issue you ran into. However, I still had to use the custom driver. Unfortunately a new issue cropped up. IPv6 gateway never leaves "pending" state, but IPv6 traffic does flow.

Actions #11

Updated by Kris Phillips about 2 months ago

Hayden Hill wrote in #note-10:

Kris Phillips wrote in #note-9:

Command I was trying to run manually after I noticed it failing:

/usr/local/bin/php -r "pfSense_ngctl_attach('.', 'igb0');"

Okay. I gave it a shot tonight. 22.05. I did not see the same issue you ran into. However, I still had to use the custom driver. Unfortunately a new issue cropped up. IPv6 gateway never leaves "pending" state, but IPv6 traffic does flow.

Hello Hayden,

Likely the build you're running is older and doesn't have the changes that breaks this. I'm running an internal-only build from April 29th that is not public.

I have discussed with the dev team and apparently the pfSense_ngctl_attach() and pfSense_ngctl_detach() php modules were removed as they are no longer needed. All interfaces are already there in netgraph, so the script will likely need to remove these commands before 22.05 and 2.7 are released.

Actions #12

Updated by Hayden Hill about 2 months ago

Kris Phillips wrote in #note-11:

Hayden Hill wrote in #note-10:

Kris Phillips wrote in #note-9:

Command I was trying to run manually after I noticed it failing:

/usr/local/bin/php -r "pfSense_ngctl_attach('.', 'igb0');"

Okay. I gave it a shot tonight. 22.05. I did not see the same issue you ran into. However, I still had to use the custom driver. Unfortunately a new issue cropped up. IPv6 gateway never leaves "pending" state, but IPv6 traffic does flow.

Hello Hayden,

Likely the build you're running is older and doesn't have the changes that breaks this. I'm running an internal-only build from April 29th that is not public.

I have discussed with the dev team and apparently the pfSense_ngctl_attach() and pfSense_ngctl_detach() php modules were removed as they are no longer needed. All interfaces are already there in netgraph, so the script will likely need to remove these commands before 22.05 and 2.7 are released.

Ah! Couple of things. I use the supplicant mode so those lines are not in / applicable to my use case anyways. Did you have any issues with the IPv6 gateway monitor like I did? Also, I would love to help troubleshoot this so if whoever you are working with is willing to share with the class. I would be happy to try out some builds.

Actions #13

Updated by Kris Phillips about 2 months ago

Fix to the script here resolves the ngeth interface issue since they are already part of netgraph:
https://github.com/MonkWho/pfatt/pull/73/commits/015a8cf91340699fc18f1f54eeef3160e8c2ee9e

About to test and ensure DHCP is working with in-built Intel driver to see if a custom driver is still needed in CE 2.7 and 22.05.

Actions #14

Updated by Kris Phillips about 2 months ago

Unfortunately, it seems that with the May 6th build of 22.05 netgraph is still broken for VLAN0 tagged DHCP traffic. The 802.1X traffic is passing, but for some reason DHCP is not still. Likely a custom driver is still needed here until a fix can be found.

Oddly, when using a netgraph ngeth# interface, I also get "Configuring WAN" and "Configuring LAN" twice and the interface mismatch shows up every time, even though I'm using an earlyshellcmd script. Here is the boot log:

Starting DHCPv6 service...done.
Setting up gateway monitors...done.

Writing configuration...........................done.
One moment while the settings are reloading... done!
..Configuring loopback interface...done.
Configuring LAN interface...done.
Configuring WAN interface...done.
Checking config backups consistency...done.
Setting up extended sysctls...done.
Setting timezone...done.
Configuring loopback interface...done.
Starting syslog...done.
Setting up interfaces microcode...done.
Removed leftover dhcp6c lock file: /tmp/dhcp6c_lock
Configuring loopback interface...done.
Configuring LAN interface...done.
Configuring WAN interface...

Actions #15

Updated by Kris Phillips about 1 month ago

Tested this on igc interfaces and it appears this only affects e1000-based NICs. Other Intel NICs would seem to be fine. Looks like the transition to iflib for the e1000 igb and em driver likely caused this.

Actions #16

Updated by Kris Phillips 24 days ago

Tested ix interfaces as well. They are not subject to this bug. Based on the fact that Broadcom NICs and Intel ix/igc NICs are not affected, it seems this only applied to igb e1000 NICs, as suspected.

Actions #17

Updated by Steve Wheeler 24 days ago

  • Subject changed from Intel igb(4) NIC Driver - pfSense 22.01 and 2.6.0 to Intel e1000 driver (em & igb) cannot pass VLAN0 tagged packets
  • Status changed from New to Confirmed
  • Target version set to CE-Next
  • Plus Target Version set to Plus-Next
Actions

Also available in: Atom PDF