Всем привет.
Есть проблема с девайсом, который я собрал на основе Gumstix микрокомпьютера. Сделал борд с smc911x сетевым чипом и активным Ethernet портом, всё сразу завелось, Angstrom linux загрузился, сеть поднялась. Если ничего не делая отключать/подключать сетевой кабель к девайсу, то он подхватывается каждый раз отлично, но стОит заюзать его в моей программе (небольшой сервер на tcp соккетах) и переподключение кабеля уже не работает, т.е. линукс не видит сеть + собсно сами светодиоды на ethernet разъёме не загораются сразу, а лишь по прошествии длительного времени (несолько часов ожидания) или после ребута.
Алгоритм действий проявления бага: включаю девайс с сетью, включаю серверное приложение, отсоединяю кабель, отключаю/не отключаю серверное приложение, вставляю сетевой кабель обратно, сеть не заводится.
Сначала после завершения серверного приложения я наблюдал висящие соккеты на TIME_WAIT, после чего сконфигурил до старта сервера систему так:
echo 4 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1 > /proc/sys/net/ipv4/tcp_orphan_retries
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
echo 2 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 1 > /proc/sys/net/ipv4/tcp_keepalive_intvl
echo 2 > /proc/sys/net/ipv4/tcp_keepalive_probes
соккеты стали почти сразу удаляться, но это никак не решило проблему - сеть заводится только после перезагрузки или очень долгого простоя. Не верится, что это хардварный баг ибо схемотехника - копия с рабочего борда для Gumstix-а, с тем же контроллером и т.п. + сеть же работает и переподключается, если не юзать TCP.
Есть какие-нибудь мысли по это теме?
Пробовал перезапускать сеть в системе - не помогло ( system(«/etc/init.d/networking restart»);
пробовал только eth0 перезапускаь - и это не помогло.