From patchwork Sun Aug 6 15:10:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 798402 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="XHpiy9KJ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xQPJV09dmz9tWQ for ; Mon, 7 Aug 2017 01:11:38 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751398AbdHFPLg (ORCPT ); Sun, 6 Aug 2017 11:11:36 -0400 Received: from mail-lf0-f67.google.com ([209.85.215.67]:33166 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751378AbdHFPLd (ORCPT ); Sun, 6 Aug 2017 11:11:33 -0400 Received: by mail-lf0-f67.google.com with SMTP id 65so3921355lfa.0; Sun, 06 Aug 2017 08:11:33 -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=XHpiy9KJi5qJeietGmfNj03m8K8N3g3+9pMqiwMue9/zwaymprWxwg82cBu9StJtHF qwM5jXGw9L6UWDm35BA+C1hOfn5o236XBOLOY7omN7XRsr2J3q9iFqXTWgT/EtBS+a4A Xqrcz1J3mEIz/k8oMK/JRFJWYDS/zhYuJLVb0+7Z898dr4SPb2nfa/UnC5gxOuGzSmLx zk/WtI3rGQM55OBnGklv8zhEM49WVgovWGBCfF1Bq4hVe/E9USiAqOzp9xoDTjogqCF4 RPcbrJfJYrJbfLfnZ/6Y/jKYCoIXvbkbDQ68PlemplFhrLE2wULIL0K9NB4xU/TiTu2Y MCiw== 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=VO6E7f5BdzZganzQbOSI8S/IUg9HXDU3PzaxCuL9T0dV2UpDfvOi6N5oVwFfgNozWQ IUf5QB9tcS+Zo7hltYpnag9kpYkR38fWF+jVsD/IirCMX6QYTf3Np1c+bu0tR1k40JrR eE2+Y6hFpPiQWo6a3L3x/parPT0tcy1q7dLCkxlcyzdRrq4oNUSr6pfkh2BvPxvC+SMK 6S1uieoH1mrSUswJBzdZjY6Kq9AZtayE0EYfH68a6Xy9cOxtleijtoeKwQyIaaCUtYTo uR+vhAQGZ/cGQoKBSWDLGd/DwYIBp03mjqMf0mm+77VP5p3bqbWbjRzDxYbFOuSSjm++ Nr/g== X-Gm-Message-State: AHYfb5gL8Jr8yXhT9TykSidwYw2E7xIp+2CwTJD7XCWKjrVzs4eAeMBr 10DWm7Mgvekt4w== X-Received: by 10.25.16.232 with SMTP id 101mr2653872lfq.36.1502032292377; Sun, 06 Aug 2017 08:11:32 -0700 (PDT) Received: from localhost.localdomain (ppp109-252-91-56.pppoe.spdop.ru. [109.252.91.56]) by smtp.gmail.com with ESMTPSA id z1sm276887lja.21.2017.08.06.08.11.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 06 Aug 2017 08:11:31 -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 v3 1/8] usb: gadget: f_ecm/f_eem/f_rndis: Setup quirk_avoids_skb_reserve Date: Sun, 6 Aug 2017 18:10:28 +0300 Message-Id: <5b76a771f17613f7d1e75c2910480373acc5fcee.1502031673.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))