MCPcopy Create free account
hub / github.com/F-Stack/f-stack / cxgbe_flow_flush

Function cxgbe_flow_flush

dpdk/drivers/net/cxgbe/cxgbe_flow.c:1300–1344  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1298}
1299
1300static int cxgbe_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *e)
1301{
1302 struct adapter *adap = ethdev2adap(dev);
1303 unsigned int i;
1304 int ret = 0;
1305
1306 t4_os_lock(&adap->flow_lock);
1307 if (adap->tids.ftid_tab) {
1308 struct filter_entry *f = &adap->tids.ftid_tab[0];
1309
1310 for (i = 0; i < adap->tids.nftids; i++, f++) {
1311 ret = cxgbe_check_n_destroy(f, dev);
1312 if (ret < 0) {
1313 rte_flow_error_set(e, ret,
1314 RTE_FLOW_ERROR_TYPE_HANDLE,
1315 f->private,
1316 "error destroying TCAM "
1317 "filter.");
1318 goto out;
1319 }
1320 }
1321 }
1322
1323 if (is_hashfilter(adap) && adap->tids.tid_tab) {
1324 struct filter_entry *f;
1325
1326 for (i = adap->tids.hash_base; i <= adap->tids.ntids; i++) {
1327 f = (struct filter_entry *)adap->tids.tid_tab[i];
1328
1329 ret = cxgbe_check_n_destroy(f, dev);
1330 if (ret < 0) {
1331 rte_flow_error_set(e, ret,
1332 RTE_FLOW_ERROR_TYPE_HANDLE,
1333 f->private,
1334 "error destroying HASH "
1335 "filter.");
1336 goto out;
1337 }
1338 }
1339 }
1340
1341out:
1342 t4_os_unlock(&adap->flow_lock);
1343 return ret >= 0 ? 0 : ret;
1344}
1345
1346static const struct rte_flow_ops cxgbe_flow_ops = {
1347 .validate = cxgbe_flow_validate,

Callers

nothing calls this directly

Calls 4

ethdev2adapFunction · 0.85
cxgbe_check_n_destroyFunction · 0.85
rte_flow_error_setFunction · 0.85
is_hashfilterFunction · 0.85

Tested by

no test coverage detected