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()
1752 struct vcap_admin *admin, in sparx5_vcap_set_port_keyset() argument
1761 switch (admin->vtype) { in sparx5_vcap_set_port_keyset()
1787 sparx5_vcap_type_err(port->sparx5, admin, __func__); in sparx5_vcap_set_port_keyset()
1794 struct vcap_admin *admin) in sparx5_vcap_is0_port_key_selection() argument
1806 for (lookup = 0; lookup < admin->lookups; ++lookup) { in sparx5_vcap_is0_port_key_selection()
1820 struct vcap_admin *admin) in sparx5_vcap_is2_port_key_selection() argument
1831 for (lookup = 0; lookup < admin->lookups; ++lookup) { in sparx5_vcap_is2_port_key_selection()
1847 struct vcap_admin *admin) in sparx5_vcap_es0_port_key_selection() argument
1863 struct vcap_admin *admin) in sparx5_vcap_es2_port_key_selection() argument
1871 for (lookup = 0; lookup < admin->lookups; ++lookup) in sparx5_vcap_es2_port_key_selection()
1879 struct vcap_admin *admin) in sparx5_vcap_port_key_selection() argument
1881 switch (admin->vtype) { in sparx5_vcap_port_key_selection()
1883 sparx5_vcap_is0_port_key_selection(sparx5, admin); in sparx5_vcap_port_key_selection()
1886 sparx5_vcap_is2_port_key_selection(sparx5, admin); in sparx5_vcap_port_key_selection()
1889 sparx5_vcap_es0_port_key_selection(sparx5, admin); in sparx5_vcap_port_key_selection()
1892 sparx5_vcap_es2_port_key_selection(sparx5, admin); in sparx5_vcap_port_key_selection()
1895 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_port_key_selection()
1902 struct vcap_admin *admin) in sparx5_vcap_port_key_deselection() argument
1906 switch (admin->vtype) { in sparx5_vcap_port_key_deselection()
1908 for (lookup = 0; lookup < admin->lookups; ++lookup) in sparx5_vcap_port_key_deselection()
1927 for (lookup = 0; lookup < admin->lookups; ++lookup) in sparx5_vcap_port_key_deselection()
1935 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_port_key_deselection()
1940 static void sparx5_vcap_admin_free(struct vcap_admin *admin) in sparx5_vcap_admin_free() argument
1942 if (!admin) in sparx5_vcap_admin_free()
1944 mutex_destroy(&admin->lock); in sparx5_vcap_admin_free()
1945 kfree(admin->cache.keystream); in sparx5_vcap_admin_free()
1946 kfree(admin->cache.maskstream); in sparx5_vcap_admin_free()
1947 kfree(admin->cache.actionstream); in sparx5_vcap_admin_free()
1948 kfree(admin); in sparx5_vcap_admin_free()
1956 struct vcap_admin *admin; in sparx5_vcap_admin_alloc() local
1958 admin = kzalloc(sizeof(*admin), GFP_KERNEL); in sparx5_vcap_admin_alloc()
1959 if (!admin) in sparx5_vcap_admin_alloc()
1961 INIT_LIST_HEAD(&admin->list); in sparx5_vcap_admin_alloc()
1962 INIT_LIST_HEAD(&admin->rules); in sparx5_vcap_admin_alloc()
1963 INIT_LIST_HEAD(&admin->enabled); in sparx5_vcap_admin_alloc()
1964 mutex_init(&admin->lock); in sparx5_vcap_admin_alloc()
1965 admin->vtype = cfg->vtype; in sparx5_vcap_admin_alloc()
1966 admin->vinst = cfg->vinst; in sparx5_vcap_admin_alloc()
1967 admin->ingress = cfg->ingress; in sparx5_vcap_admin_alloc()
1968 admin->lookups = cfg->lookups; in sparx5_vcap_admin_alloc()
1969 admin->lookups_per_instance = cfg->lookups_per_instance; in sparx5_vcap_admin_alloc()
1970 admin->first_cid = cfg->first_cid; in sparx5_vcap_admin_alloc()
1971 admin->last_cid = cfg->last_cid; in sparx5_vcap_admin_alloc()
1972 admin->cache.keystream = in sparx5_vcap_admin_alloc()
1974 admin->cache.maskstream = in sparx5_vcap_admin_alloc()
1976 admin->cache.actionstream = in sparx5_vcap_admin_alloc()
1978 if (!admin->cache.keystream || !admin->cache.maskstream || in sparx5_vcap_admin_alloc()
1979 !admin->cache.actionstream) { in sparx5_vcap_admin_alloc()
1980 sparx5_vcap_admin_free(admin); in sparx5_vcap_admin_alloc()
1983 return admin; in sparx5_vcap_admin_alloc()
1988 struct vcap_admin *admin, in sparx5_vcap_block_alloc() argument
1993 switch (admin->vtype) { in sparx5_vcap_block_alloc()
2007 admin->first_valid_addr = cfg->blockno * SUPER_VCAP_BLK_SIZE; in sparx5_vcap_block_alloc()
2008 admin->last_used_addr = admin->first_valid_addr + in sparx5_vcap_block_alloc()
2010 admin->last_valid_addr = admin->last_used_addr - 1; in sparx5_vcap_block_alloc()
2013 admin->first_valid_addr = 0; in sparx5_vcap_block_alloc()
2014 admin->last_used_addr = cfg->count; in sparx5_vcap_block_alloc()
2015 admin->last_valid_addr = cfg->count - 1; in sparx5_vcap_block_alloc()
2025 admin->first_valid_addr = 0; in sparx5_vcap_block_alloc()
2026 admin->last_used_addr = cfg->count; in sparx5_vcap_block_alloc()
2027 admin->last_valid_addr = cfg->count - 1; in sparx5_vcap_block_alloc()
2037 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_block_alloc()
2047 struct vcap_admin *admin; in sparx5_vcap_init() local
2074 admin = sparx5_vcap_admin_alloc(sparx5, ctrl, cfg); in sparx5_vcap_init()
2075 if (IS_ERR(admin)) { in sparx5_vcap_init()
2076 err = PTR_ERR(admin); in sparx5_vcap_init()
2081 sparx5_vcap_block_alloc(sparx5, admin, cfg); in sparx5_vcap_init()
2082 sparx5_vcap_block_init(sparx5, admin); in sparx5_vcap_init()
2084 sparx5_vcap_port_key_selection(sparx5, admin); in sparx5_vcap_init()
2085 list_add_tail(&admin->list, &ctrl->list); in sparx5_vcap_init()
2099 struct vcap_admin *admin, *admin_next; in sparx5_vcap_destroy() local
2104 list_for_each_entry_safe(admin, admin_next, &ctrl->list, list) { in sparx5_vcap_destroy()
2105 sparx5_vcap_port_key_deselection(sparx5, admin); in sparx5_vcap_destroy()
2106 vcap_del_rules(ctrl, admin); in sparx5_vcap_destroy()
2107 list_del(&admin->list); in sparx5_vcap_destroy()
2108 sparx5_vcap_admin_free(admin); in sparx5_vcap_destroy()