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

 
 
> STM32F4 + lwIP, Согласование пропускной способности Ethernet
TolikG
сообщение Jul 1 2015, 04:24
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 19-03-10
Пользователь №: 56 071



Отлаживаю модем для удлинения Ethernet соединения. Пропускная способность порта Ethernet 100 Мб/сек, пропускная способность модема 1 Мб/сек. Схема работает следующим образом: Ethernet фрейм попадает в драйвер lwIP, здесь я его перефатываю и отправляю в модем (вместо стека lwIP), на втором конце такой же модем принимает этот фрейм - кладу его в драйвер lwIP (как будто он пришел со стека lwIP) и дальше он попадает в порт Ethernet.
Для тестирования на обоих концах подключены компьютеры. Пинги проходят, файлы передаются. Запускаю на обоих компьютерах утилиту jperf, тестирую пропускную способность TCP соединения. Несколько секунд работает нормально (1 Мб/сек), затем скорость падает почти до нуля, через несколько секунд возникают небольшие увеличения пропускной способности (порядка 100 кБит/сек). Складывается впечатление, что отправляющий комп не получает вовремя подтверждения сегментов и делает паузы. После перезапуска всей схемы картина повторяется. Подскажите, в какую сторону копать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Jul 1 2015, 04:35
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



может буферы накрываются?
В LWIP есть медленный таймер который отвечает за очистку использованных буферов, может его почаще подергать?

у меня было с lwIP что он время от времени почему то замирал и начинались повторные пересылки пакетов, потом все восстанавливалось, причину этого не нашел, так как перешли на другой стек.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 1 2015, 09:07
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Golikov A. @ Jul 1 2015, 07:35) *
у меня было с lwIP что он время от времени почему то замирал и начинались повторные пересылки пакетов

У меня тоже было. Проблема была не в LwIP а в процедуре ethernetif_input куба. В последней версии всё подправили и проблема ушла.
До тех пор пока она существовала, я ввёл копирование ID пакета и мониторил его на приёмной стороне.
Go to the top of the page
 
+Quote Post
Quasar
сообщение Jul 1 2015, 11:17
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(SasaVitebsk @ Jul 1 2015, 12:07) *
в процедуре ethernetif_input куба.


Да, тоже столкнулся с таким в свое время, вот такой там код был:
Код
void ethernetif_input( void const * argument )

{

  struct pbuf *p;
  struct netif *netif = (struct netif *) argument;

  for(;; )
  {
    if (osSemaphoreWait( s_xSemaphore, TIME_WAITING_FOR_INPUT)==osOK)
    {
      p = low_level_input( netif );
      if   (p != NULL)
      {
        if (netif->input( p, netif) != ERR_OK )
        {
          pbuf_free(p);
          p = NULL;
        }
      }
    }

  }
}


TolikG проверьте, есть у вас такое?
Go to the top of the page
 
+Quote Post
TolikG
сообщение Jul 2 2015, 04:08
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 19-03-10
Пользователь №: 56 071



У меня такой код:
Код
void ethernetif_input( void * pvParameters )
{
  struct pbuf *p;
  
  for(;; )
  {
    if (xSemaphoreTake( s_xSemaphore, emacBLOCK_TIME_WAITING_FOR_INPUT)==pdTRUE)
    {
TRY_GET_NEXT_FRAME:
      p = low_level_input( s_pxNetIf );
      if   (p != NULL)
      {
        if (ERR_OK != s_pxNetIf->input( p, s_pxNetIf))
        {
          pbuf_free(p);
        }
        else
        {
          goto TRY_GET_NEXT_FRAME;
        }
      }
    }
  }
}


Сообщение отредактировал IgorKossak - Jul 2 2015, 06:20
Причина редактирования: ,бездумное цитирование, форматирование
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 01:56
Рейтинг@Mail.ru


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