tokenization expected status values separated by a comma */
| 396 | |
| 397 | /* tokenization expected status values separated by a comma */ |
| 398 | static int |
| 399 | parse_expected_status(char *tokens, int *status, enum rte_bbdev_op_type op_type) |
| 400 | { |
| 401 | char *tok = NULL; |
| 402 | bool status_ok = false; |
| 403 | |
| 404 | tok = strtok(tokens, VALUE_DELIMITER); |
| 405 | if (tok == NULL) |
| 406 | return -1; |
| 407 | |
| 408 | while (tok != NULL) { |
| 409 | trim_space(tok); |
| 410 | if (!strcmp(tok, "OK")) |
| 411 | status_ok = true; |
| 412 | else if (!strcmp(tok, "DMA")) |
| 413 | *status = *status | (1 << RTE_BBDEV_DRV_ERROR); |
| 414 | else if (!strcmp(tok, "FCW")) |
| 415 | *status = *status | (1 << RTE_BBDEV_DATA_ERROR); |
| 416 | else if (!strcmp(tok, "SYNCRC")) { |
| 417 | *status = *status | (1 << RTE_BBDEV_SYNDROME_ERROR); |
| 418 | *status = *status | (1 << RTE_BBDEV_CRC_ERROR); |
| 419 | } else if (!strcmp(tok, "SYN")) |
| 420 | *status = *status | (1 << RTE_BBDEV_SYNDROME_ERROR); |
| 421 | else if (!strcmp(tok, "CRC")) { |
| 422 | if ((op_type == RTE_BBDEV_OP_TURBO_DEC) || |
| 423 | (op_type == RTE_BBDEV_OP_LDPC_DEC)) |
| 424 | *status = *status | (1 << RTE_BBDEV_CRC_ERROR); |
| 425 | else { |
| 426 | printf( |
| 427 | "CRC is only a valid value for decoder\n"); |
| 428 | return -1; |
| 429 | } |
| 430 | } else { |
| 431 | printf("Not valid status: '%s'\n", tok); |
| 432 | return -1; |
| 433 | } |
| 434 | |
| 435 | tok = strtok(NULL, VALUE_DELIMITER); |
| 436 | if (tok == NULL) |
| 437 | break; |
| 438 | } |
| 439 | |
| 440 | if (status_ok && *status != 0) { |
| 441 | printf( |
| 442 | "Not valid status values. Cannot be OK and ERROR at the same time.\n"); |
| 443 | return -1; |
| 444 | } |
| 445 | |
| 446 | return 0; |
| 447 | } |
| 448 | |
| 449 | /* parse ops data entry (there can be more than 1 input entry, each will be |
| 450 | * contained in a separate op_data_buf struct) |
no test coverage detected