| 4731 | } |
| 4732 | |
| 4733 | int |
| 4734 | dlb2_parse_params(const char *params, |
| 4735 | const char *name, |
| 4736 | struct dlb2_devargs *dlb2_args, |
| 4737 | uint8_t version) |
| 4738 | { |
| 4739 | int ret = 0; |
| 4740 | static const char * const args[] = { NUMA_NODE_ARG, |
| 4741 | DLB2_MAX_NUM_EVENTS, |
| 4742 | DLB2_NUM_DIR_CREDITS, |
| 4743 | DEV_ID_ARG, |
| 4744 | DLB2_QID_DEPTH_THRESH_ARG, |
| 4745 | DLB2_POLL_INTERVAL_ARG, |
| 4746 | DLB2_SW_CREDIT_QUANTA_ARG, |
| 4747 | DLB2_HW_CREDIT_QUANTA_ARG, |
| 4748 | DLB2_DEPTH_THRESH_ARG, |
| 4749 | DLB2_VECTOR_OPTS_ENAB_ARG, |
| 4750 | DLB2_MAX_CQ_DEPTH, |
| 4751 | DLB2_MAX_ENQ_DEPTH, |
| 4752 | DLB2_PORT_COS, |
| 4753 | DLB2_COS_BW, |
| 4754 | DLB2_PRODUCER_COREMASK, |
| 4755 | DLB2_DEFAULT_LDB_PORT_ALLOCATION_ARG, |
| 4756 | DLB2_ENABLE_CQ_WEIGHT_ARG, |
| 4757 | NULL }; |
| 4758 | |
| 4759 | if (params != NULL && params[0] != '\0') { |
| 4760 | struct rte_kvargs *kvlist = rte_kvargs_parse(params, args); |
| 4761 | |
| 4762 | if (kvlist == NULL) { |
| 4763 | RTE_LOG(INFO, PMD, |
| 4764 | "Ignoring unsupported parameters when creating device '%s'\n", |
| 4765 | name); |
| 4766 | } else { |
| 4767 | int ret = rte_kvargs_process(kvlist, NUMA_NODE_ARG, |
| 4768 | set_numa_node, |
| 4769 | &dlb2_args->socket_id); |
| 4770 | if (ret != 0) { |
| 4771 | DLB2_LOG_ERR("%s: Error parsing numa node parameter", |
| 4772 | name); |
| 4773 | rte_kvargs_free(kvlist); |
| 4774 | return ret; |
| 4775 | } |
| 4776 | |
| 4777 | ret = rte_kvargs_process(kvlist, DLB2_MAX_NUM_EVENTS, |
| 4778 | set_max_num_events, |
| 4779 | &dlb2_args->max_num_events); |
| 4780 | if (ret != 0) { |
| 4781 | DLB2_LOG_ERR("%s: Error parsing max_num_events parameter", |
| 4782 | name); |
| 4783 | rte_kvargs_free(kvlist); |
| 4784 | return ret; |
| 4785 | } |
| 4786 | |
| 4787 | if (version == DLB2_HW_V2) { |
| 4788 | ret = rte_kvargs_process(kvlist, |
| 4789 | DLB2_NUM_DIR_CREDITS, |
| 4790 | set_num_dir_credits, |
no test coverage detected