From: Dmitry Bezrukov <dmitry.bezru...@aquantia.com>

Initialize net_device_ops structure

Signed-off-by: Dmitry Bezrukov <dmitry.bezru...@aquantia.com>
Signed-off-by: Igor Russkikh <igor.russk...@aquantia.com>
---
 drivers/net/usb/aqc111.c | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/drivers/net/usb/aqc111.c b/drivers/net/usb/aqc111.c
index 96aca929b570..a2628856c580 100644
--- a/drivers/net/usb/aqc111.c
+++ b/drivers/net/usb/aqc111.c
@@ -14,8 +14,43 @@
 #include <linux/usb/cdc.h>
 #include <linux/usb/usbnet.h>
 
+static const struct net_device_ops aqc111_netdev_ops = {
+       .ndo_open               = usbnet_open,
+       .ndo_stop               = usbnet_stop,
+};
+
+static int aqc111_bind(struct usbnet *dev, struct usb_interface *intf)
+{
+       struct usb_device *udev = interface_to_usbdev(intf);
+       int ret;
+
+       /* Check if vendor configuration */
+       if (udev->actconfig->desc.bConfigurationValue != 1) {
+               usb_driver_set_configuration(udev, 1);
+               return -ENODEV;
+       }
+
+       usb_reset_configuration(dev->udev);
+
+       ret = usbnet_get_endpoints(dev, intf);
+       if (ret < 0) {
+               netdev_dbg(dev->net, "usbnet_get_endpoints failed");
+               return ret;
+       }
+
+       dev->net->netdev_ops = &aqc111_netdev_ops;
+
+       return 0;
+}
+
+static void aqc111_unbind(struct usbnet *dev, struct usb_interface *intf)
+{
+}
+
 static const struct driver_info aqc111_info = {
        .description    = "Aquantia AQtion USB to 5GbE Controller",
+       .bind           = aqc111_bind,
+       .unbind         = aqc111_unbind,
 };
 
 #define AQC111_USB_ETH_DEV(vid, pid, table) \
-- 
2.17.1

Reply via email to