|
Проблемма с LAN (PHY MII/RMII) : at91sam9g20ek+PHY Davicom DM9161AEP, ifconfig : error overruns |
|
|
|
Jun 1 2011, 20:08
|
Группа: Участник
Сообщений: 13
Регистрация: 1-06-11
Из: Днепропетровск
Пользователь №: 65 405

|
Добрый вечер. Есть проблемма - помогите, пожалуйста, решить. Суть ее такова : Есть плата at91sam9g20ek с PHY Davicom DM9161AEP.
с ядром linux 2.6.30 вот такая беда твориться :
kernel BUG at drivers/net/macb.c:442! Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = c79e4000 [00000000] *pgd=279fa031, *pte=00000000, *ppte=00000000 Internal error: Oops: 817 [#1] Modules linked in: vin_mod dss_mod k16_mod scsi_wait_scan CPU: 0 Not tainted (2.6.30 #40) PC is at __bug+0x1c/0x28 LR is at __bug+0x18/0x28 pc : [<c002974c>] lr : [<c0029748>] psr: 60000013 sp : c79e1e58 ip : fefff200 fp : 00000040 r10: 00000100 r9 : c78ebb38 r8 : 00000121 r7 : 000000d6 r6 : c78ebb00 r5 : c782e4e0 r4 : 00000120 r3 : 00000000 r2 : 80000013 r1 : 000019c1 r0 : 00000029 Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user Control: 0005317f Table: 279e4000 DAC: 00000015 Process elgatos (pid: 497, stack limit = 0xc79e0268) Stack: (0xc79e1e58 to 0xc79e2000) 1e40: 0000011f c0185ee8 1e60: 00000040 00000000 c79e0000 c78ebb38 00000040 00000100 0000012c c031410c ...... ......
перед этим ifconfig мне показывал ошибки overruns :
eth0 Link encap:Ethernet HWaddr 00:12:34:56:09:8F inet addr:192.100.101.254 Bcast:192.100.101.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:170240 errors:82 dropped:0 overruns:82 frame:0 TX packets:188302 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:31242471 (29.7 MiB) TX bytes:40814141 (38.9 MiB) Interrupt:21 Base address:0x4000
когда грузилось ядро было такое сообщение :
MACB_mii_bus: probed eth0: Atmel MACB at 0xfffc4000 irq 21 (00:12:34:56:10:8f) eth0: attached PHY driver [Davicom DM9161A] (mii_bus:phy_addr=ffffffff:00, irq=-1)
плюнул на это ядро и перешел на 2.6.33 (с патчем от linux4sam), ядро больше не падает, но ошибки overruns остались, причем их количество растет при увеличении трафика (sip, rtp-пакеты) через LAN. Подключил плату к свитчу с портом в 10Mbps/Full-Duplex - ошибки overruns исчезли. Однако на плате не могу принудительно установить режим 10/Full-Duplex:
mii-tool говорит : SIOCGMIIPHY on 'eth0' failed: Operation not supported no MII interfaces found примерно тоже говорит ifconfig при попытке сменить media у LAN-а
Вопрос такой : режим MII не поддерживается драйвером ядра macb для PHY Davicom DM9161AEP ???????????? может кто-то с такой проблеммой уже сталкивался (что-то подобное читал у miniMax-а, но почему-то его рекомеднации мне не помогли).
Кто вкурсе, помогите, пожалуйста.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Jun 5 2011, 08:16
|
Группа: Участник
Сообщений: 13
Регистрация: 1-06-11
Из: Днепропетровск
Пользователь №: 65 405

|
Уважаемые, помогите кто в курсе этой беды. теперь и на ядре 2.6.33 тот же баг получаю (при большой нагрузке на LAN) :
kernel BUG at drivers/net/macb.c:428! Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = c3a24000 [00000000] *pgd=239d3031, *pte=00000000, *ppte=00000000 Internal error: Oops: 817 [#1] PREEMPT last sysfs file: Modules linked in: vin_mod k16_mod scsi_wait_scan CPU: 0 Not tainted (2.6.33 #33) PC is at __bug+0x1c/0x28 LR is at __bug+0x18/0x28 pc : [<c002c8a4>] lr : [<c002c8a0>] psr: 60000013 sp : c39dbe50 ip : fefff200 fp : 00000040 r10: 00000100 r9 : c3884350 r8 : 000001a3 r7 : 000000d6 r6 : c3884320 r5 : c38435c0 r4 : 000001a2 r3 : 00000000 r2 : 00000102 r1 : 00001ab5 r0 : 0000002c Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user Control: 0005317f Table: 23a24000 DAC: 00000015 Process elgatos (pid: 504, stack limit = 0xc39da270) Stack: (0xc39dbe50 to 0xc39dc000) be40: 000001a1 c01b0bf0 00000040 00000000 be60: c39dbf74 c3884350 00000040 0000000c 0000012c c037f55c c037f56c 002753e2 be80: c03941e8 c01fca7c c39dbdb8 00000102 c39da000 0000000c 00000001 00000003 bea0: 0000000a c038b460 00000000 c0049cb4 c39da000 00000000 00000015 00000015 bec0: 00000000 00000015 00000001 00000000 c39da000 41977216 41977434 c004a004 bee0: 00000015 c0028080 0000c350 ffffffff fefff000 c0028ae8 c482f000 00000032 bf00: 000001ff 000000fd 00001090 0000001c c4841080 00000008 00000208 c39da000 bf20: 41977216 41977434 c4841090 c39dbf40 000001e3 bf0065b8 20000013 ffffffff bf40: 165ac476 00000001 00000000 c39d83c0 41977216 c39dbf88 00000003 00000208 bf60: 00000000 c0098be4 00000000 00000000 00000000 00000000 c39d83c0 00000003 bf80: c0029088 c0098ff4 00000000 00000000 00000000 00000001 00000002 00000004 bfa0: 40041000 c0028ee0 00000002 00000004 0000000c 41977216 00000208 41977216 bfc0: 00000002 00000004 40041000 00000003 40041000 003d0f00 40029864 41977434 bfe0: 00000000 41976c00 40033624 40033ca4 80000010 0000000c 00000000 00000000 [<c002c8a4>] (__bug+0x1c/0x28) from [<c01b0bf0>] (macb_poll+0x164/0x248) [<c01b0bf0>] (macb_poll+0x164/0x248) from [<c01fca7c>] (net_rx_action+0x68/0x180) [<c01fca7c>] (net_rx_action+0x68/0x180) from [<c0049cb4>] (__do_softirq+0x78/0x100) [<c0049cb4>] (__do_softirq+0x78/0x100) from [<c004a004>] (irq_exit+0x44/0x64) [<c004a004>] (irq_exit+0x44/0x64) from [<c0028080>] (asm_do_IRQ+0x80/0xa0) [<c0028080>] (asm_do_IRQ+0x80/0xa0) from [<c0028ae8>] (__irq_svc+0x48/0x8c) Exception stack(0xc39dbef8 to 0xc39dbf40) bee0: c482f000 00000032 bf00: 000001ff 000000fd 00001090 0000001c c4841080 00000008 00000208 c39da000 bf20: 41977216 41977434 c4841090 c39dbf40 000001e3 bf0065b8 20000013 ffffffff [<c0028ae8>] (__irq_svc+0x48/0x8c) from [<bf0065b8>] (rchan_read+0x324/0x5b0 [k16_mod]) [<bf0065b8>] (rchan_read+0x324/0x5b0 [k16_mod]) from [<c0098be4>] (vfs_read+0xac/0x158) [<c0098be4>] (vfs_read+0xac/0x158) from [<c0098ff4>] (sys_read+0x3c/0x68) [<c0098ff4>] (sys_read+0x3c/0x68) from [<c0028ee0>] (ret_fast_syscall+0x0/0x28) Code: e1a01000 e59f000c eb006336 e3a03000 (e5833000) ---[ end trace 4ca592b1fafad532 ]--- Kernel panic - not syncing: Fatal exception in interrupt [<c002e998>] (unwind_backtrace+0x0/0xdc) from [<c0044878>] (panic+0x58/0x12c) [<c0044878>] (panic+0x58/0x12c) from [<c002cd48>] (die+0x16c/0x198) [<c002cd48>] (die+0x16c/0x198) from [<c002f6c0>] (__do_kernel_fault+0x68/0x80) [<c002f6c0>] (__do_kernel_fault+0x68/0x80) from [<c002f89c>] (do_page_fault+0x1c4/0x1dc) [<c002f89c>] (do_page_fault+0x1c4/0x1dc) from [<c0028318>] (do_DataAbort+0x38/0x9c) [<c0028318>] (do_DataAbort+0x38/0x9c) from [<c0028a8c>] (__dabt_svc+0x4c/0x60) Exception stack(0xc39dbe08 to 0xc39dbe50) be00: 0000002c 00001ab5 00000102 00000000 000001a2 c38435c0 be20: c3884320 000000d6 000001a3 c3884350 00000100 00000040 fefff200 c39dbe50 be40: c002c8a0 c002c8a4 60000013 ffffffff [<c0028a8c>] (__dabt_svc+0x4c/0x60) from [<c002c8a4>] (__bug+0x1c/0x28) [<c002c8a4>] (__bug+0x1c/0x28) from [<c01b0bf0>] (macb_poll+0x164/0x248) [<c01b0bf0>] (macb_poll+0x164/0x248) from [<c01fca7c>] (net_rx_action+0x68/0x180) [<c01fca7c>] (net_rx_action+0x68/0x180) from [<c0049cb4>] (__do_softirq+0x78/0x100) [<c0049cb4>] (__do_softirq+0x78/0x100) from [<c004a004>] (irq_exit+0x44/0x64) [<c004a004>] (irq_exit+0x44/0x64) from [<c0028080>] (asm_do_IRQ+0x80/0xa0)
[<c0028080>] (asm_do_IRQ+0x80/0xa0) from [<c0028ae8>] (__irq_svc+0x48/0x8c) Exception stack(0xc39dbef8 to 0xc39dbf40) bee0: c482f000 00000032 bf00: 000001ff 000000fd 00001090 0000001c c4841080 00000008 00000208 c39da000 bf20: 41977216 41977434 c4841090 c39dbf40 000001e3 bf0065b8 20000013 ffffffff [<c0028ae8>] (__irq_svc+0x48/0x8c) from [<bf0065b8>] (rchan_read+0x324/0x5b0 [k16_mod]) [<bf0065b8>] (rchan_read+0x324/0x5b0 [k16_mod]) from [<c0098be4>] (vfs_read+0xac/0x158) [<c0098be4>] (vfs_read+0xac/0x158) from [<c0098ff4>] (sys_read+0x3c/0x68) [<c0098ff4>] (sys_read+0x3c/0x68) from [<c0028ee0>] (ret_fast_syscall+0x0/0x28)
Причем строка 428 в исходнике macb.c выглядит так
BUG_ON(frag != last_frag);
кто-то же встречал такую беду ? отзовитесь пожалуйста
|
|
|
|
|
Dec 3 2011, 09:25
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
У меня есть мысль использовать аналог at91sam9g20ek, только с другим PHY, поэтому очень интересно узнать, как разрешилась ваша проблема. Также буду рад услышать отзывы от всех, кто использует решения подобные at91sam9g20ek с linux-2.6.30. Главным образом интересует стабильность работы SPI и ethernet. Попутно еще вопрос. Цитата(salara @ Jun 2 2011, 01:08)  когда грузилось ядро было такое сообщение : MACB_mii_bus: probed eth0: Atmel MACB at 0xfffc4000 irq 21 (00:12:34:56:10:8f) eth0: attached PHY driver [Davicom DM9161A] (mii_bus:phy_addr=ffffffff:00, irq=-1) В исходниках ядра 2.6.30 (взятыx отсюда: http://armdevs.googlecode.com/files/linux-2.6.30.tar.bz2) я не нашел код,который мог бы выдавать такое сообщение. В drivers/net/arm/at91_ether.c я вижу такую строку: printk(KERN_INFO "%s: Davicom 9161 PHY %s\n", dev->name, (lp->phy_media == PORT_FIBRE) ? "(Fiber)" : "(Copper)"); Вы использовали какой-то другой драйвер?
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
|
Dec 20 2011, 16:46
|
Группа: Участник
Сообщений: 13
Регистрация: 1-06-11
Из: Днепропетровск
Пользователь №: 65 405

|
Цитата(alx2 @ Dec 3 2011, 11:25)  У меня есть мысль использовать аналог at91sam9g20ek, только с другим PHY, поэтому очень интересно узнать, как разрешилась ваша проблема. Также буду рад услышать отзывы от всех, кто использует решения подобные at91sam9g20ek с linux-2.6.30. Главным образом интересует стабильность работы SPI и ethernet. Попутно еще вопрос. В исходниках ядра 2.6.30 (взятыx отсюда: http://armdevs.googlecode.com/files/linux-2.6.30.tar.bz2) я не нашел код,который мог бы выдавать такое сообщение. В drivers/net/arm/at91_ether.c я вижу такую строку: printk(KERN_INFO "%s: Davicom 9161 PHY %s\n", dev->name, (lp->phy_media == PORT_FIBRE) ? "(Fiber)" : "(Copper)"); Вы использовали какой-то другой драйвер? Ничем хорошим наша проблемма так и не решилась. Испробовал кучу ядер (2.6.33, 2.6.34, 2.6.39) результат один и тот же. Ядро продолжает падать при интенсивном трафике через LAN (RTP пакеты) вот примерно с таким сообщением : kernel BUG at drivers/net/macb.c:417! . Пришлось пока задействовать один разъем usb под конвертор usb-lan (D-LINK на базе чипсета ASIX) и пустить по нему трафик, не фонтан конечно, но пока хоть что-то. Нигде в инете так и не нашел вразумительного объяснения такому поведению драйвера macb. А SPI мы вообще не используем, свой чипсет (Cyclon-III Altera) посадили прямо на шину процессора по NCS3. Вообщем пара MACB-Davicom что-то не пошла у нас, хотим попробывать другой PHY вместо Davicom, например Micrel или что-то еще.
|
|
|
|
|
Dec 20 2011, 17:38
|
Группа: Участник
Сообщений: 13
Регистрация: 1-06-11
Из: Днепропетровск
Пользователь №: 65 405

|
Цитата(aaarrr @ Dec 20 2011, 19:04)  Чем PHY-то виноват, если проблема в драйвере EMAC? Возможно и так, но тогда наверно не в EMAC а в атмеловском MACB А у вас есть лекарство для драйвера ?
|
|
|
|
|
Dec 20 2011, 18:08
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(salara @ Dec 20 2011, 21:38)  Возможно и так, но тогда наверно не в EMAC а в атмеловском MACB Так MACB - это и есть драйвер EMAC. Цитата(salara @ Dec 20 2011, 21:38)  А у вас есть лекарство для драйвера ? Просмотрел его бегло - увы, горбатого могила исправит. Без нормальной обработки ошибок по приему он и должен падать на большой загрузке.
|
|
|
|
|
Dec 21 2011, 04:18
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Цитата(aaarrr @ Dec 20 2011, 23:08)  Так MACB - это и есть драйвер EMAC. Просмотрел его бегло - увы, горбатого могила исправит. Без нормальной обработки ошибок по приему он и должен падать на большой загрузке. Правильно ли я понял, что на данный момент ожидать нормальной работы встроенного в at91 ethernet не стоит?
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
|
Dec 21 2011, 05:42
|
Группа: Новичок
Сообщений: 9
Регистрация: 6-10-11
Пользователь №: 67 570

|
Цитата(alx2 @ Dec 21 2011, 07:18)  Правильно ли я понял, что на данный момент ожидать нормальной работы встроенного в at91 ethernet не стоит? У нас связка такая фе91sam9g20ek + SMSC LAN9303 Что меняли в ядре, чтоб заработало: На примере buildroot2011.05 и ядра 2.6.33 Отключить привязку ETH_IRQ и выключаем RMII -открываем файл: аrch/arm/mach-at91/board-sam9g20ek.c // MACB Ethernet device static struct at91_eth_data __initdata ek_macb_data = { // .phy_irq_pin = AT91_PIN_PA7, //Закоментировали .is_rmii = 0, //было 1 }; Меняем пины для изернета вместо 23,24 ставим 10,11 - открываем файл: аrch/arm/mach-at91/at91sam9260_devices.c CODE void __init at91_add_device_eth(struct at91_eth_data *data) { if (!data) return;
if (data->phy_irq_pin) { at91_set_gpio_input(data->phy_irq_pin, 0); at91_set_deglitch(data->phy_irq_pin, 1); }
/* Pins used for MII and RMII */ at91_set_A_periph(AT91_PIN_PA19, 0); /* ETXCK_EREFCK */ at91_set_A_periph(AT91_PIN_PA17, 0); /* ERXDV */ at91_set_A_periph(AT91_PIN_PA14, 0); /* ERX0 */ at91_set_A_periph(AT91_PIN_PA15, 0); /* ERX1 */ at91_set_A_periph(AT91_PIN_PA18, 0); /* ERXER */ at91_set_A_periph(AT91_PIN_PA16, 0); /* ETXEN */ at91_set_A_periph(AT91_PIN_PA12, 0); /* ETX0 */ at91_set_A_periph(AT91_PIN_PA13, 0); /* ETX1 */ at91_set_A_periph(AT91_PIN_PA21, 0); /* EMDIO */ at91_set_A_periph(AT91_PIN_PA20, 0); /* EMDC */
if (!data->is_rmii) { at91_set_B_periph(AT91_PIN_PA28, 0); /* ECRS */ at91_set_B_periph(AT91_PIN_PA29, 0); /* ECOL */ at91_set_B_periph(AT91_PIN_PA25, 0); /* ERX2 */ at91_set_B_periph(AT91_PIN_PA26, 0); /* ERX3 */ at91_set_B_periph(AT91_PIN_PA27, 0); /* ERXCK */ at91_set_B_periph(AT91_PIN_PA10, 0); /* ETX2 */ //Изменили было 23 at91_set_B_periph(AT91_PIN_PA11, 0); /* ETX3 */ //Изменили было 24 at91_set_B_periph(AT91_PIN_PA22, 0); /* ETXER */ } После этого сеть заработала, уже 4 месяца, проводим отладку на сетевой FS, на другом оборудовании в этой же связке все хорошо. на счет нагрузки на сеть, работает веб интерфейс и вытягивает картинку jpeg, полученную от камеры - сеть ниразу не упала.
Сообщение отредактировал IgorKossak - Dec 22 2011, 10:56
Причина редактирования: [codebox]
|
|
|
|
|
Dec 21 2011, 09:15
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alx2 @ Dec 21 2011, 08:18)  Правильно ли я понял, что на данный момент ожидать нормальной работы встроенного в at91 ethernet не стоит? Не знаю, я посмотрел исключительно macb, с которым у ТС проблемы. Он кривой. Но: а) есть и другие б) в конце концов можно и свой драйвер написать, ничего хитрого тут нет Сама же железка работает совершенно нормально.
|
|
|
|
|
Dec 22 2011, 05:21
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Спасибо, я немного успокоился.  Свой драйвер писать не хочется. Готовая демо-плата была взята за основу именно для того чтобы не писать свой софт, а взять все готовое. Сроки жмут...  Цитата(aaarrr @ Dec 21 2011, 14:15)  а) есть и другие Подскажите, пожалуйста, где их можно взять.
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
|
Dec 22 2011, 09:26
|
Группа: Участник
Сообщений: 13
Регистрация: 1-06-11
Из: Днепропетровск
Пользователь №: 65 405

|
[quote name='aaarrr' date='Dec 21 2011, 11:15' post='1008295'] Не знаю, я посмотрел исключительно macb, с которым у ТС проблемы. Он кривой. Но: а) есть и другие
Других драйверов для EMAC не приходилось встречать, может можите что-то порекомендовать ? Или может кому-то удалось атмеловский драйвер подрихтовать ?
|
|
|
|
|
Dec 22 2011, 10:48
|
Группа: Участник
Сообщений: 13
Регистрация: 1-06-11
Из: Днепропетровск
Пользователь №: 65 405

