Lines Matching refs:sfi
1892 struct felix_stream_filter *sfi)
1896 if (sfi->index > VSC9959_PSFP_SFID_MAX)
1899 if (!sfi->enable) {
1900 ocelot_write(ocelot, ANA_TABLES_SFIDTIDX_SFID_INDEX(sfi->index),
1911 if (sfi->sgid > VSC9959_PSFP_GATE_ID_MAX ||
1912 sfi->fmid > VSC9959_PSFP_POLICER_MAX)
1916 (sfi->sg_valid ? ANA_TABLES_SFIDTIDX_SGID_VALID : 0) |
1917 ANA_TABLES_SFIDTIDX_SGID(sfi->sgid) |
1918 (sfi->fm_valid ? ANA_TABLES_SFIDTIDX_POL_ENA : 0) |
1919 ANA_TABLES_SFIDTIDX_POL_IDX(sfi->fmid) |
1920 ANA_TABLES_SFIDTIDX_SFID_INDEX(sfi->index),
1924 (sfi->prio_valid ? ANA_TABLES_SFIDACCESS_IGR_PRIO_MATCH_ENA : 0) |
1925 ANA_TABLES_SFIDACCESS_IGR_PRIO(sfi->prio) |
1926 ANA_TABLES_SFIDACCESS_MAX_SDU_LEN(sfi->maxsdu) |
1960 struct felix_stream_filter *sfi,
1966 sfi_entry = kmemdup(sfi, sizeof(*sfi_entry), GFP_KERNEL);
1978 vsc9959_psfp_sfidmask_set(ocelot, sfi->index, sfi->portmask);
1986 struct felix_stream_filter *sfi)
1998 if (sfi->sg_valid == tmp->sg_valid &&
1999 sfi->fm_valid == tmp->fm_valid &&
2000 sfi->portmask == tmp->portmask &&
2001 tmp->sgid == sfi->sgid &&
2002 tmp->fmid == sfi->fmid) {
2003 sfi->index = tmp->index;
2013 sfi->index = insert;
2015 return vsc9959_psfp_sfi_list_add(ocelot, sfi, last);
2019 struct felix_stream_filter *sfi,
2040 sfi->index = insert;
2042 ret = vsc9959_psfp_sfi_list_add(ocelot, sfi, last);
2235 struct felix_stream_filter sfi = {0};
2271 sfi.sg_valid = 1;
2272 sfi.sgid = sgi->index;
2292 sfi.fm_valid = 1;
2293 sfi.fmid = index;
2294 sfi.maxsdu = a->police.mtu;
2305 sfi.portmask = stream.ports;
2306 sfi.prio_valid = (stream.prio < 0 ? 0 : 1);
2307 sfi.prio = (sfi.prio_valid ? stream.prio : 0);
2308 sfi.enable = 1;
2337 sfi.portmask = stream.ports;
2340 ret = vsc9959_psfp_sfi_table_add2(ocelot, &sfi,
2345 &sfi);
2353 ret = vsc9959_psfp_sfi_table_add(ocelot, &sfi);
2358 stream.sfid = sfi.index;
2372 if (sfi.sg_valid)
2373 vsc9959_psfp_sgi_table_del(ocelot, sfi.sgid);
2375 if (sfi.fm_valid)
2376 ocelot_vcap_policer_del(ocelot, sfi.fmid);
2388 static struct felix_stream_filter *sfi;
2398 sfi = vsc9959_psfp_sfi_table_get(&psfp->sfi_list, stream->sfid);
2399 if (!sfi) {
2404 if (sfi->sg_valid)
2405 vsc9959_psfp_sgi_table_del(ocelot, sfi->sgid);
2407 if (sfi->fm_valid)
2408 ocelot_vcap_policer_del(ocelot, sfi->fmid);
2434 struct felix_stream_filter *sfi)
2436 struct felix_stream_filter_counters *s = &sfi->stats;
2438 u32 sfid = sfi->index;
2467 struct felix_stream_filter *sfi;
2471 list_for_each_entry(sfi, &psfp->sfi_list, list)
2472 vsc9959_update_sfid_stats(ocelot, sfi);
2483 static struct felix_stream_filter *sfi;
2490 sfi = vsc9959_psfp_sfi_table_get(&psfp->sfi_list, stream->sfid);
2491 if (!sfi)
2496 vsc9959_update_sfid_stats(ocelot, sfi);
2498 s = &sfi->stats;