linux/net/core/netpoll.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Common framework for low-level network console, dump, and debugger code
 *
 * Sep 8 2003  Matt Mackall <[email protected]>
 *
 * based on the netconsole code from:
 *
 * Copyright (C) 2001  Ingo Molnar <[email protected]>
 * Copyright (C) 2002  Red Hat, Inc.
 */

#define pr_fmt(fmt)

#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/string.h>
#include <linux/if_arp.h>
#include <linux/inetdevice.h>
#include <linux/inet.h>
#include <linux/interrupt.h>
#include <linux/netpoll.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/rcupdate.h>
#include <linux/workqueue.h>
#include <linux/slab.h>
#include <linux/export.h>
#include <linux/if_vlan.h>
#include <net/tcp.h>
#include <net/udp.h>
#include <net/addrconf.h>
#include <net/ndisc.h>
#include <net/ip6_checksum.h>
#include <asm/unaligned.h>
#include <trace/events/napi.h>
#include <linux/kconfig.h>

/*
 * We maintain a small pool of fully-sized skbs, to make sure the
 * message gets out even in extreme OOM situations.
 */

#define MAX_UDP_CHUNK
#define MAX_SKBS

static struct sk_buff_head skb_pool;

DEFINE_STATIC_SRCU();

#define USEC_PER_POLL

#define MAX_SKB_SIZE

static void zap_completion_queue(void);

static unsigned int carrier_timeout =;
module_param(carrier_timeout, uint, 0644);

#define np_info(np, fmt, ...)
#define np_err(np, fmt, ...)
#define np_notice(np, fmt, ...)

static netdev_tx_t netpoll_start_xmit(struct sk_buff *skb,
				      struct net_device *dev,
				      struct netdev_queue *txq)
{}

static void queue_process(struct work_struct *work)
{}

static int netif_local_xmit_active(struct net_device *dev)
{}

static void poll_one_napi(struct napi_struct *napi)
{}

static void poll_napi(struct net_device *dev)
{}

void netpoll_poll_dev(struct net_device *dev)
{}
EXPORT_SYMBOL();

void netpoll_poll_disable(struct net_device *dev)
{}
EXPORT_SYMBOL();

void netpoll_poll_enable(struct net_device *dev)
{}
EXPORT_SYMBOL();

static void refill_skbs(void)
{}

static void zap_completion_queue(void)
{}

static struct sk_buff *find_skb(struct netpoll *np, int len, int reserve)
{}

static int netpoll_owner_active(struct net_device *dev)
{}

/* call with IRQ disabled */
static netdev_tx_t __netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)
{}

netdev_tx_t netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)
{}
EXPORT_SYMBOL();

void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
{}
EXPORT_SYMBOL();

void netpoll_print_options(struct netpoll *np)
{}
EXPORT_SYMBOL();

static int netpoll_parse_ip_addr(const char *str, union inet_addr *addr)
{}

int netpoll_parse_options(struct netpoll *np, char *opt)
{}
EXPORT_SYMBOL();

int __netpoll_setup(struct netpoll *np, struct net_device *ndev)
{}
EXPORT_SYMBOL_GPL();

int netpoll_setup(struct netpoll *np)
{}
EXPORT_SYMBOL();

static int __init netpoll_init(void)
{}
core_initcall(netpoll_init);

static void rcu_cleanup_netpoll_info(struct rcu_head *rcu_head)
{}

void __netpoll_cleanup(struct netpoll *np)
{}
EXPORT_SYMBOL_GPL();

void __netpoll_free(struct netpoll *np)
{}
EXPORT_SYMBOL_GPL();

void netpoll_cleanup(struct netpoll *np)
{}
EXPORT_SYMBOL();