|
Цитата(bublik @ Dec 21 2011, 07:42)  . Пробовал у себя ваши рекомендации - (перевел u-boot в режим mii, естественно с аппаратными изменениями для этого режима), ядру тоже сделал нужные исправления --- не помогло -> при увеличении трафика через LAN ядро 2.6.34 падает с той же ошибкой : (kernel BUG at drivers/net/macb.c:417!) - это тотже вызов BUG_ON
Сообщение отредактировал IgorKossak - Dec 22 2011, 10:56
Причина редактирования: Бездумное цитирование
|
|
|
|
|
Dec 22 2011, 12:19
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alx2 @ Dec 22 2011, 09:21)  Подскажите, пожалуйста, где их можно взять. Цитата(salara @ Dec 22 2011, 13:26)  Других драйверов для EMAC не приходилось встречать, может можите что-то порекомендовать ? Тут уже упоминался at91_ether. Насчет его кривизны ничего сказать не могу. Цитата(salara @ Dec 22 2011, 14:48)  не помогло -> при увеличении трафика через LAN ядро 2.6.34 падает с той же ошибкой : (kernel BUG at drivers/net/macb.c:417!) - это тотже вызов BUG_ON Можно попробовать замести ошибку под ковер, выставив более высокий приоритет EMAC в MATRIX. Не знаю только, поможет ли.
|
|
|
|
|
Dec 22 2011, 14:16
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Цитата(aaarrr @ Dec 22 2011, 17:19)  Тут уже упоминался at91_ether. at91_ether упоминал я.  Я, видимо, чего-то не понимаю... at91_ether и macb - это два разных драйвера? Выходит, в линуксе есть несколько альтернативных драйверов для одного и того же at91 emac? В таком случае, правильно ли я понимаю, что для того чтобы вместо MACB у меня был at91_ether, надо в конфиге убрать "CONFIG_MACB=y" и добавить "CONFIG_ARM_AT91_ETHER=y"?
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|