* rte_lpm_rcu_qsbr_add positive and negative tests. * - Add RCU QSBR variable to LPM * - Add another RCU QSBR variable to LPM * - Check returns */
| 1288 | * - Check returns |
| 1289 | */ |
| 1290 | int32_t |
| 1291 | test19(void) |
| 1292 | { |
| 1293 | struct rte_lpm *lpm = NULL; |
| 1294 | struct rte_lpm_config config; |
| 1295 | size_t sz; |
| 1296 | struct rte_rcu_qsbr *qsv; |
| 1297 | struct rte_rcu_qsbr *qsv2; |
| 1298 | int32_t status; |
| 1299 | struct rte_lpm_rcu_config rcu_cfg = {0}; |
| 1300 | |
| 1301 | config.max_rules = MAX_RULES; |
| 1302 | config.number_tbl8s = NUMBER_TBL8S; |
| 1303 | config.flags = 0; |
| 1304 | |
| 1305 | lpm = rte_lpm_create(__func__, SOCKET_ID_ANY, &config); |
| 1306 | TEST_LPM_ASSERT(lpm != NULL); |
| 1307 | |
| 1308 | /* Create RCU QSBR variable */ |
| 1309 | sz = rte_rcu_qsbr_get_memsize(RTE_MAX_LCORE); |
| 1310 | qsv = (struct rte_rcu_qsbr *)rte_zmalloc_socket(NULL, sz, |
| 1311 | RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY); |
| 1312 | TEST_LPM_ASSERT(qsv != NULL); |
| 1313 | |
| 1314 | status = rte_rcu_qsbr_init(qsv, RTE_MAX_LCORE); |
| 1315 | TEST_LPM_ASSERT(status == 0); |
| 1316 | |
| 1317 | rcu_cfg.v = qsv; |
| 1318 | /* Invalid QSBR mode */ |
| 1319 | rcu_cfg.mode = 2; |
| 1320 | status = rte_lpm_rcu_qsbr_add(lpm, &rcu_cfg); |
| 1321 | TEST_LPM_ASSERT(status != 0); |
| 1322 | |
| 1323 | rcu_cfg.mode = RTE_LPM_QSBR_MODE_DQ; |
| 1324 | /* Attach RCU QSBR to LPM table */ |
| 1325 | status = rte_lpm_rcu_qsbr_add(lpm, &rcu_cfg); |
| 1326 | TEST_LPM_ASSERT(status == 0); |
| 1327 | |
| 1328 | /* Create and attach another RCU QSBR to LPM table */ |
| 1329 | qsv2 = (struct rte_rcu_qsbr *)rte_zmalloc_socket(NULL, sz, |
| 1330 | RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY); |
| 1331 | TEST_LPM_ASSERT(qsv2 != NULL); |
| 1332 | |
| 1333 | rcu_cfg.v = qsv2; |
| 1334 | rcu_cfg.mode = RTE_LPM_QSBR_MODE_SYNC; |
| 1335 | status = rte_lpm_rcu_qsbr_add(lpm, &rcu_cfg); |
| 1336 | TEST_LPM_ASSERT(status != 0); |
| 1337 | |
| 1338 | rte_lpm_free(lpm); |
| 1339 | rte_free(qsv); |
| 1340 | rte_free(qsv2); |
| 1341 | |
| 1342 | return PASS; |
| 1343 | } |
| 1344 | |
| 1345 | /* |
| 1346 | * rte_lpm_rcu_qsbr_add DQ mode functional test. |
nothing calls this directly
no test coverage detected