Lines Matching refs:vctrl

218 static bool vcap_verify_keystream_keyset(struct vcap_control *vctrl,  in vcap_verify_keystream_keyset()  argument
224 const struct vcap_info *vcap = &vctrl->vcaps[vt]; in vcap_verify_keystream_keyset()
233 if (vcap_keyfield_count(vctrl, vt, keyset) == 0) in vcap_verify_keystream_keyset()
236 info = vcap_keyfieldset(vctrl, vt, keyset); in vcap_verify_keystream_keyset()
246 tgt = vcap_keyfield_typegroup(vctrl, vt, keyset); in vcap_verify_keystream_keyset()
250 fields = vcap_keyfields(vctrl, vt, keyset); in vcap_verify_keystream_keyset()
308 static int vcap_find_keystream_typegroup_sw(struct vcap_control *vctrl, in vcap_find_keystream_typegroup_sw() argument
315 tgt = vctrl->vcaps[vt].keyfield_set_typegroups; in vcap_find_keystream_typegroup_sw()
317 for (sw_idx = vctrl->vcaps[vt].sw_count; sw_idx >= 0; sw_idx--) { in vcap_find_keystream_typegroup_sw()
321 res = vcap_verify_typegroups(stream, vctrl->vcaps[vt].sw_width, in vcap_find_keystream_typegroup_sw()
333 vcap_find_keystream_keysets(struct vcap_control *vctrl, in vcap_find_keystream_keysets() argument
343 sw_count = vcap_find_keystream_typegroup_sw(vctrl, vt, keystream, mask, in vcap_find_keystream_keysets()
348 keyfield_set = vctrl->vcaps[vt].keyfield_set; in vcap_find_keystream_keysets()
349 for (idx = 0; idx < vctrl->vcaps[vt].keyfield_set_size; ++idx) { in vcap_find_keystream_keysets()
353 if (vcap_verify_keystream_keyset(vctrl, vt, keystream, in vcap_find_keystream_keysets()
366 int vcap_addr_keysets(struct vcap_control *vctrl, in vcap_addr_keysets() argument
377 keyset_sw_regs = DIV_ROUND_UP(vctrl->vcaps[vt].sw_width, 32); in vcap_addr_keysets()
378 vctrl->ops->update(ndev, admin, VCAP_CMD_READ, VCAP_SEL_ALL, addr); in vcap_addr_keysets()
379 vctrl->ops->cache_read(ndev, admin, VCAP_SEL_ENTRY, 0, in vcap_addr_keysets()
389 return vcap_find_keystream_keysets(vctrl, vt, admin->cache.keystream, in vcap_addr_keysets()
396 const struct vcap_field *vcap_keyfields(struct vcap_control *vctrl, in vcap_keyfields() argument
401 if (keyset >= vctrl->vcaps[vt].keyfield_set_size) in vcap_keyfields()
403 return vctrl->vcaps[vt].keyfield_set_map[keyset]; in vcap_keyfields()
407 const struct vcap_set *vcap_keyfieldset(struct vcap_control *vctrl, in vcap_keyfieldset() argument
414 if (keyset >= vctrl->vcaps[vt].keyfield_set_size) in vcap_keyfieldset()
416 kset = &vctrl->vcaps[vt].keyfield_set[keyset]; in vcap_keyfieldset()
417 if (kset->sw_per_item == 0 || kset->sw_per_item > vctrl->vcaps[vt].sw_count) in vcap_keyfieldset()
425 vcap_keyfield_typegroup(struct vcap_control *vctrl, in vcap_keyfield_typegroup() argument
428 const struct vcap_set *kset = vcap_keyfieldset(vctrl, vt, keyset); in vcap_keyfield_typegroup()
433 return vctrl->vcaps[vt].keyfield_set_typegroups[kset->sw_per_item]; in vcap_keyfield_typegroup()
437 int vcap_keyfield_count(struct vcap_control *vctrl, in vcap_keyfield_count() argument
441 if (keyset >= vctrl->vcaps[vt].keyfield_set_size) in vcap_keyfield_count()
443 return vctrl->vcaps[vt].keyfield_set_map_size[keyset]; in vcap_keyfield_count()
451 int sw_width = ri->vctrl->vcaps[ri->admin->vtype].sw_width; in vcap_encode_keyfield()
499 static void vcap_encode_keyfield_typegroups(struct vcap_control *vctrl, in vcap_encode_keyfield_typegroups() argument
503 int sw_width = vctrl->vcaps[ri->admin->vtype].sw_width; in vcap_encode_keyfield_typegroups()
644 kf_table = vcap_keyfields(ri->vctrl, ri->admin->vtype, ri->data.keyset); in vcap_encode_rule_keyset()
651 tg_table = vcap_keyfield_typegroup(ri->vctrl, ri->admin->vtype, in vcap_encode_rule_keyset()
659 keyset_size = vcap_keyfield_count(ri->vctrl, ri->admin->vtype, in vcap_encode_rule_keyset()
685 vcap_encode_keyfield_typegroups(ri->vctrl, ri, tg_table); in vcap_encode_rule_keyset()
691 vcap_actionfields(struct vcap_control *vctrl, in vcap_actionfields() argument
695 if (actionset >= vctrl->vcaps[vt].actionfield_set_size) in vcap_actionfields()
697 return vctrl->vcaps[vt].actionfield_set_map[actionset]; in vcap_actionfields()
701 vcap_actionfieldset(struct vcap_control *vctrl, in vcap_actionfieldset() argument
707 if (actionset >= vctrl->vcaps[vt].actionfield_set_size) in vcap_actionfieldset()
709 aset = &vctrl->vcaps[vt].actionfield_set[actionset]; in vcap_actionfieldset()
710 if (aset->sw_per_item == 0 || aset->sw_per_item > vctrl->vcaps[vt].sw_count) in vcap_actionfieldset()
717 vcap_actionfield_typegroup(struct vcap_control *vctrl, in vcap_actionfield_typegroup() argument
720 const struct vcap_set *aset = vcap_actionfieldset(vctrl, vt, actionset); in vcap_actionfield_typegroup()
725 return vctrl->vcaps[vt].actionfield_set_typegroups[aset->sw_per_item]; in vcap_actionfield_typegroup()
729 int vcap_actionfield_count(struct vcap_control *vctrl, in vcap_actionfield_count() argument
734 if (actionset >= vctrl->vcaps[vt].actionfield_set_size) in vcap_actionfield_count()
736 return vctrl->vcaps[vt].actionfield_set_map_size[actionset]; in vcap_actionfield_count()
744 int act_width = ri->vctrl->vcaps[ri->admin->vtype].act_width; in vcap_encode_actionfield()
784 int sw_width = ri->vctrl->vcaps[ri->admin->vtype].act_width; in vcap_encode_actionfield_typegroups()
802 af_table = vcap_actionfields(ri->vctrl, ri->admin->vtype, in vcap_encode_rule_actionset()
810 tg_table = vcap_actionfield_typegroup(ri->vctrl, ri->admin->vtype, in vcap_encode_rule_actionset()
818 actionset_size = vcap_actionfield_count(ri->vctrl, ri->admin->vtype, in vcap_encode_rule_actionset()
880 ri->vctrl->ops->cache_erase(ri->admin); in vcap_erase_cache()
891 kset = vcap_keyfieldset(ri->vctrl, ri->admin->vtype, keyset); in vcap_set_rule_set_keyset()
896 sw_width = ri->vctrl->vcaps[ri->admin->vtype].sw_width; in vcap_set_rule_set_keyset()
911 aset = vcap_actionfieldset(ri->vctrl, ri->admin->vtype, actionset); in vcap_set_rule_set_actionset()
916 act_width = ri->vctrl->vcaps[ri->admin->vtype].act_width; in vcap_set_rule_set_actionset()
924 static bool vcap_rule_exists(struct vcap_control *vctrl, u32 id) in vcap_rule_exists() argument
930 list_for_each_entry(admin, &vctrl->list, list) in vcap_rule_exists()
939 vcap_get_locked_rule(struct vcap_control *vctrl, u32 id) in vcap_get_locked_rule() argument
945 list_for_each_entry(admin, &vctrl->list, list) { in vcap_get_locked_rule()
956 int vcap_lookup_rule_by_cookie(struct vcap_control *vctrl, u64 cookie) in vcap_lookup_rule_by_cookie() argument
963 list_for_each_entry(admin, &vctrl->list, list) { in vcap_lookup_rule_by_cookie()
1293 vcap_verify_actionstream_actionset(struct vcap_control *vctrl, in vcap_verify_actionstream_actionset() argument
1302 if (vcap_actionfield_count(vctrl, vt, actionset) == 0) in vcap_verify_actionstream_actionset()
1305 info = vcap_actionfieldset(vctrl, vt, actionset); in vcap_verify_actionstream_actionset()
1315 tgt = vcap_actionfield_typegroup(vctrl, vt, actionset); in vcap_verify_actionstream_actionset()
1319 fields = vcap_actionfields(vctrl, vt, actionset); in vcap_verify_actionstream_actionset()
1329 static int vcap_find_actionstream_typegroup_sw(struct vcap_control *vctrl, in vcap_find_actionstream_typegroup_sw() argument
1336 tgt = vctrl->vcaps[vt].actionfield_set_typegroups; in vcap_find_actionstream_typegroup_sw()
1338 for (sw_idx = vctrl->vcaps[vt].sw_count; sw_idx >= 0; sw_idx--) { in vcap_find_actionstream_typegroup_sw()
1341 res = vcap_verify_typegroups(stream, vctrl->vcaps[vt].act_width, in vcap_find_actionstream_typegroup_sw()
1353 vcap_find_actionstream_actionset(struct vcap_control *vctrl, in vcap_find_actionstream_actionset() argument
1362 sw_count = vcap_find_actionstream_typegroup_sw(vctrl, vt, stream, in vcap_find_actionstream_actionset()
1367 actionfield_set = vctrl->vcaps[vt].actionfield_set; in vcap_find_actionstream_actionset()
1368 for (idx = 0; idx < vctrl->vcaps[vt].actionfield_set_size; ++idx) { in vcap_find_actionstream_actionset()
1372 res = vcap_verify_actionstream_actionset(vctrl, vt, in vcap_find_actionstream_actionset()
1400 struct vcap_control *vctrl = ri->vctrl; in vcap_decode_actionset() local
1412 res = vcap_find_actionstream_actionset(vctrl, vt, actstream, 0); in vcap_decode_actionset()
1419 actfield_count = vcap_actionfield_count(vctrl, vt, actionset); in vcap_decode_actionset()
1420 actionfield = vcap_actionfields(vctrl, vt, actionset); in vcap_decode_actionset()
1421 tgt = vcap_actionfield_typegroup(vctrl, vt, actionset); in vcap_decode_actionset()
1428 vcap_iter_init(&iter, vctrl->vcaps[vt].act_width, tgt, in vcap_decode_actionset()
1443 struct vcap_control *vctrl = ri->vctrl; in vcap_decode_keyset() local
1463 res = vcap_find_keystream_keysets(vctrl, vt, keystream, maskstream, in vcap_decode_keyset()
1471 keyfield_count = vcap_keyfield_count(vctrl, vt, keyset); in vcap_decode_keyset()
1472 keyfield = vcap_keyfields(vctrl, vt, keyset); in vcap_decode_keyset()
1473 tgt = vcap_keyfield_typegroup(vctrl, vt, keyset); in vcap_decode_keyset()
1480 vcap_iter_init(&miter, vctrl->vcaps[vt].sw_width, tgt, in vcap_decode_keyset()
1489 vcap_iter_init(&kiter, vctrl->vcaps[vt].sw_width, tgt, in vcap_decode_keyset()
1512 ri->vctrl->ops->update(ri->ndev, admin, VCAP_CMD_READ, in vcap_read_rule()
1514 ri->vctrl->ops->cache_read(ri->ndev, admin, in vcap_read_rule()
1517 ri->vctrl->ops->cache_read(ri->ndev, admin, in vcap_read_rule()
1521 ri->vctrl->ops->cache_read(ri->ndev, admin, in vcap_read_rule()
1543 ri->vctrl->ops->cache_write(ri->ndev, admin, in vcap_write_rule()
1546 ri->vctrl->ops->cache_write(ri->ndev, admin, in vcap_write_rule()
1549 ri->vctrl->ops->update(ri->ndev, admin, VCAP_CMD_WRITE, in vcap_write_rule()
1564 ri->vctrl->ops->cache_write(ri->ndev, admin, VCAP_SEL_COUNTER, in vcap_write_counter()
1566 ri->vctrl->ops->update(ri->ndev, admin, VCAP_CMD_WRITE, in vcap_write_counter()
1589 struct vcap_admin *vcap_find_admin(struct vcap_control *vctrl, int cid) in vcap_find_admin() argument
1593 if (vcap_api_check(vctrl)) in vcap_find_admin()
1596 list_for_each_entry(admin, &vctrl->list, list) { in vcap_find_admin()
1605 static bool vcap_admin_is_last(struct vcap_control *vctrl, in vcap_admin_is_last() argument
1612 list_for_each_entry(iter, &vctrl->list, list) { in vcap_admin_is_last()
1626 int vcap_chain_offset(struct vcap_control *vctrl, int from_cid, int to_cid) in vcap_chain_offset() argument
1644 bool vcap_is_next_lookup(struct vcap_control *vctrl, int src_cid, int dst_cid) in vcap_is_next_lookup() argument
1649 if (vcap_api_check(vctrl)) in vcap_is_next_lookup()
1658 admin = vcap_find_admin(vctrl, dst_cid); in vcap_is_next_lookup()
1687 kset = vcap_keyfieldset(ri->vctrl, vt, keyset); in vcap_add_type_keyfield()
1693 fields = vcap_keyfields(ri->vctrl, vt, keyset); in vcap_add_type_keyfield()
1720 aset = vcap_actionfieldset(ri->vctrl, vt, actionset); in vcap_add_type_actionfield()
1726 fields = vcap_actionfields(ri->vctrl, vt, actionset); in vcap_add_type_actionfield()
1777 const char *vcap_keyset_name(struct vcap_control *vctrl, in vcap_keyset_name() argument
1780 return vctrl->stats->keyfield_set_names[keyset]; in vcap_keyset_name()
1785 const char *vcap_keyfield_name(struct vcap_control *vctrl, in vcap_keyfield_name() argument
1788 return vctrl->stats->keyfield_names[key]; in vcap_keyfield_name()
1793 const char *vcap_actionset_name(struct vcap_control *vctrl, in vcap_actionset_name() argument
1796 return vctrl->stats->actionfield_set_names[actionset]; in vcap_actionset_name()
1800 const char *vcap_actionfield_name(struct vcap_control *vctrl, in vcap_actionfield_name() argument
1803 return vctrl->stats->actionfield_names[action]; in vcap_actionfield_name()
1808 vcap_find_keyset_keyfield(struct vcap_control *vctrl, in vcap_find_keyset_keyfield() argument
1816 fields = vcap_keyfields(vctrl, vtype, keyset); in vcap_find_keyset_keyfield()
1821 count = vcap_keyfield_count(vctrl, vtype, keyset); in vcap_find_keyset_keyfield()
1843 map = ri->vctrl->vcaps[vtype].keyfield_set_map; in _vcap_rule_find_keysets()
1844 map_size = ri->vctrl->vcaps[vtype].keyfield_set_size; in _vcap_rule_find_keysets()
1860 if (vcap_find_keyset_keyfield(ri->vctrl, vtype, in _vcap_rule_find_keysets()
1886 vcap_find_actionset_actionfield(struct vcap_control *vctrl, in vcap_find_actionset_actionfield() argument
1894 fields = vcap_actionfields(vctrl, vtype, actionset); in vcap_find_actionset_actionfield()
1899 count = vcap_actionfield_count(vctrl, vtype, actionset); in vcap_find_actionset_actionfield()
1921 map = ri->vctrl->vcaps[vtype].actionfield_set_map; in vcap_rule_find_actionsets()
1922 map_size = ri->vctrl->vcaps[vtype].actionfield_set_size; in vcap_rule_find_actionsets()
1938 if (vcap_find_actionset_actionfield(ri->vctrl, vtype, in vcap_rule_find_actionsets()
1961 ret = vcap_api_check(ri->vctrl); in vcap_val_rule()
1988 ret = ri->vctrl->ops->validate_keyset(ri->ndev, ri->admin, rule, in vcap_val_rule()
2025 ri->vctrl->ops->add_default_fields(ri->ndev, ri->admin, rule); in vcap_val_rule()
2058 if (!vcap_rule_exists(ri->vctrl, next_id)) { in vcap_set_rule_id()
2069 int sw_count = ri->vctrl->vcaps[ri->admin->vtype].sw_count; in vcap_insert_rule()
2136 ri->vctrl->ops->move(ri->ndev, ri->admin, move->addr, in vcap_move_rules()
2141 static bool vcap_is_chain_used(struct vcap_control *vctrl, in vcap_is_chain_used() argument
2147 list_for_each_entry(admin, &vctrl->list, list) in vcap_is_chain_used()
2156 static int vcap_get_next_chain(struct vcap_control *vctrl, in vcap_get_next_chain() argument
2163 list_for_each_entry(admin, &vctrl->list, list) { in vcap_get_next_chain()
2175 static bool vcap_path_exist(struct vcap_control *vctrl, struct net_device *ndev, in vcap_path_exist() argument
2188 list_for_each_entry(admin, &vctrl->list, list) { in vcap_path_exist()
2204 tmp = vcap_get_next_chain(vctrl, ndev, tmp); in vcap_path_exist()
2218 else if (vcap_path_exist(ri->vctrl, ri->ndev, ri->data.vcap_chain_id)) in vcap_rule_set_state()
2232 ret = vcap_api_check(ri->vctrl); in vcap_add_rule()
2255 ri->vctrl->ops->init(ri->ndev, ri->admin, ri->addr, ri->size); in vcap_add_rule()
2278 struct vcap_rule *vcap_alloc_rule(struct vcap_control *vctrl, in vcap_alloc_rule() argument
2287 err = vcap_api_check(vctrl); in vcap_alloc_rule()
2293 admin = vcap_find_admin(vctrl, vcap_chain_id); in vcap_alloc_rule()
2297 if (vctrl->vcaps[admin->vtype].rows == 0) in vcap_alloc_rule()
2302 if (vcap_rule_exists(vctrl, id)) { in vcap_alloc_rule()
2308 maxsize = vctrl->vcaps[admin->vtype].sw_count; /* worst case rule size */ in vcap_alloc_rule()
2332 ri->vctrl = vctrl; /* refer to the client */ in vcap_alloc_rule()
2401 struct vcap_rule *vcap_get_rule(struct vcap_control *vctrl, u32 id) in vcap_get_rule() argument
2407 err = vcap_api_check(vctrl); in vcap_get_rule()
2411 elem = vcap_get_locked_rule(vctrl, id); in vcap_get_rule()
2428 err = vcap_api_check(ri->vctrl); in vcap_mod_rule()
2432 if (!vcap_get_locked_rule(ri->vctrl, ri->data.id)) in vcap_mod_rule()
2504 int vcap_del_rule(struct vcap_control *vctrl, struct net_device *ndev, u32 id) in vcap_del_rule() argument
2513 err = vcap_api_check(vctrl); in vcap_del_rule()
2517 ri = vcap_get_locked_rule(vctrl, id); in vcap_del_rule()
2528 vctrl->ops->init(ndev, admin, admin->last_used_addr, ri->size + gap); in vcap_del_rule()
2546 int vcap_del_rules(struct vcap_control *vctrl, struct vcap_admin *admin) in vcap_del_rules() argument
2550 int ret = vcap_api_check(vctrl); in vcap_del_rules()
2557 vctrl->ops->init(ri->ndev, admin, ri->addr, ri->size); in vcap_del_rules()
2598 fields = vcap_keyfields(ri->vctrl, vt, keyset); in vcap_lookup_keyfield()
2630 fields = vcap_keyfields(ri->vctrl, vt, keyset); in vcap_keyfield_match_keyset()
2648 vcap_keyfield_name(ri->vctrl, key)); in vcap_rule_add_key()
2655 vcap_keyfield_name(ri->vctrl, key)); in vcap_rule_add_key()
2798 fields = vcap_actionfields(ri->vctrl, vt, actionset); in vcap_actionfield_match_actionset()
2816 vcap_actionfield_name(ri->vctrl, action)); in vcap_rule_add_action()
2823 vcap_actionfield_name(ri->vctrl, action)); in vcap_rule_add_action()
2882 ri->vctrl->ops->update(ri->ndev, admin, VCAP_CMD_READ, VCAP_SEL_COUNTER, in vcap_read_counter()
2884 ri->vctrl->ops->cache_read(ri->ndev, admin, VCAP_SEL_COUNTER, in vcap_read_counter()
2961 static int vcap_enable_rules(struct vcap_control *vctrl, in vcap_enable_rules() argument
2969 list_for_each_entry(admin, &vctrl->list, list) { in vcap_enable_rules()
3015 ri->vctrl->ops->init(ri->ndev, ri->admin, ri->addr, ri->size); in vcap_disable_rule()
3020 static int vcap_disable_rules(struct vcap_control *vctrl, in vcap_disable_rules() argument
3027 list_for_each_entry(admin, &vctrl->list, list) { in vcap_disable_rules()
3055 static bool vcap_is_enabled(struct vcap_control *vctrl, struct net_device *ndev, in vcap_is_enabled() argument
3061 list_for_each_entry(admin, &vctrl->list, list) in vcap_is_enabled()
3070 static int vcap_enable(struct vcap_control *vctrl, struct net_device *ndev, in vcap_enable() argument
3079 admin = vcap_find_admin(vctrl, dst_cid); in vcap_enable()
3095 if (vcap_path_exist(vctrl, ndev, src_cid)) { in vcap_enable()
3098 admin = vcap_find_admin(vctrl, dst_cid); in vcap_enable()
3102 vcap_enable_rules(vctrl, ndev, dst_cid); in vcap_enable()
3103 dst_cid = vcap_get_next_chain(vctrl, ndev, dst_cid); in vcap_enable()
3110 static int vcap_disable(struct vcap_control *vctrl, struct net_device *ndev, in vcap_disable() argument
3117 list_for_each_entry(admin, &vctrl->list, list) { in vcap_disable()
3135 admin = vcap_find_admin(vctrl, dst_cid); in vcap_disable()
3139 vcap_disable_rules(vctrl, ndev, dst_cid); in vcap_disable()
3140 dst_cid = vcap_get_next_chain(vctrl, ndev, dst_cid); in vcap_disable()
3151 int vcap_enable_lookups(struct vcap_control *vctrl, struct net_device *ndev, in vcap_enable_lookups() argument
3157 err = vcap_api_check(vctrl); in vcap_enable_lookups()
3171 if (vcap_is_enabled(vctrl, ndev, dst_cid)) in vcap_enable_lookups()
3173 if (vcap_is_chain_used(vctrl, ndev, src_cid)) in vcap_enable_lookups()
3175 err = vcap_enable(vctrl, ndev, cookie, src_cid, dst_cid); in vcap_enable_lookups()
3177 err = vcap_disable(vctrl, ndev, cookie); in vcap_enable_lookups()
3185 bool vcap_is_last_chain(struct vcap_control *vctrl, int cid, bool ingress) in vcap_is_last_chain() argument
3190 if (vcap_api_check(vctrl)) in vcap_is_last_chain()
3193 admin = vcap_find_admin(vctrl, cid); in vcap_is_last_chain()
3197 if (!vcap_admin_is_last(vctrl, admin, ingress)) in vcap_is_last_chain()
3220 err = vcap_api_check(ri->vctrl); in vcap_rule_set_counter()
3241 err = vcap_api_check(ri->vctrl); in vcap_rule_get_counter()
3278 struct vcap_control *vctrl = ri->vctrl; in vcap_rule_get_untyped_keyset() local
3283 keyfield_set = vctrl->vcaps[vt].keyfield_set; in vcap_rule_get_untyped_keyset()
3284 for (idx = 0; idx < vctrl->vcaps[vt].keyfield_set_size; ++idx) { in vcap_rule_get_untyped_keyset()
3298 struct vcap_control *vctrl = ri->vctrl; in vcap_rule_get_keysets() local
3319 keyfield_set = vctrl->vcaps[vt].keyfield_set; in vcap_rule_get_keysets()
3320 for (idx = 0; idx < vctrl->vcaps[vt].keyfield_set_size; ++idx) { in vcap_rule_get_keysets()
3339 int vcap_get_rule_count_by_cookie(struct vcap_control *vctrl, in vcap_get_rule_count_by_cookie() argument
3347 err = vcap_api_check(vctrl); in vcap_get_rule_count_by_cookie()
3352 list_for_each_entry(admin, &vctrl->list, list) { in vcap_get_rule_count_by_cookie()
3460 fields = vcap_keyfields(ri->vctrl, ri->admin->vtype, in vcap_filter_rule_keys()
3487 err = vcap_api_check(ri->vctrl); in vcap_copy_rule()
3491 rule = vcap_alloc_rule(ri->vctrl, ri->ndev, ri->data.vcap_chain_id, in vcap_copy_rule()