* cls_u32 compile failure in current 2.6.12-rc1+BK tree @ 2005-03-27 19:49 Meelis Roos 2005-03-28 1:07 ` jamal 0 siblings, 1 reply; 17+ messages in thread From: Meelis Roos @ 2005-03-27 19:49 UTC (permalink / raw) To: netdev CC [M] net/sched/cls_u32.o net/sched/cls_u32.c: In function `u32_dump': net/sched/cls_u32.c:778: error: structure has no member named `action' net/sched/cls_u32.c:778: error: structure has no member named `action' -- Meelis Roos (mroos@linux.ee) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-27 19:49 cls_u32 compile failure in current 2.6.12-rc1+BK tree Meelis Roos @ 2005-03-28 1:07 ` jamal 2005-03-28 7:18 ` Meelis Roos 0 siblings, 1 reply; 17+ messages in thread From: jamal @ 2005-03-28 1:07 UTC (permalink / raw) To: Meelis Roos; +Cc: netdev Hi there, For now just turn on actions under qos menu. The solution needs some thought or major surgery. cheers, jamal On Sun, 2005-03-27 at 14:49, Meelis Roos wrote: > CC [M] net/sched/cls_u32.o > net/sched/cls_u32.c: In function `u32_dump': > net/sched/cls_u32.c:778: error: structure has no member named `action' > net/sched/cls_u32.c:778: error: structure has no member named `action' ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-28 1:07 ` jamal @ 2005-03-28 7:18 ` Meelis Roos 2005-03-28 12:24 ` jamal 0 siblings, 1 reply; 17+ messages in thread From: Meelis Roos @ 2005-03-28 7:18 UTC (permalink / raw) To: jamal; +Cc: netdev > For now just turn on actions under qos menu. The help tells You MUST NOT turn this on if you dont have an update iproute2. So I did not turn it on. I have iproute 20041019-3 in Debian unstable. Will something break? I'm not using QoS actively, sonly try some setups sometimes. -- Meelis Roos (mroos@linux.ee) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-28 7:18 ` Meelis Roos @ 2005-03-28 12:24 ` jamal 2005-03-28 12:38 ` Thomas Graf 0 siblings, 1 reply; 17+ messages in thread From: jamal @ 2005-03-28 12:24 UTC (permalink / raw) To: Meelis Roos; +Cc: netdev, Thomas Graf On Mon, 2005-03-28 at 02:18, Meelis Roos wrote: > > For now just turn on actions under qos menu. > > The help tells > You MUST NOT turn this on if you dont have an update iproute2. > So I did not turn it on. I have iproute 20041019-3 in Debian unstable. > Will something break? I'm not using QoS actively, sonly try some setups > sometimes. Well, it is NOT supposed to break - but lets find out shall we? ;-> Thomas: I have been doing some thinking. If we are going to make u32 an exception then this code should be surrounded by #ifdef ..ACTION.. The rest of the classifiers can also follow the same scheme. Or the rest of the classifiers can have their code in the generic stats (and removed from within the classifiers). Which means that the other classifiers may have to use a slightly different function name unless you want to pass a variable to distinguish the two cases. My time is about to become scarce, so if you have time please create the patch. cheers, jamal ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-28 12:24 ` jamal @ 2005-03-28 12:38 ` Thomas Graf 2005-03-28 12:51 ` jamal 0 siblings, 1 reply; 17+ messages in thread From: Thomas Graf @ 2005-03-28 12:38 UTC (permalink / raw) To: jamal; +Cc: Meelis Roos, netdev * jamal <1112012657.1089.1013.camel@jzny.localdomain> 2005-03-28 07:24 > If we are going to make u32 an exception then this code should be > surrounded by #ifdef ..ACTION.. The same condition is needed for tcf_exts_dump and tcf_exts_dump_stats in u32, they're only apart to cut the TCA_OPTIONS nested TLV so I'm trying to find out is whether we can get rid of dump_stats alltogether and hide it. I'm working on a patch to do this, I hope to have enough time to finish it today. > My time is about to become scarce, so if you > have time please create the patch. Again, don't waste cycles on this. It was my fault and I will fix it. ;-> ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-28 12:38 ` Thomas Graf @ 2005-03-28 12:51 ` jamal 2005-03-28 12:58 ` Thomas Graf 0 siblings, 1 reply; 17+ messages in thread From: jamal @ 2005-03-28 12:51 UTC (permalink / raw) To: Thomas Graf; +Cc: Meelis Roos, netdev On Mon, 2005-03-28 at 07:38, Thomas Graf wrote: > * jamal <1112012657.1089.1013.camel@jzny.localdomain> 2005-03-28 07:24 > > If we are going to make u32 an exception then this code should be > > surrounded by #ifdef ..ACTION.. > > The same condition is needed for tcf_exts_dump This one seems fine even for u32, no? cheers, jamal ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-28 12:51 ` jamal @ 2005-03-28 12:58 ` Thomas Graf 2005-03-28 13:15 ` jamal 0 siblings, 1 reply; 17+ messages in thread From: Thomas Graf @ 2005-03-28 12:58 UTC (permalink / raw) To: jamal; +Cc: Meelis Roos, netdev * jamal <1112014261.1089.1018.camel@jzny.localdomain> 2005-03-28 07:51 > On Mon, 2005-03-28 at 07:38, Thomas Graf wrote: > > * jamal <1112012657.1089.1013.camel@jzny.localdomain> 2005-03-28 07:24 > > > If we are going to make u32 an exception then this code should be > > > surrounded by #ifdef ..ACTION.. > > > > The same condition is needed for tcf_exts_dump > > This one seems fine even for u32, no? Not sure what you mean, I don't want any ifdefs or actions bits in the classifiers itself anymore. Everytime we dump the actions we must be able to also dump the statistics so I think we can safely move tcf_exts_dump_stats into tcf_exts_dump and hide all dumping in that single API. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-28 12:58 ` Thomas Graf @ 2005-03-28 13:15 ` jamal 2005-03-28 15:55 ` Thomas Graf 0 siblings, 1 reply; 17+ messages in thread From: jamal @ 2005-03-28 13:15 UTC (permalink / raw) To: Thomas Graf; +Cc: Meelis Roos, netdev On Mon, 2005-03-28 at 07:58, Thomas Graf wrote: > Not sure what you mean, I don't want any ifdefs or actions bits > in the classifiers itself anymore. Everytime we dump the actions > we must be able to also dump the statistics so I think we can > safely move tcf_exts_dump_stats into tcf_exts_dump and hide all > dumping in that single API. > But you cant completely do this for u32 tcf_exts_dump_stats. in the case of ACTION compiled in but someone using old API. The code that Meelis just mention that compiler complained about. There was no problem with u32 and tcf_exts_dump - with that you can hide all #ifedfs. cheers, jamal ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-28 13:15 ` jamal @ 2005-03-28 15:55 ` Thomas Graf 2005-03-28 19:28 ` jamal 0 siblings, 1 reply; 17+ messages in thread From: Thomas Graf @ 2005-03-28 15:55 UTC (permalink / raw) To: jamal; +Cc: Meelis Roos, netdev * jamal <1112015725.1089.1045.camel@jzny.localdomain> 2005-03-28 08:15 > On Mon, 2005-03-28 at 07:58, Thomas Graf wrote: > > > Not sure what you mean, I don't want any ifdefs or actions bits > > in the classifiers itself anymore. Everytime we dump the actions > > we must be able to also dump the statistics so I think we can > > safely move tcf_exts_dump_stats into tcf_exts_dump and hide all > > dumping in that single API. > > > > But you cant completely do this for u32 tcf_exts_dump_stats. > in the case of ACTION compiled in but someone using old API. > The code that Meelis just mention that compiler complained about. > There was no problem with u32 and tcf_exts_dump - with that you can hide > all #ifedfs. I think we can avoid your fixes. The initial reason for having dump_stats was that the statistics were put into a TLV outside of TCA_OPTIONS (which was wrong). Now that both, the new and old compatibility stats are inside of TCA_OPTIONS it is no problem do dump everything in tcf_exts_dump and do the ifdef thing there instead of putting it into every classifier. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-28 15:55 ` Thomas Graf @ 2005-03-28 19:28 ` jamal 2005-03-28 19:53 ` Thomas Graf 0 siblings, 1 reply; 17+ messages in thread From: jamal @ 2005-03-28 19:28 UTC (permalink / raw) To: Thomas Graf; +Cc: Meelis Roos, netdev On Mon, 2005-03-28 at 10:55, Thomas Graf wrote: > * jamal <1112015725.1089.1045.camel@jzny.localdomain> 2005-03-28 08:15 > > On Mon, 2005-03-28 at 07:58, Thomas Graf wrote: > > But you cant completely do this for u32 tcf_exts_dump_stats. > > in the case of ACTION compiled in but someone using old API. > > The code that Meelis just mention that compiler complained about. > > There was no problem with u32 and tcf_exts_dump - with that you can hide > > all #ifedfs. > > I think we can avoid your fixes. You are still missing the question;-> You can do this for every classifier but u32. Or is it me who is missing something? cheers, jamal ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-28 19:28 ` jamal @ 2005-03-28 19:53 ` Thomas Graf 2005-03-28 22:33 ` Thomas Graf 0 siblings, 1 reply; 17+ messages in thread From: Thomas Graf @ 2005-03-28 19:53 UTC (permalink / raw) To: jamal; +Cc: Meelis Roos, netdev * jamal <1112038128.1119.5.camel@jzny.localdomain> 2005-03-28 14:28 > On Mon, 2005-03-28 at 10:55, Thomas Graf wrote: > > * jamal <1112015725.1089.1045.camel@jzny.localdomain> 2005-03-28 08:15 > > > On Mon, 2005-03-28 at 07:58, Thomas Graf wrote: > > > > But you cant completely do this for u32 tcf_exts_dump_stats. > > > in the case of ACTION compiled in but someone using old API. > > > The code that Meelis just mention that compiler complained about. > > > There was no problem with u32 and tcf_exts_dump - with that you can hide > > > all #ifedfs. > > > > I think we can avoid your fixes. > > You are still missing the question;-> > > You can do this for every classifier but u32. Or is it me who is missing > something? I think what you are refering to is the TC_U32_KEY() check, right? If you look at the place where tcf_exts_dump is called you can see that the same pre condition is given since the call is in a else branch of a TC_U32_KEY() == 0 condition. I haven't had the time to come up with a patch, too many other things to take care of but I think it should work out ok. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-28 19:53 ` Thomas Graf @ 2005-03-28 22:33 ` Thomas Graf 2005-03-29 1:10 ` Thomas Graf 0 siblings, 1 reply; 17+ messages in thread From: Thomas Graf @ 2005-03-28 22:33 UTC (permalink / raw) To: jamal; +Cc: Meelis Roos, netdev * Thomas Graf <20050328195320.GE3086@postel.suug.ch> 2005-03-28 21:53 > * jamal <1112038128.1119.5.camel@jzny.localdomain> 2005-03-28 14:28 > > On Mon, 2005-03-28 at 10:55, Thomas Graf wrote: > > > * jamal <1112015725.1089.1045.camel@jzny.localdomain> 2005-03-28 08:15 > > > > On Mon, 2005-03-28 at 07:58, Thomas Graf wrote: > > > > > > But you cant completely do this for u32 tcf_exts_dump_stats. > > > > in the case of ACTION compiled in but someone using old API. > > > > The code that Meelis just mention that compiler complained about. > > > > There was no problem with u32 and tcf_exts_dump - with that you can hide > > > > all #ifedfs. > > > > > > I think we can avoid your fixes. > > > > You are still missing the question;-> > > > > You can do this for every classifier but u32. Or is it me who is missing > > something? > > I think what you are refering to is the TC_U32_KEY() check, right? > If you look at the place where tcf_exts_dump is called you can > see that the same pre condition is given since the call is in a > else branch of a TC_U32_KEY() == 0 condition. > > I haven't had the time to come up with a patch, too many other > things to take care of but I think it should work out ok. Before I go ahead, let's make sure I do it right this time. We do have the following TLVs that need to filled out: old policer: TCA_STATS2 (gnet_stats_*) TCA_STATS (tc_stats) action: TCA_ACT_STATS (gnet_stats_*) action in compatiblity mode: TCA_ACT_STATS (gnet_stats_*) TCA_STATS (tc_stats) TCA_XSTATS I see that you moved TCA_ACT_STATS into the action TLV array which doesn't work with the gnet_stats architecture anymore since the backward compatiblity TCA_STATS and TCA_XSTATS must be outside of the action TLV. So we need to split the statistics dumping if we don't want to change iproute2 and have TCA_ACT_STATS being on the same level as TCA_OPTIONS of the classifier. I didn't notice this breakage when you posted the patch, sorry. Idea: We dump TCA_ACT_STATS in tcf_exts_dump and handle all the backward compibility including dumping policer stats in tcf_exts_dump_stats. This means we have to adapt gnet_stats a bit to allow for this. Thoughts? ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-28 22:33 ` Thomas Graf @ 2005-03-29 1:10 ` Thomas Graf 2005-03-29 20:51 ` jamal 0 siblings, 1 reply; 17+ messages in thread From: Thomas Graf @ 2005-03-29 1:10 UTC (permalink / raw) To: jamal; +Cc: Meelis Roos, netdev * Thomas Graf <20050328223310.GH3086@postel.suug.ch> 2005-03-29 00:33 > We dump TCA_ACT_STATS in tcf_exts_dump and handle all the backward > compibility including dumping policer stats in tcf_exts_dump_stats. > This means we have to adapt gnet_stats a bit to allow for this. Attached patches is what I meant. Untested but you should get the idea. # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/03/29 02:45:52+02:00 tgraf@suug.ch # Cset exclude: hadi@cyberus.ca|ChangeSet|20050325173452|50562 # # net/sched/cls_u32.c # 2005/03/29 02:45:46+02:00 tgraf@suug.ch +0 -0 # Exclude # # net/sched/cls_tcindex.c # 2005/03/29 02:45:46+02:00 tgraf@suug.ch +0 -0 # Exclude # # net/sched/cls_route.c # 2005/03/29 02:45:46+02:00 tgraf@suug.ch +0 -0 # Exclude # # net/sched/cls_fw.c # 2005/03/29 02:45:46+02:00 tgraf@suug.ch +0 -0 # Exclude # diff -Nru a/net/sched/cls_fw.c b/net/sched/cls_fw.c --- a/net/sched/cls_fw.c 2005-03-29 03:07:44 +02:00 +++ b/net/sched/cls_fw.c 2005-03-29 03:07:44 +02:00 @@ -338,9 +338,8 @@ rta->rta_len = skb->tail - b; - if (f->exts.action && f->exts.action->type == TCA_OLD_COMPAT) - if (tcf_exts_dump_stats(skb, &f->exts, &fw_ext_map) < 0) - goto rtattr_failure; + if (tcf_exts_dump_stats(skb, &f->exts, &fw_ext_map) < 0) + goto rtattr_failure; return skb->len; diff -Nru a/net/sched/cls_route.c b/net/sched/cls_route.c --- a/net/sched/cls_route.c 2005-03-29 03:07:44 +02:00 +++ b/net/sched/cls_route.c 2005-03-29 03:07:44 +02:00 @@ -599,9 +599,8 @@ rta->rta_len = skb->tail - b; - if (f->exts.action && f->exts.action->type == TCA_OLD_COMPAT) - if (tcf_exts_dump_stats(skb, &f->exts, &route_ext_map) < 0) - goto rtattr_failure; + if (tcf_exts_dump_stats(skb, &f->exts, &route_ext_map) < 0) + goto rtattr_failure; return skb->len; diff -Nru a/net/sched/cls_tcindex.c b/net/sched/cls_tcindex.c --- a/net/sched/cls_tcindex.c 2005-03-29 03:07:44 +02:00 +++ b/net/sched/cls_tcindex.c 2005-03-29 03:07:44 +02:00 @@ -496,9 +496,8 @@ goto rtattr_failure; rta->rta_len = skb->tail-b; - if (r->exts.action && r->exts.action->type == TCA_OLD_COMPAT) - if (tcf_exts_dump_stats(skb, &r->exts, &tcindex_ext_map) < 0) - goto rtattr_failure; + if (tcf_exts_dump_stats(skb, &r->exts, &tcindex_ext_map) < 0) + goto rtattr_failure; } return skb->len; diff -Nru a/net/sched/cls_u32.c b/net/sched/cls_u32.c --- a/net/sched/cls_u32.c 2005-03-29 03:07:44 +02:00 +++ b/net/sched/cls_u32.c 2005-03-29 03:07:44 +02:00 @@ -775,7 +775,7 @@ } rta->rta_len = skb->tail - b; - if (TC_U32_KEY(n->handle) && n->exts.action && n->exts.action->type == TCA_OLD_COMPAT) + if (TC_U32_KEY(n->handle)) if (tcf_exts_dump_stats(skb, &n->exts, &u32_ext_map) < 0) goto rtattr_failure; return skb->len; # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/03/29 02:55:11+02:00 tgraf@suug.ch # [NET]: Make primary TLV type optional # # Allows the use of the gnet_stats API for backward compatiblity # cases where no "modern" TLV structure is needed. # # Signed-off-by: Thomas Graf <tgraf@suug.ch> # Signed-off-by: David S. Miller <davem@davemloft.net> # # net/core/gen_stats.c # 2005/03/29 02:54:56+02:00 tgraf@suug.ch +7 -3 # [NET]: Make primary TLV type optional # diff -Nru a/net/core/gen_stats.c b/net/core/gen_stats.c --- a/net/core/gen_stats.c 2005-03-29 03:07:59 +02:00 +++ b/net/core/gen_stats.c 2005-03-29 03:07:59 +02:00 @@ -26,7 +26,9 @@ static inline int gnet_stats_copy(struct gnet_dump *d, int type, void *buf, int size) { - RTA_PUT(d->skb, type, size, buf); + if (type) + RTA_PUT(d->skb, type, size, buf); + return 0; rtattr_failure: @@ -58,7 +60,8 @@ { spin_lock_bh(lock); d->lock = lock; - d->tail = (struct rtattr *) skb->tail; + if (type) + d->tail = (struct rtattr *) skb->tail; d->skb = skb; d->compat_tc_stats = tc_stats_type; d->compat_xstats = xstats_type; @@ -194,7 +197,8 @@ int gnet_stats_finish_copy(struct gnet_dump *d) { - d->tail->rta_len = d->skb->tail - (u8 *) d->tail; + if (d->tail) + d->tail->rta_len = d->skb->tail - (u8 *) d->tail; if (d->compat_tc_stats) if (gnet_stats_copy(d, d->compat_tc_stats, &d->tc_stats, # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/03/29 02:59:25+02:00 tgraf@suug.ch # [PKT_SCHED]: Fix action statistics dumping in compatibility mode # # Extends the action dumping function by a parameter to differ between # regular calls and the one supposed to add the backward compatiblity # bits for old userspace applications. # # Signed-off-by: Thomas Graf <tgraf@suug.ch> # Signed-off-by: David S. Miller <davem@davemloft.net> # # net/sched/cls_api.c # 2005/03/29 02:59:11+02:00 tgraf@suug.ch +1 -1 # [PKT_SCHED]: Fix action statistics dumping in compatibility mode # # net/sched/act_api.c # 2005/03/29 02:59:11+02:00 tgraf@suug.ch +8 -4 # [PKT_SCHED]: Fix action statistics dumping in compatibility mode # # include/net/act_api.h # 2005/03/29 02:59:11+02:00 tgraf@suug.ch +1 -1 # [PKT_SCHED]: Fix action statistics dumping in compatibility mode # diff -Nru a/include/net/act_api.h b/include/net/act_api.h --- a/include/net/act_api.h 2005-03-29 03:08:12 +02:00 +++ b/include/net/act_api.h 2005-03-29 03:08:12 +02:00 @@ -81,7 +81,7 @@ extern int tcf_action_dump(struct sk_buff *skb, struct tc_action *a, int, int); extern int tcf_action_dump_old(struct sk_buff *skb, struct tc_action *a, int, int); extern int tcf_action_dump_1(struct sk_buff *skb, struct tc_action *a, int, int); -extern int tcf_action_copy_stats (struct sk_buff *,struct tc_action *); +extern int tcf_action_copy_stats (struct sk_buff *,struct tc_action *, int); #endif /* CONFIG_NET_CLS_ACT */ extern int tcf_police(struct sk_buff *skb, struct tcf_police *p); diff -Nru a/net/sched/act_api.c b/net/sched/act_api.c --- a/net/sched/act_api.c 2005-03-29 03:08:12 +02:00 +++ b/net/sched/act_api.c 2005-03-29 03:08:12 +02:00 @@ -228,7 +228,7 @@ return err; RTA_PUT(skb, TCA_KIND, IFNAMSIZ, a->ops->kind); - if (tcf_action_copy_stats(skb, a)) + if (tcf_action_copy_stats(skb, a, 0)) goto rtattr_failure; r = (struct rtattr*) skb->tail; RTA_PUT(skb, TCA_OPTIONS, 0, NULL); @@ -380,7 +380,8 @@ return NULL; } -int tcf_action_copy_stats(struct sk_buff *skb, struct tc_action *a) +int tcf_action_copy_stats(struct sk_buff *skb, struct tc_action *a, + int compat_mode) { int err; struct gnet_dump d; @@ -389,8 +390,11 @@ if (h == NULL) goto errout; - if (a->type == TCA_OLD_COMPAT) - err = gnet_stats_start_copy_compat(skb, TCA_ACT_STATS, + /* compat_mode being true specifies a call that is supposed + * to add additional backward compatiblity statistic TLVs. + */ + if (compat_mode && a->type == TCA_OLD_COMPAT) + err = gnet_stats_start_copy_compat(skb, 0, TCA_STATS, TCA_XSTATS, h->stats_lock, &d); else err = gnet_stats_start_copy(skb, TCA_ACT_STATS, diff -Nru a/net/sched/cls_api.c b/net/sched/cls_api.c --- a/net/sched/cls_api.c 2005-03-29 03:08:12 +02:00 +++ b/net/sched/cls_api.c 2005-03-29 03:08:12 +02:00 @@ -602,7 +602,7 @@ { #ifdef CONFIG_NET_CLS_ACT if (exts->action) - if (tcf_action_copy_stats(skb, exts->action) < 0) + if (tcf_action_copy_stats(skb, exts->action, 1) < 0) goto rtattr_failure; #elif defined CONFIG_NET_CLS_POLICE if (exts->police) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-29 1:10 ` Thomas Graf @ 2005-03-29 20:51 ` jamal 2005-03-30 1:02 ` Thomas Graf 0 siblings, 1 reply; 17+ messages in thread From: jamal @ 2005-03-29 20:51 UTC (permalink / raw) To: Thomas Graf; +Cc: Meelis Roos, netdev In general (from 1 mile away looks fine). One issue: a->type could be used for in the future to carry other things in addition to backward compatibility. So you cant assume it being set means only backward compat is needed (and nothing else). cheers, jamal On Mon, 2005-03-28 at 20:10, Thomas Graf wrote: > * Thomas Graf <20050328223310.GH3086@postel.suug.ch> 2005-03-29 00:33 > > We dump TCA_ACT_STATS in tcf_exts_dump and handle all the backward > > compibility including dumping policer stats in tcf_exts_dump_stats. > > This means we have to adapt gnet_stats a bit to allow for this. > > Attached patches is what I meant. Untested but you should get > the idea. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-29 20:51 ` jamal @ 2005-03-30 1:02 ` Thomas Graf 2005-03-30 11:55 ` jamal 2005-03-31 0:58 ` David S. Miller 0 siblings, 2 replies; 17+ messages in thread From: Thomas Graf @ 2005-03-30 1:02 UTC (permalink / raw) To: jamal; +Cc: Meelis Roos, netdev, David S. Miller [-- Attachment #1: Type: text/plain, Size: 1269 bytes --] * jamal <1112129516.1076.90.camel@jzny.localdomain> 2005-03-29 15:51 > > In general (from 1 mile away looks fine). > One issue: a->type could be used for in the future to carry > other things in addition to backward compatibility. So you cant assume > it being set means only backward compat is needed (and nothing else). Not sure if I get you but maybe a mistake of mine while mapping the logic in mind into code has confused you. The code really should have been: /* compat_mode being true specifies a call that is supposed * to add additional backward compatiblity statistic TLVs. */ if (compat_mode) { if (a->type == TCA_OLD_COMPAT) err = gnet_stats_start_copy_compat(skb, 0, TCA_STATS, TCA_XSTATS, h->stats_lock, &d); } else err = gnet_stats_start_copy(skb, TCA_ACT_STATS, h->stats_lock, &d); So we always dump TCA_ACT_STATS when calling from tcf_exts_dump and add the backward compatibility TLVs in the second call comming from tcf_exts_dump_stats for actions that need it. Patches tested, works for me but might be worth for someone else to give it a try as well just to make sure. Meelis, could you give the 3 attched patches a try? Dave, you can pull from bk://kernel.bkbits.net/tgraf/net-2.6-tcf_exts if everyone can agree on this. [-- Attachment #2: 1 --] [-- Type: text/plain, Size: 2455 bytes --] # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/03/29 02:45:52+02:00 tgraf@suug.ch # Cset exclude: hadi@cyberus.ca|ChangeSet|20050325173452|50562 # # net/sched/cls_u32.c # 2005/03/29 02:45:46+02:00 tgraf@suug.ch +0 -0 # Exclude # # net/sched/cls_tcindex.c # 2005/03/29 02:45:46+02:00 tgraf@suug.ch +0 -0 # Exclude # # net/sched/cls_route.c # 2005/03/29 02:45:46+02:00 tgraf@suug.ch +0 -0 # Exclude # # net/sched/cls_fw.c # 2005/03/29 02:45:46+02:00 tgraf@suug.ch +0 -0 # Exclude # diff -Nru a/net/sched/cls_fw.c b/net/sched/cls_fw.c --- a/net/sched/cls_fw.c 2005-03-30 02:59:05 +02:00 +++ b/net/sched/cls_fw.c 2005-03-30 02:59:05 +02:00 @@ -338,9 +338,8 @@ rta->rta_len = skb->tail - b; - if (f->exts.action && f->exts.action->type == TCA_OLD_COMPAT) - if (tcf_exts_dump_stats(skb, &f->exts, &fw_ext_map) < 0) - goto rtattr_failure; + if (tcf_exts_dump_stats(skb, &f->exts, &fw_ext_map) < 0) + goto rtattr_failure; return skb->len; diff -Nru a/net/sched/cls_route.c b/net/sched/cls_route.c --- a/net/sched/cls_route.c 2005-03-30 02:59:05 +02:00 +++ b/net/sched/cls_route.c 2005-03-30 02:59:05 +02:00 @@ -599,9 +599,8 @@ rta->rta_len = skb->tail - b; - if (f->exts.action && f->exts.action->type == TCA_OLD_COMPAT) - if (tcf_exts_dump_stats(skb, &f->exts, &route_ext_map) < 0) - goto rtattr_failure; + if (tcf_exts_dump_stats(skb, &f->exts, &route_ext_map) < 0) + goto rtattr_failure; return skb->len; diff -Nru a/net/sched/cls_tcindex.c b/net/sched/cls_tcindex.c --- a/net/sched/cls_tcindex.c 2005-03-30 02:59:05 +02:00 +++ b/net/sched/cls_tcindex.c 2005-03-30 02:59:05 +02:00 @@ -496,9 +496,8 @@ goto rtattr_failure; rta->rta_len = skb->tail-b; - if (r->exts.action && r->exts.action->type == TCA_OLD_COMPAT) - if (tcf_exts_dump_stats(skb, &r->exts, &tcindex_ext_map) < 0) - goto rtattr_failure; + if (tcf_exts_dump_stats(skb, &r->exts, &tcindex_ext_map) < 0) + goto rtattr_failure; } return skb->len; diff -Nru a/net/sched/cls_u32.c b/net/sched/cls_u32.c --- a/net/sched/cls_u32.c 2005-03-30 02:59:05 +02:00 +++ b/net/sched/cls_u32.c 2005-03-30 02:59:05 +02:00 @@ -775,7 +775,7 @@ } rta->rta_len = skb->tail - b; - if (TC_U32_KEY(n->handle) && n->exts.action && n->exts.action->type == TCA_OLD_COMPAT) + if (TC_U32_KEY(n->handle)) if (tcf_exts_dump_stats(skb, &n->exts, &u32_ext_map) < 0) goto rtattr_failure; return skb->len; [-- Attachment #3: 2 --] [-- Type: text/plain, Size: 1427 bytes --] # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/03/29 02:55:11+02:00 tgraf@suug.ch # [NET]: Make primary TLV type optional # # Allows the use of the gnet_stats API for backward compatiblity # cases where no "modern" TLV structure is needed. # # Signed-off-by: Thomas Graf <tgraf@suug.ch> # Signed-off-by: David S. Miller <davem@davemloft.net> # # net/core/gen_stats.c # 2005/03/29 02:54:56+02:00 tgraf@suug.ch +7 -3 # [NET]: Make primary TLV type optional # diff -Nru a/net/core/gen_stats.c b/net/core/gen_stats.c --- a/net/core/gen_stats.c 2005-03-30 02:59:19 +02:00 +++ b/net/core/gen_stats.c 2005-03-30 02:59:19 +02:00 @@ -26,7 +26,9 @@ static inline int gnet_stats_copy(struct gnet_dump *d, int type, void *buf, int size) { - RTA_PUT(d->skb, type, size, buf); + if (type) + RTA_PUT(d->skb, type, size, buf); + return 0; rtattr_failure: @@ -58,7 +60,8 @@ { spin_lock_bh(lock); d->lock = lock; - d->tail = (struct rtattr *) skb->tail; + if (type) + d->tail = (struct rtattr *) skb->tail; d->skb = skb; d->compat_tc_stats = tc_stats_type; d->compat_xstats = xstats_type; @@ -194,7 +197,8 @@ int gnet_stats_finish_copy(struct gnet_dump *d) { - d->tail->rta_len = d->skb->tail - (u8 *) d->tail; + if (d->tail) + d->tail->rta_len = d->skb->tail - (u8 *) d->tail; if (d->compat_tc_stats) if (gnet_stats_copy(d, d->compat_tc_stats, &d->tc_stats, [-- Attachment #4: 3 --] [-- Type: text/plain, Size: 3287 bytes --] # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/03/30 01:34:30+02:00 tgraf@suug.ch # [PKT_SCHED]: Fix action statistics dumping in compatibility mode # # Extends the action dumping function by a parameter to differ between # regular calls and the one supposed to add the backward compatiblity # bits for old userspace applications. # # Signed-off-by: Thomas Graf <tgraf@suug.ch> # Signed-off-by: David S. Miller <davem@davemloft.net> # # net/sched/cls_api.c # 2005/03/30 01:34:14+02:00 tgraf@suug.ch +1 -1 # [PKT_SCHED]: Fix action statistics dumping in compatibility mode # # net/sched/act_api.c # 2005/03/30 01:34:14+02:00 tgraf@suug.ch +12 -7 # [PKT_SCHED]: Fix action statistics dumping in compatibility mode # # include/net/act_api.h # 2005/03/30 01:34:14+02:00 tgraf@suug.ch +1 -1 # [PKT_SCHED]: Fix action statistics dumping in compatibility mode # diff -Nru a/include/net/act_api.h b/include/net/act_api.h --- a/include/net/act_api.h 2005-03-30 03:00:38 +02:00 +++ b/include/net/act_api.h 2005-03-30 03:00:38 +02:00 @@ -81,7 +81,7 @@ extern int tcf_action_dump(struct sk_buff *skb, struct tc_action *a, int, int); extern int tcf_action_dump_old(struct sk_buff *skb, struct tc_action *a, int, int); extern int tcf_action_dump_1(struct sk_buff *skb, struct tc_action *a, int, int); -extern int tcf_action_copy_stats (struct sk_buff *,struct tc_action *); +extern int tcf_action_copy_stats (struct sk_buff *,struct tc_action *, int); #endif /* CONFIG_NET_CLS_ACT */ extern int tcf_police(struct sk_buff *skb, struct tcf_police *p); diff -Nru a/net/sched/act_api.c b/net/sched/act_api.c --- a/net/sched/act_api.c 2005-03-30 03:00:38 +02:00 +++ b/net/sched/act_api.c 2005-03-30 03:00:38 +02:00 @@ -228,7 +228,7 @@ return err; RTA_PUT(skb, TCA_KIND, IFNAMSIZ, a->ops->kind); - if (tcf_action_copy_stats(skb, a)) + if (tcf_action_copy_stats(skb, a, 0)) goto rtattr_failure; r = (struct rtattr*) skb->tail; RTA_PUT(skb, TCA_OPTIONS, 0, NULL); @@ -380,19 +380,24 @@ return NULL; } -int tcf_action_copy_stats(struct sk_buff *skb, struct tc_action *a) +int tcf_action_copy_stats(struct sk_buff *skb, struct tc_action *a, + int compat_mode) { - int err; + int err = 0; struct gnet_dump d; struct tcf_act_hdr *h = a->priv; if (h == NULL) goto errout; - if (a->type == TCA_OLD_COMPAT) - err = gnet_stats_start_copy_compat(skb, TCA_ACT_STATS, - TCA_STATS, TCA_XSTATS, h->stats_lock, &d); - else + /* compat_mode being true specifies a call that is supposed + * to add additional backward compatiblity statistic TLVs. + */ + if (compat_mode) { + if (a->type == TCA_OLD_COMPAT) + err = gnet_stats_start_copy_compat(skb, 0, + TCA_STATS, TCA_XSTATS, h->stats_lock, &d); + } else err = gnet_stats_start_copy(skb, TCA_ACT_STATS, h->stats_lock, &d); diff -Nru a/net/sched/cls_api.c b/net/sched/cls_api.c --- a/net/sched/cls_api.c 2005-03-30 03:00:38 +02:00 +++ b/net/sched/cls_api.c 2005-03-30 03:00:38 +02:00 @@ -602,7 +602,7 @@ { #ifdef CONFIG_NET_CLS_ACT if (exts->action) - if (tcf_action_copy_stats(skb, exts->action) < 0) + if (tcf_action_copy_stats(skb, exts->action, 1) < 0) goto rtattr_failure; #elif defined CONFIG_NET_CLS_POLICE if (exts->police) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-30 1:02 ` Thomas Graf @ 2005-03-30 11:55 ` jamal 2005-03-31 0:58 ` David S. Miller 1 sibling, 0 replies; 17+ messages in thread From: jamal @ 2005-03-30 11:55 UTC (permalink / raw) To: Thomas Graf; +Cc: Meelis Roos, netdev, David S. Miller On Tue, 2005-03-29 at 20:02, Thomas Graf wrote: > So we always dump TCA_ACT_STATS when calling from tcf_exts_dump > and add the backward compatibility TLVs in the second call > comming from tcf_exts_dump_stats for actions that need it. > Looks good from this side. > Patches tested, works for me but might be worth for someone > else to give it a try as well just to make sure. Meelis, could > you give the 3 attched patches a try? > Andy, can you just double check we dont have the problem you found with stats? cheers, jamal ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: cls_u32 compile failure in current 2.6.12-rc1+BK tree 2005-03-30 1:02 ` Thomas Graf 2005-03-30 11:55 ` jamal @ 2005-03-31 0:58 ` David S. Miller 1 sibling, 0 replies; 17+ messages in thread From: David S. Miller @ 2005-03-31 0:58 UTC (permalink / raw) To: Thomas Graf; +Cc: hadi, mroos, netdev On Wed, 30 Mar 2005 03:02:09 +0200 Thomas Graf <tgraf@suug.ch> wrote: > Dave, you can pull from bk://kernel.bkbits.net/tgraf/net-2.6-tcf_exts > if everyone can agree on this. Done, thanks Thomas. ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2005-03-31 0:58 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-03-27 19:49 cls_u32 compile failure in current 2.6.12-rc1+BK tree Meelis Roos 2005-03-28 1:07 ` jamal 2005-03-28 7:18 ` Meelis Roos 2005-03-28 12:24 ` jamal 2005-03-28 12:38 ` Thomas Graf 2005-03-28 12:51 ` jamal 2005-03-28 12:58 ` Thomas Graf 2005-03-28 13:15 ` jamal 2005-03-28 15:55 ` Thomas Graf 2005-03-28 19:28 ` jamal 2005-03-28 19:53 ` Thomas Graf 2005-03-28 22:33 ` Thomas Graf 2005-03-29 1:10 ` Thomas Graf 2005-03-29 20:51 ` jamal 2005-03-30 1:02 ` Thomas Graf 2005-03-30 11:55 ` jamal 2005-03-31 0:58 ` David S. Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).