Re: [PATCH net-next v11 3/4] net sched actions: dump more than TCA_ACT_MAX_PRIO actions per batch
From: Jiri Pirko <jiri@resnulli.us>
Date: 2017-07-25 11:33:55
Tue, Jul 25, 2017 at 01:22:44PM CEST, jhs@mojatatu.com wrote:
On 17-07-24 07:27 AM, Jiri Pirko wrote:quoted
Mon, Jul 24, 2017 at 03:35:45AM CEST, jhs@mojatatu.com wrote:quoted
From: Jamal Hadi Salim <jhs@mojatatu.com>[..]quoted
This helper should be part of the previous patch.Will do next update.quoted
quoted
quoted
@@ -1157,8 +1164,18 @@ static int tc_dump_action(struct sk_buff *skb,struct netlink_callback *cb)quoted
quoted
struct tc_action_ops *a_o; int ret = 0; struct tcamsg *t = (struct tcamsg *) nlmsg_data(cb->nlh); - struct nlattr *kind = find_dump_kind(cb->nlh); + struct nla_bitfield_32 fb; + struct nlattr *count_attr = NULL; + struct nlattr *tb[TCA_ROOT_MAX + 1]; + struct nlattr *kind = NULL;Reverse christmas tree :DThere were already 2 christmas trees in place;-> I will re-arrange this.quoted
quoted
+ if (tb[TCA_ROOT_FLAGS]) + fb = nla_get_bitfield_32(tb[TCA_ROOT_FLAGS]);fb? bf? nbf? Please make this synced within the patchset.Ok, what do you like best? ;->
"bf"
quoted
Don't you need to mask value with selector? In fact, I think that nla_get_bitfield_32 could just return u32 which would be (value&selector). The validation takes care of unsupported bits.For my use case I dont need any of the above since I dont need to unset things. In other use cases you will need both selector and value in case someone wants a bit to be set to 0. Infact I think i will rename that helper to "nla_get_bitvalue_32" to be more precise.
The getter should contain name of the type, so "nla_get_bitfield32_val" is much better. What if I pass val 0x1 and selector 0x0 from userspace. I don't have the bit selected, so you should not process it in kernel, no?
cheers, jamal