mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[PKT_SCHED]: GRED: Cleanup and remove unnecessary code
Removes unnecessary includes, initializers, and simplifies the code a bit. Signed-off-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
This commit is contained in:
parent
6214e653cc
commit
1e4dfaf9b9
2 changed files with 53 additions and 95 deletions
|
@ -194,15 +194,11 @@ enum
|
||||||
|
|
||||||
#define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
|
#define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
|
||||||
|
|
||||||
#define TCA_SET_OFF TCA_GRED_PARMS
|
|
||||||
struct tc_gred_qopt
|
struct tc_gred_qopt
|
||||||
{
|
{
|
||||||
__u32 limit; /* HARD maximal queue length (bytes)
|
__u32 limit; /* HARD maximal queue length (bytes) */
|
||||||
*/
|
__u32 qth_min; /* Min average length threshold (bytes) */
|
||||||
__u32 qth_min; /* Min average length threshold (bytes)
|
__u32 qth_max; /* Max average length threshold (bytes) */
|
||||||
*/
|
|
||||||
__u32 qth_max; /* Max average length threshold (bytes)
|
|
||||||
*/
|
|
||||||
__u32 DP; /* upto 2^32 DPs */
|
__u32 DP; /* upto 2^32 DPs */
|
||||||
__u32 backlog;
|
__u32 backlog;
|
||||||
__u32 qave;
|
__u32 qave;
|
||||||
|
@ -210,14 +206,14 @@ struct tc_gred_qopt
|
||||||
__u32 early;
|
__u32 early;
|
||||||
__u32 other;
|
__u32 other;
|
||||||
__u32 pdrop;
|
__u32 pdrop;
|
||||||
|
__u8 Wlog; /* log(W) */
|
||||||
unsigned char Wlog; /* log(W) */
|
__u8 Plog; /* log(P_max/(qth_max-qth_min)) */
|
||||||
unsigned char Plog; /* log(P_max/(qth_max-qth_min)) */
|
__u8 Scell_log; /* cell size for idle damping */
|
||||||
unsigned char Scell_log; /* cell size for idle damping */
|
|
||||||
__u8 prio; /* prio of this VQ */
|
__u8 prio; /* prio of this VQ */
|
||||||
__u32 packets;
|
__u32 packets;
|
||||||
__u32 bytesin;
|
__u32 bytesin;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* gred setup */
|
/* gred setup */
|
||||||
struct tc_gred_sopt
|
struct tc_gred_sopt
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,50 +15,18 @@
|
||||||
* from Ren Liu
|
* from Ren Liu
|
||||||
* - More error checks
|
* - More error checks
|
||||||
*
|
*
|
||||||
*
|
* For all the glorious comments look at include/net/red.h
|
||||||
*
|
|
||||||
* For all the glorious comments look at Alexey's sch_red.c
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/config.h>
|
#include <linux/config.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <asm/uaccess.h>
|
|
||||||
#include <asm/system.h>
|
|
||||||
#include <linux/bitops.h>
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/sched.h>
|
|
||||||
#include <linux/string.h>
|
|
||||||
#include <linux/mm.h>
|
|
||||||
#include <linux/socket.h>
|
|
||||||
#include <linux/sockios.h>
|
|
||||||
#include <linux/in.h>
|
|
||||||
#include <linux/errno.h>
|
|
||||||
#include <linux/interrupt.h>
|
|
||||||
#include <linux/if_ether.h>
|
|
||||||
#include <linux/inet.h>
|
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/etherdevice.h>
|
|
||||||
#include <linux/notifier.h>
|
|
||||||
#include <net/ip.h>
|
|
||||||
#include <net/route.h>
|
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <net/sock.h>
|
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
#include <net/red.h>
|
#include <net/red.h>
|
||||||
|
|
||||||
#if 1 /* control */
|
|
||||||
#define DPRINTK(format,args...) printk(KERN_DEBUG format,##args)
|
|
||||||
#else
|
|
||||||
#define DPRINTK(format,args...)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0 /* data */
|
|
||||||
#define D2PRINTK(format,args...) printk(KERN_DEBUG format,##args)
|
|
||||||
#else
|
|
||||||
#define D2PRINTK(format,args...)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define GRED_DEF_PRIO (MAX_DPs / 2)
|
#define GRED_DEF_PRIO (MAX_DPs / 2)
|
||||||
#define GRED_VQ_MASK (MAX_DPs - 1)
|
#define GRED_VQ_MASK (MAX_DPs - 1)
|
||||||
|
|
||||||
|
@ -172,13 +140,11 @@ static inline void gred_store_wred_set(struct gred_sched *table,
|
||||||
table->wred_set.qavg = q->parms.qavg;
|
table->wred_set.qavg = q->parms.qavg;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int gred_enqueue(struct sk_buff *skb, struct Qdisc* sch)
|
||||||
gred_enqueue(struct sk_buff *skb, struct Qdisc* sch)
|
|
||||||
{
|
{
|
||||||
struct gred_sched_data *q=NULL;
|
struct gred_sched_data *q=NULL;
|
||||||
struct gred_sched *t= qdisc_priv(sch);
|
struct gred_sched *t= qdisc_priv(sch);
|
||||||
unsigned long qavg = 0;
|
unsigned long qavg = 0;
|
||||||
int i=0;
|
|
||||||
u16 dp = tc_index_to_dp(skb);
|
u16 dp = tc_index_to_dp(skb);
|
||||||
|
|
||||||
if (dp >= t->DPs || (q = t->tab[dp]) == NULL) {
|
if (dp >= t->DPs || (q = t->tab[dp]) == NULL) {
|
||||||
|
@ -200,13 +166,12 @@ gred_enqueue(struct sk_buff *skb, struct Qdisc* sch)
|
||||||
skb->tc_index = (skb->tc_index & ~GRED_VQ_MASK) | dp;
|
skb->tc_index = (skb->tc_index & ~GRED_VQ_MASK) | dp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* sum up all the qaves of prios <= to ours to get the new qave*/
|
/* sum up all the qaves of prios <= to ours to get the new qave */
|
||||||
if (!gred_wred_mode(t) && gred_rio_mode(t)) {
|
if (!gred_wred_mode(t) && gred_rio_mode(t)) {
|
||||||
for (i=0;i<t->DPs;i++) {
|
int i;
|
||||||
if ((!t->tab[i]) || (i==q->DP))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (t->tab[i]->prio < q->prio &&
|
for (i = 0; i < t->DPs; i++) {
|
||||||
|
if (t->tab[i] && t->tab[i]->prio < q->prio &&
|
||||||
!red_is_idling(&t->tab[i]->parms))
|
!red_is_idling(&t->tab[i]->parms))
|
||||||
qavg +=t->tab[i]->parms.qavg;
|
qavg +=t->tab[i]->parms.qavg;
|
||||||
}
|
}
|
||||||
|
@ -214,12 +179,10 @@ gred_enqueue(struct sk_buff *skb, struct Qdisc* sch)
|
||||||
}
|
}
|
||||||
|
|
||||||
q->packetsin++;
|
q->packetsin++;
|
||||||
q->bytesin+=skb->len;
|
q->bytesin += skb->len;
|
||||||
|
|
||||||
if (gred_wred_mode(t)) {
|
if (gred_wred_mode(t))
|
||||||
qavg = 0;
|
|
||||||
gred_load_wred_set(t, q);
|
gred_load_wred_set(t, q);
|
||||||
}
|
|
||||||
|
|
||||||
q->parms.qavg = red_calc_qavg(&q->parms, gred_backlog(t, q, sch));
|
q->parms.qavg = red_calc_qavg(&q->parms, gred_backlog(t, q, sch));
|
||||||
|
|
||||||
|
@ -258,8 +221,7 @@ congestion_drop:
|
||||||
return NET_XMIT_CN;
|
return NET_XMIT_CN;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int gred_requeue(struct sk_buff *skb, struct Qdisc* sch)
|
||||||
gred_requeue(struct sk_buff *skb, struct Qdisc* sch)
|
|
||||||
{
|
{
|
||||||
struct gred_sched *t = qdisc_priv(sch);
|
struct gred_sched *t = qdisc_priv(sch);
|
||||||
struct gred_sched_data *q;
|
struct gred_sched_data *q;
|
||||||
|
@ -279,16 +241,15 @@ gred_requeue(struct sk_buff *skb, struct Qdisc* sch)
|
||||||
return qdisc_requeue(skb, sch);
|
return qdisc_requeue(skb, sch);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct sk_buff *
|
static struct sk_buff *gred_dequeue(struct Qdisc* sch)
|
||||||
gred_dequeue(struct Qdisc* sch)
|
|
||||||
{
|
{
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
struct gred_sched_data *q;
|
struct gred_sched *t = qdisc_priv(sch);
|
||||||
struct gred_sched *t= qdisc_priv(sch);
|
|
||||||
|
|
||||||
skb = qdisc_dequeue_head(sch);
|
skb = qdisc_dequeue_head(sch);
|
||||||
|
|
||||||
if (skb) {
|
if (skb) {
|
||||||
|
struct gred_sched_data *q;
|
||||||
u16 dp = tc_index_to_dp(skb);
|
u16 dp = tc_index_to_dp(skb);
|
||||||
|
|
||||||
if (dp >= t->DPs || (q = t->tab[dp]) == NULL) {
|
if (dp >= t->DPs || (q = t->tab[dp]) == NULL) {
|
||||||
|
@ -315,13 +276,12 @@ gred_dequeue(struct Qdisc* sch)
|
||||||
static unsigned int gred_drop(struct Qdisc* sch)
|
static unsigned int gred_drop(struct Qdisc* sch)
|
||||||
{
|
{
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
|
struct gred_sched *t = qdisc_priv(sch);
|
||||||
struct gred_sched_data *q;
|
|
||||||
struct gred_sched *t= qdisc_priv(sch);
|
|
||||||
|
|
||||||
skb = qdisc_dequeue_tail(sch);
|
skb = qdisc_dequeue_tail(sch);
|
||||||
if (skb) {
|
if (skb) {
|
||||||
unsigned int len = skb->len;
|
unsigned int len = skb->len;
|
||||||
|
struct gred_sched_data *q;
|
||||||
u16 dp = tc_index_to_dp(skb);
|
u16 dp = tc_index_to_dp(skb);
|
||||||
|
|
||||||
if (dp >= t->DPs || (q = t->tab[dp]) == NULL) {
|
if (dp >= t->DPs || (q = t->tab[dp]) == NULL) {
|
||||||
|
@ -351,15 +311,16 @@ static unsigned int gred_drop(struct Qdisc* sch)
|
||||||
static void gred_reset(struct Qdisc* sch)
|
static void gred_reset(struct Qdisc* sch)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct gred_sched_data *q;
|
struct gred_sched *t = qdisc_priv(sch);
|
||||||
struct gred_sched *t= qdisc_priv(sch);
|
|
||||||
|
|
||||||
qdisc_reset_queue(sch);
|
qdisc_reset_queue(sch);
|
||||||
|
|
||||||
for (i=0;i<t->DPs;i++) {
|
for (i = 0; i < t->DPs; i++) {
|
||||||
q= t->tab[i];
|
struct gred_sched_data *q = t->tab[i];
|
||||||
|
|
||||||
if (!q)
|
if (!q)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
red_restart(&q->parms);
|
red_restart(&q->parms);
|
||||||
q->backlog = 0;
|
q->backlog = 0;
|
||||||
}
|
}
|
||||||
|
@ -590,15 +551,13 @@ static void gred_destroy(struct Qdisc *sch)
|
||||||
struct gred_sched *table = qdisc_priv(sch);
|
struct gred_sched *table = qdisc_priv(sch);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0;i < table->DPs; i++) {
|
for (i = 0; i < table->DPs; i++) {
|
||||||
if (table->tab[i])
|
if (table->tab[i])
|
||||||
gred_destroy_vq(table->tab[i]);
|
gred_destroy_vq(table->tab[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct Qdisc_ops gred_qdisc_ops = {
|
static struct Qdisc_ops gred_qdisc_ops = {
|
||||||
.next = NULL,
|
|
||||||
.cl_ops = NULL,
|
|
||||||
.id = "gred",
|
.id = "gred",
|
||||||
.priv_size = sizeof(struct gred_sched),
|
.priv_size = sizeof(struct gred_sched),
|
||||||
.enqueue = gred_enqueue,
|
.enqueue = gred_enqueue,
|
||||||
|
@ -617,10 +576,13 @@ static int __init gred_module_init(void)
|
||||||
{
|
{
|
||||||
return register_qdisc(&gred_qdisc_ops);
|
return register_qdisc(&gred_qdisc_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit gred_module_exit(void)
|
static void __exit gred_module_exit(void)
|
||||||
{
|
{
|
||||||
unregister_qdisc(&gred_qdisc_ops);
|
unregister_qdisc(&gred_qdisc_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
module_init(gred_module_init)
|
module_init(gred_module_init)
|
||||||
module_exit(gred_module_exit)
|
module_exit(gred_module_exit)
|
||||||
|
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue