| 362 | } |
| 363 | |
| 364 | int |
| 365 | ionic_identify(struct ionic_adapter *adapter) |
| 366 | { |
| 367 | struct ionic_dev *idev = &adapter->idev; |
| 368 | struct ionic_identity *ident = &adapter->ident; |
| 369 | uint32_t drv_size = RTE_DIM(ident->drv.words); |
| 370 | uint32_t cmd_size = RTE_DIM(idev->dev_cmd->data); |
| 371 | uint32_t dev_size = RTE_DIM(ident->dev.words); |
| 372 | uint32_t i, nwords; |
| 373 | int err; |
| 374 | |
| 375 | memset(ident, 0, sizeof(*ident)); |
| 376 | |
| 377 | ident->drv.os_type = IONIC_OS_TYPE_LINUX; |
| 378 | ident->drv.os_dist = 0; |
| 379 | snprintf(ident->drv.os_dist_str, |
| 380 | sizeof(ident->drv.os_dist_str), "Unknown"); |
| 381 | ident->drv.kernel_ver = 0; |
| 382 | snprintf(ident->drv.kernel_ver_str, |
| 383 | sizeof(ident->drv.kernel_ver_str), "DPDK"); |
| 384 | strncpy(ident->drv.driver_ver_str, IONIC_DRV_VERSION, |
| 385 | sizeof(ident->drv.driver_ver_str) - 1); |
| 386 | |
| 387 | nwords = RTE_MIN(drv_size, cmd_size); |
| 388 | for (i = 0; i < nwords; i++) |
| 389 | iowrite32(ident->drv.words[i], &idev->dev_cmd->data[i]); |
| 390 | |
| 391 | ionic_dev_cmd_identify(idev, IONIC_IDENTITY_VERSION_1); |
| 392 | err = ionic_dev_cmd_wait_check(idev, IONIC_DEVCMD_TIMEOUT); |
| 393 | if (!err) { |
| 394 | nwords = RTE_MIN(dev_size, cmd_size); |
| 395 | for (i = 0; i < nwords; i++) |
| 396 | ident->dev.words[i] = ioread32(&idev->dev_cmd->data[i]); |
| 397 | } |
| 398 | |
| 399 | return err; |
| 400 | } |
| 401 | |
| 402 | int |
| 403 | ionic_init(struct ionic_adapter *adapter) |
no test coverage detected