ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: Не работает g_ether  (Прочитано 7618 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

laborer

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 29
Не работает g_ether
« : 23 Января, 2012, 18:36:22 »

Добрый день
Столкнулся с такой проблемой. Вроде бы usb slave работает и конфигурируется вполне нормально.
Я так думаю потому, что g_file_storage работает у меня вполне сносно на том же интерфейсе.
Делаю на тионе вот так:
# modprobe g_ether
[   45.760000] pxa27x_udc: version 1.0.0
[   45.900000] ether gadget: using random self ethernet address
[   45.910000] ether gadget: using random host ethernet address
[   46.020000] usb0: Ethernet Gadget, version: May Day 2005
[   46.030000] usb0: using pxa27x_udc, OUT Bulk-out-2 IN Bulk-in-1 STATUS Interrupt-in-3
[   46.030000] usb0: MAC 46:9a:70:26:b4:43
[   46.040000] usb0: HOST MAC d6:e3:0a:a6:3d:8e
[   46.040000] usb0: RNDIS ready
# ifconfig usb0 192.168.1.20

На host'е с дебианом после подключения по тиона по USB появляются примерно такие надписи:
Jan 13 14:21:30 host17 kernel: [22238.104030] usb 6-1: new full speed USB device number 9 using uhci_hcd
Jan 13 14:21:30 host17 kernel: [22238.298047] usb 6-1: New USB device found, idVendor=0525, idProduct=a4a2
Jan 13 14:21:30 host17 kernel: [22238.298053] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber?=0
Jan 13 14:21:30 host17 kernel: [22238.298058] usb 6-1: Product: RNDIS/Ethernet Gadget
Jan 13 14:21:30 host17 kernel: [22238.298062] usb 6-1: Manufacturer: Linux 2.6.22.19/pxa27x_udc
Jan 13 14:21:30 host17 kernel: [22238.311123] usb 6-1: bad CDC descriptors
Jan 13 14:21:30 host17 kernel: [22238.313191] cdc_subset 6-1:1.0: usb0: register 'cdc_subset' at usb-0000:00:1d.0-1, Linux Device, de:61:e8:c5:42:d0
Jan 13 14:21:30 host17 mtp-probe: checking bus 6, device 9: "/sys/devices/pci0000:00/0000:00:1d.0/usb6/6-1"
Jan 13 14:21:30 host17 mtp-probe: bus: 6, device: 9 was not an MTP device

Особое внимание вот сюда
>bad CDC descriptors

С такой строчкой не удивительно, что пинги не идут.
Ядро у меня 2.6.22.19.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Не работает g_ether
« Ответ #1 : 24 Января, 2012, 10:58:41 »

Раскомментируйте

#define      DEBUG
#define      VERBOSE

в файле drivers/net/usb/cdc_ether.c
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Не работает g_ether
« Ответ #2 : 24 Января, 2012, 11:05:15 »

в файле drivers/net/usb/cdc_ether.c

На хосте и пересоберите cdc_ether.ko
« Последнее редактирование: 24 Января, 2012, 11:07:23 от asv »
Записан

laborer

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 29
Re: Не работает g_ether
« Ответ #3 : 24 Января, 2012, 12:04:58 »

На хосте и пересоберите cdc_ether.ko

Ok. Сейчас этим и занимаюсь как раз.
Вот эту ошибку
>bad CDC descriptors

вроде победил - просто загрузил модуль cdc_subset перед физическим коннектом (без загруженного cdc_ether - он сам потом загружается).
Но пинги по-прежнему не идут.
Вот на всякий случай моя полная последовательность действий. Инструкции с https://www.ridgerun.com/developer/wiki/index.php/How_to_use_USB_device_networking

На тион270
# echo 1 > /proc/sys/net/ipv4/ip_forward
# modprobe g_ether
[  361.260000] pxa27x_udc: version 1.0.0
[  361.350000] ether gadget: using random self ethernet address
[  361.360000] ether gadget: using random host ethernet address
[  361.390000] usb0: Ethernet Gadget, version: May Day 2005
[  361.400000] usb0: using pxa27x_udc, OUT Bulk-out-2 IN Bulk-in-1 STATUS Interrupt-in-3
[  361.410000] usb0: MAC 76:77:99:2c:19:4e
[  361.410000] usb0: HOST MAC 76:57:ad:96:ef:c9
[  361.420000] usb0: RNDIS ready
# HOST_USB_IP=10.0.1.1
# TARGET_USB_IP=10.0.1.2
# ifconfig usb0 $TARGET_USB_IP netmask 255.255.255.0
# route add default gw $HOST_USB_IP
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.1.0        *               255.255.255.0   U     0      0        0 usb0
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         10.0.1.1        0.0.0.0         UG    0      0        0 usb0
# ifconfig
lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

usb0      Link encap:Ethernet  HWaddr 76:77:99:2C:19:4E 
          inet addr:10.0.1.2  Bcast:10.0.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

На хосте (с дебианом):
# echo 1 > /proc/sys/net/ipv4/ip_forward
# modprobe cdc_subset
# HOST_USB_IP=10.0.1.1
# ifconfig usb0 $HOST_USB_IP netmask 255.255.255.0
# ifconfig
lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:2102 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2102 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1677168 (1.5 MiB)  TX bytes:1677168 (1.5 MiB)

usb0      Link encap:Ethernet  HWaddr 3a:78:98:af:53:57 
          inet addr:10.0.1.1  Bcast:10.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::3878:98ff:feaf:5357/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:52 dropped:0 overruns:0 frame:0
          TX packets:0 errors:12 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 usb0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Не работает g_ether
« Ответ #4 : 24 Января, 2012, 12:22:02 »

> Но пинги по-прежнему не идут.

Wireshark?
Записан

laborer

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 29
Re: Не работает g_ether
« Ответ #5 : 24 Января, 2012, 12:33:39 »

> Но пинги по-прежнему не идут.
Wireshark?
Только запросы от хоста
Цитировать
24   44.495897   3a:78:98:af:53:57   Broadcast   ARP   42   Who has 10.0.1.2?  Tell 10.0.1.1
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Не работает g_ether
« Ответ #6 : 24 Января, 2012, 12:44:13 »

Т.е. если делать ping с Тиона, то пакетов нет?
Записан

laborer

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 29
Re: Не работает g_ether
« Ответ #7 : 24 Января, 2012, 13:12:19 »

Т.е. если делать ping с Тиона, то пакетов нет?
Да. А до этого я пинговал с хоста тион.
Записан

laborer

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 29
Re: Не работает g_ether
« Ответ #8 : 25 Января, 2012, 12:32:11 »

Раскомментируйте

#define      DEBUG
#define      VERBOSE

в файле drivers/net/usb/cdc_ether.c

Сделал. Но ничего в логе не увидел. Этот же подход применил к файлу drivers/net/usb/usbnet.c, как результат в логе вижу постоянно надписи
(при воткнутом кабеле)
Цитировать
Jan 25 12:27:00 host17 kernel: [  340.836058] cdc_subset 6-1:1.0: usb0: rxqlen 0 --> 4
Jan 25 12:27:00 host17 kernel: [  340.837146] cdc_subset 6-1:1.0: usb0: rx throttle -84
Jan 25 12:27:00 host17 kernel: [  340.960044] cdc_subset 6-1:1.0: usb0: rxqlen 0 --> 4
Jan 25 12:27:00 host17 kernel: [  340.961144] cdc_subset 6-1:1.0: usb0: rx throttle -84
Jan 25 12:27:00 host17 kernel: [  341.084049] cdc_subset 6-1:1.0: usb0: rxqlen 0 --> 4
Jan 25 12:27:00 host17 kernel: [  341.085146] cdc_subset 6-1:1.0: usb0: rx throttle -84
Jan 25 12:27:01 host17 kernel: [  341.208051] cdc_subset 6-1:1.0: usb0: rxqlen 0 --> 4
Jan 25 12:27:01 host17 kernel: [  341.209144] cdc_subset 6-1:1.0: usb0: rx throttle -84

Ядро у меня 3.1.10 и вот что в этом месте.
/* we get controller i/o faults during khubd disconnect() delays.
* throttle down resubmits, to avoid log floods; just temporarily,
* so we still recover when the fault isn't a khubd delay.
*/
case -EPROTO:
case -ETIME:
case -EILSEQ:
dev->net->stats.rx_errors++;
if (!timer_pending (&dev->delay)) {
mod_timer (&dev->delay, jiffies + THROTTLE_JIFFIES);
netif_dbg(dev, link, dev->net,
  "rx throttle %d\n", urb_status);
}
Нехороший комментарий.
Записан