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

 
 
> Отправка пакетов через свитч RTL8305, Linux на SoC + Eth. switch RTL8305
shev77
сообщение Jul 29 2008, 12:59
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 19-11-07
Из: Харьков
Пользователь №: 32 451



Есть SoC под Linux со встроенным Ethernet портом, и кроме того, по интерфейсу MII, подключен свитч RTL8305.
Открывается сокет SOCK_RAW или SOCK_DGRAM и через него отправляются пакеты.
256 пакетов - пауза, 256 пакетов - пауза и т. д.

Со встроенным портом - нет проблем, я вижу все отправляемые пакеты.
С того который через свитч идут пакеты с номерами:
с 00 по 09,
с 41 по 4A,
с 82 по 8B,
с C3 по CC.
Т. е. десять пакетов проходят потом 50 не проходят.
sendto - ошибок не возвращает.
Подскажите куда копать? Спасибо.

int eth_Open()
{
int result = -1;

ether_fd = socket (AF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL));

ether_haddr.sll_family = AF_PACKET;
ether_haddr.sll_protocol = htons(ETH_P_ALL);
ether_haddr.sll_ifindex = ethatpifc_fd;

ether_haddr.sll_addr[0] = 0x00;
ether_haddr.sll_addr[1] = 0x10;
ether_haddr.sll_addr[2] = 0xC6;
ether_haddr.sll_addr[3] = 0xA5;
ether_haddr.sll_addr[4] = 0xEB;
ether_haddr.sll_addr[5] = 0x68;
ether_haddr.sll_halen = 6;

result = 0;
return result;
}

int eth_Send(unsigned char *buffer, int len)
{
int result = -1;

if ((ether_fd != -1) && (buffer != NULL) && (len > 0))
{
result = sendto(ether_fd, buffer, len, 0, (struct sockaddr *)&ether_haddr, sizeof(ether_haddr));
}
if (result == -1)
{
printf("eth_Send.c/sendto() ERR returns %d (%d/%s)\r\n", result, errno, strerror(errno));
}
else result = 0;

return result;
}
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:27
Рейтинг@Mail.ru


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