BSACPLD 15 26 декабря, 2018 Опубликовано 26 декабря, 2018 · Жалоба Добрый день, коллеги! Помогите, пожалуйста, разобраться в чем проблема. Есть самописный Ethernet MAC в который я решил добавить поддержку Flow Control. Алгоритм работы следующий: При заполнении приёмного FIFO более чем на половину MAC контроллер отсылает pause frame в сторону ПК. После отсылки pause frame MAC ждет таймаут равный pause time после чего снова проверяет заполнение приёмного FIFO. Со стороны ПК pause frame нормально ловится Wireshark и вроде бы никакой ругани на неправильный формат Wireshark не выдает. Со стороны ПЛИС смотрю наличие принимаемых пакетов с помощью SignalTap (на скриншоте флаг rx_dv). В настройках сетевой карты Flow Control включен, однако при приходе pause frame не происходит приостановки передачи пакетов на 33 мс (pause time = 0xFFFF). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 26 декабря, 2018 Опубликовано 26 декабря, 2018 (изменено) · Жалоба в сигнал тапе плохо видно, а что за пакеты приходят? это же вроде там у вас не tcp уровень, может служебные какие или период паузы уже закончился Изменено 26 декабря, 2018 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 15 26 декабря, 2018 Опубликовано 26 декабря, 2018 · Жалоба Это не служебные, т.к. по длине они совпадают с UDP потоком данных от ПК (8 байт преамбула + 1066 байт пакет + 4 байта CRC). Таймаут не мог так быстро закончится, т.к. он выставлен на 33 мс (0xFFFF). В SignalTap видно, что пакеты идут с интервалом чуть больше 1000 тактов 125МГц, а это явно меньше 33 мс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lutovid 1 26 декабря, 2018 Опубликовано 26 декабря, 2018 · Жалоба А значения в полях мак адреса верные(для udp и для pause frame)? По идее на стороне ПЛИС это можно не детектировать - вайршарк позволяет видеть тайминг пакетов - достаточно проследить< что после дросселирующего фрейма выдержана пауза - если я правильно понял задачу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 15 26 декабря, 2018 Опубликовано 26 декабря, 2018 · Жалоба Для UDP точно правильные, т.к. эти пакеты я отсылаю с помощью своей тестовой программы и wireshark показывает правильные значения + это уже давно проверенный кусок кода + приёмную часть я не правил. Со стороны передачи pause frame вроде тоже все верно. dst 0180C2000001 - специальный MAC адрес для pause пакетов src 001122334455 - MAC адрес платы wireshark показывает что паузы нет - см. скриншот в первом посте. 56 minutes ago, Lutovid said: достаточно проследить< что после дросселирующего фрейма выдержана пауза - если я правильно понял задачу. Да. Именно этого я и пытаюсь добиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lutovid 1 26 декабря, 2018 Опубликовано 26 декабря, 2018 · Жалоба 8 minutes ago, BSACPLD said: Для UDP точно правильные, т.к. эти пакеты я отсылаю с помощью своей тестовой программы и wireshark показывает правильные значения + это уже давно проверенный кусок кода + приёмную часть я не правил. Со стороны передачи pause frame вроде тоже все верно. я имел в виду совпадает ли dst UDP пакета и src pause frame. Если да, то пока идей нет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 15 26 декабря, 2018 Опубликовано 26 декабря, 2018 · Жалоба 5 minutes ago, Lutovid said: я имел в виду совпадает ли dst UDP пакета и src pause frame. Если да, то пока идей нет Совпадает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_maxim_ 0 26 декабря, 2018 Опубликовано 26 декабря, 2018 · Жалоба Здравствуйте. Читали эту ветку?https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=101489&tab=comments#comment-1046226 У меня была такая же проблема как у вас - компьютер не реагировал на PAUSE frame, пока в регистрах микросхемы физического уровня на плате с ПЛИС не были специально установлены биты включения PAUSE frame (смотрите регистры Auto-Negotiation Advertisement и Auto-Negotiation Link Partner Ability) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 15 27 декабря, 2018 Опубликовано 27 декабря, 2018 · Жалоба Читал. Биты 11 и 10 в регистре 4 установлены в 1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 27 декабря, 2018 Опубликовано 27 декабря, 2018 (изменено) · Жалоба 21 hours ago, BSACPLD said: Это не служебные, т.к. по длине они совпадают с UDP потоком данных от ПК (8 байт преамбула + 1066 байт пакет + 4 байта CRC). интересная логика. То есть вы вычисляете тип пакета по его размеру? я бы все таки разобрался, что это приходит. Определенно на ваш самоедельный MAC идет с вашим адресом 001122334455. потом вроде верный ether_type стоит 0800h (ip протокол, если я правильно разглядел на скрине), а вот после него какая то полная ерундистика из ff что не есть хорошо. Изменено 27 декабря, 2018 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 15 27 декабря, 2018 Опубликовано 27 декабря, 2018 · Жалоба Я его уже 10 раз проверял и по размеру и по содержимому :( Вообще, насколько я понимаю, если приходит pause с multicast адресом 0180C2000001, то порт должен приостанавливать любую передачу. Вот лог wireshark. https://yadi.sk/d/4L1NBbEF27b-QA И где ff? Если Вы про pause, то 0xFFFF это максимальная длительность паузы равная 33 мс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 27 декабря, 2018 Опубликовано 27 декабря, 2018 (изменено) · Жалоба Глянул лог. А вы не пробовали пауз фрейм отсылать на карточку? которая с MAC = 00:1b:21:d0:04:10 А то вы паузу отсылаете на какой то маршрутизатор вроде, с MAC = 01:80:c2:00:00:01, карта то о паузе знать не знает и спаммит в вас upd. Сколько сеток делал, о мультикаст маках знать не знал, но все равно попробуйте на карточку заслать Изменено 27 декабря, 2018 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 27 декабря, 2018 Опубликовано 27 декабря, 2018 (изменено) · Жалоба Вообще если быстро по стандартам побегать, то вроде бы МАКи вида 01-80-C2-00-00-XX исключительно для роутеров. Wireshark вон тоже его расшифровывает как служебный пакет для роутера. Видать карты не могут такие штуки (широковещательные) обрабатывать Изменено 27 декабря, 2018 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 15 27 декабря, 2018 Опубликовано 27 декабря, 2018 · Жалоба Попробовал забить MAC сетевой карты вместо multicast - тоже самое. Wireshark пакеты видит, карта не реагирует. Пробовал на 2 разных компах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться