Lines Matching refs:admin

153 				 struct vcap_admin *admin,  in sparx5_vcap_type_err()  argument
157 fname, sparx5_vcaps[admin->vtype].name); in sparx5_vcap_type_err()
192 struct vcap_admin *admin, in _sparx5_vcap_range_init() argument
197 switch (admin->vtype) { in _sparx5_vcap_range_init()
242 sparx5_vcap_type_err(sparx5, admin, __func__); in _sparx5_vcap_range_init()
249 struct vcap_admin *admin) in sparx5_vcap_block_init() argument
251 _sparx5_vcap_range_init(sparx5, admin, admin->first_valid_addr, in sparx5_vcap_block_init()
252 admin->last_valid_addr - in sparx5_vcap_block_init()
253 admin->first_valid_addr); in sparx5_vcap_block_init()
677 struct vcap_admin *admin, in sparx5_vcap_get_port_keyset() argument
685 switch (admin->vtype) { in sparx5_vcap_get_port_keyset()
706 sparx5_vcap_type_err(port->sparx5, admin, __func__); in sparx5_vcap_get_port_keyset()
713 bool sparx5_vcap_is_known_etype(struct vcap_admin *admin, u16 etype) in sparx5_vcap_is_known_etype() argument
718 switch (admin->vtype) { in sparx5_vcap_is_known_etype()
745 struct vcap_admin *admin, in sparx5_vcap_validate_keyset() argument
762 switch (admin->vtype) { in sparx5_vcap_validate_keyset()
783 sparx5_vcap_type_err(port->sparx5, admin, __func__); in sparx5_vcap_validate_keyset()
801 struct vcap_admin *admin, in sparx5_vcap_ingress_add_default_fields() argument
818 if (admin->vtype == VCAP_TYPE_IS0) in sparx5_vcap_ingress_add_default_fields()
833 struct vcap_admin *admin, in sparx5_vcap_es0_add_default_fields() argument
845 struct vcap_admin *admin, in sparx5_vcap_es2_add_default_fields() argument
869 struct vcap_admin *admin, in sparx5_vcap_add_default_fields() argument
875 switch (admin->vtype) { in sparx5_vcap_add_default_fields()
878 sparx5_vcap_ingress_add_default_fields(ndev, admin, rule); in sparx5_vcap_add_default_fields()
881 sparx5_vcap_es0_add_default_fields(ndev, admin, rule); in sparx5_vcap_add_default_fields()
884 sparx5_vcap_es2_add_default_fields(ndev, admin, rule); in sparx5_vcap_add_default_fields()
888 sparx5_vcap_type_err(port->sparx5, admin, __func__); in sparx5_vcap_add_default_fields()
894 static void sparx5_vcap_cache_erase(struct vcap_admin *admin) in sparx5_vcap_cache_erase() argument
896 memset(admin->cache.keystream, 0, STREAMSIZE); in sparx5_vcap_cache_erase()
897 memset(admin->cache.maskstream, 0, STREAMSIZE); in sparx5_vcap_cache_erase()
898 memset(admin->cache.actionstream, 0, STREAMSIZE); in sparx5_vcap_cache_erase()
899 memset(&admin->cache.counter, 0, sizeof(admin->cache.counter)); in sparx5_vcap_cache_erase()
903 struct vcap_admin *admin, in sparx5_vcap_is0_cache_write() argument
911 keystr = &admin->cache.keystream[start]; in sparx5_vcap_is0_cache_write()
912 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_is0_cache_write()
913 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_is0_cache_write()
939 spx5_wr(admin->cache.counter, sparx5, in sparx5_vcap_is0_cache_write()
944 struct vcap_admin *admin, in sparx5_vcap_is2_cache_write() argument
952 keystr = &admin->cache.keystream[start]; in sparx5_vcap_is2_cache_write()
953 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_is2_cache_write()
954 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_is2_cache_write()
980 if (admin->vinst == 0) in sparx5_vcap_is2_cache_write()
981 spx5_wr(admin->cache.counter, sparx5, in sparx5_vcap_is2_cache_write()
984 spx5_wr(admin->cache.counter, sparx5, in sparx5_vcap_is2_cache_write()
986 spx5_wr(admin->cache.sticky, sparx5, in sparx5_vcap_is2_cache_write()
993 struct vcap_admin *admin, u32 id) in sparx5_es0_write_esdx_counter() argument
997 spx5_wr(admin->cache.counter, sparx5, in sparx5_es0_write_esdx_counter()
1004 struct vcap_admin *admin, in sparx5_vcap_es0_cache_write() argument
1012 keystr = &admin->cache.keystream[start]; in sparx5_vcap_es0_cache_write()
1013 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_es0_cache_write()
1014 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_es0_cache_write()
1039 spx5_wr(admin->cache.counter, sparx5, VCAP_ES0_VCAP_CNT_DAT(0)); in sparx5_vcap_es0_cache_write()
1040 sparx5_es0_write_esdx_counter(sparx5, admin, start); in sparx5_vcap_es0_cache_write()
1045 struct vcap_admin *admin, in sparx5_vcap_es2_cache_write() argument
1053 keystr = &admin->cache.keystream[start]; in sparx5_vcap_es2_cache_write()
1054 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_es2_cache_write()
1055 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_es2_cache_write()
1081 spx5_wr(admin->cache.counter, sparx5, EACL_ES2_CNT(start)); in sparx5_vcap_es2_cache_write()
1082 spx5_wr(admin->cache.sticky, sparx5, VCAP_ES2_VCAP_CNT_DAT(0)); in sparx5_vcap_es2_cache_write()
1088 struct vcap_admin *admin, in sparx5_vcap_cache_write() argument
1096 switch (admin->vtype) { in sparx5_vcap_cache_write()
1098 sparx5_vcap_is0_cache_write(sparx5, admin, sel, start, count); in sparx5_vcap_cache_write()
1101 sparx5_vcap_is2_cache_write(sparx5, admin, sel, start, count); in sparx5_vcap_cache_write()
1104 sparx5_vcap_es0_cache_write(sparx5, admin, sel, start, count); in sparx5_vcap_cache_write()
1107 sparx5_vcap_es2_cache_write(sparx5, admin, sel, start, count); in sparx5_vcap_cache_write()
1110 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_cache_write()
1116 struct vcap_admin *admin, in sparx5_vcap_is0_cache_read() argument
1124 keystr = &admin->cache.keystream[start]; in sparx5_vcap_is0_cache_read()
1125 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_is0_cache_read()
1126 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_is0_cache_read()
1143 admin->cache.counter = in sparx5_vcap_is0_cache_read()
1145 admin->cache.sticky = in sparx5_vcap_is0_cache_read()
1151 struct vcap_admin *admin, in sparx5_vcap_is2_cache_read() argument
1159 keystr = &admin->cache.keystream[start]; in sparx5_vcap_is2_cache_read()
1160 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_is2_cache_read()
1161 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_is2_cache_read()
1179 if (admin->vinst == 0) in sparx5_vcap_is2_cache_read()
1180 admin->cache.counter = in sparx5_vcap_is2_cache_read()
1183 admin->cache.counter = in sparx5_vcap_is2_cache_read()
1185 admin->cache.sticky = in sparx5_vcap_is2_cache_read()
1192 struct vcap_admin *admin, u32 id) in sparx5_es0_read_esdx_counter() argument
1202 admin->cache.counter = counter; in sparx5_es0_read_esdx_counter()
1206 struct vcap_admin *admin, in sparx5_vcap_es0_cache_read() argument
1214 keystr = &admin->cache.keystream[start]; in sparx5_vcap_es0_cache_read()
1215 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_es0_cache_read()
1216 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_es0_cache_read()
1233 admin->cache.counter = in sparx5_vcap_es0_cache_read()
1235 admin->cache.sticky = admin->cache.counter; in sparx5_vcap_es0_cache_read()
1236 sparx5_es0_read_esdx_counter(sparx5, admin, start); in sparx5_vcap_es0_cache_read()
1241 struct vcap_admin *admin, in sparx5_vcap_es2_cache_read() argument
1249 keystr = &admin->cache.keystream[start]; in sparx5_vcap_es2_cache_read()
1250 mskstr = &admin->cache.maskstream[start]; in sparx5_vcap_es2_cache_read()
1251 actstr = &admin->cache.actionstream[start]; in sparx5_vcap_es2_cache_read()
1269 admin->cache.counter = in sparx5_vcap_es2_cache_read()
1271 admin->cache.sticky = in sparx5_vcap_es2_cache_read()
1278 struct vcap_admin *admin, in sparx5_vcap_cache_read() argument
1286 switch (admin->vtype) { in sparx5_vcap_cache_read()
1288 sparx5_vcap_is0_cache_read(sparx5, admin, sel, start, count); in sparx5_vcap_cache_read()
1291 sparx5_vcap_is2_cache_read(sparx5, admin, sel, start, count); in sparx5_vcap_cache_read()
1294 sparx5_vcap_es0_cache_read(sparx5, admin, sel, start, count); in sparx5_vcap_cache_read()
1297 sparx5_vcap_es2_cache_read(sparx5, admin, sel, start, count); in sparx5_vcap_cache_read()
1300 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_cache_read()
1307 struct vcap_admin *admin, u32 addr, in sparx5_vcap_range_init() argument
1313 _sparx5_vcap_range_init(sparx5, admin, addr, count); in sparx5_vcap_range_init()
1375 struct vcap_admin *admin, enum vcap_command cmd, in sparx5_vcap_update() argument
1381 switch (admin->vtype) { in sparx5_vcap_update()
1393 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_update()
1459 static void sparx5_vcap_move(struct net_device *ndev, struct vcap_admin *admin, in sparx5_vcap_move() argument
1477 switch (admin->vtype) { in sparx5_vcap_move()
1489 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_move()
1736 struct vcap_admin *admin, in sparx5_vcap_set_port_keyset() argument
1745 switch (admin->vtype) { in sparx5_vcap_set_port_keyset()
1771 sparx5_vcap_type_err(port->sparx5, admin, __func__); in sparx5_vcap_set_port_keyset()
1778 struct vcap_admin *admin) in sparx5_vcap_is0_port_key_selection() argument
1791 for (lookup = 0; lookup < admin->lookups; ++lookup) { in sparx5_vcap_is0_port_key_selection()
1805 struct vcap_admin *admin) in sparx5_vcap_is2_port_key_selection() argument
1817 for (lookup = 0; lookup < admin->lookups; ++lookup) { in sparx5_vcap_is2_port_key_selection()
1833 struct vcap_admin *admin) in sparx5_vcap_es0_port_key_selection() argument
1850 struct vcap_admin *admin) in sparx5_vcap_es2_port_key_selection() argument
1859 for (lookup = 0; lookup < admin->lookups; ++lookup) in sparx5_vcap_es2_port_key_selection()
1867 struct vcap_admin *admin) in sparx5_vcap_port_key_selection() argument
1869 switch (admin->vtype) { in sparx5_vcap_port_key_selection()
1871 sparx5_vcap_is0_port_key_selection(sparx5, admin); in sparx5_vcap_port_key_selection()
1874 sparx5_vcap_is2_port_key_selection(sparx5, admin); in sparx5_vcap_port_key_selection()
1877 sparx5_vcap_es0_port_key_selection(sparx5, admin); in sparx5_vcap_port_key_selection()
1880 sparx5_vcap_es2_port_key_selection(sparx5, admin); in sparx5_vcap_port_key_selection()
1883 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_port_key_selection()
1890 struct vcap_admin *admin) in sparx5_vcap_port_key_deselection() argument
1895 switch (admin->vtype) { in sparx5_vcap_port_key_deselection()
1897 for (lookup = 0; lookup < admin->lookups; ++lookup) in sparx5_vcap_port_key_deselection()
1916 for (lookup = 0; lookup < admin->lookups; ++lookup) in sparx5_vcap_port_key_deselection()
1924 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_port_key_deselection()
1929 static void sparx5_vcap_admin_free(struct vcap_admin *admin) in sparx5_vcap_admin_free() argument
1931 if (!admin) in sparx5_vcap_admin_free()
1933 mutex_destroy(&admin->lock); in sparx5_vcap_admin_free()
1934 kfree(admin->cache.keystream); in sparx5_vcap_admin_free()
1935 kfree(admin->cache.maskstream); in sparx5_vcap_admin_free()
1936 kfree(admin->cache.actionstream); in sparx5_vcap_admin_free()
1937 kfree(admin); in sparx5_vcap_admin_free()
1945 struct vcap_admin *admin; in sparx5_vcap_admin_alloc() local
1947 admin = kzalloc(sizeof(*admin), GFP_KERNEL); in sparx5_vcap_admin_alloc()
1948 if (!admin) in sparx5_vcap_admin_alloc()
1950 INIT_LIST_HEAD(&admin->list); in sparx5_vcap_admin_alloc()
1951 INIT_LIST_HEAD(&admin->rules); in sparx5_vcap_admin_alloc()
1952 INIT_LIST_HEAD(&admin->enabled); in sparx5_vcap_admin_alloc()
1953 mutex_init(&admin->lock); in sparx5_vcap_admin_alloc()
1954 admin->vtype = cfg->vtype; in sparx5_vcap_admin_alloc()
1955 admin->vinst = cfg->vinst; in sparx5_vcap_admin_alloc()
1956 admin->ingress = cfg->ingress; in sparx5_vcap_admin_alloc()
1957 admin->lookups = cfg->lookups; in sparx5_vcap_admin_alloc()
1958 admin->lookups_per_instance = cfg->lookups_per_instance; in sparx5_vcap_admin_alloc()
1959 admin->first_cid = cfg->first_cid; in sparx5_vcap_admin_alloc()
1960 admin->last_cid = cfg->last_cid; in sparx5_vcap_admin_alloc()
1961 admin->cache.keystream = in sparx5_vcap_admin_alloc()
1963 admin->cache.maskstream = in sparx5_vcap_admin_alloc()
1965 admin->cache.actionstream = in sparx5_vcap_admin_alloc()
1967 if (!admin->cache.keystream || !admin->cache.maskstream || in sparx5_vcap_admin_alloc()
1968 !admin->cache.actionstream) { in sparx5_vcap_admin_alloc()
1969 sparx5_vcap_admin_free(admin); in sparx5_vcap_admin_alloc()
1972 return admin; in sparx5_vcap_admin_alloc()
1977 struct vcap_admin *admin, in sparx5_vcap_block_alloc() argument
1982 switch (admin->vtype) { in sparx5_vcap_block_alloc()
1996 admin->first_valid_addr = cfg->blockno * SUPER_VCAP_BLK_SIZE; in sparx5_vcap_block_alloc()
1997 admin->last_used_addr = admin->first_valid_addr + in sparx5_vcap_block_alloc()
1999 admin->last_valid_addr = admin->last_used_addr - 1; in sparx5_vcap_block_alloc()
2002 admin->first_valid_addr = 0; in sparx5_vcap_block_alloc()
2003 admin->last_used_addr = cfg->count; in sparx5_vcap_block_alloc()
2004 admin->last_valid_addr = cfg->count - 1; in sparx5_vcap_block_alloc()
2014 admin->first_valid_addr = 0; in sparx5_vcap_block_alloc()
2015 admin->last_used_addr = cfg->count; in sparx5_vcap_block_alloc()
2016 admin->last_valid_addr = cfg->count - 1; in sparx5_vcap_block_alloc()
2026 sparx5_vcap_type_err(sparx5, admin, __func__); in sparx5_vcap_block_alloc()
2037 struct vcap_admin *admin; in sparx5_vcap_init() local
2064 admin = sparx5_vcap_admin_alloc(sparx5, ctrl, cfg); in sparx5_vcap_init()
2065 if (IS_ERR(admin)) { in sparx5_vcap_init()
2066 err = PTR_ERR(admin); in sparx5_vcap_init()
2071 sparx5_vcap_block_alloc(sparx5, admin, cfg); in sparx5_vcap_init()
2072 sparx5_vcap_block_init(sparx5, admin); in sparx5_vcap_init()
2074 sparx5_vcap_port_key_selection(sparx5, admin); in sparx5_vcap_init()
2075 list_add_tail(&admin->list, &ctrl->list); in sparx5_vcap_init()
2089 struct vcap_admin *admin, *admin_next; in sparx5_vcap_destroy() local
2094 list_for_each_entry_safe(admin, admin_next, &ctrl->list, list) { in sparx5_vcap_destroy()
2095 sparx5_vcap_port_key_deselection(sparx5, admin); in sparx5_vcap_destroy()
2096 vcap_del_rules(ctrl, admin); in sparx5_vcap_destroy()
2097 list_del(&admin->list); in sparx5_vcap_destroy()
2098 sparx5_vcap_admin_free(admin); in sparx5_vcap_destroy()