Bug 207840

Summary: ix-3.1.14 driver fails to build without 'options INET6'
Product: Base System Reporter: Александр <null>
Component: miscAssignee: Bjoern A. Zeeb <bz>
Status: Closed FIXED    
Severity: Affects Some People CC: bz, jeffrey.e.pieper, net, null, piotr.pietruszewski, sbruno
Priority: --- Keywords: IntelNetworking, needs-qa
Version: 10.2-RELEASE   
Hardware: amd64   
OS: Any   

Description Александр 2016-03-09 13:11:30 UTC
Hi! Rebuild a kernel without 'options INET6'
Nat FreeBSD 10.2-RELEASE-p12 admin@nat:/usr/obj/usr/src/sys/GENERIC amd64

Have downloaded and installed the latest driver ix-3.1.14 for X520-DA2

In loader.conf added:
if_ix_load="YES"
hw.ix.unsupported_sfp=1

After loading OS in /log/messages:
Mar 4 14:07:37 nat kernel: link_elf_obj: symbol undefined in6_cksum_pseudo
Mar 4 14:07:37 nat kernel: KLD file if_ix.ko - could not finalize loading

And accordingly, loaded the old driver.
In /log/messages:
Mar 4 14:07:37 nat kernel: ix0: <Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 2.8.3>

If the kernel is compiled with 'options INET6' what I need, no problem.
Comment 1 Sean Bruno freebsd_committer freebsd_triage 2016-04-04 17:35:58 UTC
It looks like the module wasn't rebuilt with the new kernel configuration.

Can you post your kernel configuration here just to make sure things are being rebuilt?
Comment 2 Александр 2016-04-06 18:14:49 UTC
(In reply to Sean Bruno from comment #1)
Because the kernel configuration removed only 'options INET6'
Comment 3 Jeff Pieper 2016-04-07 15:40:43 UTC
Thanks for the report. Without options INET6 defined in the kernel, removing the -DINET6 flag from the Makefile should allow the driver to load, but it doesn't compile:

ix_txrx.c:813:4: error: use of undeclared identifier 'ip6'; did you mean 'ip'?
                        ip6 = (struct ip6_hdr *)(l3d);
                        ^~~
                        ip
ix_txrx.c:730:13: note: 'ip' declared here
        struct ip *ip;
                   ^
ix_txrx.c:813:8: error: incompatible pointer types assigning to 'struct ip *' from 'struct ip6_hdr *' [-Werror,-Wincompatible-pointer-types]
                        ip6 = (struct ip6_hdr *)(l3d);
                            ^ ~~~~~~~~~~~~~~~~~~~~~~~
ix_txrx.c:815:14: error: use of undeclared identifier 'ip6'; did you mean 'ip'?
                        ipproto = ip6->ip6_nxt;
                                  ^~~
                                  ip
ix_txrx.c:730:13: note: 'ip' declared here
        struct ip *ip;
                   ^
ix_txrx.c:815:19: error: no member named 'ip6_ctlun' in 'struct ip'
                        ipproto = ip6->ip6_nxt;
                                  ~~~  ^
@/netinet/ip6.h:89:18: note: expanded from macro 'ip6_nxt'
#define ip6_nxt         ip6_ctlun.ip6_un1.ip6_un1_nxt
                        ^
4 errors generated. 

We will investigate.
Comment 4 Bjoern A. Zeeb freebsd_committer freebsd_triage 2019-05-21 19:00:38 UTC
Just to clarify, this was trying to compile an out-of-tree driver?
Comment 5 Piotr Pietruszewski 2019-05-22 14:23:15 UTC
This is probably bug for out-of-tree driver since in-kernel driver never had 3.1.14 version (after 3.1.13-k version there was 3.2.12-k version).

This problem was resolved in 3.2.0 out-of-tree driver.
Comment 6 Bjoern A. Zeeb freebsd_committer freebsd_triage 2019-05-22 14:29:47 UTC
(In reply to Piotr Pietruszewski from comment #5)

I was just trying to get confirmation before closing it.

So thanks for the update.  I didn't expect you even solved that :)


/bz