Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a33e9e7f authored by Jussi Kivilinna's avatar Jussi Kivilinna Committed by John W. Linville
Browse files

usbnet: Add stop function pointer to 'struct rndis_data'.



Allow minidriver to know that netdev has stopped. This is to let
wireless turn off radio when usbnet dev is stopped.

Signed-off-by: default avatarJussi Kivilinna <jussi.kivilinna@mbnet.fi>
Acked-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent d75ec2b7
Loading
Loading
Loading
Loading
+14 −0
Original line number Original line Diff line number Diff line
@@ -575,7 +575,9 @@ EXPORT_SYMBOL_GPL(usbnet_unlink_rx_urbs);
int usbnet_stop (struct net_device *net)
int usbnet_stop (struct net_device *net)
{
{
	struct usbnet		*dev = netdev_priv(net);
	struct usbnet		*dev = netdev_priv(net);
	struct driver_info	*info = dev->driver_info;
	int			temp;
	int			temp;
	int			retval;
	DECLARE_WAIT_QUEUE_HEAD_ONSTACK (unlink_wakeup);
	DECLARE_WAIT_QUEUE_HEAD_ONSTACK (unlink_wakeup);
	DECLARE_WAITQUEUE (wait, current);
	DECLARE_WAITQUEUE (wait, current);


@@ -587,6 +589,18 @@ int usbnet_stop (struct net_device *net)
			net->stats.rx_errors, net->stats.tx_errors
			net->stats.rx_errors, net->stats.tx_errors
			);
			);


	/* allow minidriver to stop correctly (wireless devices to turn off
	 * radio etc) */
	if (info->stop) {
		retval = info->stop(dev);
		if (retval < 0 && netif_msg_ifdown(dev))
			devinfo(dev,
				"stop fail (%d) usbnet usb-%s-%s, %s",
				retval,
				dev->udev->bus->bus_name, dev->udev->devpath,
				info->description);
	}

	// ensure there are no more active urbs
	// ensure there are no more active urbs
	add_wait_queue (&unlink_wakeup, &wait);
	add_wait_queue (&unlink_wakeup, &wait);
	dev->wait = &unlink_wakeup;
	dev->wait = &unlink_wakeup;
+3 −0
Original line number Original line Diff line number Diff line
@@ -97,6 +97,9 @@ struct driver_info {
	/* reset device ... can sleep */
	/* reset device ... can sleep */
	int	(*reset)(struct usbnet *);
	int	(*reset)(struct usbnet *);


	/* stop device ... can sleep */
	int	(*stop)(struct usbnet *);

	/* see if peer is connected ... can sleep */
	/* see if peer is connected ... can sleep */
	int	(*check_connect)(struct usbnet *);
	int	(*check_connect)(struct usbnet *);