#define pr_fmt(fmt) …
#include <linux/stddef.h>
#include <linux/spinlock.h>
#include <linux/slab.h>
#include <linux/rculist.h>
#include <net/caif/cfpkt.h>
#include <net/caif/cfmuxl.h>
#include <net/caif/cfsrvl.h>
#include <net/caif/cffrml.h>
#define container_obj(layr) …
#define CAIF_CTRL_CHANNEL …
#define UP_CACHE_SIZE …
#define DN_CACHE_SIZE …
struct cfmuxl { … };
static int cfmuxl_receive(struct cflayer *layr, struct cfpkt *pkt);
static int cfmuxl_transmit(struct cflayer *layr, struct cfpkt *pkt);
static void cfmuxl_ctrlcmd(struct cflayer *layr, enum caif_ctrlcmd ctrl,
int phyid);
static struct cflayer *get_up(struct cfmuxl *muxl, u16 id);
struct cflayer *cfmuxl_create(void)
{ … }
int cfmuxl_set_dnlayer(struct cflayer *layr, struct cflayer *dn, u8 phyid)
{ … }
static struct cflayer *get_from_id(struct list_head *list, u16 id)
{ … }
int cfmuxl_set_uplayer(struct cflayer *layr, struct cflayer *up, u8 linkid)
{ … }
struct cflayer *cfmuxl_remove_dnlayer(struct cflayer *layr, u8 phyid)
{ … }
static struct cflayer *get_up(struct cfmuxl *muxl, u16 id)
{ … }
static struct cflayer *get_dn(struct cfmuxl *muxl, struct dev_info *dev_info)
{ … }
struct cflayer *cfmuxl_remove_uplayer(struct cflayer *layr, u8 id)
{ … }
static int cfmuxl_receive(struct cflayer *layr, struct cfpkt *pkt)
{ … }
static int cfmuxl_transmit(struct cflayer *layr, struct cfpkt *pkt)
{ … }
static void cfmuxl_ctrlcmd(struct cflayer *layr, enum caif_ctrlcmd ctrl,
int phyid)
{ … }