Jump to content
Калькуляторы

FreeBSD 7.2 & INTEL x520-da2

Вечер добрый.

 

Столкнулись с необходимость установки 10G-карточки (чипсет 82559) в сервер со старой осью FreeBSD 7.2.

Обновлять систему нельзя.

 

Пробовали использовать встроенные драйвера версии 1.7.4 (но они, как оказалось, не поддерживают чипсет 82559):

ix0: <Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 1.7.4> port 0xb880-0xb89f mem 0xcfe80000-0xcfefffff,0xcff78000-0xcff7bfff irq 30 at device 0.0 on pci7
ix0: Using MSIX interrupts with 3 vectors
ix0: ixgbe_dma_malloc: bus_dma_tag_create failed; error 22
ix0: Unable to allocate TX Descriptor memory
device_attach: ix0 attach returned 12
ix1: <Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 1.7.4> port 0xbc00-0xbc1f mem 0xcff80000-0xcfffffff,0xcff7c000-0xcff7ffff irq 37 at device 0.1 on pci7
ix1: Using MSIX interrupts with 3 vectors
ix1: ixgbe_dma_malloc: bus_dma_tag_create failed; error 22
ix1: Unable to allocate TX Descriptor memory
device_attach: ix1 attach returned 12

 

Т.к. не получилось, то решили скачать драйвера с сайта Intel (скачали в итоге несколько версий от 2.3.8 до 2.4.10), но они не компилируются:

Warning: Object directory not changed from original /usr/src/ixgbe-2.3.8/src
@ -> /usr/src/sys
machine -> /usr/src/sys/i386/include
awk -f @/tools/makeobjops.awk @/kern/device_if.m -h
awk -f @/tools/makeobjops.awk @/kern/bus_if.m -h
awk -f @/tools/makeobjops.awk @/dev/pci/pci_if.m -h
:> opt_bdg.h
cc -O2 -fno-strict-aliasing -pipe -DSMP -DIXGBE_FDIR  -D_KERNEL -DKLD_MODULE -std=c99 -nostdinc   -I. -I@ -I@/contrib/altq -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common  -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -c ixgbe.c
cc -O2 -fno-strict-aliasing -pipe -DSMP -DIXGBE_FDIR  -D_KERNEL -DKLD_MODULE -std=c99 -nostdinc   -I. -I@ -I@/contrib/altq -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common  -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -c ixv.c
In file included from ixv.c:39:
ixv.h: In function 'drbr_needs_enqueue':
ixv.h:411: warning: implicit declaration of function 'buf_ring_empty'
ixv.h:411: warning: nested extern declaration of 'buf_ring_empty'
ixv.c: In function 'ixv_tx_ctx_setup':
ixv.c:2357: error: 'CSUM_SCTP' undeclared (first use in this function)
ixv.c:2357: error: (Each undeclared identifier is reported only once
ixv.c:2357: error: for each function it appears in.)
*** Error code 1

Stop in /usr/src/ixgbe-2.3.8/src.

 

Может у кого есть опыт использования этой карточки на старых системах или драйвера новее 1.7.4 (кроме тех, которые мы уже пробовали), но с поддержкой чипсета 82559?

Share this post


Link to post
Share on other sites

/usr/src/sys/sys/mbuf.h:#define CSUM_SCTP           	0x0040      	/* will csum SCTP */
/usr/src/sys/sys/mbuf.h:#define CSUM_SCTP_IPV6      	0x0080      	/* will csum IPv6/SCTP */
/usr/src/sys/sys/mbuf.h:#define CSUM_SCTP_VALID     	0x1000      	/* SCTP checksum is valid */

хотите добавляйте инклюд, хотите в сам файл допишите.

убедитесь что у вас есть /usr/src/sys/sys/buf_ring.h

Share this post


Link to post
Share on other sites
убедитесь что у вас есть /usr/src/sys/sys/buf_ring.h

Такого файла нет.

 

И в mbuf.h нет CSUM_SCTP и других параметров.

Share this post


Link to post
Share on other sites

У вас вариантов не много:

- пофиксить дрова чтобы поддерживали;

- бэкпортить новые;

- обновить систему;

- забить.

 

Слышал что игбшным дровам может быть мало мбуфов и ещё чего то что тюнится, с дефолтовыми настройками системы они работать не могут.

Share this post


Link to post
Share on other sites

Решили всё таки попробовать собрать с изменением приведенных выше параметров в mbuf.h и добавили buf_ring.h.

 

В итоге драйвера собрались, загружаются, но в логах ошибки:

