diff -ru a/qf9700.c b/qf9700.c --- a/qf9700.c 2010-10-09 09:50:52.000000000 +0100 +++ b/qf9700.c 2011-01-21 09:59:58.019399508 +0000 @@ -368,6 +368,17 @@ qf_write_async(dev, MAR, QF_MCAST_SIZE, hashes); qf_write_reg_async(dev, RCR, rx_ctl); } +static const struct net_device_ops qf9700_netdev_ops = { + .ndo_open = usbnet_open, + .ndo_stop = usbnet_stop, + .ndo_start_xmit = usbnet_start_xmit, + .ndo_tx_timeout = usbnet_tx_timeout, + .ndo_change_mtu = usbnet_change_mtu, + .ndo_set_mac_address = eth_mac_addr, + .ndo_validate_addr = eth_validate_addr, + .ndo_do_ioctl = qf9700_ioctl, + .ndo_set_multicast_list = qf9700_set_multicast, +}; static int qf9700_bind(struct usbnet *dev, struct usb_interface *intf) { @@ -377,8 +388,7 @@ if (ret) goto out; - dev->net->do_ioctl = qf9700_ioctl; - dev->net->set_multicast_list = qf9700_set_multicast; + dev->net->netdev_ops = &qf9700_netdev_ops; dev->net->ethtool_ops = &qf9700_ethtool_ops; dev->net->hard_header_len += QF_TX_OVERHEAD; dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len; @@ -440,11 +450,11 @@ len = (skb->data[1] | (skb->data[2] << 8)) - 4; if (unlikely(status & 0xbf)) { - if (status & 0x01) dev->stats.rx_fifo_errors++; - if (status & 0x02) dev->stats.rx_crc_errors++; - if (status & 0x04) dev->stats.rx_frame_errors++; - if (status & 0x20) dev->stats.rx_missed_errors++; - if (status & 0x90) dev->stats.rx_length_errors++; + if (status & 0x01) dev->net->stats.rx_fifo_errors++; + if (status & 0x02) dev->net->stats.rx_crc_errors++; + if (status & 0x04) dev->net->stats.rx_frame_errors++; + if (status & 0x20) dev->net->stats.rx_missed_errors++; + if (status & 0x90) dev->net->stats.rx_length_errors++; return 0; }