Lines Matching refs:n

114 	struct tc_u_knode *n;  in u32_classify()  local
124 n = rcu_dereference_bh(ht->ht[sel]); in u32_classify()
127 if (n) { in u32_classify()
128 struct tc_u32_key *key = n->sel.keys; in u32_classify()
131 __this_cpu_inc(n->pf->rcnt); in u32_classify()
136 if ((skb->mark & n->mask) != n->val) { in u32_classify()
137 n = rcu_dereference_bh(n->next); in u32_classify()
140 __this_cpu_inc(*n->pcpu_success); in u32_classify()
144 for (i = n->sel.nkeys; i > 0; i--, key++) { in u32_classify()
155 n = rcu_dereference_bh(n->next); in u32_classify()
159 __this_cpu_inc(n->pf->kcnts[j]); in u32_classify()
164 ht = rcu_dereference_bh(n->ht_down); in u32_classify()
167 if (n->sel.flags & TC_U32_TERMINAL) { in u32_classify()
169 *res = n->res; in u32_classify()
171 if (!tcf_match_indev(skb, n->ifindex)) { in u32_classify()
172 n = rcu_dereference_bh(n->next); in u32_classify()
177 __this_cpu_inc(n->pf->rhit); in u32_classify()
179 r = tcf_exts_exec(skb, &n->exts, res); in u32_classify()
181 n = rcu_dereference_bh(n->next); in u32_classify()
187 n = rcu_dereference_bh(n->next); in u32_classify()
194 stack[sdepth].knode = n; in u32_classify()
198 ht = rcu_dereference_bh(n->ht_down); in u32_classify()
203 data = skb_header_pointer(skb, off + n->sel.hoff, 4, in u32_classify()
207 sel = ht->divisor & u32_hash_fold(*data, &n->sel, in u32_classify()
208 n->fshift); in u32_classify()
210 if (!(n->sel.flags & (TC_U32_VAROFFSET | TC_U32_OFFSET | TC_U32_EAT))) in u32_classify()
213 if (n->sel.flags & (TC_U32_OFFSET | TC_U32_VAROFFSET)) { in u32_classify()
214 off2 = n->sel.off + 3; in u32_classify()
215 if (n->sel.flags & TC_U32_VAROFFSET) { in u32_classify()
219 off + n->sel.offoff, in u32_classify()
223 off2 += ntohs(n->sel.offmask & *data) >> in u32_classify()
224 n->sel.offshift; in u32_classify()
228 if (n->sel.flags & TC_U32_EAT) { in u32_classify()
239 n = stack[sdepth].knode; in u32_classify()
240 ht = rcu_dereference_bh(n->ht_up); in u32_classify()
270 struct tc_u_knode *n = NULL; in u32_lookup_key() local
276 for (n = rtnl_dereference(ht->ht[sel]); in u32_lookup_key()
277 n; in u32_lookup_key()
278 n = rtnl_dereference(n->next)) in u32_lookup_key()
279 if (n->handle == handle) in u32_lookup_key()
282 return n; in u32_lookup_key()
357 struct tc_u_knode *n, in u32_destroy_key() argument
360 tcf_exts_destroy(&n->exts); in u32_destroy_key()
361 if (n->ht_down) in u32_destroy_key()
362 n->ht_down->refcnt--; in u32_destroy_key()
365 free_percpu(n->pf); in u32_destroy_key()
369 free_percpu(n->pcpu_success); in u32_destroy_key()
371 kfree(n); in u32_destroy_key()
429 struct tc_u_knode *n; in u32_clear_hnode() local
433 while ((n = rtnl_dereference(ht->ht[h])) != NULL) { in u32_clear_hnode()
435 rtnl_dereference(n->next)); in u32_clear_hnode()
436 tcf_unbind_filter(tp, &n->res); in u32_clear_hnode()
437 call_rcu(&n->rcu, u32_delete_key_freepf_rcu); in u32_clear_hnode()
562 struct tc_u_knode *n; in gen_new_kid() local
569 for (n = rtnl_dereference(ht->ht[TC_U32_HASH(handle)]); in gen_new_kid()
570 n; in gen_new_kid()
571 n = rtnl_dereference(n->next)) in gen_new_kid()
572 set_bit(TC_U32_NODE(n->handle), bitmap); in gen_new_kid()
594 struct tc_u_knode *n, struct nlattr **tb, in u32_set_parms() argument
621 ht_old = rtnl_dereference(n->ht_down); in u32_set_parms()
622 rcu_assign_pointer(n->ht_down, ht_down); in u32_set_parms()
628 n->res.classid = nla_get_u32(tb[TCA_U32_CLASSID]); in u32_set_parms()
629 tcf_bind_filter(tp, &n->res, base); in u32_set_parms()
638 n->ifindex = ret; in u32_set_parms()
641 tcf_exts_change(tp, &n->exts, &e); in u32_set_parms()
651 struct tc_u_knode *n) in u32_replace_knode() argument
657 if (TC_U32_HTID(n->handle) == TC_U32_ROOT) in u32_replace_knode()
660 ht = u32_lookup_ht(tp_c, TC_U32_HTID(n->handle)); in u32_replace_knode()
662 ins = &ht->ht[TC_U32_HASH(n->handle)]; in u32_replace_knode()
669 if (pins->handle == n->handle) in u32_replace_knode()
672 RCU_INIT_POINTER(n->next, pins->next); in u32_replace_knode()
673 rcu_assign_pointer(*ins, n); in u32_replace_knode()
677 struct tc_u_knode *n) in u32_init_knode() argument
680 struct tc_u32_sel *s = &n->sel; in u32_init_knode()
682 new = kzalloc(sizeof(*n) + s->nkeys*sizeof(struct tc_u32_key), in u32_init_knode()
688 RCU_INIT_POINTER(new->next, n->next); in u32_init_knode()
689 new->handle = n->handle; in u32_init_knode()
690 RCU_INIT_POINTER(new->ht_up, n->ht_up); in u32_init_knode()
693 new->ifindex = n->ifindex; in u32_init_knode()
695 new->fshift = n->fshift; in u32_init_knode()
696 new->res = n->res; in u32_init_knode()
697 RCU_INIT_POINTER(new->ht_down, n->ht_down); in u32_init_knode()
708 new->pf = n->pf; in u32_init_knode()
712 new->val = n->val; in u32_init_knode()
713 new->mask = n->mask; in u32_init_knode()
715 new->pcpu_success = n->pcpu_success; in u32_init_knode()
732 struct tc_u_knode *n; in u32_change() local
749 n = (struct tc_u_knode *)*arg; in u32_change()
750 if (n) { in u32_change()
753 if (TC_U32_KEY(n->handle) == 0) in u32_change()
756 new = u32_init_knode(tp, n); in u32_change()
761 rtnl_dereference(n->ht_up), new, tb, in u32_change()
770 tcf_unbind_filter(tp, &n->res); in u32_change()
771 call_rcu(&n->rcu, u32_delete_key_rcu); in u32_change()
831 n = kzalloc(sizeof(*n) + s->nkeys*sizeof(struct tc_u32_key), GFP_KERNEL); in u32_change()
832 if (n == NULL) in u32_change()
837 n->pf = __alloc_percpu(size, __alignof__(struct tc_u32_pcnt)); in u32_change()
838 if (!n->pf) { in u32_change()
839 kfree(n); in u32_change()
844 memcpy(&n->sel, s, sizeof(*s) + s->nkeys*sizeof(struct tc_u32_key)); in u32_change()
845 RCU_INIT_POINTER(n->ht_up, ht); in u32_change()
846 n->handle = handle; in u32_change()
847 n->fshift = s->hmask ? ffs(ntohl(s->hmask)) - 1 : 0; in u32_change()
848 tcf_exts_init(&n->exts, TCA_U32_ACT, TCA_U32_POLICE); in u32_change()
849 n->tp = tp; in u32_change()
852 n->pcpu_success = alloc_percpu(u32); in u32_change()
853 if (!n->pcpu_success) { in u32_change()
862 n->val = mark->val; in u32_change()
863 n->mask = mark->mask; in u32_change()
867 err = u32_set_parms(net, tp, base, ht, n, tb, tca[TCA_RATE], ovr); in u32_change()
878 RCU_INIT_POINTER(n->next, pins); in u32_change()
879 rcu_assign_pointer(*ins, n); in u32_change()
881 *arg = (unsigned long)n; in u32_change()
886 free_percpu(n->pcpu_success); in u32_change()
891 free_percpu(n->pf); in u32_change()
893 kfree(n); in u32_change()
901 struct tc_u_knode *n; in u32_walk() local
920 for (n = rtnl_dereference(ht->ht[h]); in u32_walk()
921 n; in u32_walk()
922 n = rtnl_dereference(n->next)) { in u32_walk()
927 if (arg->fn(tp, (unsigned long)n, arg) < 0) { in u32_walk()
940 struct tc_u_knode *n = (struct tc_u_knode *)fh; in u32_dump() local
944 if (n == NULL) in u32_dump()
947 t->tcm_handle = n->handle; in u32_dump()
953 if (TC_U32_KEY(n->handle) == 0) { in u32_dump()
966 sizeof(n->sel) + n->sel.nkeys*sizeof(struct tc_u32_key), in u32_dump()
967 &n->sel)) in u32_dump()
970 ht_up = rtnl_dereference(n->ht_up); in u32_dump()
972 u32 htid = n->handle & 0xFFFFF000; in u32_dump()
976 if (n->res.classid && in u32_dump()
977 nla_put_u32(skb, TCA_U32_CLASSID, n->res.classid)) in u32_dump()
980 ht_down = rtnl_dereference(n->ht_down); in u32_dump()
986 if ((n->val || n->mask)) { in u32_dump()
987 struct tc_u32_mark mark = {.val = n->val, in u32_dump()
988 .mask = n->mask, in u32_dump()
993 __u32 cnt = *per_cpu_ptr(n->pcpu_success, cpum); in u32_dump()
1003 if (tcf_exts_dump(skb, &n->exts) < 0) in u32_dump()
1007 if (n->ifindex) { in u32_dump()
1009 dev = __dev_get_by_index(net, n->ifindex); in u32_dump()
1016 n->sel.nkeys * sizeof(u64), in u32_dump()
1023 struct tc_u32_pcnt *pf = per_cpu_ptr(n->pf, cpu); in u32_dump()
1027 for (i = 0; i < n->sel.nkeys; i++) in u32_dump()
1032 sizeof(struct tc_u32_pcnt) + n->sel.nkeys*sizeof(u64), in u32_dump()
1043 if (TC_U32_KEY(n->handle)) in u32_dump()
1044 if (tcf_exts_dump_stats(skb, &n->exts) < 0) in u32_dump()