ix0: <Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 2.4.4> port 0xb880-0xb89f mem 0xcfe80000-0xcfefffff,0xcff78000-0xcff7bfff irq 30 at device 0.0 on pci7
ix0: Using MSIX interrupts with 9 vectors
ix0: RX Descriptors exceed system mbuf max, using default instead!
ix0: ixgbe_dma_malloc: bus_dma_tag_create failed; error 22
ix0: Unable to allocate TX Descriptor memory
device_attach: ix0 attach returned 12
ix1: <Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 2.4.4> port 0xbc00-0xbc1f mem 0xcff80000-0xcfffffff,0xcff7c000-0xcff7ffff irq 37 at device 0.1 on pci7
ix1: Using MSIX interrupts with 9 vectors
ix1: RX Descriptors exceed system mbuf max, using default instead!
ix1: ixgbe_dma_malloc: bus_dma_tag_create failed; error 22
ix1: Unable to allocate TX Descriptor memory
device_attach: ix1 attach returned 12

 

Соответственно, сетевуха не работает.

Share this post


Link to post
Share on other sites

Обновлять систему нельзя.

 

Думаю, всем интересно, почему.

 

Есть вероятность, что те сервисы, которые сейчас крутятся на этом сервере, могут не заработать на обновленной системе.

Share this post


Link to post
Share on other sites

Обновлять систему нельзя.

Думаю, всем интересно, почему.

Есть вероятность, что те сервисы, которые сейчас крутятся на этом сервере, могут не заработать на обновленной системе.

я очень сомневаюсь что что-то не заработает, но вы, наверное, можете сделать копию на тестовый сервер и обновить на нем...

Share this post


Link to post
Share on other sites

ix0: RX Descriptors exceed system mbuf max, using default instead!

1. Добавьте в loader.conf:

kern.ipc.nmbclusters=262800

и в sysctl.conf

kern.ipc.maxsockbuf=83886080

2. Перегрузитесь.

 

п.с. Надеюсь, у Вас амд64 7.2

Share this post


Link to post
Share on other sites

Обновлять систему нельзя.

Думаю, всем интересно, почему.

Есть вероятность, что те сервисы, которые сейчас крутятся на этом сервере, могут не заработать на обновленной системе.

я очень сомневаюсь что что-то не заработает, но вы, наверное, можете сделать копию на тестовый сервер и обновить на нем...

 

Да, так и решили поступить. Сделать копию диска с системой и спокойно обновиться до 8.x на тестовом стенде

Собственно и обновились и всё даже заработало: и драйвера к сетевой и всё что нужно.

Правда есть одно НО (о нём ниже).

 

ix0: RX Descriptors exceed system mbuf max, using default instead!

1. Добавьте в loader.conf:

kern.ipc.nmbclusters=262800

и в sysctl.conf

kern.ipc.maxsockbuf=83886080

2. Перегрузитесь.

 

п.с. Надеюсь, у Вас амд64 7.2

 

Вот тут у нас и проблема: т.к. у нас UTM5, у которого пакет RFW работает только под i386, нам приходится держать всё это именно на i386. Но т.к. оперативки у нас 12Gb, ядро у собрано с PAE для поддержки оной.

 

А теперь возвращаясь к обновлению до 8.x. Удалось обновиться до следующей ветки:

8.0-RELEASE-p6

 

Изначально собрали с GENERIC. Драйвера встали (как штатные, так и с сайта Intel), сетевуху видно, линк есть, всё круто.

Решили пересобрать ядро с PAE да и заменить диски.. После пересборки ядра с PAE, драйвера опять начали ругаться:

ix0: <Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 2.4.4> port 0x2000-0x201f mem 0xd8000000-0xd807ffff,0xd8100000-0xd8103fff irq 30 at device 0.0 on pci7
ix0: Using MSIX interrupts with 5 vectors
ix0: ixgbe_dma_malloc: bus_dma_tag_create failed; error 22
ix0: Unable to allocate TX Descriptor memory
device_attach: ix0 attach returned 12
ix1: <Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 2.4.4> port 0x2020-0x203f mem 0xd8080000-0xd80fffff,0xd8104000-0xd8107fff irq 37 at device 0.1 on pci7
ix1: Using MSIX interrupts with 5 vectors
ix1: RX Descriptors exceed system mbuf max, using default instead!
ix1: ixgbe_dma_malloc: bus_dma_tag_create failed; error 22
ix1: Unable to allocate TX Descriptor memory
device_attach: ix1 attach returned 12

 

В гугле по ixgbe и PAE нашёл интересный патч, но там немного другое, кмк. Хотя попробовать стоит.

Share this post


