#include <linux/init.h>
#include <linux/module.h>
#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/etherdevice.h>
#include <linux/vringh.h>
#include <linux/vdpa.h>
#include <net/netlink.h>
#include <uapi/linux/virtio_net.h>
#include <uapi/linux/vdpa.h>
#include "vdpa_sim.h"
#define DRV_VERSION …
#define DRV_AUTHOR …
#define DRV_DESC …
#define DRV_LICENSE …
#define VDPASIM_NET_FEATURES …
#define VDPASIM_NET_VQ_NUM …
#define VDPASIM_NET_AS_NUM …
#define VDPASIM_NET_GROUP_NUM …
struct vdpasim_dataq_stats { … };
struct vdpasim_cq_stats { … };
struct vdpasim_net{ … };
static struct vdpasim_net *sim_to_net(struct vdpasim *vdpasim)
{ … }
static void vdpasim_net_complete(struct vdpasim_virtqueue *vq, size_t len)
{ … }
static bool receive_filter(struct vdpasim *vdpasim, size_t len)
{ … }
static virtio_net_ctrl_ack vdpasim_handle_ctrl_mac(struct vdpasim *vdpasim,
u8 cmd)
{ … }
static void vdpasim_handle_cvq(struct vdpasim *vdpasim)
{ … }
static void vdpasim_net_work(struct vdpasim *vdpasim)
{ … }
static int vdpasim_net_get_stats(struct vdpasim *vdpasim, u16 idx,
struct sk_buff *msg,
struct netlink_ext_ack *extack)
{ … }
static void vdpasim_net_get_config(struct vdpasim *vdpasim, void *config)
{ … }
static int vdpasim_net_set_attr(struct vdpa_mgmt_dev *mdev, struct vdpa_device *dev,
const struct vdpa_dev_set_config *config)
{ … }
static void vdpasim_net_setup_config(struct vdpasim *vdpasim,
const struct vdpa_dev_set_config *config)
{ … }
static void vdpasim_net_free(struct vdpasim *vdpasim)
{ … }
static void vdpasim_net_mgmtdev_release(struct device *dev)
{ … }
static struct device vdpasim_net_mgmtdev = …;
static int vdpasim_net_dev_add(struct vdpa_mgmt_dev *mdev, const char *name,
const struct vdpa_dev_set_config *config)
{ … }
static void vdpasim_net_dev_del(struct vdpa_mgmt_dev *mdev,
struct vdpa_device *dev)
{ … }
static const struct vdpa_mgmtdev_ops vdpasim_net_mgmtdev_ops = …;
static struct virtio_device_id id_table[] = …;
static struct vdpa_mgmt_dev mgmt_dev = …;
static int __init vdpasim_net_init(void)
{ … }
static void __exit vdpasim_net_exit(void)
{ … }
module_init(…) …;
module_exit(vdpasim_net_exit);
MODULE_VERSION(…);
MODULE_LICENSE(…);
MODULE_AUTHOR(…);
MODULE_DESCRIPTION(…);