Lines Matching refs:admin

169 				 struct vcap_admin *admin,  in sparx5_vcap_type_err()  argument
173 fname, sparx5_vcaps[admin->vtype].name); in sparx5_vcap_type_err()
208 struct vcap_admin *admin, in _sparx5_vcap_range_init() argument
213 switch (admin->vtype) { in _sparx5_vcap_range_init()
258 sparx5_vcap_type_err(sparx5, admin, __func__); in _sparx5_vcap_range_init()
265 struct vcap_admin *admin) in sparx5_vcap_block_init() argument
267 _sparx5_vcap_range_init(sparx5, admin, admin->first_valid_addr, in sparx5_vcap_block_init()
268 admin->last_valid_addr - in sparx5_vcap_block_init()
269 admin->first_valid_addr); in sparx5_vcap_block_init()
693 struct vcap_admin *admin, in sparx5_vcap_get_port_keyset() argument
701 switch (admin->vtype) { in sparx5_vcap_get_port_keyset()
722 sparx5_vcap_type_err(port->sparx5, admin, __func__); in sparx5_vcap_get_port_keyset()
729 bool sparx5_vcap_is_known_etype(struct vcap_admin *admin, u16 etype) in sparx5_vcap_is_known_etype() argument
734 switch (admin->vtype) { in sparx5_vcap_is_known_etype()
761 struct vcap_admin *admin, in sparx5_vcap_validate_keyset() argument
778 switch (admin->vtype) { in sparx5_vcap_validate_keyset()
799 sparx5_vcap_type_err(port->sparx5, admin, __func__); in sparx5_vcap_validate_keyset()
817 struct vcap_admin *admin, in sparx5_vcap_ingress_add_default_fields() argument
834 if (admin->vtype == VCAP_TYPE_IS0) in sparx5_vcap_ingress_add_default_fields()
849 struct vcap_admin *admin, in sparx5_vcap_es0_add_default_fields() argument
861 struct vcap_admin *admin, in sparx5_vcap_es2_add_default_fields() argument
885 struct vcap_admin *admin, in sparx5_vcap_add_default_fields() argument
891 switch (admin->vtype) { in sparx5_vcap_add_default_fields()
894 sparx5_vcap_ingress_add_default_fields(ndev, admin, rule); in sparx5_vcap_add_default_fields()
897 sparx5_vcap_es0_add_default_fields(ndev, admin, rule); in sparx5_vcap_add_default_fields()
900 sparx5_vcap_es2_add_default_fields(ndev, admin, rule); in sparx5_vcap_add_default_fields()
904 sparx5_vcap_type_err(port->sparx5, admin, __func__); in sparx5_vcap_add_default_fields()
910 static void sparx5_vcap_cache_erase(struct vcap_admin *admin) in sparx5_vcap_cache_erase() argument
912 memset(admin->cache.keystream, 0, STREAMSIZE); in sparx5_vcap_cache_erase()
913 memset(admin->cache.maskstream, 0, STREAMSIZE); in sparx5_vcap_cache_erase()
914 memset(admin->cache.actionstream, 0, STREAMSIZE); in sparx5_vcap_cache_erase()
915 memset(&admin->cache.counter, 0, sizeof(admin->cache.counter)); in sparx5_vcap_cache_erase()
919 struct vcap_admin *admin, in sparx5_vcap_is0_cache_write() argument
927 keystr = &admin->cache.keystream[start]; in sparx5_vcap_is0_cache_write()
928 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_is0_cache_write()
929 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_is0_cache_write()
955 spx5_wr(admin->cache.counter, sparx5, in sparx5_vcap_is0_cache_write()
960 struct vcap_admin *admin, in sparx5_vcap_is2_cache_write() argument
968 keystr = &admin->cache.keystream[start]; in sparx5_vcap_is2_cache_write()
969 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_is2_cache_write()
970 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_is2_cache_write()
996 if (admin->vinst == 0) in sparx5_vcap_is2_cache_write()
997 spx5_wr(admin->cache.counter, sparx5, in sparx5_vcap_is2_cache_write()
1000 spx5_wr(admin->cache.counter, sparx5, in sparx5_vcap_is2_cache_write()
1002 spx5_wr(admin->cache.sticky, sparx5, in sparx5_vcap_is2_cache_write()
1009 struct vcap_admin *admin, u32 id) in sparx5_es0_write_esdx_counter() argument
1013 spx5_wr(admin->cache.counter, sparx5, in sparx5_es0_write_esdx_counter()
1020 struct vcap_admin *admin, in sparx5_vcap_es0_cache_write() argument
1028 keystr = &admin->cache.keystream[start]; in sparx5_vcap_es0_cache_write()
1029 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_es0_cache_write()
1030 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_es0_cache_write()
1055 spx5_wr(admin->cache.counter, sparx5, VCAP_ES0_VCAP_CNT_DAT(0)); in sparx5_vcap_es0_cache_write()
1056 sparx5_es0_write_esdx_counter(sparx5, admin, start); in sparx5_vcap_es0_cache_write()
1061 struct vcap_admin *admin, in sparx5_vcap_es2_cache_write() argument
1069 keystr = &admin->cache.keystream[start]; in sparx5_vcap_es2_cache_write()
1070 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_es2_cache_write()
1071 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_es2_cache_write()
1097 spx5_wr(admin->cache.counter, sparx5, EACL_ES2_CNT(start)); in sparx5_vcap_es2_cache_write()
1098 spx5_wr(admin->cache.sticky, sparx5, VCAP_ES2_VCAP_CNT_DAT(0)); in sparx5_vcap_es2_cache_write()
1104 struct vcap_admin *admin, in sparx5_vcap_cache_write() argument
1112 switch (admin->vtype) { in sparx5_vcap_cache_write()
1114 sparx5_vcap_is0_cache_write(sparx5, admin, sel, start, count); in sparx5_vcap_cache_write()
1117 sparx5_vcap_is2_cache_write(sparx5, admin, sel, start, count); in sparx5_vcap_cache_write()
1120 sparx5_vcap_es0_cache_write(sparx5, admin, sel, start, count); in sparx5_vcap_cache_write()
1123 sparx5_vcap_es2_cache_write(sparx5, admin, sel, start, count); in sparx5_vcap_cache_write()
1126 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_cache_write()
1132 struct vcap_admin *admin, in sparx5_vcap_is0_cache_read() argument
1140 keystr = &admin->cache.keystream[start]; in sparx5_vcap_is0_cache_read()
1141 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_is0_cache_read()
1142 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_is0_cache_read()
1159 admin->cache.counter = in sparx5_vcap_is0_cache_read()
1161 admin->cache.sticky = in sparx5_vcap_is0_cache_read()
1167 struct vcap_admin *admin, in sparx5_vcap_is2_cache_read() argument
1175 keystr = &admin->cache.keystream[start]; in sparx5_vcap_is2_cache_read()
1176 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_is2_cache_read()
1177 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_is2_cache_read()
1195 if (admin->vinst == 0) in sparx5_vcap_is2_cache_read()
1196 admin->cache.counter = in sparx5_vcap_is2_cache_read()
1199 admin->cache.counter = in sparx5_vcap_is2_cache_read()
1201 admin->cache.sticky = in sparx5_vcap_is2_cache_read()
1208 struct vcap_admin *admin, u32 id) in sparx5_es0_read_esdx_counter() argument
1218 admin->cache.counter = counter; in sparx5_es0_read_esdx_counter()
1222 struct vcap_admin *admin, in sparx5_vcap_es0_cache_read() argument
1230 keystr = &admin->cache.keystream[start]; in sparx5_vcap_es0_cache_read()
1231 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_es0_cache_read()
1232 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_es0_cache_read()
1249 admin->cache.counter = in sparx5_vcap_es0_cache_read()
1251 admin->cache.sticky = admin->cache.counter; in sparx5_vcap_es0_cache_read()
1252 sparx5_es0_read_esdx_counter(sparx5, admin, start); in sparx5_vcap_es0_cache_read()
1257 struct vcap_admin *admin, in sparx5_vcap_es2_cache_read() argument
1265 keystr = &admin->cache.keystream[start]; in sparx5_vcap_es2_cache_read()
1266 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_es2_cache_read()
1267 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_es2_cache_read()
1285 admin->cache.counter = in sparx5_vcap_es2_cache_read()
1287 admin->cache.sticky = in sparx5_vcap_es2_cache_read()
1294 struct vcap_admin *admin, in sparx5_vcap_cache_read() argument
1302 switch (admin->vtype) { in sparx5_vcap_cache_read()
1304 sparx5_vcap_is0_cache_read(sparx5, admin, sel, start, count); in sparx5_vcap_cache_read()
1307 sparx5_vcap_is2_cache_read(sparx5, admin, sel, start, count); in sparx5_vcap_cache_read()
1310 sparx5_vcap_es0_cache_read(sparx5, admin, sel, start, count); in sparx5_vcap_cache_read()
1313 sparx5_vcap_es2_cache_read(sparx5, admin, sel, start, count); in sparx5_vcap_cache_read()
1316 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_cache_read()
1323 struct vcap_admin *admin, u32 addr, in sparx5_vcap_range_init() argument
1329 _sparx5_vcap_range_init(sparx5, admin, addr, count); in sparx5_vcap_range_init()
1391 struct vcap_admin *admin, enum vcap_command cmd, in sparx5_vcap_update() argument
1397 switch (admin->vtype) { in sparx5_vcap_update()
1409 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_update()
1475 static void sparx5_vcap_move(struct net_device *ndev, struct vcap_admin *admin, in sparx5_vcap_move() argument
1493 switch (admin->vtype) { in sparx5_vcap_move()
1505 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_move()
1524 struct vcap_admin *admin) in sparx5_vcap_is0_port_key_selection() argument
1536 for (lookup = 0; lookup < admin->lookups; ++lookup) { in sparx5_vcap_is0_port_key_selection()
1550 struct vcap_admin *admin) in sparx5_vcap_is2_port_key_selection() argument
1561 for (lookup = 0; lookup < admin->lookups; ++lookup) { in sparx5_vcap_is2_port_key_selection()
1577 struct vcap_admin *admin) in sparx5_vcap_es0_port_key_selection() argument
1593 struct vcap_admin *admin) in sparx5_vcap_es2_port_key_selection() argument
1601 for (lookup = 0; lookup < admin->lookups; ++lookup) in sparx5_vcap_es2_port_key_selection()
1609 struct vcap_admin *admin) in sparx5_vcap_port_key_selection() argument
1611 switch (admin->vtype) { in sparx5_vcap_port_key_selection()
1613 sparx5_vcap_is0_port_key_selection(sparx5, admin); in sparx5_vcap_port_key_selection()
1616 sparx5_vcap_is2_port_key_selection(sparx5, admin); in sparx5_vcap_port_key_selection()
1619 sparx5_vcap_es0_port_key_selection(sparx5, admin); in sparx5_vcap_port_key_selection()
1622 sparx5_vcap_es2_port_key_selection(sparx5, admin); in sparx5_vcap_port_key_selection()
1625 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_port_key_selection()
1632 struct vcap_admin *admin) in sparx5_vcap_port_key_deselection() argument
1636 switch (admin->vtype) { in sparx5_vcap_port_key_deselection()
1638 for (lookup = 0; lookup < admin->lookups; ++lookup) in sparx5_vcap_port_key_deselection()
1657 for (lookup = 0; lookup < admin->lookups; ++lookup) in sparx5_vcap_port_key_deselection()
1665 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_port_key_deselection()
1670 static void sparx5_vcap_admin_free(struct vcap_admin *admin) in sparx5_vcap_admin_free() argument
1672 if (!admin) in sparx5_vcap_admin_free()
1674 mutex_destroy(&admin->lock); in sparx5_vcap_admin_free()
1675 kfree(admin->cache.keystream); in sparx5_vcap_admin_free()
1676 kfree(admin->cache.maskstream); in sparx5_vcap_admin_free()
1677 kfree(admin->cache.actionstream); in sparx5_vcap_admin_free()
1678 kfree(admin); in sparx5_vcap_admin_free()
1686 struct vcap_admin *admin; in sparx5_vcap_admin_alloc() local
1688 admin = kzalloc(sizeof(*admin), GFP_KERNEL); in sparx5_vcap_admin_alloc()
1689 if (!admin) in sparx5_vcap_admin_alloc()
1691 INIT_LIST_HEAD(&admin->list); in sparx5_vcap_admin_alloc()
1692 INIT_LIST_HEAD(&admin->rules); in sparx5_vcap_admin_alloc()
1693 INIT_LIST_HEAD(&admin->enabled); in sparx5_vcap_admin_alloc()
1694 mutex_init(&admin->lock); in sparx5_vcap_admin_alloc()
1695 admin->vtype = cfg->vtype; in sparx5_vcap_admin_alloc()
1696 admin->vinst = cfg->vinst; in sparx5_vcap_admin_alloc()
1697 admin->ingress = cfg->ingress; in sparx5_vcap_admin_alloc()
1698 admin->lookups = cfg->lookups; in sparx5_vcap_admin_alloc()
1699 admin->lookups_per_instance = cfg->lookups_per_instance; in sparx5_vcap_admin_alloc()
1700 admin->first_cid = cfg->first_cid; in sparx5_vcap_admin_alloc()
1701 admin->last_cid = cfg->last_cid; in sparx5_vcap_admin_alloc()
1702 admin->cache.keystream = in sparx5_vcap_admin_alloc()
1704 admin->cache.maskstream = in sparx5_vcap_admin_alloc()
1706 admin->cache.actionstream = in sparx5_vcap_admin_alloc()
1708 if (!admin->cache.keystream || !admin->cache.maskstream || in sparx5_vcap_admin_alloc()
1709 !admin->cache.actionstream) { in sparx5_vcap_admin_alloc()
1710 sparx5_vcap_admin_free(admin); in sparx5_vcap_admin_alloc()
1713 return admin; in sparx5_vcap_admin_alloc()
1718 struct vcap_admin *admin, in sparx5_vcap_block_alloc() argument
1723 switch (admin->vtype) { in sparx5_vcap_block_alloc()
1737 admin->first_valid_addr = cfg->blockno * SUPER_VCAP_BLK_SIZE; in sparx5_vcap_block_alloc()
1738 admin->last_used_addr = admin->first_valid_addr + in sparx5_vcap_block_alloc()
1740 admin->last_valid_addr = admin->last_used_addr - 1; in sparx5_vcap_block_alloc()
1743 admin->first_valid_addr = 0; in sparx5_vcap_block_alloc()
1744 admin->last_used_addr = cfg->count; in sparx5_vcap_block_alloc()
1745 admin->last_valid_addr = cfg->count - 1; in sparx5_vcap_block_alloc()
1755 admin->first_valid_addr = 0; in sparx5_vcap_block_alloc()
1756 admin->last_used_addr = cfg->count; in sparx5_vcap_block_alloc()
1757 admin->last_valid_addr = cfg->count - 1; in sparx5_vcap_block_alloc()
1767 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_block_alloc()
1777 struct vcap_admin *admin; in sparx5_vcap_init() local
1804 admin = sparx5_vcap_admin_alloc(sparx5, ctrl, cfg); in sparx5_vcap_init()
1805 if (IS_ERR(admin)) { in sparx5_vcap_init()
1806 err = PTR_ERR(admin); in sparx5_vcap_init()
1811 sparx5_vcap_block_alloc(sparx5, admin, cfg); in sparx5_vcap_init()
1812 sparx5_vcap_block_init(sparx5, admin); in sparx5_vcap_init()
1814 sparx5_vcap_port_key_selection(sparx5, admin); in sparx5_vcap_init()
1815 list_add_tail(&admin->list, &ctrl->list); in sparx5_vcap_init()
1829 struct vcap_admin *admin, *admin_next; in sparx5_vcap_destroy() local
1834 list_for_each_entry_safe(admin, admin_next, &ctrl->list, list) { in sparx5_vcap_destroy()
1835 sparx5_vcap_port_key_deselection(sparx5, admin); in sparx5_vcap_destroy()
1836 vcap_del_rules(ctrl, admin); in sparx5_vcap_destroy()
1837 list_del(&admin->list); in sparx5_vcap_destroy()
1838 sparx5_vcap_admin_free(admin); in sparx5_vcap_destroy()