Lines Matching refs:admin
55 struct vcap_admin *admin, in __lan966x_vcap_range_init() argument
61 lan966x, VCAP_MV_CFG(admin->tgt_inst)); in __lan966x_vcap_range_init()
70 lan966x, VCAP_UPDATE_CTRL(admin->tgt_inst)); in __lan966x_vcap_range_init()
72 lan966x_vcap_wait_update(lan966x, admin->tgt_inst); in __lan966x_vcap_range_init()
170 struct vcap_admin *admin, in lan966x_vcap_validate_keyset() argument
207 struct vcap_admin *admin, in lan966x_vcap_add_default_fields() argument
226 static void lan966x_vcap_cache_erase(struct vcap_admin *admin) in lan966x_vcap_cache_erase() argument
228 memset(admin->cache.keystream, 0, STREAMSIZE); in lan966x_vcap_cache_erase()
229 memset(admin->cache.maskstream, 0, STREAMSIZE); in lan966x_vcap_cache_erase()
230 memset(admin->cache.actionstream, 0, STREAMSIZE); in lan966x_vcap_cache_erase()
231 memset(&admin->cache.counter, 0, sizeof(admin->cache.counter)); in lan966x_vcap_cache_erase()
235 struct vcap_admin *admin, in lan966x_vcap_cache_write() argument
244 keystr = &admin->cache.keystream[start]; in lan966x_vcap_cache_write()
245 mskstr = &admin->cache.maskstream[start]; in lan966x_vcap_cache_write()
246 actstr = &admin->cache.actionstream[start]; in lan966x_vcap_cache_write()
252 VCAP_ENTRY_DAT(admin->tgt_inst, i)); in lan966x_vcap_cache_write()
254 VCAP_MASK_DAT(admin->tgt_inst, i)); in lan966x_vcap_cache_write()
260 VCAP_ACTION_DAT(admin->tgt_inst, i)); in lan966x_vcap_cache_write()
263 admin->cache.sticky = admin->cache.counter > 0; in lan966x_vcap_cache_write()
264 lan_wr(admin->cache.counter, lan966x, in lan966x_vcap_cache_write()
265 VCAP_CNT_DAT(admin->tgt_inst, 0)); in lan966x_vcap_cache_write()
273 struct vcap_admin *admin, in lan966x_vcap_cache_read() argument
280 int instance = admin->tgt_inst; in lan966x_vcap_cache_read()
283 keystr = &admin->cache.keystream[start]; in lan966x_vcap_cache_read()
284 mskstr = &admin->cache.maskstream[start]; in lan966x_vcap_cache_read()
285 actstr = &admin->cache.actionstream[start]; in lan966x_vcap_cache_read()
302 admin->cache.counter = in lan966x_vcap_cache_read()
304 admin->cache.sticky = admin->cache.counter > 0; in lan966x_vcap_cache_read()
309 struct vcap_admin *admin, in lan966x_vcap_range_init() argument
316 __lan966x_vcap_range_init(lan966x, admin, addr, count); in lan966x_vcap_range_init()
320 struct vcap_admin *admin, in lan966x_vcap_update() argument
333 lan966x, VCAP_MV_CFG(admin->tgt_inst)); in lan966x_vcap_update()
342 lan966x, VCAP_UPDATE_CTRL(admin->tgt_inst)); in lan966x_vcap_update()
344 lan966x_vcap_wait_update(lan966x, admin->tgt_inst); in lan966x_vcap_update()
348 struct vcap_admin *admin, in lan966x_vcap_move() argument
368 lan966x, VCAP_MV_CFG(admin->tgt_inst)); in lan966x_vcap_move()
377 lan966x, VCAP_UPDATE_CTRL(admin->tgt_inst)); in lan966x_vcap_move()
379 lan966x_vcap_wait_update(lan966x, admin->tgt_inst); in lan966x_vcap_move()
394 static void lan966x_vcap_admin_free(struct vcap_admin *admin) in lan966x_vcap_admin_free() argument
396 if (!admin) in lan966x_vcap_admin_free()
399 kfree(admin->cache.keystream); in lan966x_vcap_admin_free()
400 kfree(admin->cache.maskstream); in lan966x_vcap_admin_free()
401 kfree(admin->cache.actionstream); in lan966x_vcap_admin_free()
402 mutex_destroy(&admin->lock); in lan966x_vcap_admin_free()
403 kfree(admin); in lan966x_vcap_admin_free()
410 struct vcap_admin *admin; in lan966x_vcap_admin_alloc() local
412 admin = kzalloc(sizeof(*admin), GFP_KERNEL); in lan966x_vcap_admin_alloc()
413 if (!admin) in lan966x_vcap_admin_alloc()
416 mutex_init(&admin->lock); in lan966x_vcap_admin_alloc()
417 INIT_LIST_HEAD(&admin->list); in lan966x_vcap_admin_alloc()
418 INIT_LIST_HEAD(&admin->rules); in lan966x_vcap_admin_alloc()
419 INIT_LIST_HEAD(&admin->enabled); in lan966x_vcap_admin_alloc()
421 admin->vtype = cfg->vtype; in lan966x_vcap_admin_alloc()
422 admin->vinst = 0; in lan966x_vcap_admin_alloc()
423 admin->ingress = cfg->ingress; in lan966x_vcap_admin_alloc()
424 admin->w32be = true; in lan966x_vcap_admin_alloc()
425 admin->tgt_inst = cfg->tgt_inst; in lan966x_vcap_admin_alloc()
427 admin->lookups = cfg->lookups; in lan966x_vcap_admin_alloc()
428 admin->lookups_per_instance = cfg->lookups; in lan966x_vcap_admin_alloc()
430 admin->first_cid = cfg->first_cid; in lan966x_vcap_admin_alloc()
431 admin->last_cid = cfg->last_cid; in lan966x_vcap_admin_alloc()
433 admin->cache.keystream = kzalloc(STREAMSIZE, GFP_KERNEL); in lan966x_vcap_admin_alloc()
434 admin->cache.maskstream = kzalloc(STREAMSIZE, GFP_KERNEL); in lan966x_vcap_admin_alloc()
435 admin->cache.actionstream = kzalloc(STREAMSIZE, GFP_KERNEL); in lan966x_vcap_admin_alloc()
436 if (!admin->cache.keystream || in lan966x_vcap_admin_alloc()
437 !admin->cache.maskstream || in lan966x_vcap_admin_alloc()
438 !admin->cache.actionstream) { in lan966x_vcap_admin_alloc()
439 lan966x_vcap_admin_free(admin); in lan966x_vcap_admin_alloc()
443 return admin; in lan966x_vcap_admin_alloc()
447 struct vcap_admin *admin, in lan966x_vcap_block_init() argument
450 admin->first_valid_addr = 0; in lan966x_vcap_block_init()
451 admin->last_used_addr = cfg->count; in lan966x_vcap_block_init()
452 admin->last_valid_addr = cfg->count - 1; in lan966x_vcap_block_init()
455 lan966x, VCAP_CORE_IDX(admin->tgt_inst)); in lan966x_vcap_block_init()
457 lan966x, VCAP_CORE_MAP(admin->tgt_inst)); in lan966x_vcap_block_init()
459 __lan966x_vcap_range_init(lan966x, admin, admin->first_valid_addr, in lan966x_vcap_block_init()
460 admin->last_valid_addr - in lan966x_vcap_block_init()
461 admin->first_valid_addr); in lan966x_vcap_block_init()
465 struct vcap_admin *admin) in lan966x_vcap_port_key_deselection() argument
475 struct vcap_admin *admin; in lan966x_vcap_init() local
490 admin = lan966x_vcap_admin_alloc(lan966x, ctrl, cfg); in lan966x_vcap_init()
491 if (IS_ERR(admin)) in lan966x_vcap_init()
492 return PTR_ERR(admin); in lan966x_vcap_init()
494 lan966x_vcap_block_init(lan966x, admin, cfg); in lan966x_vcap_init()
495 lan966x_vcap_port_key_deselection(lan966x, admin); in lan966x_vcap_init()
497 list_add_tail(&admin->list, &ctrl->list); in lan966x_vcap_init()
519 struct vcap_admin *admin, *admin_next; in lan966x_vcap_deinit() local
526 list_for_each_entry_safe(admin, admin_next, &ctrl->list, list) { in lan966x_vcap_deinit()
527 lan966x_vcap_port_key_deselection(lan966x, admin); in lan966x_vcap_deinit()
528 vcap_del_rules(ctrl, admin); in lan966x_vcap_deinit()
529 list_del(&admin->list); in lan966x_vcap_deinit()
530 lan966x_vcap_admin_free(admin); in lan966x_vcap_deinit()