Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp4101567ybi; Tue, 18 Jun 2019 11:49:26 -0700 (PDT) X-Google-Smtp-Source: APXvYqxaTROQycV4rR8ef9ayMghXR4a5RtzKGsi4V+vwvBgzlnnSDERws/nHH0MJTuufbeI94fHV X-Received: by 2002:a63:214a:: with SMTP id s10mr3978778pgm.13.1560883766124; Tue, 18 Jun 2019 11:49:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560883766; cv=none; d=google.com; s=arc-20160816; b=CAUgz04ahGlBzKe2OI0/+Ua2BvlPmFWlmUB1dUWZwVFYFJkGI14MDG6sekgI/f8YVT Qzvg523+3wW5vLRDCO8F6PXM1+jyyR8FKojcPbVr4XQzquznVYUBQ4TJKCdeXJeMGyQ7 hyXA9Cacrv5Khov7nq3Gb2JiA3YCd2xBdYv3fQ7RNK3wkiiUdUSmGDb79T9SARP1FfmT WDAf53WofKC9Z7e+QYMtNoKcXjJZFPLJRxS1FATrW+8bG8ygZ8pzz2+sPNzC5K/lC0rd 1vGo2+1X7xiuKYobIb1uJoZcYrsAzflZG++BIWhxAdyqf2Wf0YHFkTAQNak8Yu61OTuB d5VA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id; bh=gU80byRGRv4FglC9vmYUIFowPpFlLsrvylwmMUEzsf0=; b=xVescR1gLvteSOsR7q03fU+i8hafrVyMo6DwgOJ6C9UNT06cE6IHh0+qzTqWteUcSm UImV/+s3O8nvQ99mRwxHzBRo5olEV5JB/vhGbEpCF/YsDw95NaqEas6eCaUH29wyN5aB 2kfAdcw1h72T1om7wTYk2QRqmMepYCidSRBOoAv/vTPniit7dRjRHZWRoAvo9e/8QDj9 JbYlOrw/8mzZnfB6A5GENZdbU7+ed1HAeaTiqIrLFacjf3BN+m3aZJWDSrptiHZYjOoE 8YyBiSKBl4sfZAE2DiBU1wvANr1JHH7JJsd6hHI7RXIo5I/m2C08gLx3gHG6XRfDys5z XIUA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a23si11958513pls.189.2019.06.18.11.49.10; Tue, 18 Jun 2019 11:49:26 -0700 (PDT) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730369AbfFRStA (ORCPT + 99 others); Tue, 18 Jun 2019 14:49:00 -0400 Received: from s3.sipsolutions.net ([144.76.43.62]:45808 "EHLO sipsolutions.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729642AbfFRStA (ORCPT ); Tue, 18 Jun 2019 14:49:00 -0400 Received: by sipsolutions.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1hdJ9q-0004lc-GY; Tue, 18 Jun 2019 20:48:38 +0200 Message-ID: <967604dd8d466a99b865649174f8b9cd34b2560e.camel@sipsolutions.net> Subject: Re: [PATCH v2 00/17] net: introduce Qualcomm IPA driver From: Johannes Berg To: Alex Elder , Arnd Bergmann , Dan Williams Cc: Subash Abhinov Kasiviswanathan , abhishek.esse@gmail.com, Ben Chan , Bjorn Andersson , cpratapa@codeaurora.org, David Miller , DTML , Eric Caruso , evgreen@chromium.org, Ilias Apalodimas , Linux ARM , linux-arm-msm@vger.kernel.org, Linux Kernel Mailing List , linux-soc@vger.kernel.org, Networking , syadagir@codeaurora.org Date: Tue, 18 Jun 2019 20:48:33 +0200 In-Reply-To: <850eed1d-0fec-c396-6e91-b5f1f8440ded@linaro.org> (sfid-20190618_172042_951332_21BBC6A6) References: <380a6185-7ad1-6be0-060b-e6e5d4126917@linaro.org> <36bca57c999f611353fd9741c55bb2a7@codeaurora.org> <153fafb91267147cf22e2bf102dd822933ec823a.camel@redhat.com> <850eed1d-0fec-c396-6e91-b5f1f8440ded@linaro.org> (sfid-20190618_172042_951332_21BBC6A6) Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5 (3.28.5-2.fc28) Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Just to add to Dan's response, I think he's captured our discussions and thoughts well. > First, a few terms (correct or improve as you like): Thanks for defining, we don't do that nearly often enough. > - WWAN device is a hardware device (like IPA) that presents a > connection between AP and modem, and presents an interface > that allows the use of that connection to be managed. Yes. But I was actually thinking of a "wwan_dev" to be a separate structure, not *directly* owned by a single driver and used to represent the hardware like a (hypothetical) "struct ipa_dev". > - WWAN netdevice represents a Linux network interface, with its > operations and queues, etc., but implements a standardized > set of WWAN-specific operations. It represents a logical > ' channel whose data is multiplexed over the WWAN device. I'm not sure I'd asy it has much WWAN-specific operations? But yeah, I guess it might. > - WWAN channel is a user space abstraction that corresponds > with a WWAN netdevice (but I'm not clear on all the ways > they differ or interact). As Dan said, this could be a different abstraction than a netdevice, like a TTY, etc. > - The WWAN core is kernel code that presents abstractions > for WWAN devices and netdevices, so they can be managed > in a generic way. It is for configuration and communication > and is not at all involved in the data path. > > You're saying that the WWAN driver space calls wwan_add() > to register itself as a new WWAN device. Assuming it knows that it is in fact a WWAN device, like IPA. > You're also saying that a WWAN device "attaches" a WWAN > netdevice, which is basically notifying the WWAN core > that the new netdev/channel is available for use. > - I trust that a "tentative" attachement is necessary. But > I'm not sure what makes it transition into becoming a > "real" one, or how that event gets communicated. I think Dan explained this one well. This wasn't actually on my radar until he pointed it out. Really this only exists with USB devices that appear as multiple functions (ethernet, tty, ...) but still represent a single WWAN device, with each function not necessarily being aware of that since it's just a function driver. Hopefully at least one of the function drivers will be able to figure it out, and then we can combine all of the functions into the WWAN device abstraction. [snip - Dan's explanations are great] Dan also said: > > I read "attach" here as simply associating an existing netdev with the > > "parent" WWAN device. A purely Linux operation that is only book- > > keeping and may not have any interaction with the modem. Now I'm replying out of thread, but yes, that's what I had in mind. What I meant by attaching (in this case) is just that you actually mark that it is (or might be, if tentatively attached) part of a WWAN device. > - Are there any attributes that are only optionally supported, > and if so, how are the supported ones communicated? As Dan said, good point. I hadn't really considered that for now. I sort of know that we need it, but for the sake of simplicity decided to elide it for now. I'm just not sure what really are needed, and netlink attributes make adding them (and discovering the valid ones) pretty easy in the future, when a need arises. > - Which WWAN channel attributes must be set *before* the > channel is activated, and can't be changed? Are there any > that can be changed dynamically? It's a good question. I threw a "u32 pdn" in there, but I'm not actually sure that's what you *really* need? Maybe the modem and userspace just agree on some arbitrary "session identifier"? Dan mentions "MUX ID" or "MBIM Session ID", maybe there really is no good general term for this and we should just call it a "session identifier" and agree that it depends on the control protocol (MBIM vs. QMI vs. ...)? > And while the whole point of this is to make things generic, > it might be nice to have a way to implement a new feature > before it can be "standardized". Not sure I understand this? FWIW, I actually came to this because we want to upstream a driver for an Intel modem, but ... can't really make up our mind on whether or not to use VLAN tags, something like rmnet (but we obviously cannot use rmnet, so that'd be another vendor specific interface like rmnet), or sysfs, or any of the other methods we have today ... :-) johannes