31 netdev_dbg(dev->
net,
"asix_read_cmd() cmd=0x%02x value=0x%04x index=0x%04x size=%d\n",
32 cmd, value, index, size);
40 usb_rcvctrlpipe(dev->
udev, 0),
47 USB_CTRL_GET_TIMEOUT);
64 netdev_dbg(dev->
net,
"asix_write_cmd() cmd=0x%02x value=0x%04x index=0x%04x size=%d\n",
65 cmd, value, index, size);
75 usb_sndctrlpipe(dev->
udev, 0),
82 USB_CTRL_SET_TIMEOUT);
89 static void asix_async_cmd_callback(
struct urb *
urb)
109 netdev_dbg(dev->
net,
"asix_write_cmd_async() cmd=0x%02x value=0x%04x index=0x%04x size=%d\n",
110 cmd, value, index, size);
114 netdev_err(dev->
net,
"Error allocating URB in write_cmd_async!\n");
120 netdev_err(dev->
net,
"Failed to allocate memory for control request\n");
131 usb_fill_control_urb(urb, dev->
udev,
132 usb_sndctrlpipe(dev->
udev, 0),
133 (
void *)req, data, size,
134 asix_async_cmd_callback, req);
138 netdev_err(dev->
net,
"Error submitting the control message: status=%d\n",
149 while (offset +
sizeof(
u32) < skb->
len) {
154 offset +=
sizeof(
u32);
157 size = (
u16) (header & 0x7ff);
158 if (size != ((~header >> 16) & 0x07ff)) {
159 netdev_err(dev->
net,
"asix_rx_fixup() Bad Header Length\n");
164 (size + offset > skb->
len)) {
165 netdev_err(dev->
net,
"asix_rx_fixup() Bad RX Length %d\n",
169 ax_skb = netdev_alloc_skb_ip_align(dev->
net, size);
177 offset += (size + 1) & 0xfffe;
180 if (skb->
len != offset) {
181 netdev_err(dev->
net,
"asix_rx_fixup() Bad SKB Length %d\n",
192 int headroom = skb_headroom(skb);
193 int tailroom = skb_tailroom(skb);
195 u32 padbytes = 0xffff0000;
197 padlen = ((skb->
len + 4) & (dev->
maxpacket - 1)) ? 0 : 4;
211 if (!skb_header_cloned(skb) &&
212 !(padlen && skb_cloned(skb)) &&
213 headroom + tailroom >= 4 + padlen) {
218 skb_set_tail_pointer(skb, skb->
len);
230 packet_len = ((skb->
len ^ 0x0000ffff) << 16) + skb->
len;
233 skb_copy_to_linear_data(skb, &packet_len,
sizeof(packet_len));
237 memcpy(skb_tail_pointer(skb), &padbytes,
sizeof(padbytes));
238 skb_put(skb,
sizeof(padbytes));
248 netdev_err(dev->
net,
"Failed to enable software MII access\n");
257 netdev_err(dev->
net,
"Failed to enable hardware MII access\n");
263 int offset = (
internal ? 1 : 0);
270 netdev_err(dev->
net,
"Error reading PHYID register: %02x\n", ret);
273 netdev_dbg(dev->
net,
"asix_get_phy_addr() returning 0x%04x\n",
294 netdev_err(dev->
net,
"Failed to send software reset: %02x\n", ret);
305 netdev_err(dev->
net,
"Error reading RX_CTL register: %02x\n", ret);
317 netdev_dbg(dev->
net,
"asix_write_rx_ctl() - mode = 0x%04x\n", mode);
320 netdev_err(dev->
net,
"Failed to write RX_CTL mode to 0x%04x: %02x\n",
332 netdev_err(dev->
net,
"Error reading Medium Status register: %02x\n",
345 netdev_dbg(dev->
net,
"asix_write_medium_mode() - mode = 0x%04x\n", mode);
348 netdev_err(dev->
net,
"Failed to write Medium Mode mode to 0x%04x: %02x\n",
358 netdev_dbg(dev->
net,
"asix_write_gpio() - value = 0x%04x\n", value);
361 netdev_err(dev->
net,
"Failed to write GPIO value 0x%04x: %02x\n",
414 struct usbnet *
dev = netdev_priv(netdev);
420 (
__u16)loc, 2, &res);
424 netdev_dbg(dev->
net,
"asix_mdio_read() phy_id=0x%02x, loc=0x%02x, returns=0x%04x\n",
432 struct usbnet *
dev = netdev_priv(netdev);
435 netdev_dbg(dev->
net,
"asix_mdio_write() phy_id=0x%02x, loc=0x%02x, val=0x%04x\n",
473 opt, 0, 0,
NULL) < 0)
489 int first_word, last_word;
492 if (eeprom->
len == 0)
497 first_word = eeprom->
offset >> 1;
498 last_word = (eeprom->
offset + eeprom->
len - 1) >> 1;
500 eeprom_buff =
kmalloc(
sizeof(
u16) * (last_word - first_word + 1),
506 for (i = first_word; i <= last_word; i++) {
508 &(eeprom_buff[i - first_word])) < 0) {
524 int first_word, last_word;
528 netdev_dbg(net,
"write EEPROM len %d, offset %d, magic 0x%x\n",
531 if (eeprom->
len == 0)
537 first_word = eeprom->
offset >> 1;
538 last_word = (eeprom->
offset + eeprom->
len - 1) >> 1;
540 eeprom_buff =
kmalloc(
sizeof(
u16) * (last_word - first_word + 1),
551 netdev_err(net,
"Failed to read EEPROM at offset 0x%02x.\n", first_word);
556 if ((eeprom->
offset + eeprom->
len) & 1) {
558 &(eeprom_buff[last_word - first_word]));
560 netdev_err(net,
"Failed to read EEPROM at offset 0x%02x.\n", last_word);
570 netdev_err(net,
"Failed to enable EEPROM write\n");
575 for (i = first_word; i <= last_word; i++) {
576 netdev_dbg(net,
"write to EEPROM at offset 0x%02x, data 0x%04x\n",
577 i, eeprom_buff[i - first_word]);
579 eeprom_buff[i - first_word], 0,
NULL);
581 netdev_err(net,
"Failed to write EEPROM at offset 0x%02x.\n",
590 netdev_err(net,
"Failed to disable EEPROM write\n");
615 if (netif_running(net))
617 if (!is_valid_ether_addr(
addr->sa_data))