diff options
author | David Howells <dhowells@redhat.com> | 2006-12-05 09:37:56 -0500 |
---|---|---|
committer | David Howells <dhowells@warthog.cambridge.redhat.com> | 2006-12-05 09:37:56 -0500 |
commit | 4c1ac1b49122b805adfa4efc620592f68dccf5db (patch) | |
tree | 87557f4bc2fd4fe65b7570489c2f610c45c0adcd /net/sched/act_police.c | |
parent | c4028958b6ecad064b1a6303a6a5906d4fe48d73 (diff) | |
parent | d916faace3efc0bf19fe9a615a1ab8fa1a24cd93 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts:
drivers/infiniband/core/iwcm.c
drivers/net/chelsio/cxgb2.c
drivers/net/wireless/bcm43xx/bcm43xx_main.c
drivers/net/wireless/prism54/islpci_eth.c
drivers/usb/core/hub.h
drivers/usb/input/hid-core.c
net/core/netpoll.c
Fix up merge failures with Linus's head and fix new compilation failures.
Signed-Off-By: David Howells <dhowells@redhat.com>
Diffstat (limited to 'net/sched/act_police.c')
-rw-r--r-- | net/sched/act_police.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/net/sched/act_police.c b/net/sched/act_police.c index fed47b658837..af68e1e83251 100644 --- a/net/sched/act_police.c +++ b/net/sched/act_police.c | |||
@@ -46,6 +46,18 @@ static struct tcf_hashinfo police_hash_info = { | |||
46 | .lock = &police_lock, | 46 | .lock = &police_lock, |
47 | }; | 47 | }; |
48 | 48 | ||
49 | /* old policer structure from before tc actions */ | ||
50 | struct tc_police_compat | ||
51 | { | ||
52 | u32 index; | ||
53 | int action; | ||
54 | u32 limit; | ||
55 | u32 burst; | ||
56 | u32 mtu; | ||
57 | struct tc_ratespec rate; | ||
58 | struct tc_ratespec peakrate; | ||
59 | }; | ||
60 | |||
49 | /* Each policer is serialized by its individual spinlock */ | 61 | /* Each policer is serialized by its individual spinlock */ |
50 | 62 | ||
51 | #ifdef CONFIG_NET_CLS_ACT | 63 | #ifdef CONFIG_NET_CLS_ACT |
@@ -131,12 +143,15 @@ static int tcf_act_police_locate(struct rtattr *rta, struct rtattr *est, | |||
131 | struct tc_police *parm; | 143 | struct tc_police *parm; |
132 | struct tcf_police *police; | 144 | struct tcf_police *police; |
133 | struct qdisc_rate_table *R_tab = NULL, *P_tab = NULL; | 145 | struct qdisc_rate_table *R_tab = NULL, *P_tab = NULL; |
146 | int size; | ||
134 | 147 | ||
135 | if (rta == NULL || rtattr_parse_nested(tb, TCA_POLICE_MAX, rta) < 0) | 148 | if (rta == NULL || rtattr_parse_nested(tb, TCA_POLICE_MAX, rta) < 0) |
136 | return -EINVAL; | 149 | return -EINVAL; |
137 | 150 | ||
138 | if (tb[TCA_POLICE_TBF-1] == NULL || | 151 | if (tb[TCA_POLICE_TBF-1] == NULL) |
139 | RTA_PAYLOAD(tb[TCA_POLICE_TBF-1]) != sizeof(*parm)) | 152 | return -EINVAL; |
153 | size = RTA_PAYLOAD(tb[TCA_POLICE_TBF-1]); | ||
154 | if (size != sizeof(*parm) && size != sizeof(struct tc_police_compat)) | ||
140 | return -EINVAL; | 155 | return -EINVAL; |
141 | parm = RTA_DATA(tb[TCA_POLICE_TBF-1]); | 156 | parm = RTA_DATA(tb[TCA_POLICE_TBF-1]); |
142 | 157 | ||
@@ -415,12 +430,15 @@ struct tcf_police *tcf_police_locate(struct rtattr *rta, struct rtattr *est) | |||
415 | struct tcf_police *police; | 430 | struct tcf_police *police; |
416 | struct rtattr *tb[TCA_POLICE_MAX]; | 431 | struct rtattr *tb[TCA_POLICE_MAX]; |
417 | struct tc_police *parm; | 432 | struct tc_police *parm; |
433 | int size; | ||
418 | 434 | ||
419 | if (rtattr_parse_nested(tb, TCA_POLICE_MAX, rta) < 0) | 435 | if (rtattr_parse_nested(tb, TCA_POLICE_MAX, rta) < 0) |
420 | return NULL; | 436 | return NULL; |
421 | 437 | ||
422 | if (tb[TCA_POLICE_TBF-1] == NULL || | 438 | if (tb[TCA_POLICE_TBF-1] == NULL) |
423 | RTA_PAYLOAD(tb[TCA_POLICE_TBF-1]) != sizeof(*parm)) | 439 | return NULL; |
440 | size = RTA_PAYLOAD(tb[TCA_POLICE_TBF-1]); | ||
441 | if (size != sizeof(*parm) && size != sizeof(struct tc_police_compat)) | ||
424 | return NULL; | 442 | return NULL; |
425 | 443 | ||
426 | parm = RTA_DATA(tb[TCA_POLICE_TBF-1]); | 444 | parm = RTA_DATA(tb[TCA_POLICE_TBF-1]); |