реклама на сайте
подробности

 
 
> lwIP PPP netif и Ethernet netif HW/SW checksum, проблемы с аппаратным расчётом контрольной суммы
eisufu
сообщение Jul 23 2012, 05:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 29-06-10
Пользователь №: 58 196



Создаю два интерфейса - один Ethernet (STM32F4x7 Ethernet controller настроен на hardware checksum), другой - PPP over serial. lwIP в lwipopts.h имеет настройки того, как будет считаться контрольная сумма: аппаратно или программно. Конечно, для PPP железо не считает контрольную сумму, интерфейс-то — "виртуальный". Попробовал следующее: везде в коде lwIP, где встречаются CHECKSUM_GEN_* (IP, TCP, UDP, ICMP) добавить код
Код
#if CHECKSUM_GEN_*
  <code>
#else
if ((netif->flags | NETIF_FLAG_POINTTOPOINT) != 0) {
  тот же самый <code>
}
#endif

но сгодилось это лишь для ICMP, TCP уже такое не позволит, так как в функции, содержащие код:
Код
#if CHECKSUM_GEN_*
  <code>
#endif
не передаётся netif *, для которого формируется пакет TCP. Да и вообще пришёл к выводу, что контрольную сумму надо считать централизованно для PPP (на камне есть периферия, которая быстро считает CRC), а для остальных netif - в зависимости от дефайнов CHECKSUM_GEN_*, зависящих от CHECKSUM_BY_HARDWARE.
Масса исходников — сходу не могу понять, где это "узкое место" где проходят все пакеты для каждого из IP, TCP, UDP, ICMP. Каково красивое решение?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Jul 23 2012, 06:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Насколько я понимаю, надо эмулировать поведение аппаратного генератора контрольной суммы. Если я не ошибаюсь, все PPP пакеты проходят через pppifOutput(). Там нужно делать детектирование заголовка (IP, TCP, UDP, ICMP), вычисление и подстановку контрольной суммы. Довольно неприятное занятие, учитывая, что пакет может состоять из цепочки pbuf.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- eisufu   lwIP PPP netif и Ethernet netif HW/SW checksum   Jul 23 2012, 05:14
- - eisufu   Получается, что стоит отказаться от аппаратного ра...   Jul 23 2012, 06:26
|- - scifi   Цитата(eisufu @ Jul 23 2012, 10:26) Получ...   Jul 23 2012, 06:47
- - eisufu   Просто в эту железку (потом будет STM32F417) ещё S...   Jul 23 2012, 07:12
|- - scifi   Цитата(eisufu @ Jul 23 2012, 11:12) Прост...   Jul 23 2012, 07:18
- - eisufu   У железки аппаратная поддержка SSL. Померю загрузк...   Jul 23 2012, 07:48
|- - scifi   Цитата(eisufu @ Jul 23 2012, 11:48) Помер...   Jul 23 2012, 07:58
- - eisufu   Сделал диспетчер задач (собственно, оформил FreeRT...   Jul 23 2012, 11:47
|- - scifi   Цитата(eisufu @ Jul 23 2012, 15:47) Мало ...   Jul 23 2012, 11:56
- - eisufu   Ладно). Что-то я видать совсем обнаглел. Буду погр...   Jul 23 2012, 12:38
- - eisufu   Утверждение не выполнялось в pbuf_free — нельзя пе...   Jul 24 2012, 05:57
|- - scifi   Цитата(eisufu @ Jul 24 2012, 09:57) Утвер...   Jul 24 2012, 06:14
- - eisufu   иметь бы опыт или требования, наводящие на правиль...   Jul 24 2012, 09:36
|- - VslavX   Цитата(eisufu @ Jul 24 2012, 12:36) что-т...   Jul 24 2012, 18:52
|- - Rst7   QUOTE (VslavX @ Jul 24 2012, 21:52) Малов...   Jul 24 2012, 19:00
||- - VslavX   Цитата(Rst7 @ Jul 24 2012, 22:00) Я смотр...   Jul 24 2012, 19:16
|- - scifi   Цитата(VslavX @ Jul 24 2012, 22:52) Сегод...   Jul 24 2012, 19:04
|- - eisufu   Цитата(VslavX @ Jul 25 2012, 00:52) iperf...   Jul 25 2012, 04:35
|- - VslavX   Цитата(eisufu @ Jul 25 2012, 07:35) Сложн...   Jul 25 2012, 04:43
|- - eisufu   Цитата(VslavX @ Jul 25 2012, 10:43) Реали...   Jul 25 2012, 05:52
|- - VslavX   Цитата(eisufu @ Jul 25 2012, 08:52) Какие...   Jul 25 2012, 07:46
|- - eisufu   Цитата(VslavX @ Jul 25 2012, 13:46) решил...   Jul 25 2012, 09:52
- - scifi   По скорости ничего не смогу посоветовать, так как ...   Jul 24 2012, 09:58
- - eisufu   Спасибо   Jul 24 2012, 13:18
- - Rst7   QUOTE но критично на свой код посмотреть заставили...   Jul 24 2012, 19:18


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016