Skip to contentSkip to conversation

ax88179_178a: don't send commands to detached device

PATCH In review Emil Goode 2 participants 2 messages May 14, 2014

Subsystems (3)
lore
Share & tools
lore

Emil Goode

author
#0 lore raw

PATCH 1/1 ax88179_178a: don't send commands to detached device

The .stop and .unbind callbacks of struct driver_info are called even after a DETACH hot-plug event. In the case of the ax88179_178a minidriver we need to make sure we are not trying to send commands to a device that has been detached. This leads to failure messages like below.

ax88179_178a 1-1.3:1.0 (unregistered net_device):

	Failed to write reg index 0x0001: -19
---
 drivers/net/usb/ax88179_178a.c |    6 ++++++
 1 file changed, 6 insertions(+)
drivers/net/usb/ax88179_178a.c +6 -0
index 054e59c..fe20ca8 100644
@@ -1074,6 +1074,9 @@ static void ax88179_unbind(struct usbnet *dev, struct usb_interface *intf)
 {
 	u16 tmp16;
 
+	if (dev->udev->state == USB_STATE_NOTATTACHED)
+		return;
+
 	/* Configure RX control register => stop operation */
 	tmp16 = AX_RX_CTL_STOP;
 	ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_RX_CTL, 2, 2, &tmp16);
@@ -1352,6 +1355,9 @@ static int ax88179_stop(struct usbnet *dev)
 {
 	u16 tmp16;
 
+	if (dev->udev->state == USB_STATE_NOTATTACHED)
+		return 0;
+
 	ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
 			 2, 2, &tmp16);
 	tmp16 &= ~AX_MEDIUM_RECEIVE_EN;
Signature · 1 line
1.7.10.4
#1 lore raw
Quoted 8 lines · Emil Goode

The .stop and .unbind callbacks of struct driver_info are called even after a DETACH hot-plug event. In the case of the ax88179_178a minidriver we need to make sure we are not trying to send commands to a device that has been detached. This leads to failure messages like below.

ax88179_178a 1-1.3:1.0 (unregistered net_device):

	Failed to write reg index 0x0001: -19

Most driver don't bother to do this. A few error messages in the log when a device gets unplugged are harmless. Besides, this won't help with errors that occur between the time the device is unplugged and the time when the unbind callback runs.

Alan Stern