From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752898AbbJZWaJ (ORCPT ); Mon, 26 Oct 2015 18:30:09 -0400 Received: from sender163-mail.zoho.com ([74.201.84.163]:24308 "EHLO sender163-mail.zoho.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750990AbbJZWaH (ORCPT ); Mon, 26 Oct 2015 18:30:07 -0400 Subject: Re: [PATCH v4 5/7] usb: gadget: f_midi: set altsettings only for MIDIStreaming interface To: "Felipe F. Tonello" , linux-usb@vger.kernel.org References: <1445878509-12084-1-git-send-email-eu@felipetonello.com> <1445878509-12084-6-git-send-email-eu@felipetonello.com> Cc: linux-kernel@vger.kernel.org, Felipe Balbi , Greg Kroah-Hartman , Andrzej Pietrasiewicz , Clemens Ladisch From: Robert Baldyga Message-ID: <562EA969.5000107@hackerion.com> Date: Mon, 26 Oct 2015 23:30:01 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <1445878509-12084-6-git-send-email-eu@felipetonello.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/26/2015 05:55 PM, Felipe F. Tonello wrote: > This avoids duplication of USB requests for OUT endpoint and > re-enabling endpoints. > > Signed-off-by: Felipe F. Tonello > --- > drivers/usb/gadget/function/f_midi.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c > index 0e9cdeb..a617df3 100644 > --- a/drivers/usb/gadget/function/f_midi.c > +++ b/drivers/usb/gadget/function/f_midi.c > @@ -323,6 +323,10 @@ static int f_midi_set_alt(struct usb_function *f, unsigned intf, unsigned alt) > unsigned i; > int err; > > + /* We don't care if it is not MIDIStreaming interface */ > + if (intf != ms_interface_desc.bInterfaceNumber) > + return 0; > + These global descriptors are overwritten in bind() of each instance of f_midi, so you have no guarantee that your bInterfaceNumber is correct for your current instance. Instead you should store value obtained from usb_interface_id() during bind(). > err = f_midi_start_ep(midi, f, midi->in_ep); > if (err) > return err; > Best regards, Robert