#include <linux/etherdevice.h>
#include <linux/if_arp.h>
#include <linux/if_link.h>
#include <linux/rtnetlink.h>
#include <linux/wwan.h>
#include <net/pkt_sched.h>
#include "iosm_ipc_chnl_cfg.h"
#include "iosm_ipc_imem_ops.h"
#include "iosm_ipc_wwan.h"
#define IOSM_IP_TYPE_MASK …
#define IOSM_IP_TYPE_IPV4 …
#define IOSM_IP_TYPE_IPV6 …
struct iosm_netdev_priv { … };
struct iosm_wwan { … };
static int ipc_wwan_link_open(struct net_device *netdev)
{ … }
static int ipc_wwan_link_stop(struct net_device *netdev)
{ … }
static netdev_tx_t ipc_wwan_link_transmit(struct sk_buff *skb,
struct net_device *netdev)
{ … }
static const struct net_device_ops ipc_inm_ops = …;
static void ipc_wwan_setup(struct net_device *iosm_dev)
{ … }
static int ipc_wwan_newlink(void *ctxt, struct net_device *dev,
u32 if_id, struct netlink_ext_ack *extack)
{ … }
static void ipc_wwan_dellink(void *ctxt, struct net_device *dev,
struct list_head *head)
{ … }
static const struct wwan_ops iosm_wwan_ops = …;
int ipc_wwan_receive(struct iosm_wwan *ipc_wwan, struct sk_buff *skb_arg,
bool dss, int if_id)
{ … }
void ipc_wwan_tx_flowctrl(struct iosm_wwan *ipc_wwan, int if_id, bool on)
{ … }
struct iosm_wwan *ipc_wwan_init(struct iosm_imem *ipc_imem, struct device *dev)
{ … }
void ipc_wwan_deinit(struct iosm_wwan *ipc_wwan)
{ … }