Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751555AbbLUMGE (ORCPT ); Mon, 21 Dec 2015 07:06:04 -0500 Received: from mailout1.samsung.com ([203.254.224.24]:53924 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751081AbbLUMGB (ORCPT ); Mon, 21 Dec 2015 07:06:01 -0500 X-AuditID: cbfee68f-f793a6d000001364-df-5677eb27152f From: Vikas Bansal To: oneukum@suse.de, netdev@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Cc: sumit.batra@samsung.com, Vikas Bansal Subject: [PATCH] BugFix in XHCI controller driver for scatter gather DMA Date: Mon, 21 Dec 2015 17:34:54 +0530 Message-id: <1450699494-4598-1-git-send-email-vikas.bansal@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrELMWRmVeSWpSXmKPExsWyRsSkRlf9dXmYwZd7uhaXd81hs1i0rJXZ 4tgCMYvFF2ezWrTt+cFi8ez5TDYHNo++LasYPTafrvb4vEkugDmKyyYlNSezLLVI3y6BK+Pz tdWsBa94K14/m8bewLiMu4uRk0NCwERi2swT7BC2mMSFe+vZuhi5OIQEVjBKfF3RxwxTtOLB NiaIxFJGibmHtjBCON8ZJRpXHQerYhPQlVhz/BsTiC0ikCaxfdtqFhCbWcBF4sz15WBxYQEP iV+71oPZLAKqElPPLAOzeQXcJTrvr4I6Q07i5LHJrBD2czaJaz/rIOoFJL5NPgQ0kwMoLiux 6QDUcZISB1fcYJnAKLiAkWEVo2hqQXJBcVJ6kbFecWJucWleul5yfu4mRmBQnv73rH8H490D 1ocYBTgYlXh4LdXLw4RYE8uKK3MPMZoCbZjILCWanA8M/bySeENjMyMLUxNTYyNzSzMlcd6F Uj+DhQTSE0tSs1NTC1KL4otKc1KLDzEycXBKNTBa+N/+ffuaVc4qiSKbyapu/2KtdNke+gu9 /Hr7tdjWPcoLukPnCvN9ihN1s8z8zWiVJazgYr9uS7PFhEZ2PiOt8qZtn/MzLmoUWKoIKCRc 45s42dXUqNCTt+LmPq8Tslevn/7x99mDyVOfcDkKOsisWexwMzglOj9p1/pNvSVXpQzPfVLj z1ViKc5INNRiLipOBABGjopzRQIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpgkeLIzCtJLcpLzFFi42I5/e+xgK766/Iwg/7lShaXd81hs1i0rJXZ 4tgCMYvFF2ezWrTt+cFi8ez5TDYHNo++LasYPTafrvb4vEkugDmqgdEmIzUxJbVIITUvOT8l My/dVsk7ON453tTMwFDX0NLCXEkhLzE31VbJxSdA1y0zB2itkkJZYk4pUCggsbhYSd8O04TQ EDddC5jGCF3fkCC4HiMDNJCwhjHj87XVrAWveCteP5vG3sC4jLuLkZNDQsBEYsWDbUwQtpjE hXvr2boYuTiEBJYySsw9tIURwvnOKNG46jgzSBWbgK7EmuPfwDpEBNIktm9bzQJiMwu4SJy5 vhwsLizgIfFr13owm0VAVWLqmWVgNq+Au0Tn/VXsENvkJE4em8w6gZF7ASPDKkaJ1ILkguKk 9FyjvNRyveLE3OLSvHS95PzcTYzg0H8mvYPx8C73Q4wCHIxKPLwer8rChFgTy4orcw8xSnAw K4nwNp4vDxPiTUmsrEotyo8vKs1JLT7EaAp0wERmKdHkfGBc5pXEGxqbmJsam1qaWJiYWSqJ 8+67FBkmJJCeWJKanZpakFoE08fEwSnVwOj9MLhFwidBK/6G5NH10d2Nseeaci+8t5WYwbjn Zei3naWql7+qi9xrvXl3z/sdNekb0vWUmZ5UXzzNt7O54vmn0t4NnCcWz8wzPqVntu30otWN l53WMeZ/s4mxSCrvDS269aRWwOf7XLMNxWdvFuXMz+M01eOI1c20+a5eZ8PIf33H5ce3Q5RY ijMSDbWYi4oTASja0O6TAgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1969 Lines: 51 Pre-Condition At the time of reset resume of a USB device, both self and bus powered devices might go to a low power state or power off state depending on the acceptable suspend time power of the system. In case the device experiences a power glitch or completely powers off during suspend-resume, the device will lose its internal state and hence it'll again need a set interface from class driver on reset resume operation. Issue So far our experiments were based on a USB gadget working on cdc_eem protocol. We have seen that device is unable to continue the packet transfer on bulk endpoints after the reset resume operation. Solution We have added a .reset_resume function for cdc_eem protocol which sends a set interface command on the Control endpoint. And calls the existing usbnet_resume thereafter Signed-off-by: Vikas Bansal Signed-off-by: Sumit Batra diff --git a/drivers/net/usb/cdc_eem.c b/drivers/net/usb/cdc_eem.c index f7180f8..1f6f7ea 100644 --- a/drivers/net/usb/cdc_eem.c +++ b/drivers/net/usb/cdc_eem.c @@ -342,6 +342,19 @@ next: return 1; } +static int cdc_eem_resume(struct usb_interface *intf) +{ + int ret = 0; + struct usbnet *dev = usb_get_intfdata(intf); + + ret = usbnet_get_endpoints(dev, intf); + if(ret < 0) + goto err; + ret = usbnet_resume(intf); +err: + return ret; +} + static const struct driver_info eem_info = { .description = "CDC EEM Device", .flags = FLAG_ETHER | FLAG_POINTTOPOINT, @@ -371,6 +384,7 @@ static struct usb_driver eem_driver = { .disconnect = usbnet_disconnect, .suspend = usbnet_suspend, .resume = usbnet_resume, + .reset_resume = cdc_eem_resume, .disable_hub_initiated_lpm = 1, }; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/