бинарники http://code.google.com/p/wl500g/downloads/list
или напрямую из svn
Quote:
Printable View
бинарники http://code.google.com/p/wl500g/downloads/list
или напрямую из svn
Quote:
Вообщем, реализованы такие дела в /drivers/scsi/
* дополнительные функции STATIC int scsi_send_stu(Scsi_Cmnd * SCpnt) и STATIC int scsi_try_start_unit(Scsi_Cmnd * SCpnt)
* в scsi_unjam_host использование в нужном месте + в reset_host
* в scsi_check_sense возврат FAILED по INIT COMMAND REQUIRED (0x02) для вызова scsi_unjam_host
только INIT COMMAND REQUIRED никогда не придет от usb_storage, там его просто нет, поэтому только по статусу флаг allow_restart устанавливать нельзя. а где именно в /drivers/usb/stogare/ установить флаг srb->allow_restart мне что то совсем не по глазам, доделывать callback фунцкции по типу slave_configure невариант вообще...
что делать будем?
пре-патчи выложу.
Вы работаете быстрее, чем я на форум захожу :)... Спасибо огромное! Прошивку залил, опробую как только смогу попозже сегодня - "проблемный" диск сейчас не у меня. Но по-крайней мере работу с другими дисками и флэш-драйвами новый патч не сломал :).
По-поводу Speedmod из Tomato... Насколько я понимаю, большинство изменений в netfilter - это бэкпорт из более нового ядра 2.4.3x (в частности, JHASH в новых ядрах используется стандартно безо всяких define), а по сути там 3 составляющие. (1) Безусловное задание размеров хэш-таблицы в ip_conntrack_core.c (ip_conntrack_htable_size, ip_conntrack_max) и изменение % на & в одном месте, (2) "тонкие настройки" в route.c (ip_rt_gc_elasticity, goal, ipv4_dst_ops.gc_thresh, ip_rt_max_size), и (3) изменения в jhash.h, которые вы пропустили - для использования lookup3 вместо lookup2. Сейчас нет сорсов под рукой кроме вашего дифа - патч не могу сделать.
Знакомый тестировал Tomato до и после Speedmod на 500gPv2. До - роутер умирал после приблизительно 4000 connections и перегружался сам. После - доживал до 9500, и потом, после уменьшения числа коннектов, возвращался к нормальной работе. Правда, неизвестно какова в этом доля собственно Speedmod-изменений, в сравнении с бэкпортом остального кода netfilter из 2.4.3x...
theMIROn изнывает от нетерпения, а ты чем занимаешься??? :D
Именно так!Quote:
По-поводу Speedmod из Tomato... Насколько я понимаю, большинство изменений в netfilter - это бэкпорт из более нового ядра 2.4.3x (в частности, JHASH в новых ядрах используется стандартно безо всяких define), а по сути там 3 составляющие.
(1) - не нравитсяQuote:
(1) Безусловное задание размеров хэш-таблицы в ip_conntrack_core.c (ip_conntrack_htable_size, ip_conntrack_max) и изменение % на & в одном месте, (2) "тонкие настройки" в route.c (ip_rt_gc_elasticity, goal, ipv4_dst_ops.gc_thresh, ip_rt_max_size), и (3) изменения в jhash.h, которые вы пропустили - для использования lookup3 вместо lookup2. Сейчас нет сорсов под рукой кроме вашего дифа - патч не могу сделать.
(2) - надо смотреть и анализировать
(3) - посмотрел на сайте автора, тесты все убедительные. Будем экспериментировать? ;)
Изменения в include/ пропустил потому, что они есть только в старой версии 1.21! Конспираторы блин! :mad:
Updated 04.02:
Приаттачил diff'ы к обеим версиям.
По-поводу Speedmod из Tomato:
- Решил проэкспериментировать с jhash, т.к. на сайте автора (Bob Jenkin's) тесты убедительные. (r79 - 312-netfilter-jhash.patch)
- Кто может сказать нафига в Tomato вынесены в procfs sysctl_ip_conntrack_tcp_timeouts[]/sysctl_ip_conntrack_udp_timeouts[] :confused: Когда это уже всё есть, только в разбивку, а не одним массивом.
- оставшиеся константы:
Кто-нибудь может добавить убедительное в дополнению к письму tb813PHP Code:
ip_conntrack_core.c:
ip_conntrack_htable_size
ip_conntrack_max
route.c:
ip_rt_gc_elasticity
goal
ip_rt_max_size
На данный момент размер таблицы conntrack у меня:
ip_conntrack version 2.1 (5953 buckets, 5953 max) - 312 bytes per conntrack
Предлагаю полностью подготовить прошивку к работе с USB модемами. Для начала хотя бы из коммандной строки.
Для этого:
1. Включить в прошивку модули драйверов acm.o и ipw.o. Для этого в файле /Makefile.diff после 277 строки добавить две строки
+ $(SRCMODULESDIR)/drivers/usb/serial/ipw.o
+ $(SRCMODULESDIR)/drivers/usb/acm.o
2. Включить в папку /usr/sbin прошивки бинарник номеронабирателя chat от последней OPENWRT.
стоит почитать на предмет доменов и/или алиасов
http://www.thekelleys.org.uk/dnsmasq...q.conf.example
p.s для добавления опций, нужно их прописывать в /usr/local/etc/dnsmasq.conf, который будет дописываться к генерируемому /etc/dnsmasq.confCode:# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
#local=/localnet/
...
# If you don't want dnsmasq to read /etc/hosts, uncomment the
# following line.
#no-hosts
# or if you want it to read another file, as well as /etc/hosts, use
# this.
#addn-hosts=/etc/banner_add_hosts
# Set this (and domain: see below) if you want to have a domain
# automatically added to simple names in a hosts-file.
#expand-hosts
# Set the domain for dnsmasq. this is optional, but if it is set, it
# does the following things.
# 1) Allows DHCP hosts to have fully qualified domain names, as long
# as the domain part matches this setting.
# 2) Sets the "domain" DHCP option thereby potentially setting the
# domain of all systems configured by DHCP
# 3) Provides the domain part for "expand-hosts"
#domain=thekelleys.org.uk
Кстати, летом 2008 вышел новый релиз этого пакета после более чем двухлетнего перерыва - 1.7.2 (с)
http://pptpclient.sourceforge.net/
Ну вот как и обещал, осилил я универсальный скрипт подъема соединения посредством USB модемов(GPRS, CDMA, DIALUP, IPW). Скрипт одним файлом.
Для его нормальной работы необходимо чтобы в прошивке были модули acm.o и ipw.o, а также в ядре включен параметр CONFIG_USB_DEVPATH=y.
Входные параметры скрипта которые надо задать:
nvram set modem= может принимать значения gprs, cdma, dialup, ipw - это параметр зависит от того, какой у вас модем;
nvram set apn= точка доступа для gprs и ipw модемов, например internet.mts.ru;
nvram set dialnumber= номер набора для gprs и dialup модемов например *99#;
nvram set dialinit= строка инициализации dialup модема;
nvram set username= имя пользователя;
nvram set ipwpin= пин код ipw модема;
nvram set ipwclpin= пин код ipw модема;
nvram set ipwmode= режим ipw модема.
nvram set maxpacketsize= максимальный размер пакета ACM модема;
nvram set vid= индентификатор модема;
nvram set pid= индентификатор модема.
Вот сам скрипт usbmodem.sh
#!/bin/sh
kill -9 $(ps|grep pppd|awk -F' ' '{print $1}') 2>/dev/null
mkdir /tmp/ppp/
mkdir /tmp/ppp/peers/
apn=$(nvram get apn)
dialnumber=$(nvram get dialnumber)
dialinit=$(nvram get dialinit)
ipwpin=$(nvram get ipwpin)
ipwclpin=$(nvram get ipwclpin)
ipwmode=$(nvram get ipwmode)
modem=$(nvram get modem)
username=$(nvram get username)
vid=$(nvram get vid)
pid=$(nvram get pid)
maxpacketsize=$(nvram get maxpacketsize)
if [ "$maxpacketsize" == "" ]; then
insmod acm
else
insmod acm maxpacketsize=$maxpacketsize
fi
if [ "$vid" == "" -o "$pid" == "" ]; then
insmod usbserial
else
insmod usbserial vendor=$vid product=$pid
fi
insmod pl2303
insmod ftdi_sio
insmod ipw
echo "'' ''" > /tmp/ppp/peers/cdma.chat
echo "'' 'ATZ'" >> /tmp/ppp/peers/cdma.chat
echo "'OK' 'ATI'" >> /tmp/ppp/peers/cdma.chat
echo "'OK' 'ATDT#777'" >> /tmp/ppp/peers/cdma.chat
echo "'CONNECT' 'ATO'" >> /tmp/ppp/peers/cdma.chat
echo "ABORT 'NO CARRIER'" > /tmp/ppp/peers/ipw.chat
echo "'' ''" >> /tmp/ppp/peers/ipw.chat
echo "'' 'ATZ'" >> /tmp/ppp/peers/ipw.chat
echo "'OK' 'AT+CPIN?'" >> /tmp/ppp/peers/ipw.chat
echo "'OK' 'AT+CPIN=$ipwpin'" >> /tmp/ppp/peers/ipw.chat
echo "TIMEOUT 2" >> /tmp/ppp/peers/ipw.chat
echo "OK-ATZ-OK 'ATZ'" >> /tmp/ppp/peers/ipw.chat
echo "'OK' 'AT+CLCK=\"SC\",0,\"$ipwclpin\"'" >> /tmp/ppp/peers/ipw.chat
echo "OK-ATZ-OK 'ATZ'" >> /tmp/ppp/peers/ipw.chat
echo "TIMEOUT 30" >> /tmp/ppp/peers/ipw.chat
echo "'OK' 'AT+CLCK=\"SC\",2'" >> /tmp/ppp/peers/ipw.chat
echo "'OK' 'AT+CIMI'" >> /tmp/ppp/peers/ipw.chat
echo "OK-AT+CIMI-OK 'AT+CGMI'" >> /tmp/ppp/peers/ipw.chat
echo "'OK' 'AT+CGMM'" >> /tmp/ppp/peers/ipw.chat
echo "'OK' 'AT+CGMR'" >> /tmp/ppp/peers/ipw.chat
echo "'OK' 'AT+CSQ'" >> /tmp/ppp/peers/ipw.chat
echo "'OK' 'AT+CBC'" >> /tmp/ppp/peers/ipw.chat
echo "'' 'AT+CFUN=4,$ipwmode'" >> /tmp/ppp/peers/ipw.chat
echo "'' 'AT+CGATT?'" >> /tmp/ppp/peers/ipw.chat
echo "'' 'AT+CGSN'" >> /tmp/ppp/peers/ipw.chat
echo "'CGSN:' 'AT+COPS?'" >> /tmp/ppp/peers/ipw.chat
echo "\\\"-AT+COPS?-OK 'AT&FE1Q0V1&C1&D2S0=0S7=60&K3N1'" >> /tmp/ppp/peers/ipw.chat
echo "'OK' 'AT+CGDCONT=1,\"PPP\",\"$apn\",\"0,0\",0,0'" >> /tmp/ppp/peers/ipw.chat
echo "ABORT ERROR" >> /tmp/ppp/peers/ipw.chat
echo "'OK' 'ATDT*99#'" >> /tmp/ppp/peers/ipw.chat
echo "'CONNECT' ''" >> /tmp/ppp/peers/ipw.chat
echo "'' ''" > /tmp/ppp/peers/dialup.chat
echo "'' 'ATI'" >> /tmp/ppp/peers/dialup.chat
echo "'' 'ATZ'" >> /tmp/ppp/peers/dialup.chat
echo "$dialinit" >> /tmp/ppp/peers/dialup.chat
echo "'OK' 'ATD$dialnumber'" >> /tmp/ppp/peers/dialup.chat
echo "'CONNECT' ''" >> /tmp/ppp/peers/dialup.chat
echo "'' ''" > /tmp/ppp/peers/gprs.chat
echo "'' 'ATZ'" >> /tmp/ppp/peers/gprs.chat
echo "'OK' 'ATI'" >> /tmp/ppp/peers/gprs.chat
echo "'OK' 'AT+COPS?'" >> /tmp/ppp/peers/gprs.chat
echo "'OK' 'AT+CGDCONT=1,\"IP\",\"$apn\"'" >> /tmp/ppp/peers/gprs.chat
echo "'OK' 'ATD$dialnumber'" >> /tmp/ppp/peers/gprs.chat
echo "'CONNECT' ''" >> /tmp/ppp/peers/gprs.chat
echo $(cat /proc/bus/usb/devpath | grep -o "/.*" | awk -F ':' '{print $1}') > /tmp/ppp/peers/$modem
echo "debug" >> /tmp/ppp/peers/$modem
echo "crtscts" >> /tmp/ppp/peers/$modem
echo "noipdefault" >> /tmp/ppp/peers/$modem
echo "ipcp-accept-local" >> /tmp/ppp/peers/$modem
echo "lcp-echo-interval 60" >> /tmp/ppp/peers/$modem
echo "lcp-echo-failure 5" >> /tmp/ppp/peers/$modem
echo "usepeerdns" >> /tmp/ppp/peers/$modem
echo "noauth" >> /tmp/ppp/peers/$modem
echo "nodetach" >> /tmp/ppp/peers/$modem
echo "user \"$username\"" >> /tmp/ppp/peers/$modem
echo "connect \"/usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/$modem.chat 2>/tmp/chat.log\"" >> /tmp/ppp/peers/$modem
pppd call $modem >> /tmp/chat.log
Ily, предлагаю скрипт внести в исходный код others.diff с компиляцией скрипта в папку /usr/sbin c правами 755, включить модули acm.o ipw.o и параметр ядра CONFIG_USB_DEVPATH=y.
В дальнейшем останется только сделать веб морду. Но тем, кому очень надо смогут пользоваться USB модемами прямо сейчас.
P.S. Сейчас пишу через Nokia N81 и роутер на котором запущен этот скрипт.
да, пожалуй. Возможно, в этом и есть причина, почему Олег не добавил эту фичу сам. У него в прошивке не пишется ничего в flashfs. Хотя почему --- до конца не понятно, т.к. flashfs неотъемлемая часть прошивки.
О, кстати, я не прав --- /tmp/local/root создается. Впрочем, нет. Он создается при каждой загрузке и при этом не сохраняется.
В общем, идея была сделать запуск доступного извне ssh полностью независимым от ситуации --- отвала внешнего носителя и даже flashfs. Типа чтобы даже в самом, самом крайнем хреновом случае можно было бы дать комманду переткнуть питание и все.
Мне видится следующая логика:
1) если flashfs disabled, то do nothing
2) если enabled, то проверить наличие /tmp/local/etc/dropbear
3) если его нету, то сгенерить ключи и сохранить flashfs
Коллеги, что скажете?
есть еще один вариант. Хранить ключ в nvram. Места там хватает.
Тогда можно сделать так:
1) если ключей в nvram нет, то сгенерить их
2) если flashfs disabled то создать /tmp/local/etc/dropbear и развернуть туда ключи (flashfs не сохраняем --- оставляем это на совести юзера)
3) если enabled то проверить наличие директории и при необходимости развернуть туда же (flashfs либо сохранить, либо нет --- вроде без большой разницы)
ключ в nvram можно хранить в текстовом формате.
Единственная проблема остается --- если юзер сгенерит ключи сам, то в flashfs и в nvram будут храниться разные ключи. Однако, функциональность будет сохранена в любом случае.
Кстати, любопытный вопрос. Размер nvram составляет 64К:
С другой стороны, объем используемой памяти составляет ровно 32768 байт:PHP Code:
cat /proc/mtd | grep nvram
mtd3: 00010000 00010000 "nvram"
Сидит эта цифра в макросе NVRAM_SPACE объявленном как 0x8000. Выходит, что 32К пропадают совсем впустую.PHP Code:
nvram show > /dev/null
size: 11633 bytes (21135 left)
О как. Оказывается существует такая ветка. :)
Я сейчас времени кодировать не имею особо, но подсказать могу. :D
Спрашивайте конечно.
У меня остались какие-то исправления, я планировал выпустить обновления для 1.9.2.7-9 и 10. Может ещё и выпущу. Там нужно хорошо поразбираться ещё раз с PPTP/PPPoE/L2TP со свзякой с DHCP и DNS. Какие-то грабли там остались, в основном из попыток скрестить ужа с ежом. По хорошему, там вообще нужно переделать веб-интерфейс, чтобы логика была максимально приближена к форточкам. И убить MAN в маршрутах, назвав его WAN. :)
Что касается dropbear и генерации ключей. У меня была задумка, нереализованная, добавить дефолтный стартовый скрипт, который бы автоматом генерировал ключи и сохранял их во flashfs при необходимости. Тогда в post-boot нужно было бы только этот скрипт запустить.
От хранения ключей в nvram я отказался (изначально так и было) после добавления flashfs, т.к. это сильно упростило запуск dropbear да и других программ - ключ не нужно было перепаковывать туда-сюда. Кроме того, с nvram есть подстава. Размер всего 32к, который имеет свойства заканчиваться. Поглядите на dd-wrt: там постоянно проблемы c nvram. В общем это место я решил не использовать тогда.
ЗЫ: Сейчас у меня на столе лежит инженерный образец ASUS RT-N16. BCM4718@533Mhz, 128MB DDR2 RAM, дофига флеша (типа 32мегабайта, не помню), гигабит, 802.11n, 2xUSB 2.0. В продаже ожидается летом. Цена, думаю будет в районе 150 долларов.
Стараемся выжать максимум из того что есть :)
Парочка вопросов есть:Quote:
Я сейчас времени кодировать не имею особо, но подсказать могу. :D
- Не помнишь зачем добавлялся к pptp route_add() ?
http://wl500g.info/showthread.php?p=115389#post115389
http://wl500g.info/showthread.php?t=14081&page=2- Почему ты не стал включать CONFIG_PACKET_MMAP? Для большинства это лишнее?
Я надеюсь хоть ядро там 2.6? Broadcom опять всё в бинарниках поставляет?Quote:
ЗЫ: Сейчас у меня на столе лежит инженерный образец ASUS RT-N16. BCM4718@533Mhz, 128MB DDR2 RAM, дофига флеша (типа 32мегабайта, не помню), гигабит, 802.11n, 2xUSB 2.0.
1) Да, вот он глюк о котором я написал выше. Маршрут добавляться должен, иначе Корбина и похожие на неё работать перестанут, т.к. у них адрес впн сервера совпадает с пиром, который используется ппп. В данном случае маршрут не стоило добавлять, т.к. сервер находится в одной сети с роутером. Я это переделывал в 9/10 прошивке, в предыдущих код был немного другим и таких вещей не происходило, но были какие-то другие несчастья, при исправлении которых я испортил логику. Где-то я убрал проверку гейта. Зачем-то. В общем сравни этот кусок в разных версиях. МОжешь сюда запостить оба варианта, я тоже гляну. В L2TP должен быть точно такой же код.
2) А нафига он? :) Я вообще воздерживался от включения многих фич по одной причине - мало места. Единственное, что включать нельзя - ebtables, т.к. фаервол наш начнёт работать неправильно. :)
Я его не включал. :) Т.е. включил вслепую, проверил, что в режиме восстановления он входит и сразу выключил. :) При случае гляну. А вообще плата приятная в том плане, что на ней есть jtag. :)Quote:
Я надеюсь хоть ядро там 2.6? Broadcom опять всё в бинарниках поставляет?