#define pr_fmt(fmt) …
#include <linux/etherdevice.h>
#include <linux/ip.h>
#include <linux/ipv6.h>
#include <linux/udp.h>
#include <linux/in.h>
#include <linux/if_arp.h>
#include <linux/if_ether.h>
#include <linux/if_vlan.h>
#include <linux/in6.h>
#include <linux/tcp.h>
#include <linux/icmp.h>
#include <linux/icmpv6.h>
#include <linux/uaccess.h>
#include <linux/errno.h>
#include <net/ndisc.h>
#include "gdm_lte.h"
#include "netlink_k.h"
#include "hci.h"
#include "hci_packet.h"
#include "gdm_endian.h"
#define NETLINK_LTE …
#define DEFAULT_MTU_SIZE …
#define IP_VERSION_4 …
#define IP_VERSION_6 …
static struct { … } lte_event;
static const struct device_type wwan_type = …;
static int gdm_lte_open(struct net_device *dev)
{ … }
static int gdm_lte_close(struct net_device *dev)
{ … }
static int gdm_lte_set_config(struct net_device *dev, struct ifmap *map)
{ … }
static void tx_complete(void *arg)
{ … }
static int gdm_lte_rx(struct sk_buff *skb, struct nic *nic, int nic_type)
{ … }
static int gdm_lte_emulate_arp(struct sk_buff *skb_in, u32 nic_type)
{ … }
static __sum16 icmp6_checksum(struct ipv6hdr *ipv6, u16 *ptr, int len)
{ … }
static int gdm_lte_emulate_ndp(struct sk_buff *skb_in, u32 nic_type)
{ … }
static s32 gdm_lte_tx_nic_type(struct net_device *dev, struct sk_buff *skb)
{ … }
static netdev_tx_t gdm_lte_tx(struct sk_buff *skb, struct net_device *dev)
{ … }
static struct net_device_stats *gdm_lte_stats(struct net_device *dev)
{ … }
static int gdm_lte_event_send(struct net_device *dev, char *buf, int len)
{ … }
static void gdm_lte_event_rcv(struct net_device *dev, u16 type,
void *msg, int len)
{ … }
int gdm_lte_event_init(void)
{ … }
void gdm_lte_event_exit(void)
{ … }
static int find_dev_index(u32 nic_type)
{ … }
static void gdm_lte_netif_rx(struct net_device *dev, char *buf,
int len, int flagged_nic_type)
{ … }
static void gdm_lte_multi_sdu_pkt(struct phy_dev *phy_dev, char *buf, int len)
{ … }
static void gdm_lte_pdn_table(struct net_device *dev, char *buf, int len)
{ … }
static int gdm_lte_receive_pkt(struct phy_dev *phy_dev, char *buf, int len)
{ … }
static int rx_complete(void *arg, void *data, int len, int context)
{ … }
void start_rx_proc(struct phy_dev *phy_dev)
{ … }
static const struct net_device_ops gdm_netdev_ops = …;
static u8 gdm_lte_macaddr[ETH_ALEN] = …;
static void form_mac_address(u8 *dev_addr, u8 *nic_src, u8 *nic_dest,
u8 *mac_address, u8 index)
{ … }
static void validate_mac_address(u8 *mac_address)
{ … }
int register_lte_device(struct phy_dev *phy_dev,
struct device *dev, u8 *mac_address)
{ … }
void unregister_lte_device(struct phy_dev *phy_dev)
{ … }