[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <90f93c17164a4d8299d17a02b1f15bfa@intel.com>
Date: Mon, 24 May 2021 10:36:46 +0000
From: "Kumar, M Chetan" <m.chetan.kumar@...el.com>
To: Loic Poulain <loic.poulain@...aro.org>
CC: Network Development <netdev@...r.kernel.org>,
"linux-wireless@...r.kernel.org" <linux-wireless@...r.kernel.org>,
"johannes@...solutions.net" <johannes@...solutions.net>,
"Sudi, Krishna C" <krishna.c.sudi@...el.com>,
linuxwwan <linuxwwan@...el.com>, Dan Williams <dcbw@...hat.com>,
Bjørn Mork <bjorn@...k.no>,
"Jakub Kicinski" <kuba@...nel.org>
Subject: RE: [PATCH V3 15/16] net: iosm: net driver
Hi Loic,
> > +static void ipc_netdev_setup(struct net_device *dev) {}
> > +
> > +struct iosm_wwan *ipc_wwan_init(struct iosm_imem *ipc_imem, struct
> > +device *dev) {
> > + static const struct net_device_ops iosm_wwandev_ops = {};
> > + struct iosm_wwan *ipc_wwan;
> > + struct net_device *netdev;
> > +
> > + netdev = alloc_netdev(sizeof(*ipc_wwan), "wwan%d",
> NET_NAME_ENUM,
> > + ipc_netdev_setup);
> > +
> > + if (!netdev)
> > + return NULL;
> > +
> > + ipc_wwan = netdev_priv(netdev);
> > +
> > + ipc_wwan->dev = dev;
> > + ipc_wwan->netdev = netdev;
> > + ipc_wwan->is_registered = false;
> > +
> > + ipc_wwan->ipc_imem = ipc_imem;
> > +
> > + mutex_init(&ipc_wwan->if_mutex);
> > +
> > + /* allocate random ethernet address */
> > + eth_random_addr(netdev->dev_addr);
> > + netdev->addr_assign_type = NET_ADDR_RANDOM;
> > +
> > + netdev->netdev_ops = &iosm_wwandev_ops;
> > + netdev->flags |= IFF_NOARP;
> > +
> > + SET_NETDEV_DEVTYPE(netdev, &wwan_type);
> > +
> > + if (register_netdev(netdev)) {
> > + dev_err(ipc_wwan->dev, "register_netdev failed");
> > + goto reg_fail;
> > + }
>
> So you register a no-op netdev which is only used to represent the modem
> instance, and to be referenced for link creation over IOSM rtnetlinks?
That’s correct driver creates wwan0 (no-op netdev) to represent the
modem instance and is referenced for link creation over IOSM rtnetlinks.
> The new WWAN framework creates a logical WWAN device instance (e.g;
> /sys/class/wwan0), I think it would make sense to use its index as parameter
> when creating the new links, instead of relying on this dummy netdev. Note
> that for now the wwan_device is private to wwan_core and created implicitly
> on the WWAN control port registration.
In order to use WWAN device instance any additional changes required inside
wwan_core ? Or simply passing /sys/class/wwan0 device to ip link add is enough.
Can you please share us more details on wwan_core changes(if any)/how we should
use /sys/class/wwan0 for link creation ?
> Moreover I wonder if it could also be possible to create a generic WWAN link
> type instead of creating yet-another hw specific one, that could benefit
> future WWAN drivers, and simplify user side integration, with a common
> interface to create links and multiplex PDN (a bit like wlan vif).
Common interface could benefit both wwan drivers and user side integration.
WWAN framework generalizes WWAN device control port, would it also consider
WWAN netdev part ? Is there a plan to support such implementation inside
wwan_core.
Regards,
Chetan
Powered by blists - more mailing lists