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

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', чего мне не нужно, то проблемы нету.

 

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

Edited by Brainiac

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

BSD way?

Причём тут BSD?

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Два тезиса:

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

 

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

Share this post


Link to post
Share on other sites

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

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

 

Два тезиса:

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

Edited by FiN

Share this post


Link to post
Share on other sites

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

В 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.

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.