25 мая 2011 г.

Танцы на костях или два удара в бубен

Чтобы завести USB-сетевуху D-Link DUB-E100 Rev.B1(т.е. купленную не пять лет назад) на старых ядрах(ещё в 2.6.20 эта проблема вроде присутствует. точнее не скажу), придётся сделать два грязных хака и один удар в бубен.

Удар в бубен:
---
 src/linux-2.6.17/drivers/usb/net/asix.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/src/linux-2.6.17/drivers/usb/net/asix.c b/src/linux-2.6.17/drivers/usb/net/asix.c
index 12b599a..5d5f5d4 100644
--- a/src/linux-2.6.17/drivers/usb/net/asix.c
+++ b/src/linux-2.6.17/drivers/usb/net/asix.c
@@ -872,6 +872,11 @@ static const struct usb_device_id products [] = {
  USB_DEVICE (0x2001, 0x1a00),
  .driver_info =  (unsigned long) &dlink_dub_e100_info,
 }, {
+ // DLink DUB-E100 
+ USB_DEVICE (0x2001, 0x3c05),
+ .driver_info =  (unsigned long) &ax88772_info,
+}, {
+
  // Intellinet, ST Lab USB Ethernet
  USB_DEVICE (0x0b95, 0x1720),
  .driver_info =  (unsigned long) &ax8817x_info,
-- 
Это для того, чтобы устройство вообще определилось в системе.

Хаки:
---
 src/linux-2.6.17/drivers/usb/net/asix.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/linux-2.6.17/drivers/usb/net/asix.c b/src/linux-2.6.17/drivers/usb/net/asix.c
index 5d5f5d4..829c2ef 100644
--- a/src/linux-2.6.17/drivers/usb/net/asix.c
+++ b/src/linux-2.6.17/drivers/usb/net/asix.c
@@ -589,7 +589,7 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
 
  msleep(5);
  if ((ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT,
-    0x0001, 0, 0, buf)) < 0) {
+    0x0000, 0, 0, buf)) < 0) {
   dbg("Select PHY #1 failed: %d", ret);
   goto out2;
  }
@@ -614,7 +614,7 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
  if ((ret = asix_read_cmd(dev, AX88772_CMD_READ_NODE_ID,
     0, 0, ETH_ALEN, buf)) < 0) {
   dbg("Failed to read MAC address: %d", ret);
-  goto out2;
+  //goto out2;
  }
  memcpy(dev->net->dev_addr, buf, ETH_ALEN);
 
@@ -625,7 +625,7 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
           0x0010, 2, 2, buf)) < 0)
    || (*((u16 *)buf) != 0x003b)) {
   dbg("Read PHY register 2 must be 0x3b00: %d", ret);
-  goto out2;
+  //goto out2;
  }
 
  /* Initialize MII structure */
-- 
Тут выкидывается проверка на PHY ID, поскольку ethernet физика стоит на разных ревизиях разная. Плюс меняется что-то для выбора физики. Без этих хаков MAC-уровень заводится нормально, ip присваивается, мак определяется, но физически данные никуда не уходят. Спасибо LKML и людям пишущим в него, за инфу. http://lkml.org/lkml/2006/7/6/132 http://lkml.org/lkml/2007/1/15/156

1 комментарий:

  1. Below are some notable arguments caused by the house owners of the machines saying that the displayed quantities have 메리트카지노 been far larger than those patrons should get. In 2006, the Nevada Gaming Commission began working with Las Vegas casinos on know-how that may allow the on line casino's administration to vary the sport, the odds, and the payouts remotely. The change can't be accomplished instantaneously, however only after the selected machine has been idle for a minimum of|no less than} 4 minutes. After the change is made, the machine have to be locked to new gamers for 4 minutes and display an on-screen message informing potential gamers that a change is being made.

    ОтветитьУдалить