linux kernel 工程师
全部博文(99)
分类: LINUX
2014-02-14 09:34:18
net/sched/sched_fifo.c 实现了pfifo和bfifo
这两种策略都是fifo(先进先出)策略,即入队时放在队列尾部,出队时从头部出队。
不同点在于入队时的限制:
bfifo 对队列的字节长度做限制
pfofo 对队列的packets数目做限制
static int bfifo_enqueue(struct sk_buff *skb, struct Qdisc *sch)
{
if (likely(sch->qstats.backlog + qdisc_pkt_len(skb) <= sch->limit)) //字节数限制
return qdisc_enqueue_tail(skb, sch);
return qdisc_reshape_fail(skb, sch);
}
static int pfifo_enqueue(struct sk_buff *skb, struct Qdisc *sch)
{
if (likely(skb_queue_len(&sch->q) < sch->limit)) //packets 数目限制
return qdisc_enqueue_tail(skb, sch);
return qdisc_reshape_fail(skb, sch);
}