#include <linux/mutex.h>
#include <linux/netdevice.h>
#include <linux/xarray.h>
#include <net/net_debug.h>
#include <net/page_pool/types.h>
#include <net/page_pool/helpers.h>
#include <net/sock.h>
#include "page_pool_priv.h"
#include "netdev-genl-gen.h"
static DEFINE_XARRAY_FLAGS(page_pools, XA_FLAGS_ALLOC1);
static DEFINE_MUTEX(page_pools_lock);
pp_nl_fill_cb;
static int
netdev_nl_page_pool_get_do(struct genl_info *info, u32 id, pp_nl_fill_cb fill)
{ … }
struct page_pool_dump_cb { … };
static int
netdev_nl_page_pool_get_dump(struct sk_buff *skb, struct netlink_callback *cb,
pp_nl_fill_cb fill)
{ … }
static int
page_pool_nl_stats_fill(struct sk_buff *rsp, const struct page_pool *pool,
const struct genl_info *info)
{ … }
int netdev_nl_page_pool_stats_get_doit(struct sk_buff *skb,
struct genl_info *info)
{ … }
int netdev_nl_page_pool_stats_get_dumpit(struct sk_buff *skb,
struct netlink_callback *cb)
{ … }
static int
page_pool_nl_fill(struct sk_buff *rsp, const struct page_pool *pool,
const struct genl_info *info)
{ … }
static void netdev_nl_page_pool_event(const struct page_pool *pool, u32 cmd)
{ … }
int netdev_nl_page_pool_get_doit(struct sk_buff *skb, struct genl_info *info)
{ … }
int netdev_nl_page_pool_get_dumpit(struct sk_buff *skb,
struct netlink_callback *cb)
{ … }
int page_pool_list(struct page_pool *pool)
{ … }
void page_pool_detached(struct page_pool *pool)
{ … }
void page_pool_unlist(struct page_pool *pool)
{ … }
static void page_pool_unreg_netdev_wipe(struct net_device *netdev)
{ … }
static void page_pool_unreg_netdev(struct net_device *netdev)
{ … }
static int
page_pool_netdevice_event(struct notifier_block *nb,
unsigned long event, void *ptr)
{ … }
static struct notifier_block page_pool_netdevice_nb = …;
static int __init page_pool_user_init(void)
{ … }
subsys_initcall(page_pool_user_init);