diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2009-05-12 20:47:16 +0000 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2009-05-12 20:47:16 +0000 |
commit | 0e1d1a6f5639ff1966d69e8e829252d1a397aafe (patch) | |
tree | 636842c65d71a3a2db647d1118c13f206f13f49b | |
parent | 94c1598c3e70e397884bbaa611964fabbcd607a6 (diff) | |
download | master-31e0f0ae-0e1d1a6f5639ff1966d69e8e829252d1a397aafe.tar.gz master-31e0f0ae-0e1d1a6f5639ff1966d69e8e829252d1a397aafe.tar.bz2 master-31e0f0ae-0e1d1a6f5639ff1966d69e8e829252d1a397aafe.zip |
Compile fix. Port r15775 to kernel 2.6.30.
SVN-Revision: 15803
-rw-r--r-- | target/linux/generic-2.6/patches-2.6.30/200-sched_esfq.patch | 44 | ||||
-rw-r--r-- | target/linux/generic-2.6/patches-2.6.30/903-hostap_txpower.patch | 2 |
2 files changed, 22 insertions, 24 deletions
diff --git a/target/linux/generic-2.6/patches-2.6.30/200-sched_esfq.patch b/target/linux/generic-2.6/patches-2.6.30/200-sched_esfq.patch index 7c80fbbb54..f72c0e3705 100644 --- a/target/linux/generic-2.6/patches-2.6.30/200-sched_esfq.patch +++ b/target/linux/generic-2.6/patches-2.6.30/200-sched_esfq.patch @@ -90,7 +90,7 @@ obj-$(CONFIG_NET_SCH_PRIO) += sch_prio.o --- /dev/null +++ b/net/sched/sch_esfq.c -@@ -0,0 +1,702 @@ +@@ -0,0 +1,700 @@ +/* + * net/sched/sch_esfq.c Extended Stochastic Fairness Queueing discipline. + * @@ -137,6 +137,7 @@ +#include <linux/notifier.h> +#include <linux/init.h> +#include <net/ip.h> ++#include <net/netlink.h> +#include <linux/ipv6.h> +#include <net/route.h> +#include <linux/skbuff.h> @@ -464,20 +465,17 @@ + return NET_XMIT_CN; +} + -+ -+static int esfq_requeue(struct sk_buff *skb, struct Qdisc* sch) ++static struct sk_buff *esfq_peek(struct Qdisc* sch) +{ + struct esfq_sched_data *q = qdisc_priv(sch); -+ esfq_q_enqueue(skb, q, ESFQ_HEAD); -+ sch->qstats.backlog += skb->len; -+ if (++sch->q.qlen < q->limit - 1) { -+ sch->qstats.requeues++; -+ return 0; -+ } ++ esfq_index a; + -+ sch->qstats.drops++; -+ esfq_drop(sch); -+ return NET_XMIT_CN; ++ /* No active slots */ ++ if (q->tail == q->depth) ++ return NULL; ++ ++ a = q->next[q->tail]; ++ return skb_peek(&q->qs[a]); +} + +static struct sk_buff *esfq_q_dequeue(struct esfq_sched_data *q) @@ -602,13 +600,13 @@ + } +} + -+static int esfq_q_init(struct esfq_sched_data *q, struct rtattr *opt) ++static int esfq_q_init(struct esfq_sched_data *q, struct nlattr *opt) +{ -+ struct tc_esfq_qopt *ctl = RTA_DATA(opt); ++ struct tc_esfq_qopt *ctl = nla_data(opt); + esfq_index p = ~0U/2; + int i; + -+ if (opt && opt->rta_len < RTA_LENGTH(sizeof(*ctl))) ++ if (opt && opt->nla_len < nla_attr_size(sizeof(*ctl))) + return -EINVAL; + + q->perturbation = 0; @@ -620,7 +618,7 @@ + q->tail = q->limit = q->depth = 128; + + } else { -+ struct tc_esfq_qopt *ctl = RTA_DATA(opt); ++ struct tc_esfq_qopt *ctl = nla_data(opt); + if (ctl->quantum) + q->quantum = ctl->quantum; + q->perturb_period = ctl->perturb_period*HZ; @@ -673,7 +671,7 @@ + return -ENOBUFS; +} + -+static int esfq_init(struct Qdisc *sch, struct rtattr *opt) ++static int esfq_init(struct Qdisc *sch, struct nlattr *opt) +{ + struct esfq_sched_data *q = qdisc_priv(sch); + int err; @@ -693,7 +691,7 @@ + return 0; +} + -+static int esfq_change(struct Qdisc *sch, struct rtattr *opt) ++static int esfq_change(struct Qdisc *sch, struct nlattr *opt) +{ + struct esfq_sched_data *q = qdisc_priv(sch); + struct esfq_sched_data new; @@ -744,7 +742,7 @@ +static int esfq_dump(struct Qdisc *sch, struct sk_buff *skb) +{ + struct esfq_sched_data *q = qdisc_priv(sch); -+ unsigned char *b = skb->tail; ++ unsigned char *b = skb_tail_pointer(skb); + struct tc_esfq_qopt opt; + + opt.quantum = q->quantum; @@ -755,12 +753,12 @@ + opt.flows = q->depth; + opt.hash_kind = q->hash_kind; + -+ RTA_PUT(skb, TCA_OPTIONS, sizeof(opt), &opt); ++ NLA_PUT(skb, TCA_OPTIONS, sizeof(opt), &opt); + + return skb->len; + -+rtattr_failure: -+ skb_trim(skb, b - skb->data); ++nla_put_failure: ++ nlmsg_trim(skb, b); + return -1; +} + @@ -772,7 +770,7 @@ + .priv_size = sizeof(struct esfq_sched_data), + .enqueue = esfq_enqueue, + .dequeue = esfq_dequeue, -+ .requeue = esfq_requeue, ++ .peek = esfq_peek, + .drop = esfq_drop, + .init = esfq_init, + .reset = esfq_reset, diff --git a/target/linux/generic-2.6/patches-2.6.30/903-hostap_txpower.patch b/target/linux/generic-2.6/patches-2.6.30/903-hostap_txpower.patch index 89d60bd14e..197d0a1e32 100644 --- a/target/linux/generic-2.6/patches-2.6.30/903-hostap_txpower.patch +++ b/target/linux/generic-2.6/patches-2.6.30/903-hostap_txpower.patch @@ -125,7 +125,7 @@ + +int hostap_restore_power(struct net_device *dev) +{ -+ struct hostap_interface *iface = dev->priv; ++ struct hostap_interface *iface = netdev_priv(dev); + local_info_t *local = iface->local; + + u16 val; |