Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp4663253ybc; Fri, 15 Nov 2019 08:09:09 -0800 (PST) X-Google-Smtp-Source: APXvYqzVhMGkyn34JKEZfJ1nDHBYBTpGldvCOi832ZsCJ31aL0j4+IoYQAeHG8QmtdsGq2tRqjf+ X-Received: by 2002:a05:600c:2550:: with SMTP id e16mr14884614wma.69.1573834148929; Fri, 15 Nov 2019 08:09:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573834148; cv=none; d=google.com; s=arc-20160816; b=CwNx4+i6gjf1iOaT4HDfq3Wy8b069+3sNbSvMNDw8+hvvG0PeR0B6usD6YP3GKLHhS 1vKdBhN3b4UposYkXVVMuqWOugR1z4ONT2lbaCTCpW8SW+oowLli2Ytaly6CCLtNxlK2 tQ+oCUI8W78G18+G0ps0zQ362lXKTKqbD81metg/LHIHZhxMY8cO80adT/DRo0dWOuSC f53a62KzHwRJdvTX39g+vHMsFSpr0bIFQBuTOJmSOJK+HwulLksCnV/pz4/LFg7R7LLr zXFELy7CH2a82FSXooVEcKJAm9+eFt9NFM+lTtuITLBZTUsjlgFhaNd5eT4ldnJgMlUu g2SA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=7X39iuEEQRrxmI92P6s/GZH+4m80M8T5MHJlVSsI2c0=; b=gD1E7y+wdh7UziQbre0+2UmXdY4cgtEmFatl5Lq5i+fb7SV2AmDLbIvYkP7mrw4gsg zTxnZakHULIeNJ2QSZ7qrrgz3Md6CIIuRv5df9DFvEyD4joaPan5T46euOzvDf9msmpc lqEZONHGxzJdt0HR9qSRsNkJbcIET9k+cyCVSjlnckPxunvfOnc+bdXOnwN4FwsabgO6 SNOAAlUBqjUC2dg0DdM3r7lfxJ6t9X7CB1m2TvO7AWhYPvf9fGw50XcEGCTG2mF2roCw +TFuMzQEgD14cLui/mvg2LGfUYTHRfOUvqbUJGH3yQKqPOrvpLW5cYocjJ1YVoOjfpaZ af7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="NmQ62U/e"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a11si8257803edj.143.2019.11.15.08.08.43; Fri, 15 Nov 2019 08:09:08 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="NmQ62U/e"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727579AbfKOQE5 (ORCPT + 99 others); Fri, 15 Nov 2019 11:04:57 -0500 Received: from mail-pf1-f195.google.com ([209.85.210.195]:34208 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727423AbfKOQE4 (ORCPT ); Fri, 15 Nov 2019 11:04:56 -0500 Received: by mail-pf1-f195.google.com with SMTP id n13so6902285pff.1 for ; Fri, 15 Nov 2019 08:04:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=7X39iuEEQRrxmI92P6s/GZH+4m80M8T5MHJlVSsI2c0=; b=NmQ62U/efOi5Q+dGSGypGgXSwYq6cnrWAaEs9nIbFk2vRbt3pyz/afmdpaQ2OVhi6L /Yogtu7bgKnRf6QlsiV70LJ1KDdshJwCON5o+gaT5g3dGyEU/H0+TYCYCRmEJHAJfWxm 3hs9K5Xv6oLdtgoSGv2Myn8RIjV6ZLyzgmJNAMuk0iaBCKjxxBbaRZMYU+yX4zgtRRf8 BlyqNOlIIri7H+HVBnvNuarGVuOp5LRxwUB6cnvJ7wWprLaRVRWKtVqzsCTx7QKE2lsF yFWfAFsH+gG/nfSlpRcNkejToxHBXRGIQk8GvGiaM23DLAWcNTCS6to1HJVLdlubIUaU eX+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=7X39iuEEQRrxmI92P6s/GZH+4m80M8T5MHJlVSsI2c0=; b=mOrIXRG4UMo6c7fk+NLmKMUT+mP1d+Wj6Q0igSvsmw17EK2J0m3Bm1he8m2Vm+hNpQ BQltLgqXITdFEr+RonjCYB5PU602xAFcl1wFBsf6dReX9GhVyKtvbgmk7dMBSyw2mMqc +nhDqT83mDnXnqQuM2KTT5a3V7uY65b1lizgPDC1MDufkY8APdexpBnClrUWJj/yhKbf rnmX7XTxH5Lyi3HR5mx62hgAw1LlKHJ5/kmz10tSSwauCXDt0FMc2uc+9FuH3TJS5rGs MzlmfmGiWRfPOHEr7/Q9yinnS3qp7FF7PN2DqhkHNAYLniAcgoX0jTRhuFPksckG1wVg znMQ== X-Gm-Message-State: APjAAAX2NcdZIJVptn6prUbNt62Wdq7YAPXD/SRXxG+ePRHoCS78c/MW J7AcIgQZZfk7kP6LvHrXqtY1DSCipLPcxXboDVdA/A== X-Received: by 2002:a63:c804:: with SMTP id z4mr17391908pgg.440.1573833894883; Fri, 15 Nov 2019 08:04:54 -0800 (PST) MIME-Version: 1.0 References: <92f5a2a1ba986f149aecec02d6ffe110d11dcdfd.1573824989.git.andreyknvl@google.com> In-Reply-To: From: Andrey Konovalov Date: Fri, 15 Nov 2019 17:04:42 +0100 Message-ID: Subject: Re: [PATCH v2 1/1] usb: gadget: add raw-gadget interface To: Alan Stern Cc: USB list , LKML , Greg Kroah-Hartman , Jonathan Corbet , Felipe Balbi , Dmitry Vyukov , Alexander Potapenko , Marco Elver Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Nov 15, 2019 at 4:38 PM Alan Stern wrote: > > On Fri, 15 Nov 2019, Andrey Konovalov wrote: > > > USB Raw Gadget is a kernel module that provides a userspace interface for > > the USB Gadget subsystem. Essentially it allows to emulate USB devices > > from userspace. Enabled with CONFIG_USB_RAW_GADGET. Raw Gadget is > > currently a strictly debugging feature and shouldn't be used in > > production. > > > > Raw Gadget is similar to GadgetFS, but provides a more low-level and > > direct access to the USB Gadget layer for the userspace. The key > > differences are: > > > > 1. Every USB request is passed to the userspace to get a response, while > > GadgetFS responds to some USB requests internally based on the provided > > descriptors. However note, that the UDC driver might respond to some > > requests on its own and never forward them to the Gadget layer. > > > > 2. GadgetFS performs some sanity checks on the provided USB descriptors, > > while Raw Gadget allows you to provide arbitrary data as responses to > > USB requests. > > > > 3. Raw Gadget provides a way to select a UDC device/driver to bind to, > > while GadgetFS currently binds to the first available UDC. > > > > 4. Raw Gadget uses predictable endpoint names (handles) across different > > UDCs (as long as UDCs have enough endpoints of each required transfer > > type). > > > > 5. Raw Gadget has ioctl-based interface instead of a filesystem-based one. > > ... > > > --- /dev/null > > +++ b/Documentation/usb/raw-gadget.rst > > > +Userspace interface > > +~~~~~~~~~~~~~~~~~~~ > > + > > +To create a Raw Gadget instance open /sys/kernel/debug/usb/raw-gadget > > +(debugfs should be enabled and mounted). Multiple raw-gadget instances > > Looks like the documentation hasn't kept up with the more recent > changes to the driver. Right, will fix in v3, thanks! > > > --- /dev/null > > +++ b/drivers/usb/gadget/legacy/raw.c > > @@ -0,0 +1,1057 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > +/* > > + * USB Raw Gadget driver. > > + * See Documentation/usb/raw-gadget.rst for more details. > > + * > > + * Andrey Konovalov > > + */ > > + > > +#define pr_fmt(fmt) "raw: %s: " fmt, __func__ > > This macro isn't used anywhere now. It's used internally by pr_debug(). I didn't remove all of the debugging messages, I've left the ones that are printed in cases or errors, since ftrace might not always help to distinguish between some of those.