Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp4387206ybg; Tue, 29 Oct 2019 06:27:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqx2NKD18wZ1iMCkPLi+aNMy4+3MkuhBBj3ThyOqz0D5+1j17fCf3bD6mIXUtdTN2/IUwd68 X-Received: by 2002:aa7:d714:: with SMTP id t20mr26218865edq.129.1572355662792; Tue, 29 Oct 2019 06:27:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572355662; cv=none; d=google.com; s=arc-20160816; b=T/5rOU3KFs5AzwaX+pMZuomDjARGobd9siRE5ERa+1LWmo7t2Kye+I9Cuxa7HVdXpN wf/0TGNwb/7V9OR+5Sd9GRjL+gJM0Or7gQoGLCWU5kVIvoTQuU4tCxxa8TjBte8FtbrA DwxL3JiF/2g39KppX0STCHbrcrmKQM6NtM1v1YDp6sIIn30rYeF/q9KKOGuvUBkLY/kr 4jwlIEAEBQu8R0yc37Rk+HJgvCvAa7BS+e/ktH2sXOONFuRAUuSifzrDVLycjiBzaGCs lSiFwrCbPJSRBrPqmZDywQ1bezjwIZzGn0t+duSizCLu7Gl6/5HMQP1jlTan1d1uzCEu Tm+A== 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=EViMv99KOuHMGIzwksDwnv00hlPPpsoHFS8tDyvIgps=; b=JBtYKa37mUs/uPKwWRhI8MBSuosrwYMqjry+L854/sjQ6bzOm+PCaCEY4odlYO1Qhe rvzSHgNDGMVAgU0rZWKUUG0TbCt6dNjVHcK40ja/7llW4k9rHruoM4JlcYSljny7A/nt 1BypaECGb1kCstYmtFy0cqs6U20o7eOjn4VuhHVKvuL5zRVkimZVM+QzjZsh8APdsulR WKhXidKlU7pk843xbRHvaXWMmBva/nPL/C8f+HG4rRHRXJilhZy3MFZv1syzUcpwlcMw ceGXOm3c35sEjS//9EqYBrQUEAyCeyrYpHSM0LumNKfnwQwDiyZtxkL9wpdoIqYQirX5 uYpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=hD2fvgDS; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x6si8151461eju.349.2019.10.29.06.27.15; Tue, 29 Oct 2019 06:27:42 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-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=@gmail.com header.s=20161025 header.b=hD2fvgDS; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732037AbfJ2NZj (ORCPT + 99 others); Tue, 29 Oct 2019 09:25:39 -0400 Received: from mail-il1-f195.google.com ([209.85.166.195]:34649 "EHLO mail-il1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725776AbfJ2NZj (ORCPT ); Tue, 29 Oct 2019 09:25:39 -0400 Received: by mail-il1-f195.google.com with SMTP id a13so11332954ilp.1 for ; Tue, 29 Oct 2019 06:25:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=EViMv99KOuHMGIzwksDwnv00hlPPpsoHFS8tDyvIgps=; b=hD2fvgDSJnc+gK6+VYkRh57zejntRFszKw9TudI1cDEsVM47YB3y/fs+0N3k0OF10H X7fm9fAdlS0wMLN/eR4hUdTJO+ns0hNqGHF+WaPUoJ90GgtlWFyR+cHKRcWgJXEOR73C pVlNybs6m4WRfoZwYyX7M3GIcrmfoDlN35YTMu+Dfl6jC4Fb9JrSNvC2Ib66GI+gevIU gqaXnzwASnZmEO3VK9HGThzccU41Pavj204Qm+9fNcUPIVpFOLliFzqDTfrTntUrxqal 4cc6xCT7PXNvUEifrDma6DU0QkVzylNtBmU/S9m+i8vfMSiUbfw9mK/XmjezFBD8Kbp3 3KpA== 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=EViMv99KOuHMGIzwksDwnv00hlPPpsoHFS8tDyvIgps=; b=JDOZ9Tk0KMcSV8Fj/hlc+SGYbYsZmIE29fKtJIIfk9DzZndPpZz8lt4nAGo7tzfy35 ubGbSI+b2uOb7vWC6BJbQ7ovpmvZPeSE/KOO83t6QqG2iUOXirryM7tC0UfFjUXDHlKY gwnBSIjS6XEtN+7YUxnDBwC/5ebNMPv+ONRFT44fYLLvgVscKTNv8WAxkxEUtS62obtS /P2acQZx2QNMR4E/K+QZ3KxNe6Fet7PrcESNANtRVuyH01U0uvXsLD8NZ0SL8bqvjj60 pSORseumPBr6QPhfjUg9C/nBw8bKLR5zrkZ9TJXlAoUapHVoHul4/uPy3cP6o856ciM/ vtZA== X-Gm-Message-State: APjAAAXV+cAZJk7gZkE4ou3HroFojd75K71x5iw5Ea/aPOv2ruEJQS7Y PzWVVwCxVUvAerxzK+5MveBjuYtCwBNh+5bz89c= X-Received: by 2002:a92:405a:: with SMTP id n87mr8700278ila.16.1572355538093; Tue, 29 Oct 2019 06:25:38 -0700 (PDT) MIME-Version: 1.0 References: <0851d8f413ed0086a2734c06e6e4c203b63cd017.1572275706.git.lorenzo@kernel.org> In-Reply-To: <0851d8f413ed0086a2734c06e6e4c203b63cd017.1572275706.git.lorenzo@kernel.org> From: Sid Hayn Date: Tue, 29 Oct 2019 09:24:36 -0400 Message-ID: Subject: Re: [PATCH] mt76: mt76u: rely on usb_interface instead of usb_dev To: Lorenzo Bianconi Cc: Felix Fietkau , linux-wireless , Lorenzo Bianconi , Stanislaw Gruszka , ZeroBeat@gmx.de Content-Type: text/plain; charset="UTF-8" Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Tested-By: Zero_Chaos Works wonderfully, thanks Lorenzo! -Zero_Chaos On Mon, Oct 28, 2019 at 11:21 AM Lorenzo Bianconi wrote: > > usb drivers are supposed to communicate using usb_interface instead > mt76x{0,2}u is now registering through usb_device. Fix it by passing > usb_intf device to mt76_alloc_device routine. > > Fixes: 112f980ac8926 ("mt76usb: use usb_dev private data") > Signed-off-by: Lorenzo Bianconi > --- > drivers/net/wireless/mediatek/mt76/mt76.h | 3 ++- > drivers/net/wireless/mediatek/mt76/mt76x0/usb.c | 2 +- > drivers/net/wireless/mediatek/mt76/mt76x2/usb.c | 2 +- > drivers/net/wireless/mediatek/mt76/usb.c | 12 +++++++++--- > 4 files changed, 13 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h > index 8bcc7f21e83c..ccbc05d8e96d 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt76.h > +++ b/drivers/net/wireless/mediatek/mt76/mt76.h > @@ -806,7 +806,8 @@ static inline int > mt76u_bulk_msg(struct mt76_dev *dev, void *data, int len, int *actual_len, > int timeout) > { > - struct usb_device *udev = to_usb_device(dev->dev); > + struct usb_interface *uintf = to_usb_interface(dev->dev); > + struct usb_device *udev = interface_to_usbdev(uintf); > struct mt76_usb *usb = &dev->usb; > unsigned int pipe; > > diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c b/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c > index ade6312c7367..b9fd41433106 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c > +++ b/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c > @@ -221,7 +221,7 @@ static int mt76x0u_probe(struct usb_interface *usb_intf, > u32 mac_rev; > int ret; > > - mdev = mt76_alloc_device(&usb_dev->dev, sizeof(*dev), &mt76x0u_ops, > + mdev = mt76_alloc_device(&usb_intf->dev, sizeof(*dev), &mt76x0u_ops, > &drv_ops); > if (!mdev) > return -ENOMEM; > diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/usb.c b/drivers/net/wireless/mediatek/mt76/mt76x2/usb.c > index e6d778456e5e..48b9017813b5 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt76x2/usb.c > +++ b/drivers/net/wireless/mediatek/mt76/mt76x2/usb.c > @@ -41,7 +41,7 @@ static int mt76x2u_probe(struct usb_interface *intf, > struct mt76_dev *mdev; > int err; > > - mdev = mt76_alloc_device(&udev->dev, sizeof(*dev), &mt76x2u_ops, > + mdev = mt76_alloc_device(&intf->dev, sizeof(*dev), &mt76x2u_ops, > &drv_ops); > if (!mdev) > return -ENOMEM; > diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c > index cac058fc41ef..be19038ea7dd 100644 > --- a/drivers/net/wireless/mediatek/mt76/usb.c > +++ b/drivers/net/wireless/mediatek/mt76/usb.c > @@ -19,7 +19,8 @@ static int __mt76u_vendor_request(struct mt76_dev *dev, u8 req, > u8 req_type, u16 val, u16 offset, > void *buf, size_t len) > { > - struct usb_device *udev = to_usb_device(dev->dev); > + struct usb_interface *uintf = to_usb_interface(dev->dev); > + struct usb_device *udev = interface_to_usbdev(uintf); > unsigned int pipe; > int i, ret; > > @@ -234,7 +235,8 @@ mt76u_rd_rp(struct mt76_dev *dev, u32 base, > > static bool mt76u_check_sg(struct mt76_dev *dev) > { > - struct usb_device *udev = to_usb_device(dev->dev); > + struct usb_interface *uintf = to_usb_interface(dev->dev); > + struct usb_device *udev = interface_to_usbdev(uintf); > > return (!disable_usb_sg && udev->bus->sg_tablesize > 0 && > (udev->bus->no_sg_constraint || > @@ -369,7 +371,8 @@ mt76u_fill_bulk_urb(struct mt76_dev *dev, int dir, int index, > struct urb *urb, usb_complete_t complete_fn, > void *context) > { > - struct usb_device *udev = to_usb_device(dev->dev); > + struct usb_interface *uintf = to_usb_interface(dev->dev); > + struct usb_device *udev = interface_to_usbdev(uintf); > unsigned int pipe; > > if (dir == USB_DIR_IN) > @@ -951,6 +954,7 @@ int mt76u_init(struct mt76_dev *dev, > .rd_rp = mt76u_rd_rp, > .type = MT76_BUS_USB, > }; > + struct usb_device *udev = interface_to_usbdev(intf); > struct mt76_usb *usb = &dev->usb; > > tasklet_init(&usb->rx_tasklet, mt76u_rx_tasklet, (unsigned long)dev); > @@ -964,6 +968,8 @@ int mt76u_init(struct mt76_dev *dev, > dev->bus = &mt76u_ops; > dev->queue_ops = &usb_queue_ops; > > + dev_set_drvdata(&udev->dev, dev); > + > usb->sg_en = mt76u_check_sg(dev); > > return mt76u_set_endpoints(intf, usb); > -- > 2.21.0 >