| 2286 | } |
| 2287 | |
| 2288 | static int iavf_parse_devargs(struct rte_eth_dev *dev) |
| 2289 | { |
| 2290 | struct iavf_adapter *ad = |
| 2291 | IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); |
| 2292 | struct rte_devargs *devargs = dev->device->devargs; |
| 2293 | struct rte_kvargs *kvlist; |
| 2294 | int ret; |
| 2295 | int watchdog_period = -1; |
| 2296 | |
| 2297 | if (!devargs) |
| 2298 | return 0; |
| 2299 | |
| 2300 | kvlist = rte_kvargs_parse(devargs->args, iavf_valid_args); |
| 2301 | if (!kvlist) { |
| 2302 | PMD_INIT_LOG(ERR, "invalid kvargs key"); |
| 2303 | return -EINVAL; |
| 2304 | } |
| 2305 | |
| 2306 | ad->devargs.proto_xtr_dflt = IAVF_PROTO_XTR_NONE; |
| 2307 | memset(ad->devargs.proto_xtr, IAVF_PROTO_XTR_NONE, |
| 2308 | sizeof(ad->devargs.proto_xtr)); |
| 2309 | |
| 2310 | ret = rte_kvargs_process(kvlist, IAVF_PROTO_XTR_ARG, |
| 2311 | &iavf_handle_proto_xtr_arg, &ad->devargs); |
| 2312 | if (ret) |
| 2313 | goto bail; |
| 2314 | |
| 2315 | ret = rte_kvargs_process(kvlist, IAVF_QUANTA_SIZE_ARG, |
| 2316 | &parse_u16, &ad->devargs.quanta_size); |
| 2317 | if (ret) |
| 2318 | goto bail; |
| 2319 | |
| 2320 | ret = rte_kvargs_process(kvlist, IAVF_RESET_WATCHDOG_ARG, |
| 2321 | &iavf_parse_watchdog_period, &watchdog_period); |
| 2322 | if (ret) |
| 2323 | goto bail; |
| 2324 | if (watchdog_period == -1) |
| 2325 | ad->devargs.watchdog_period = IAVF_DEV_WATCHDOG_PERIOD; |
| 2326 | else |
| 2327 | ad->devargs.watchdog_period = watchdog_period; |
| 2328 | |
| 2329 | ret = rte_kvargs_process(kvlist, IAVF_NO_POLL_ON_LINK_DOWN_ARG, |
| 2330 | &parse_bool, &ad->devargs.no_poll_on_link_down); |
| 2331 | if (ret) |
| 2332 | goto bail; |
| 2333 | |
| 2334 | if (ad->devargs.quanta_size != 0 && |
| 2335 | (ad->devargs.quanta_size < 256 || ad->devargs.quanta_size > 4096 || |
| 2336 | ad->devargs.quanta_size & 0x40)) { |
| 2337 | PMD_INIT_LOG(ERR, "invalid quanta size"); |
| 2338 | ret = -EINVAL; |
| 2339 | goto bail; |
| 2340 | } |
| 2341 | |
| 2342 | ret = rte_kvargs_process(kvlist, IAVF_ENABLE_AUTO_RESET_ARG, |
| 2343 | &parse_bool, &ad->devargs.auto_reset); |
| 2344 | if (ret) |
| 2345 | goto bail; |
no test coverage detected