Link to post
Share on other sites

8.0-RELEASE-p6

 

Имхо, надо обновляться до 8/9-STABLE. Много важных вещей в net/* не попало в 8.0-RELEASE.

 

Вот тут у нас и проблема: т.к. у нас UTM5, у которого пакет RFW работает только под i386, нам приходится держать всё это именно на i386.

 

Может попробовать?

# Enable 32-bit runtime support for FreeBSD/i386 binaries.

options COMPAT_FREEBSD32

Edited by Сильвер

Share this post


Link to post
Share on other sites

Вот тут у нас и проблема: т.к. у нас UTM5, у которого пакет RFW работает только под i386, нам приходится держать всё это именно на i386. Но т.к. оперативки у нас 12Gb, ядро у собрано с PAE для поддержки оной.

 

Вот это как раз не проблема. utm_rfw на amd64 запускается вообще без проблем. Сам utm я то же смог запустить, но вот платежную систему - никак. Поэтому под биллинг i386, а вот все остальное - amd64.

Share this post


Link to post
Share on other sites

Изначально собрали с GENERIC. Драйвера встали (как штатные, так и с сайта Intel), сетевуху видно, линк есть, всё круто.

Решили пересобрать ядро с PAE да и заменить диски.. После пересборки ядра с PAE, драйвера опять начали ругаться:

ix1: RX Descriptors exceed system mbuf max, using default instead!
ix1: ixgbe_dma_malloc: bus_dma_tag_create failed; error 22
ix1: Unable to allocate TX Descriptor memory
device_attach: ix1 attach returned 12

попробуйте

cat << EOF >> /boot/loader.conf
kern.ipc.nmbclusters=262144
kern.ipc.nmbjumbop=262144
kern.ipc.nmbjumbo16=32000
kern.ipc.nmbjumbo9=64000
EOF

Share this post


Link to post
Share on other sites

Имхо, надо обновляться до 8/9-STABLE. Много важных вещей в net/* не попало в 8.0-RELEASE.

 

MaLblsH (21 января 2013 - 09:55) писал:

Вот тут у нас и проблема: т.к. у нас UTM5, у которого пакет RFW работает только под i386, нам приходится держать всё это именно на i386.

 

 

Может попробовать?

Цитата

# Enable 32-bit runtime support for FreeBSD/i386 binaries.

options COMPAT_FREEBSD32

 

Попробую обновить до последней stable 8.3.

Очень давно пробовали ставить на amd64, и вроде даже эту опцию включали, но стоит ещё раз попробовать.

 

Вот это как раз не проблема. utm_rfw на amd64 запускается вообще без проблем. Сам utm я то же смог запустить, но вот платежную систему - никак. Поэтому под биллинг i386, а вот все остальное - amd64.

 

Был на форуме NetUp человек, который переписывал rfw под amd64, но у нас всё равно не вышло его (rfw) завести. С того момента (2007 или 2008 год) больше не пробовали.

Если не получится с обновлённой до 8.3 i386, попробую поднять utm на той же 8.3, только amd64.

А платёжная система - это Вы про payment_tool или это связка с популярными платёжными системами ? Если да, то мы их и не используем, поэтому есть шанс. Разделять биллинг не хочется на 2 сервера.

 

попробуйте

cat << EOF >> /boot/loader.conf
kern.ipc.nmbclusters=262144
kern.ipc.nmbjumbop=262144
kern.ipc.nmbjumbo16=32000
kern.ipc.nmbjumbo9=64000
EOF

 

Добавил, перезагрузил. Параметры применились, а вот драйвер пишет всё туже ошибку.

Share this post


Link to post
Share on other sites

Завести на amd64 очень легко, чуть с библиотеками посмотрите для запуска (ldd) и никаких проблем.

Share this post


Link to post
Share on other sites

Сейчас буду пробовать, потому что обновление до последней stable 8.3 не помогло.

Даже ради эксперимента поставил чистый SNAPSHOT 8.3 STABLE i386, собрал ядро PAE и неуспех.

Share this post


Link to post
Share on other sites

Спасибо всем за помощь!

UTM5 без проблем встал на x64 (ядро+rfw). Большего от него и не надо.

Share this post


Link to post
Share on other sites

Сегодня сам с аналогичной проблемой столкнулся. Решил.

1. cvsup до последней 7.2

2. действительно sysctl'ами увеличить буфера

3. наложить патч (порт ixgbe 2.4.5) и пересобрать ядро с опцией device ixgbe. Можно PAE'шное.

alter.org.ua/soft/fbsd/ixgbe

Edited by alter1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this