Перейти к содержимому
Калькуляторы

FreeBSD_10 не работает драйвер без ipv6

Нужна помощь зала! )

 

Пересобрал ядро без 'options INET6'

FreeBSD nat 10.2-RELEASE-p12 admin@nat:/usr/obj/usr/src/sys/GENERIC amd64

 

Собрал и установил последние дрова ix-3.1.14

В loader.conf добавлено:

if_ix_load="YES"
hw.ix.unsupported_sfp=1

 

Но при загрузке в messages пишется:

Mar  4 14:07:37 nat kernel: link_elf_obj: symbol in6_cksum_pseudo undefined
Mar  4 14:07:37 nat kernel: KLD file if_ix.ko - could not finalize loading

И соответственно, подгружаются старые дрова.

Mar  4 14:07:37 nat kernel: ix0: <Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 2.8.3> 

В Makefile пробовал закомменить

#CFLAGS  += -DINET -DINET6 -DIXGBE_STANDALONE_BUILD
CFLAGS  += -DINET -DIXGBE_STANDALONE_BUILD

и пересобрать, но сборка вываливается с ошибкой

 

Если ядро собрано с 'options INET6', чего мне не нужно, то проблемы нету.

 

Что можно еще сделать?

Изменено пользователем Brainiac

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возьми эту функцию и впендюрь в код драйвера или вырежи ифдеами её из драйвера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да такая фигня случается. На дебиан >=7 не работает проброс X over ssh когда выключен ipv6 глобально. Лечится правкой конфига sshd (явное задание afi). Может ещё где такая фигня

 

Я тоже не люблю фрю, но такие штуки везде могут быть

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

BSD way?

Причём тут BSD?

Я бы тоже самое написал для любой проги: если чел сюда написал значит ему срочно надо и он готов совершить какие то действия, в противном случае он бы пошёл и накатал PR и подождал неопределённый срок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что можно еще сделать?

Перестать заниматься чепухой. Чем IPv6 помешал? А потом еще раз пересобирать ядро чтобы IPv6 развернуть и кривляться на форумах как много систем его не поддерживают и некогда все переделывать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Два тезиса:

1) Пересобирать без options INET6 нехорошо, вы получите кучу глюков из разных мест. Да-да, кодеры разные, и качество коже тоже хромает.

 

2) В любом случае откройте PR, описав последовательность действий, приводящих к проблеме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я бы тоже самое написал для любой проги: если чел сюда написал значит ему срочно надо и он готов совершить какие то действия, в противном случае он бы пошёл и накатал PR и подождал неопределённый срок.

Спасибо за совет, но как подсказывают ниже, наверное лучше не убирать опцию инет6. Да и я не программист, в эти сях нифига не шарю.

 

Два тезиса:

1) Пересобирать без options INET6 нехорошо, вы получите кучу глюков из разных мест. Да-да, кодеры разные, и качество коже тоже хромает.

2) В любом случае откройте PR, описав последовательность действий, приводящих к проблеме.

1. Не знаю, может у вас опыт побогаче, но я еще ни разу с такой проблемой не встречался, эта первая.

2. А что это такое и куда, что писать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за совет, но как подсказывают ниже, наверное лучше не убирать опцию инет6. Да и я не программист, в эти сях нифига не шарю.

наткнулся поиском по той же проблеме, 10.3 ничего не изменилось... Поэтому проблему решает, закоментить в ix-3.1.14/src/ix_txrx.c

/*th->th_sum = in6_cksum_pseudo(ip6, 0, IPPROTO_TCP, 0);*/

 

может кому пригодиться.

Изменено пользователем FiN

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только вот это не совсем корректно.

В 11.1 сделано так: /usr/src/sys/dev/ixgbe/ix_txrx.c

#ifdef INET6
case ETHERTYPE_IPV6:
	ip6 = (struct ip6_hdr *)(mp->m_data + ehdrlen);
	/* XXX-BZ For now we do not pretend to support ext. hdrs. */
	if (ip6->ip6_nxt != IPPROTO_TCP)
		return (ENXIO);
	ip_hlen = sizeof(struct ip6_hdr);
	th = (struct tcphdr *)((caddr_t)ip6 + ip_hlen);
	th->th_sum = in6_cksum_pseudo(ip6, 0, IPPROTO_TCP, 0);
	type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_IPV6;
	break;
#endif

Хотя ИМХО это тоже не кашерно, должно возвращать EINVAL для #else.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Официально не поддерживается пересборка ядра без пересборки ядерных модулей как раз вот из-за таких штук: опции сборки ядра могут сделать бинарно несовместимым его со старыми модулями.

 

Поможет пересборка модуля с WITHOUT_INET6.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.