mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	usb: retry reset if a device times out
Some devices I got show an inability to operate right after power on if they are already connected. They are beyond recovery if the descriptors are requested multiple times. So in case of a timeout we rather bail early and reset again. But it must be done only on the first loop lest we get into a reset/time out spiral that can be overcome with a retry. This patch is a rework of a patch that fell through the cracks. http://www.spinics.net/lists/linux-usb/msg103263.html Signed-off-by: Oliver Neukum <oneukum@suse.com> CC: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									acc27b6aad
								
							
						
					
					
						commit
						264904ccc3
					
				
					 1 changed files with 7 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -4496,7 +4496,13 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,
 | 
			
		|||
						r = -EPROTO;
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				if (r == 0)
 | 
			
		||||
				/*
 | 
			
		||||
				 * Some devices time out if they are powered on
 | 
			
		||||
				 * when already connected. They need a second
 | 
			
		||||
				 * reset. But only on the first attempt,
 | 
			
		||||
				 * lest we get into a time out/reset loop
 | 
			
		||||
				 */
 | 
			
		||||
				if (r == 0  || (r == -ETIMEDOUT && j == 0))
 | 
			
		||||
					break;
 | 
			
		||||
			}
 | 
			
		||||
			udev->descriptor.bMaxPacketSize0 =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue