Chelsio driver questions
Below the content of a mail to Chelsio is listed which has been send after a first attempt to patch the Linux 2.6.6. kernel with a patch supplied by Chelsio and to build it.
Mail to Chelsio
We have two T110 Chelsio NICs. During the patching and compilation of the kernel
we encountered the following five problems and issues.
Patching Linux 2.6.6 kernel
This version is slightly growing old. When do you expect a new version? For us
it would also be important that your patches could coexist next to
Web100
("http://www.web100.org/") patches. The reason is that they supply TCP
extensions especially for long distance transfers that are very valuable for us
even when this does not work with TCP offloading. The most recent
Web100 patches
are for Linux 2.6.11 (
Web100 V. 2.5.3).
Undocumented "ULP support" configuration option
In the Linux 2.6.6 kernel options there also is also the undocumented
"ULP support" configuration option:
x x <*> Chelsio Communications T1 support x x
x x [*] TCP offload support x x
x x [ ] ULP support x x
x x [*] Chelsio gigabit Ethernet support x x
x x [ ] Chelsio Cougar board support x x
I have let it unselected.
A connected question is the following: should the "Chelsio T1 support" always be
add static to the kernel or is it also possible to compile it as module?
Configuring the kernel to allow support for the "toectl" tool
The kernel configuration settings that has been supplied to allow support for
the "toectl" tool:
These settings are only valid for Linux 2.4.X kernels. I am uncertain what would
be the exact correct options for Linux 2.6.X kernels.
Compilation of "toectl" with "NO_SHARED_LIBS=1" lead to "gcc" warnings
Compilation of the "toectl" tool with the command line
make KERNEL_DIR=../../../../../src/linux-2.6.6 NO_SHARED_LIBS=1
is leading to a number of warnings from the following type:
extensions/libext6.a(libip6t_owner.o)(.text+0x347): In function `print_item':
: warning: Using 'getgrgid' in statically linked applications requires at runtim
e the shared libraries from the glibc version used for linking
These warnings seem to be rather innocent. Presumably only the shared objects in
"./src/tools/offtoe/iptables-1.2.11/extensions" should be included and that seem
to be the case:
> ldd toectl
libdl.so.2 => /lib/libdl.so.2 (0x0000002a9566c000)
libnsl.so.1 => /lib/libnsl.so.1 (0x0000002a95770000)
libc.so.6 => /lib/libc.so.6 (0x0000002a95886000)
/lib64/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x0000002a95556000)
The used GCC version and "uname" information is:
> gcc --version
gcc (GCC) 3.3.5 (Debian 1:3.3.5-6)
> uname -a
Linux rembrandt0 2.6.8-10-amd64-k8-smp #1 SMP Sun Jan 9 15:35:12 CET 2005 x86_64 GNU/Linux
Fatal errors during building of the kernel modules
During the building of the kernel modules with the command "make modules" the
fatal errors listed below were occurring.
Ethernet bridge module.
Linux 2.6 configuration option:
Device Drivers
>
Networking support
>
Networking options
>
802.1d Ethernet Bridging
The following fatal error messages have been given:
CC [M] net/bridge/br_netfilter.o
net/bridge/br_netfilter.c: In function `br_nf_local_out':
net/bridge/br_netfilter.c:574: error: `NF_IP_PRI_BRIDGE_SABOTAGE_FORWARD' undecl
ared (first use in this function)
net/bridge/br_netfilter.c:574: error: (Each undeclared identifier is reported on
ly once
net/bridge/br_netfilter.c:574: error: for each function it appears in.)
net/bridge/br_netfilter.c:582: error: `NF_IP_PRI_BRIDGE_SABOTAGE_LOCAL_OUT' unde
clared (first use in this function)
net/bridge/br_netfilter.c: At top level:
net/bridge/br_netfilter.c:787: error: `NF_IP_PRI_BRIDGE_SABOTAGE_FORWARD' undecl
ared here (not in a function)
net/bridge/br_netfilter.c:787: error: initializer element is not constant
net/bridge/br_netfilter.c:787: error: (near initialization for `br_nf_ops[7].pri
ority')
net/bridge/br_netfilter.c:787: error: initializer element is not constant
net/bridge/br_netfilter.c:787: error: (near initialization for `br_nf_ops[7]')
net/bridge/br_netfilter.c:792: error: `NF_IP_PRI_BRIDGE_SABOTAGE_LOCAL_OUT' unde
clared here (not in a function)
net/bridge/br_netfilter.c:792: error: initializer element is not constant
net/bridge/br_netfilter.c:792: error: (near initialization for `br_nf_ops[8].pri
ority')
net/bridge/br_netfilter.c:792: error: initializer element is not constant
net/bridge/br_netfilter.c:792: error: (near initialization for `br_nf_ops[8]')
net/bridge/br_netfilter.c:797: error: initializer element is not constant
net/bridge/br_netfilter.c:797: error: (near initialization for `br_nf_ops[9]')
make[2]: * [net/bridge/br_netfilter.o] Error 1
make[1]: * [net/bridge] Error 2
make: * [net] Error 2
Network packet filtering module (used in firewall).
Linux 2.6 configuration option:
Device Drivers ->
Networking support ->
Networking options ->
Network packet filtering (replaces ipchains) ->
The following fatal error messages have been given:
CC [M] net/ipv4/netfilter/ip_conntrack_standalone.o
net/ipv4/netfilter/ip_conntrack_standalone.c:264: error: `NF_IP_PRI_CONNTRACK_DE
FRAG' undeclared here (not in a function)
net/ipv4/netfilter/ip_conntrack_standalone.c:264: error: initializer element is
not constant
net/ipv4/netfilter/ip_conntrack_standalone.c:264: error: (near initialization fo
r `ip_conntrack_defrag_ops.priority')
net/ipv4/netfilter/ip_conntrack_standalone.c:280: error: `NF_IP_PRI_CONNTRACK_DE
FRAG' undeclared here (not in a function)
net/ipv4/netfilter/ip_conntrack_standalone.c:280: error: initializer element is
not constant
net/ipv4/netfilter/ip_conntrack_standalone.c:280: error: (near initialization fo
r `ip_conntrack_defrag_local_out_ops.priority')
make[3]: * [net/ipv4/netfilter/ip_conntrack_standalone.o] Error 1
make[2]: * [net/ipv4/netfilter] Error 2
make[1]: * [net/ipv4] Error 2
make: * [net] Error 2
Again the same GCC versions and "uname" information as above:
> gcc --version
gcc (GCC) 3.3.5 (Debian 1:3.3.5-6)
> uname -a
Linux rembrandt0 2.6.8-10-amd64-k8-smp #1 SMP Sun Jan 9 15:35:12 CET 2005 x86_64 GNU/Linux
The solution was to exclude both modules from the building process. After that
the "make modules" command completed successfully.
(One of) The reason(s) for these failures is that the missing constants could be
found in the include file "src/linux-2.6.6/include/linux/netfilter_ipv4.h"
before the patching.
Before the patch the content of the "nf_ip_hook_priorities" enumerated type in
"netfilter_ipv4.h" was:
enum nf_ip_hook_priorities {
NF_IP_PRI_FIRST = INT_MIN,
NF_IP_PRI_CONNTRACK_DEFRAG = -400,
NF_IP_PRI_RAW = -300,
NF_IP_PRI_SELINUX_FIRST = -225,
NF_IP_PRI_CONNTRACK = -200,
NF_IP_PRI_BRIDGE_SABOTAGE_FORWARD = -175,
NF_IP_PRI_MANGLE = -150,
NF_IP_PRI_NAT_DST = -100,
NF_IP_PRI_BRIDGE_SABOTAGE_LOCAL_OUT = -50,
NF_IP_PRI_FILTER = 0,
NF_IP_PRI_NAT_SRC = 100,
NF_IP_PRI_SELINUX_LAST = 225,
NF_IP_PRI_LAST = INT_MAX,
};
And after the patch this is:
enum nf_ip_hook_priorities {
NF_IP_PRI_FIRST = INT_MIN,
NF_IP_PRI_CONNTRACK = -200,
NF_IP_PRI_MANGLE = -150,
NF_IP_PRI_NAT_DST = -100,
NF_IP_PRI_FILTER = 0,
NF_IP_PRI_OFFLOAD = 50,
NF_IP_PRI_NAT_SRC = 100,
NF_IP_PRI_LAST = INT_MAX,
};
This implies that the missing constants disappeared after the patch. I do not
know if it is save to place them back.
There are no comments on this page. [Add comment]