Thread (25 messages) 25 messages, 3 authors, 2021-06-01

Re: [PATCH V3 15/16] net: iosm: net driver

From: Loic Poulain <hidden>
Date: 2021-05-25 08:15:50
Also in: linux-wireless

Hi Chetan,

On Mon, 24 May 2021 at 12:36, Kumar, M Chetan [off-list ref] wrote:
Hi Loic,
quoted
quoted
+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,
quoted
+                             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.
quoted
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.
So basically the rtnetlink ops would be implemented and define in
wwan_core, as "wwan" link  type.
Allowing users to create a new WWAN link/context whatever the
underlying hardware is. We could therefore pass the WWAN device name
or index to e.g:
ip link add wwan0.1 type wwan hw wwan0 session 1
Can you please share us more details on wwan_core changes(if any)/how we should
use /sys/class/wwan0 for link creation ?
Well, move rtnetlink ops to wwan_core (or wwan_rtnetlink), and parse
netlink parameters into the wwan core. Add support for registering
`wwan_ops`, something like:
wwan_register_ops(wwan_ops *ops, struct device *wwan_root_device)

The ops could be basically:
struct wwan_ops {
    int (*add_intf)(struct device *wwan_root_device, const char *name,
struct wwan_intf_params *params);
    int (*del_intf) ...
}

Then you could implement your own ops in iosm, with ios_add_intf()
allocating and registering the netdev as you already do.
struct wwan_intf_params would contain parameters of the interface,
like the session_id (and possibly extended later with others, like
checksum offload, etc...).

What do you think?
quoted
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.
I also plan to submit a change to add a wwan_register_netdevice()
function (similarly to WiFi cfg80211_register_netdevice), that could
be used instead of register_netdevice(), basically factorizing wwan
netdev registration (add "wwan" dev_type, add sysfs link to the 'wwan'
device...).

Regards,
Loic
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help