Lines Matching refs:admin
79 struct vcap_admin *admin, in __lan966x_vcap_range_init() argument
85 lan966x, VCAP_MV_CFG(admin->tgt_inst)); in __lan966x_vcap_range_init()
94 lan966x, VCAP_UPDATE_CTRL(admin->tgt_inst)); in __lan966x_vcap_range_init()
96 lan966x_vcap_wait_update(lan966x, admin->tgt_inst); in __lan966x_vcap_range_init()
269 struct vcap_admin *admin, in lan966x_vcap_validate_keyset() argument
285 switch (admin->vtype) { in lan966x_vcap_validate_keyset()
300 lan966x_vcaps[admin->vtype].name); in lan966x_vcap_validate_keyset()
323 struct vcap_admin *admin, in lan966x_vcap_is1_add_default_fields() argument
339 struct vcap_admin *admin, in lan966x_vcap_is2_add_default_fields() argument
358 struct vcap_admin *admin, in lan966x_vcap_es0_add_default_fields() argument
366 struct vcap_admin *admin, in lan966x_vcap_add_default_fields() argument
371 switch (admin->vtype) { in lan966x_vcap_add_default_fields()
373 lan966x_vcap_is1_add_default_fields(port, admin, rule); in lan966x_vcap_add_default_fields()
376 lan966x_vcap_is2_add_default_fields(port, admin, rule); in lan966x_vcap_add_default_fields()
379 lan966x_vcap_es0_add_default_fields(port, admin, rule); in lan966x_vcap_add_default_fields()
383 lan966x_vcaps[admin->vtype].name); in lan966x_vcap_add_default_fields()
388 static void lan966x_vcap_cache_erase(struct vcap_admin *admin) in lan966x_vcap_cache_erase() argument
390 memset(admin->cache.keystream, 0, STREAMSIZE); in lan966x_vcap_cache_erase()
391 memset(admin->cache.maskstream, 0, STREAMSIZE); in lan966x_vcap_cache_erase()
392 memset(admin->cache.actionstream, 0, STREAMSIZE); in lan966x_vcap_cache_erase()
393 memset(&admin->cache.counter, 0, sizeof(admin->cache.counter)); in lan966x_vcap_cache_erase()
401 struct vcap_admin *admin, u32 id) in lan966x_es0_read_esdx_counter() argument
412 admin->cache.counter = counter; in lan966x_es0_read_esdx_counter()
416 struct vcap_admin *admin, u32 id) in lan966x_es0_write_esdx_counter() argument
423 lan_wr(admin->cache.counter, lan966x, in lan966x_es0_write_esdx_counter()
431 struct vcap_admin *admin, in lan966x_vcap_cache_write() argument
440 keystr = &admin->cache.keystream[start]; in lan966x_vcap_cache_write()
441 mskstr = &admin->cache.maskstream[start]; in lan966x_vcap_cache_write()
442 actstr = &admin->cache.actionstream[start]; in lan966x_vcap_cache_write()
448 VCAP_ENTRY_DAT(admin->tgt_inst, i)); in lan966x_vcap_cache_write()
450 VCAP_MASK_DAT(admin->tgt_inst, i)); in lan966x_vcap_cache_write()
456 VCAP_ACTION_DAT(admin->tgt_inst, i)); in lan966x_vcap_cache_write()
459 admin->cache.sticky = admin->cache.counter > 0; in lan966x_vcap_cache_write()
460 lan_wr(admin->cache.counter, lan966x, in lan966x_vcap_cache_write()
461 VCAP_CNT_DAT(admin->tgt_inst, 0)); in lan966x_vcap_cache_write()
463 if (admin->vtype == VCAP_TYPE_ES0) in lan966x_vcap_cache_write()
464 lan966x_es0_write_esdx_counter(lan966x, admin, start); in lan966x_vcap_cache_write()
472 struct vcap_admin *admin, in lan966x_vcap_cache_read() argument
479 int instance = admin->tgt_inst; in lan966x_vcap_cache_read()
482 keystr = &admin->cache.keystream[start]; in lan966x_vcap_cache_read()
483 mskstr = &admin->cache.maskstream[start]; in lan966x_vcap_cache_read()
484 actstr = &admin->cache.actionstream[start]; in lan966x_vcap_cache_read()
501 admin->cache.counter = in lan966x_vcap_cache_read()
503 admin->cache.sticky = admin->cache.counter > 0; in lan966x_vcap_cache_read()
505 if (admin->vtype == VCAP_TYPE_ES0) in lan966x_vcap_cache_read()
506 lan966x_es0_read_esdx_counter(lan966x, admin, start); in lan966x_vcap_cache_read()
511 struct vcap_admin *admin, in lan966x_vcap_range_init() argument
518 __lan966x_vcap_range_init(lan966x, admin, addr, count); in lan966x_vcap_range_init()
522 struct vcap_admin *admin, in lan966x_vcap_update() argument
535 lan966x, VCAP_MV_CFG(admin->tgt_inst)); in lan966x_vcap_update()
544 lan966x, VCAP_UPDATE_CTRL(admin->tgt_inst)); in lan966x_vcap_update()
546 lan966x_vcap_wait_update(lan966x, admin->tgt_inst); in lan966x_vcap_update()
550 struct vcap_admin *admin, in lan966x_vcap_move() argument
570 lan966x, VCAP_MV_CFG(admin->tgt_inst)); in lan966x_vcap_move()
579 lan966x, VCAP_UPDATE_CTRL(admin->tgt_inst)); in lan966x_vcap_move()
581 lan966x_vcap_wait_update(lan966x, admin->tgt_inst); in lan966x_vcap_move()
596 static void lan966x_vcap_admin_free(struct vcap_admin *admin) in lan966x_vcap_admin_free() argument
598 if (!admin) in lan966x_vcap_admin_free()
601 kfree(admin->cache.keystream); in lan966x_vcap_admin_free()
602 kfree(admin->cache.maskstream); in lan966x_vcap_admin_free()
603 kfree(admin->cache.actionstream); in lan966x_vcap_admin_free()
604 mutex_destroy(&admin->lock); in lan966x_vcap_admin_free()
605 kfree(admin); in lan966x_vcap_admin_free()
612 struct vcap_admin *admin; in lan966x_vcap_admin_alloc() local
614 admin = kzalloc(sizeof(*admin), GFP_KERNEL); in lan966x_vcap_admin_alloc()
615 if (!admin) in lan966x_vcap_admin_alloc()
618 mutex_init(&admin->lock); in lan966x_vcap_admin_alloc()
619 INIT_LIST_HEAD(&admin->list); in lan966x_vcap_admin_alloc()
620 INIT_LIST_HEAD(&admin->rules); in lan966x_vcap_admin_alloc()
621 INIT_LIST_HEAD(&admin->enabled); in lan966x_vcap_admin_alloc()
623 admin->vtype = cfg->vtype; in lan966x_vcap_admin_alloc()
624 admin->vinst = 0; in lan966x_vcap_admin_alloc()
625 admin->ingress = cfg->ingress; in lan966x_vcap_admin_alloc()
626 admin->w32be = true; in lan966x_vcap_admin_alloc()
627 admin->tgt_inst = cfg->tgt_inst; in lan966x_vcap_admin_alloc()
629 admin->lookups = cfg->lookups; in lan966x_vcap_admin_alloc()
630 admin->lookups_per_instance = cfg->lookups; in lan966x_vcap_admin_alloc()
632 admin->first_cid = cfg->first_cid; in lan966x_vcap_admin_alloc()
633 admin->last_cid = cfg->last_cid; in lan966x_vcap_admin_alloc()
635 admin->cache.keystream = kzalloc(STREAMSIZE, GFP_KERNEL); in lan966x_vcap_admin_alloc()
636 admin->cache.maskstream = kzalloc(STREAMSIZE, GFP_KERNEL); in lan966x_vcap_admin_alloc()
637 admin->cache.actionstream = kzalloc(STREAMSIZE, GFP_KERNEL); in lan966x_vcap_admin_alloc()
638 if (!admin->cache.keystream || in lan966x_vcap_admin_alloc()
639 !admin->cache.maskstream || in lan966x_vcap_admin_alloc()
640 !admin->cache.actionstream) { in lan966x_vcap_admin_alloc()
641 lan966x_vcap_admin_free(admin); in lan966x_vcap_admin_alloc()
645 return admin; in lan966x_vcap_admin_alloc()
649 struct vcap_admin *admin, in lan966x_vcap_block_init() argument
652 admin->first_valid_addr = 0; in lan966x_vcap_block_init()
653 admin->last_used_addr = cfg->count; in lan966x_vcap_block_init()
654 admin->last_valid_addr = cfg->count - 1; in lan966x_vcap_block_init()
657 lan966x, VCAP_CORE_IDX(admin->tgt_inst)); in lan966x_vcap_block_init()
659 lan966x, VCAP_CORE_MAP(admin->tgt_inst)); in lan966x_vcap_block_init()
661 __lan966x_vcap_range_init(lan966x, admin, admin->first_valid_addr, in lan966x_vcap_block_init()
662 admin->last_valid_addr - in lan966x_vcap_block_init()
663 admin->first_valid_addr); in lan966x_vcap_block_init()
667 struct vcap_admin *admin) in lan966x_vcap_port_key_deselection() argument
671 switch (admin->vtype) { in lan966x_vcap_port_key_deselection()
703 lan966x_vcaps[admin->vtype].name); in lan966x_vcap_port_key_deselection()
712 struct vcap_admin *admin; in lan966x_vcap_init() local
727 admin = lan966x_vcap_admin_alloc(lan966x, ctrl, cfg); in lan966x_vcap_init()
728 if (IS_ERR(admin)) in lan966x_vcap_init()
729 return PTR_ERR(admin); in lan966x_vcap_init()
731 lan966x_vcap_block_init(lan966x, admin, cfg); in lan966x_vcap_init()
732 lan966x_vcap_port_key_deselection(lan966x, admin); in lan966x_vcap_init()
734 list_add_tail(&admin->list, &ctrl->list); in lan966x_vcap_init()
769 struct vcap_admin *admin, *admin_next; in lan966x_vcap_deinit() local
776 list_for_each_entry_safe(admin, admin_next, &ctrl->list, list) { in lan966x_vcap_deinit()
777 lan966x_vcap_port_key_deselection(lan966x, admin); in lan966x_vcap_deinit()
778 vcap_del_rules(ctrl, admin); in lan966x_vcap_deinit()
779 list_del(&admin->list); in lan966x_vcap_deinit()
780 lan966x_vcap_admin_free(admin); in lan966x_vcap_deinit()