Lines Matching refs:ife

3  * net/sched/ife.c	Inter-FE action based on ForCES WG InterFE LFB
31 #include <net/ife.h>
275 request_module("ife-meta-%s", ife_meta_id2name(metaid));
296 struct tcf_ife_info *ife, u32 metaid, void *metaval,
317 spin_lock_bh(&ife->tcf_lock);
318 list_add_tail(&mi->metalist, &ife->metalist);
320 spin_unlock_bh(&ife->tcf_lock);
326 struct tcf_ife_info *ife, u32 metaid,
333 ret = __add_metainfo(ops, ife, metaid, NULL, 0, true, exists);
339 static int add_metainfo(struct tcf_ife_info *ife, u32 metaid, void *metaval,
347 ret = __add_metainfo(ops, ife, metaid, metaval, len, false, exists);
354 static int use_all_metadata(struct tcf_ife_info *ife, bool exists)
362 rc = add_metainfo_and_get_ops(o, ife, o->metaid, exists);
374 static int dump_metalist(struct sk_buff *skb, struct tcf_ife_info *ife)
382 if (list_empty(&ife->metalist))
389 list_for_each_entry(e, &ife->metalist, metalist) {
406 /* under ife->tcf_lock */
409 struct tcf_ife_info *ife = to_ife(a);
412 list_for_each_entry_safe(e, n, &ife->metalist, metalist) {
427 struct tcf_ife_info *ife = to_ife(a);
430 spin_lock_bh(&ife->tcf_lock);
432 spin_unlock_bh(&ife->tcf_lock);
434 p = rcu_dereference_protected(ife->params, 1);
458 static int populate_metalist(struct tcf_ife_info *ife, struct nlattr **tb,
471 rc = add_metainfo(ife, i, val, len, exists);
491 struct tcf_ife_info *ife;
569 ife = to_ife(*a);
571 INIT_LIST_HEAD(&ife->metalist);
603 err = populate_metalist(ife, tb2, exists,
613 err = use_all_metadata(ife, exists);
619 spin_lock_bh(&ife->tcf_lock);
622 p = rcu_replace_pointer(ife->params, p, 1);
625 spin_unlock_bh(&ife->tcf_lock);
645 struct tcf_ife_info *ife = to_ife(a);
648 .index = ife->tcf_index,
649 .refcnt = refcount_read(&ife->tcf_refcnt) - ref,
650 .bindcnt = atomic_read(&ife->tcf_bindcnt) - bind,
654 spin_lock_bh(&ife->tcf_lock);
655 opt.action = ife->tcf_action;
656 p = rcu_dereference_protected(ife->params,
657 lockdep_is_held(&ife->tcf_lock));
663 tcf_tm_dump(&t, &ife->tcf_tm);
680 if (dump_metalist(skb, ife)) {
685 spin_unlock_bh(&ife->tcf_lock);
689 spin_unlock_bh(&ife->tcf_lock);
694 static int find_decode_metaid(struct sk_buff *skb, struct tcf_ife_info *ife,
700 list_for_each_entry(e, &ife->metalist, metalist) {
715 struct tcf_ife_info *ife = to_ife(a);
716 int action = ife->tcf_action;
721 bstats_update(this_cpu_ptr(ife->common.cpu_bstats), skb);
722 tcf_lastuse_update(&ife->tcf_tm);
729 qstats_drop_inc(this_cpu_ptr(ife->common.cpu_qstats));
742 qstats_drop_inc(this_cpu_ptr(ife->common.cpu_qstats));
746 if (find_decode_metaid(skb, ife, mtype, dlen, curr_data)) {
752 qstats_overlimit_inc(this_cpu_ptr(ife->common.cpu_qstats));
757 qstats_drop_inc(this_cpu_ptr(ife->common.cpu_qstats));
770 static int ife_get_sz(struct sk_buff *skb, struct tcf_ife_info *ife)
775 list_for_each_entry_safe(e, n, &ife->metalist, metalist) {
788 struct tcf_ife_info *ife = to_ife(a);
789 int action = ife->tcf_action;
796 u16 metalen = ife_get_sz(skb, ife);
809 bstats_update(this_cpu_ptr(ife->common.cpu_bstats), skb);
810 tcf_lastuse_update(&ife->tcf_tm);
816 qstats_overlimit_inc(this_cpu_ptr(ife->common.cpu_qstats));
822 qstats_drop_inc(this_cpu_ptr(ife->common.cpu_qstats));
831 spin_lock(&ife->tcf_lock);
837 list_for_each_entry(e, &ife->metalist, metalist) {
844 spin_unlock(&ife->tcf_lock);
845 qstats_drop_inc(this_cpu_ptr(ife->common.cpu_qstats));
850 spin_unlock(&ife->tcf_lock);
869 struct tcf_ife_info *ife = to_ife(a);
873 p = rcu_dereference_bh(ife->params);
883 .kind = "ife",
892 MODULE_ALIAS_NET_ACT("ife");