Lines Matching defs:admin

169 				 struct vcap_admin *admin,
173 fname, sparx5_vcaps[admin->vtype].name);
208 struct vcap_admin *admin,
213 switch (admin->vtype) {
258 sparx5_vcap_type_err(sparx5, admin, __func__);
265 struct vcap_admin *admin)
267 _sparx5_vcap_range_init(sparx5, admin, admin->first_valid_addr,
268 admin->last_valid_addr -
269 admin->first_valid_addr);
693 struct vcap_admin *admin,
701 switch (admin->vtype) {
722 sparx5_vcap_type_err(port->sparx5, admin, __func__);
729 bool sparx5_vcap_is_known_etype(struct vcap_admin *admin, u16 etype)
734 switch (admin->vtype) {
761 struct vcap_admin *admin,
778 switch (admin->vtype) {
799 sparx5_vcap_type_err(port->sparx5, admin, __func__);
817 struct vcap_admin *admin,
834 if (admin->vtype == VCAP_TYPE_IS0)
849 struct vcap_admin *admin,
861 struct vcap_admin *admin,
885 struct vcap_admin *admin,
891 switch (admin->vtype) {
894 sparx5_vcap_ingress_add_default_fields(ndev, admin, rule);
897 sparx5_vcap_es0_add_default_fields(ndev, admin, rule);
900 sparx5_vcap_es2_add_default_fields(ndev, admin, rule);
904 sparx5_vcap_type_err(port->sparx5, admin, __func__);
910 static void sparx5_vcap_cache_erase(struct vcap_admin *admin)
912 memset(admin->cache.keystream, 0, STREAMSIZE);
913 memset(admin->cache.maskstream, 0, STREAMSIZE);
914 memset(admin->cache.actionstream, 0, STREAMSIZE);
915 memset(&admin->cache.counter, 0, sizeof(admin->cache.counter));
919 struct vcap_admin *admin,
927 keystr = &admin->cache.keystream[start];
928 mskstr = &admin->cache.maskstream[start];
929 actstr = &admin->cache.actionstream[start];
955 spx5_wr(admin->cache.counter, sparx5,
960 struct vcap_admin *admin,
968 keystr = &admin->cache.keystream[start];
969 mskstr = &admin->cache.maskstream[start];
970 actstr = &admin->cache.actionstream[start];
996 if (admin->vinst == 0)
997 spx5_wr(admin->cache.counter, sparx5,
1000 spx5_wr(admin->cache.counter, sparx5,
1002 spx5_wr(admin->cache.sticky, sparx5,
1009 struct vcap_admin *admin, u32 id)
1013 spx5_wr(admin->cache.counter, sparx5,
1020 struct vcap_admin *admin,
1028 keystr = &admin->cache.keystream[start];
1029 mskstr = &admin->cache.maskstream[start];
1030 actstr = &admin->cache.actionstream[start];
1055 spx5_wr(admin->cache.counter, sparx5, VCAP_ES0_VCAP_CNT_DAT(0));
1056 sparx5_es0_write_esdx_counter(sparx5, admin, start);
1061 struct vcap_admin *admin,
1069 keystr = &admin->cache.keystream[start];
1070 mskstr = &admin->cache.maskstream[start];
1071 actstr = &admin->cache.actionstream[start];
1097 spx5_wr(admin->cache.counter, sparx5, EACL_ES2_CNT(start));
1098 spx5_wr(admin->cache.sticky, sparx5, VCAP_ES2_VCAP_CNT_DAT(0));
1104 struct vcap_admin *admin,
1112 switch (admin->vtype) {
1114 sparx5_vcap_is0_cache_write(sparx5, admin, sel, start, count);
1117 sparx5_vcap_is2_cache_write(sparx5, admin, sel, start, count);
1120 sparx5_vcap_es0_cache_write(sparx5, admin, sel, start, count);
1123 sparx5_vcap_es2_cache_write(sparx5, admin, sel, start, count);
1126 sparx5_vcap_type_err(sparx5, admin, __func__);
1132 struct vcap_admin *admin,
1140 keystr = &admin->cache.keystream[start];
1141 mskstr = &admin->cache.maskstream[start];
1142 actstr = &admin->cache.actionstream[start];
1159 admin->cache.counter =
1161 admin->cache.sticky =
1167 struct vcap_admin *admin,
1175 keystr = &admin->cache.keystream[start];
1176 mskstr = &admin->cache.maskstream[start];
1177 actstr = &admin->cache.actionstream[start];
1195 if (admin->vinst == 0)
1196 admin->cache.counter =
1199 admin->cache.counter =
1201 admin->cache.sticky =
1208 struct vcap_admin *admin, u32 id)
1218 admin->cache.counter = counter;
1222 struct vcap_admin *admin,
1230 keystr = &admin->cache.keystream[start];
1231 mskstr = &admin->cache.maskstream[start];
1232 actstr = &admin->cache.actionstream[start];
1249 admin->cache.counter =
1251 admin->cache.sticky = admin->cache.counter;
1252 sparx5_es0_read_esdx_counter(sparx5, admin, start);
1257 struct vcap_admin *admin,
1265 keystr = &admin->cache.keystream[start];
1266 mskstr = &admin->cache.maskstream[start];
1267 actstr = &admin->cache.actionstream[start];
1285 admin->cache.counter =
1287 admin->cache.sticky =
1294 struct vcap_admin *admin,
1302 switch (admin->vtype) {
1304 sparx5_vcap_is0_cache_read(sparx5, admin, sel, start, count);
1307 sparx5_vcap_is2_cache_read(sparx5, admin, sel, start, count);
1310 sparx5_vcap_es0_cache_read(sparx5, admin, sel, start, count);
1313 sparx5_vcap_es2_cache_read(sparx5, admin, sel, start, count);
1316 sparx5_vcap_type_err(sparx5, admin, __func__);
1323 struct vcap_admin *admin, u32 addr,
1329 _sparx5_vcap_range_init(sparx5, admin, addr, count);
1391 struct vcap_admin *admin, enum vcap_command cmd,
1397 switch (admin->vtype) {
1409 sparx5_vcap_type_err(sparx5, admin, __func__);
1475 static void sparx5_vcap_move(struct net_device *ndev, struct vcap_admin *admin,
1493 switch (admin->vtype) {
1505 sparx5_vcap_type_err(sparx5, admin, __func__);
1752 struct vcap_admin *admin,
1761 switch (admin->vtype) {
1787 sparx5_vcap_type_err(port->sparx5, admin, __func__);
1794 struct vcap_admin *admin)
1806 for (lookup = 0; lookup < admin->lookups; ++lookup) {
1820 struct vcap_admin *admin)
1831 for (lookup = 0; lookup < admin->lookups; ++lookup) {
1847 struct vcap_admin *admin)
1863 struct vcap_admin *admin)
1871 for (lookup = 0; lookup < admin->lookups; ++lookup)
1879 struct vcap_admin *admin)
1881 switch (admin->vtype) {
1883 sparx5_vcap_is0_port_key_selection(sparx5, admin);
1886 sparx5_vcap_is2_port_key_selection(sparx5, admin);
1889 sparx5_vcap_es0_port_key_selection(sparx5, admin);
1892 sparx5_vcap_es2_port_key_selection(sparx5, admin);
1895 sparx5_vcap_type_err(sparx5, admin, __func__);
1902 struct vcap_admin *admin)
1906 switch (admin->vtype) {
1908 for (lookup = 0; lookup < admin->lookups; ++lookup)
1927 for (lookup = 0; lookup < admin->lookups; ++lookup)
1935 sparx5_vcap_type_err(sparx5, admin, __func__);
1940 static void sparx5_vcap_admin_free(struct vcap_admin *admin)
1942 if (!admin)
1944 mutex_destroy(&admin->lock);
1945 kfree(admin->cache.keystream);
1946 kfree(admin->cache.maskstream);
1947 kfree(admin->cache.actionstream);
1948 kfree(admin);
1956 struct vcap_admin *admin;
1958 admin = kzalloc(sizeof(*admin), GFP_KERNEL);
1959 if (!admin)
1961 INIT_LIST_HEAD(&admin->list);
1962 INIT_LIST_HEAD(&admin->rules);
1963 INIT_LIST_HEAD(&admin->enabled);
1964 mutex_init(&admin->lock);
1965 admin->vtype = cfg->vtype;
1966 admin->vinst = cfg->vinst;
1967 admin->ingress = cfg->ingress;
1968 admin->lookups = cfg->lookups;
1969 admin->lookups_per_instance = cfg->lookups_per_instance;
1970 admin->first_cid = cfg->first_cid;
1971 admin->last_cid = cfg->last_cid;
1972 admin->cache.keystream =
1974 admin->cache.maskstream =
1976 admin->cache.actionstream =
1978 if (!admin->cache.keystream || !admin->cache.maskstream ||
1979 !admin->cache.actionstream) {
1980 sparx5_vcap_admin_free(admin);
1983 return admin;
1988 struct vcap_admin *admin,
1993 switch (admin->vtype) {
2007 admin->first_valid_addr = cfg->blockno * SUPER_VCAP_BLK_SIZE;
2008 admin->last_used_addr = admin->first_valid_addr +
2010 admin->last_valid_addr = admin->last_used_addr - 1;
2013 admin->first_valid_addr = 0;
2014 admin->last_used_addr = cfg->count;
2015 admin->last_valid_addr = cfg->count - 1;
2025 admin->first_valid_addr = 0;
2026 admin->last_used_addr = cfg->count;
2027 admin->last_valid_addr = cfg->count - 1;
2037 sparx5_vcap_type_err(sparx5, admin, __func__);
2047 struct vcap_admin *admin;
2074 admin = sparx5_vcap_admin_alloc(sparx5, ctrl, cfg);
2075 if (IS_ERR(admin)) {
2076 err = PTR_ERR(admin);
2081 sparx5_vcap_block_alloc(sparx5, admin, cfg);
2082 sparx5_vcap_block_init(sparx5, admin);
2084 sparx5_vcap_port_key_selection(sparx5, admin);
2085 list_add_tail(&admin->list, &ctrl->list);
2099 struct vcap_admin *admin, *admin_next;
2104 list_for_each_entry_safe(admin, admin_next, &ctrl->list, list) {
2105 sparx5_vcap_port_key_deselection(sparx5, admin);
2106 vcap_del_rules(ctrl, admin);
2107 list_del(&admin->list);
2108 sparx5_vcap_admin_free(admin);