viakon 0 12 августа, 2021 Опубликовано 12 августа, 2021 · Жалоба Два дня ловил черную кошку :(. а проблема была с MR820TR(10Мбит хаб, удобно смотреть обмен т.к. не режет пакеты как свичи). Симптомы следующие, устройство не сообщает свой MAC на ARP запрос. Выяснилось, что, если просто остановиться в отладчике, ответ проходит, если без остановки - нет, причем пакеты от устройства идут без проблем. Со 100мбит оборудованием проблем нет. Версия - MR820TR долго переключается с передачи на прием и не может принять начало ответа. LWIP, STM32F107, RTL8201BL Можно ли это победить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 12 августа, 2021 Опубликовано 12 августа, 2021 · Жалоба 6 часов назад, viakon сказал: Можно ли это победить? Пакеты в МАС засылаете по флагу освобождения или по таймеру? Если посл- тут и проблема. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viakon 0 13 августа, 2021 Опубликовано 13 августа, 2021 · Жалоба Пакеты в MAC заливает DMA. Я только складываю пакет в свободный chain буффер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 13 августа, 2021 Опубликовано 13 августа, 2021 · Жалоба 12.08.2021 в 10:53, viakon сказал: Симптомы следующие, устройство не сообщает свой MAC на ARP запрос. Так именно "устройство не сообщает" или всё-таки ваше ПО его ответ не принимает? Это всё-таки совершенно разные вещи.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viakon 0 13 августа, 2021 Опубликовано 13 августа, 2021 (изменено) · Жалоба 7 минут назад, jcxz сказал: Так именно "устройство не сообщает" или всё-таки ваше ПО его ответ не принимает? Пакет ответа не видно в wireshark и устройство, что делало запрос, его тоже не видит. Хотя он попадает в буфер DMA для отсылки. Я думаю забить на это, сейчас найти использующееся оборудование 10Мбит не реально. Изменено 13 августа, 2021 пользователем viakon Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 13 августа, 2021 Опубликовано 13 августа, 2021 · Жалоба 6 минут назад, viakon сказал: Пакет ответа не видно в wireshark. Хотя он попадает в буфер DMA для отсылки. Ничего не понятно.... Ответа чьего? Того устройства, которое на ARP не отвечает? Так вы его отлаживаете? Посылаете ему ARP-азпросы с какого-то стороннего устройства? Напишите пожалуйста более внятно. Цитата Я думаю забить на это, сейчас найти использующееся оборудование 10Мбит не реально. Г*вно всегда проще не вычищать, а замести под ковёр. Только потом надо всегда быть осторожным, ходя по этому ковру. И гостей предупреждать, которые приходят.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viakon 0 13 августа, 2021 Опубликовано 13 августа, 2021 · Жалоба Попробую объяснить понятней. Есть устройство 1, назовем Dev1, и устройство 2, назовем Dev2. Dev 1, хочет отправить пакет к Dev2, формирует ARP запрос MAC адреса Dev2. Dev2 принимает запрос, отвечает в сеть, но ответ пропадает(возникает коллизия или еще что). Соответственно Dev1 не может ничего отправить, т.к. не знает MAC Dev2. На MR820TR работает так. На 100Мбит оборудовании все работает как надо. Я припоминаю, попадалась как то инфа в интернете, что надо делать задержку перед отправкой в LWIP(могу путать, давно было), может как раз по этой причине. Но сейчас все найденные примеры использования LWIP такой задержки не имеют. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 13 августа, 2021 Опубликовано 13 августа, 2021 · Жалоба 16 минут назад, viakon сказал: Попробую объяснить понятней. Есть устройство 1, назовем Dev1, и устройство 2, назовем Dev2. Dev 1, хочет отправить пакет к Dev2, формирует ARP запрос MAC адреса Dev2. Dev2 принимает запрос, отвечает в сеть, но ответ пропадает А отлаживаете вы какое? Dev2? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viakon 0 13 августа, 2021 Опубликовано 13 августа, 2021 · Жалоба Оба. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 13 августа, 2021 Опубликовано 13 августа, 2021 · Жалоба Ну если 1 час назад, viakon сказал: Пакет ответа не видно в wireshark то возможно - неправильно формируете этот ответ? Содержимое ответного пакета точно правильное? CRC & etc.? 12.08.2021 в 10:53, viakon сказал: если просто остановиться в отладчике, ответ проходит, если без остановки - нет Один из вариантов: после отправки (точнее: после постановки на передачу для DMA), содержимое этого пакета разрушаете в памяти (до того, как он был реально выплюнут DMA наружу). После завершения DMA-TX для данного пакета, проверьте его содержимое в памяти. Совпадает ли с изначальным? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viakon 0 13 августа, 2021 Опубликовано 13 августа, 2021 · Жалоба 7 минут назад, jcxz сказал: то возможно - неправильно формируете этот ответ Т.е. для 100Мбит пакет формируется правильно, а для 10 - криво? Маловероятно, это с программой никак не связано, это настройка MAC. Содержимое буфера точно не портится, у меня 10 буферов зарезервировано на отправку, они используются циклично и пока до него снова очередь не доходит информация в нем не переписывается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 13 августа, 2021 Опубликовано 13 августа, 2021 · Жалоба 25 минут назад, viakon сказал: Т.е. для 100Мбит пакет формируется правильно, а для 10 - криво? Конечно. Например: Поставили пакет для DMA на передачу, а потом сразу поместили этот пакет в очередь доступных для формирования нового кадра (ну или ещё куда-то эту память отдали). На 100Мбит пакет успел уйти до порчи, на 10Мбит - не успел, что-то успело записаться поверх. Или просто задача, заполнявшая пакет завершилась, освободила CPU для выполнения следующей задачи, которая тупо портит память по некоторым адресам. Пока заполнявшая задача пакет заполняла, её приоритет был выше и она просто не давала кривой задаче произвести её чёрное дело (или она очень быстро заполняла пакет). На 100Мбит оно успевает проскочить до порчи, на 10 - не успевает. Завтра в ПО что-то сдвинется (расположение в памяти каких-то объектов или задержки выполнения участков кода) и станет портиться на 100Мбит. Только и всего. Возможных причин может быть море. Главное, что баг где-то есть и как он будет проявляться и в какую ещё пятку выстрелит - вы не знаете. Пока его не найдёте. Цитата Содержимое буфера точно не портится, Проверили? После завершения отправки. Цитата у меня 10 буферов зарезервировано на отправку, они используются циклично и пока до него снова очередь не доходит информация в нем не переписывается. Вам виднее, программа то ваша. И если она где-то глючит - глюки тоже ваши. У нас-то всё работает. Также может быть какая-то кривая обработка других пакетов (из-за которой опять же портится память). Совсем не в функции заполнения пакета. Но на 100 и на 10 Мбит - разные временные моменты прохождения пакетов и временные соотношения между процессами их обработки (задачи, ISR-ы). Поэтому - когда-то портится, когда-то промахивается. Портить может даже криво настроенный DMA-RX от того же Ethernet-драйвера (а не обязательно программный код). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 13 августа, 2021 Опубликовано 13 августа, 2021 (изменено) · Жалоба 3 часа назад, viakon сказал: Т.е. для 100Мбит пакет формируется правильно, а для 10 - криво? Да запросто, вам тут уже объяснили почему. Отключите хотя бы пока все остальные процессы, кроме сетевого стека и посмотрите, будет ли разница... Можно еще и просто подключить напрямую устройство к компу с вирешарком, и посмотреть содержимое пакетов от устройства. Изменено 13 августа, 2021 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viakon 0 8 ноября, 2021 Опубликовано 8 ноября, 2021 · Жалоба и все таки дело не в программе, а в оборудовании. Заменил MR820TR на роутер dir-300s. Порты дирке выставил в 10мбит, все стабильно работает. минус в том что теперь траффик не посмотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 9 ноября, 2021 Опубликовано 9 ноября, 2021 · Жалоба 08.11.2021 в 09:18, viakon сказал: и все таки дело не в программе, а в оборудовании. Ну не знаю, по мне, так такой кривой косяк в продакшн не выпустили бы, тем более уважаемая контора, как Allied Telesyn... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться