|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Vladimir Kurtukov 2:5006/1 11 Jun 2002 14:41:09 To : Slawa Olhovchenkov Subject : Re: Поллинг -------------------------------------------------------------------------------- Slawa Olhovchenkov <Slawa_Olhovchenkov@f500.n5030.z2.fidonet.org> wrote: SO> Карточка сама шарится по памяти, даже без контроллера DMA странно, ты сказал, что bus mastering - это не DMA, а потом говоришь, что карточка сама шарится по памяти :-) противоречие, однако, выходит, ибо DMA - это Direct Memory Access. а third party (standard DMA, с участием контроллера) или first party (bus mastering DMA, самостоятельно) - это в принципиальном смысле рояли не играет, все равно прямой доступ к памяти. что, Слава, слабо признаться, что лажу сказал? ;-) VK>> я как-то считал, что это один из вариантов DMA... SO> При DMA контроллеру говорят откуда и как брать один кусок, а дальше карточка SO> его жрет. А тут она сам все иницирует. ну и в чем проблема? :-) [skipped...] VK>>>> доп. информация для размышления: ALTQ работает только с исходящим VK>>>> траффиком. драйвер вытаскивает пакеты из очереди и буферизует их (у VK>>>> fxp - до 128 пакетов), карточка потом выгребает оттуда пакеты и VK>>>> посылает, дергая irq по завершению. чем больше пакетов буферизуется, VK>>>> тем реже дергается irq, тем меньше возможностей для контроля у ALTQ. у VK>>>> не-DMA карт/драйверов, так понимаю, прерывание дергается после VK>>>> передачи каждого пакета. SO>>> fxp умеет генерировать промежуточные прерывания и altq этим пользуется. VK>> в ALTQ нигде не говорится, что оно этим пользуется. по крайней VK>> мере я не видел. предъяви! :-) SO> Глазки протри. ба, да мы никак хамить начали? :-) от безысходности, наверное... :-) tb regulator - это token bucket regulator. из man по tbrconfig: A token bucket regulator limits both the average amount and instantaneous amount of packets that the underlying driver can dequeue from the network interface within the kernel. таким образом это не катит для доказательства твоей фразы 'fxp умеет генерировать промежуточные прерывания', зато подтверждает то, что писал я. SO> +#ifdef ALTQ SO> + /* if tb regulator is used, we need tx complete interrupt */ SO> + if (TBR_IS_ENABLED(&ifp->if_snd)) SO> + txp->cb_command |= FXP_CB_COMMAND_I; SO> +#endif а у меня этот кусок выглядит вот так: +#ifdef ALTQ + if (ALTQ_IS_ON(ifp)) { + if (sc->tx_queued >= TXBUF_THRESH4ALTQ) { + /* + * stop filling tx buffer if we already have + * enough packets to transmit. + * we need an interrupt upon tx complete + * to continue sending. + */ + if (txp != NULL) + txp->cb_command |= FXP_CB_COMMAND_I; + break; + } если смотреть не на твой кусок патча (где ничего толком не видно, if (txp != NULL) из начала chunk'а ты выкинул), а на патченый код, видно, что то, что привел я и то, что привел ты - примерно одно и то же, только в 3.1 механизм задания threshold другой, он там не hardcoded, а задается через tbrconfig VK>>>> (ALTQ патчит драйвера и уменьшает кол-во буферизуемых пакетов) SO>>> Это ты гонишь. Т.е. дравера-то патчатся, но совсем с другой целью -- SO>>> что бы они использовали процедуры/макросы работы с очередями. VK>> не только. ы? ;-) VK>> +#ifdef ALTQ VK>> +/* VK>> + * device dependent tweak for ALTQ: if a driver is designed to dequeue VK>> + * too many packets at a time, we have to modify the driver to limit the VK>> + * number of packets buffered in the device. This modification VK>> + * often needs to change handling of tx complete interrupts as well. VK>> + * the fxp driver can pull as many as 128 packets (when FXP_NTXCB is VK>> 128). VK>> + * TXBUF_THRESH4ALTQ limits buffered packets up to 8. VK>> + */ VK>> +#define TXBUF_THRESH4ALTQ 8 VK>> +#endif SO> Проверяем: SO> SO>> grep TXBUF_THRESH4ALTQ sys-altq/sys-altq-freebsd-4.5.patch SO> Ты гонишь. у меня ALTQ 2.2 :-) у тебя же надо насчет TBR смотреть. спор этот, я думаю, пора заканчивать, т.к. ты в свою неправоту все равно не поверишь, а у меня сейчас и так времени мало... да и от темы изначальной давно ушли -- Best regards, { Vladimir Kurtukov, ICQ 2929697 } Vladimir { vk@hvv.svzserv.kemerovo.su } { 2:5006/9@fidonet } --- tin/1.5.12-20020427 ("Sugar") (UNIX) (FreeBSD/4.5-STABLE (i386)) * Origin: SvzServ (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/1089117da5ae8.html, оценка из 5, голосов 10
|