#include <linux/module.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/skbuff.h>
#include <net/pkt_sched.h>
#include <net/inet_ecn.h>
#include <net/pie.h>
struct pie_sched_data { … };
bool pie_drop_early(struct Qdisc *sch, struct pie_params *params,
struct pie_vars *vars, u32 backlog, u32 packet_size)
{ … }
EXPORT_SYMBOL_GPL(…);
static int pie_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch,
struct sk_buff **to_free)
{ … }
static const struct nla_policy pie_policy[TCA_PIE_MAX + 1] = …;
static int pie_change(struct Qdisc *sch, struct nlattr *opt,
struct netlink_ext_ack *extack)
{ … }
void pie_process_dequeue(struct sk_buff *skb, struct pie_params *params,
struct pie_vars *vars, u32 backlog)
{ … }
EXPORT_SYMBOL_GPL(…);
void pie_calculate_probability(struct pie_params *params, struct pie_vars *vars,
u32 backlog)
{ … }
EXPORT_SYMBOL_GPL(…);
static void pie_timer(struct timer_list *t)
{ … }
static int pie_init(struct Qdisc *sch, struct nlattr *opt,
struct netlink_ext_ack *extack)
{ … }
static int pie_dump(struct Qdisc *sch, struct sk_buff *skb)
{ … }
static int pie_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
{ … }
static struct sk_buff *pie_qdisc_dequeue(struct Qdisc *sch)
{ … }
static void pie_reset(struct Qdisc *sch)
{ … }
static void pie_destroy(struct Qdisc *sch)
{ … }
static struct Qdisc_ops pie_qdisc_ops __read_mostly = …;
MODULE_ALIAS_NET_SCH(…) …;
static int __init pie_module_init(void)
{ … }
static void __exit pie_module_exit(void)
{ … }
module_init(…) …;
module_exit(pie_module_exit);
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;