| 1186 | }; |
| 1187 | |
| 1188 | static int |
| 1189 | idpf_adapter_ext_init(struct rte_pci_device *pci_dev, struct idpf_adapter_ext *adapter) |
| 1190 | { |
| 1191 | struct idpf_adapter *base = &adapter->base; |
| 1192 | struct idpf_hw *hw = &base->hw; |
| 1193 | int ret = 0; |
| 1194 | |
| 1195 | hw->hw_addr = (void *)pci_dev->mem_resource[0].addr; |
| 1196 | hw->hw_addr_len = pci_dev->mem_resource[0].len; |
| 1197 | hw->back = base; |
| 1198 | hw->vendor_id = pci_dev->id.vendor_id; |
| 1199 | hw->device_id = pci_dev->id.device_id; |
| 1200 | hw->subsystem_vendor_id = pci_dev->id.subsystem_vendor_id; |
| 1201 | |
| 1202 | strncpy(adapter->name, pci_dev->device.name, PCI_PRI_STR_SIZE); |
| 1203 | |
| 1204 | rte_memcpy(&base->caps, &req_caps, sizeof(struct virtchnl2_get_capabilities)); |
| 1205 | |
| 1206 | ret = idpf_adapter_init(base); |
| 1207 | if (ret != 0) { |
| 1208 | PMD_INIT_LOG(ERR, "Failed to init adapter"); |
| 1209 | goto err_adapter_init; |
| 1210 | } |
| 1211 | |
| 1212 | rte_eal_alarm_set(IDPF_ALARM_INTERVAL, idpf_dev_alarm_handler, adapter); |
| 1213 | |
| 1214 | adapter->max_vport_nb = adapter->base.caps.max_vports; |
| 1215 | |
| 1216 | adapter->vports = rte_zmalloc("vports", |
| 1217 | adapter->max_vport_nb * |
| 1218 | sizeof(*adapter->vports), |
| 1219 | 0); |
| 1220 | if (adapter->vports == NULL) { |
| 1221 | PMD_INIT_LOG(ERR, "Failed to allocate vports memory"); |
| 1222 | ret = -ENOMEM; |
| 1223 | goto err_vports_alloc; |
| 1224 | } |
| 1225 | |
| 1226 | adapter->cur_vports = 0; |
| 1227 | adapter->cur_vport_nb = 0; |
| 1228 | |
| 1229 | adapter->used_vecs_num = 0; |
| 1230 | |
| 1231 | return ret; |
| 1232 | |
| 1233 | err_vports_alloc: |
| 1234 | rte_eal_alarm_cancel(idpf_dev_alarm_handler, adapter); |
| 1235 | idpf_adapter_deinit(base); |
| 1236 | err_adapter_init: |
| 1237 | return ret; |
| 1238 | } |
| 1239 | |
| 1240 | static uint16_t |
| 1241 | idpf_vport_idx_alloc(struct idpf_adapter_ext *ad) |
no test coverage detected