| 150 | } |
| 151 | |
| 152 | static void * |
| 153 | eth_dev_iterate(const void *start, |
| 154 | const char *str, |
| 155 | const struct rte_dev_iterator *it) |
| 156 | { |
| 157 | struct rte_kvargs *kvargs = NULL; |
| 158 | struct rte_eth_dev *edev = NULL; |
| 159 | const char * const *valid_keys = NULL; |
| 160 | |
| 161 | if (str != NULL) { |
| 162 | if (str[0] == '+') /* no validation of keys */ |
| 163 | str++; |
| 164 | else |
| 165 | valid_keys = eth_params_keys; |
| 166 | kvargs = rte_kvargs_parse(str, valid_keys); |
| 167 | if (kvargs == NULL) { |
| 168 | RTE_ETHDEV_LOG(ERR, "cannot parse argument list\n"); |
| 169 | rte_errno = EINVAL; |
| 170 | return NULL; |
| 171 | } |
| 172 | } |
| 173 | edev = eth_find_device(start, eth_dev_match, |
| 174 | eth_dev_match_arg(it->device, kvargs)); |
| 175 | rte_kvargs_free(kvargs); |
| 176 | return edev; |
| 177 | } |
| 178 | |
| 179 | static struct rte_class rte_class_eth = { |
| 180 | .dev_iterate = eth_dev_iterate, |
nothing calls this directly
no test coverage detected