#include <linux/jhash.h>
#include <linux/module.h>
#include <linux/sizes.h>
#include <linux/vmalloc.h>
#include <net/pkt_cls.h>
#include <net/pie.h>
struct fq_pie_flow { … };
struct fq_pie_sched_data { … };
static unsigned int fq_pie_hash(const struct fq_pie_sched_data *q,
struct sk_buff *skb)
{ … }
static unsigned int fq_pie_classify(struct sk_buff *skb, struct Qdisc *sch,
int *qerr)
{ … }
static inline void flow_queue_add(struct fq_pie_flow *flow,
struct sk_buff *skb)
{ … }
static int fq_pie_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch,
struct sk_buff **to_free)
{ … }
static const struct netlink_range_validation fq_pie_q_range = …;
static const struct nla_policy fq_pie_policy[TCA_FQ_PIE_MAX + 1] = …;
static inline struct sk_buff *dequeue_head(struct fq_pie_flow *flow)
{ … }
static struct sk_buff *fq_pie_qdisc_dequeue(struct Qdisc *sch)
{ … }
static int fq_pie_change(struct Qdisc *sch, struct nlattr *opt,
struct netlink_ext_ack *extack)
{ … }
static void fq_pie_timer(struct timer_list *t)
{ … }
static int fq_pie_init(struct Qdisc *sch, struct nlattr *opt,
struct netlink_ext_ack *extack)
{ … }
static int fq_pie_dump(struct Qdisc *sch, struct sk_buff *skb)
{ … }
static int fq_pie_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
{ … }
static void fq_pie_reset(struct Qdisc *sch)
{ … }
static void fq_pie_destroy(struct Qdisc *sch)
{ … }
static struct Qdisc_ops fq_pie_qdisc_ops __read_mostly = …;
MODULE_ALIAS_NET_SCH(…) …;
static int __init fq_pie_module_init(void)
{ … }
static void __exit fq_pie_module_exit(void)
{ … }
module_init(…) …;
module_exit(fq_pie_module_exit);
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;