From patchwork Wed Aug 9 11:49:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 799684 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="pTQgeLHS"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xS8hP2r77z9s71 for ; Wed, 9 Aug 2017 21:49:57 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752497AbdHILt4 (ORCPT ); Wed, 9 Aug 2017 07:49:56 -0400 Received: from mail-lf0-f66.google.com ([209.85.215.66]:33320 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752414AbdHILty (ORCPT ); Wed, 9 Aug 2017 07:49:54 -0400 Received: by mail-lf0-f66.google.com with SMTP id 65so4325123lfa.0; Wed, 09 Aug 2017 04:49:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=56Ij89/M/L9afHU4fDK7pwTyd8QVFjIARlwuyM6owBk=; b=pTQgeLHSS4ltJD8Vgwh+lkgZNlFc3TZ7vjaDVc0tTfPeOEefzv5NR9XDoa0/y+gdmK vSVqZuLDe1xnQlqAuQ81jjmKiV6p/f2lIvJYmh73wZ+Yj4Fn5OfMau/Rys8DQFhAKxzb SzD/FS4NvQ0J/1W4ZBBBuiOFfTM6P56afy8a7bRx4FpAmLYUrzCct+Z6z59GeaxwjN1a J9N24qIZwaZAwjgkfi7QcBjteUtAFhunD0eaUujIcFVrTEXHjtqmjQwfxDqLiOZyPdcY oIrUvP3xP3u8aPob2t6b6E5r4G9y5VpL6HxUKLUjO5/LCWhRk6LtbWkWKz143r9a+vTg tkKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=56Ij89/M/L9afHU4fDK7pwTyd8QVFjIARlwuyM6owBk=; b=QueKZqn7/FCjMBGhhdysZAkdv52wIEI4n1xs+1HJ21RlvxvaclNmraka25t76V8VWp 7ByZEsOOqM9AKm/RWbqIT8V5Q96+e1KfWu60wye6mnqswjJQb2vSaWJg7aGoZete6nGX tbVwbNlq2VSHe87fK9aMd0JSpPVAveH9tqdCo6qYo7x0ljHUrK6kMTiL5K5TKxMpTog7 SL9oeQh4A7ZwgYvQAj/uDuJcrjfta0oaBPxR+3YDKROxczZW/EOH/DdgzcQvrmjZy6iJ lhPSXBsInhuxT2Z4HGZ/Eb9kGUVHxn7kds87SXkTHPrTpZnzUEt0W0BrVmzZPz7jtqJ3 dfxQ== X-Gm-Message-State: AHYfb5jAPH/Chcv296e565K4l9MtFR8wfgcOHHpHK42EQf2lrZYbHIw9 IUamy5OM7/P37A== X-Received: by 10.46.97.25 with SMTP id v25mr2647780ljb.125.1502279393147; Wed, 09 Aug 2017 04:49:53 -0700 (PDT) Received: from localhost.localdomain (ppp109-252-55-77.pppoe.spdop.ru. [109.252.55.77]) by smtp.gmail.com with ESMTPSA id e22sm628471lji.53.2017.08.09.04.49.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Aug 2017 04:49:52 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Felipe Balbi , Greg Kroah-Hartman , Peter Chen , Jonathan Hunter , Stephen Warren Cc: Marc Dietrich , Nicolas Chauvet , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= , linux-usb@vger.kernel.org, linux-tegra@vger.kernel.org Subject: [PATCH v4 1/8] usb: gadget: f_ecm/f_eem/f_rndis: Setup quirk_avoids_skb_reserve Date: Wed, 9 Aug 2017 14:49:02 +0300 Message-Id: <4c7b3a3b23b44f4115de1745c65d719a3f70c4db.1502278634.git.digetx@gmail.com> X-Mailer: git-send-email 2.13.3 In-Reply-To: References: In-Reply-To: References: Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org This quirk is required to make USB Ethernet gadget working with HW that can't cope with unaligned DMA. For some reason only f_ncm handles that quirk, let's handle it in the rest of the network models. All models have been tested with a ChipIdea UDC driver on NVIDIA Tegra20 SoC that require DMA to be aligned. Signed-off-by: Dmitry Osipenko --- drivers/usb/gadget/function/f_ecm.c | 7 +++++++ drivers/usb/gadget/function/f_eem.c | 5 +++++ drivers/usb/gadget/function/f_rndis.c | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/drivers/usb/gadget/function/f_ecm.c b/drivers/usb/gadget/function/f_ecm.c index 4c488d15b6f6..1d198055fd74 100644 --- a/drivers/usb/gadget/function/f_ecm.c +++ b/drivers/usb/gadget/function/f_ecm.c @@ -584,6 +584,13 @@ static int ecm_set_alt(struct usb_function *f, unsigned intf, unsigned alt) */ ecm->port.is_zlp_ok = gadget_is_zlp_supported(cdev->gadget); + + /* Setup DMA alignment workaround for UDC's that + * need it. + */ + ecm->port.no_skb_reserve = + gadget_avoids_skb_reserve(cdev->gadget); + ecm->port.cdc_filter = DEFAULT_FILTER; DBG(cdev, "activate ecm\n"); net = gether_connect(&ecm->port); diff --git a/drivers/usb/gadget/function/f_eem.c b/drivers/usb/gadget/function/f_eem.c index 007ec6e4a5d4..74e2453d8ac5 100644 --- a/drivers/usb/gadget/function/f_eem.c +++ b/drivers/usb/gadget/function/f_eem.c @@ -215,6 +215,11 @@ static int eem_set_alt(struct usb_function *f, unsigned intf, unsigned alt) */ eem->port.is_zlp_ok = 1; eem->port.cdc_filter = DEFAULT_FILTER; + + /* setup DMA alignment workaround for UDC's that*need it */ + eem->port.no_skb_reserve = + gadget_avoids_skb_reserve(cdev->gadget); + DBG(cdev, "activate eem\n"); net = gether_connect(&eem->port); if (IS_ERR(net)) diff --git a/drivers/usb/gadget/function/f_rndis.c b/drivers/usb/gadget/function/f_rndis.c index 16562e461121..1b379c051a84 100644 --- a/drivers/usb/gadget/function/f_rndis.c +++ b/drivers/usb/gadget/function/f_rndis.c @@ -593,6 +593,10 @@ static int rndis_set_alt(struct usb_function *f, unsigned intf, unsigned alt) */ rndis->port.cdc_filter = 0; + /* Setup DMA alignment workaround for UDC's that need it */ + rndis->port.no_skb_reserve = + gadget_avoids_skb_reserve(cdev->gadget); + DBG(cdev, "RNDIS RX/TX early activation ... \n"); net = gether_connect(&rndis->port); if (IS_ERR(net))