Try to disable ROCE by Netlink\Devlink. */
| 604 | |
| 605 | /* Try to disable ROCE by Netlink\Devlink. */ |
| 606 | static int |
| 607 | mlx5_nl_roce_disable(const char *addr) |
| 608 | { |
| 609 | int nlsk_fd = mlx5_nl_init(NETLINK_GENERIC, 0); |
| 610 | int devlink_id; |
| 611 | int enable; |
| 612 | int ret; |
| 613 | |
| 614 | if (nlsk_fd < 0) |
| 615 | return nlsk_fd; |
| 616 | devlink_id = mlx5_nl_devlink_family_id_get(nlsk_fd); |
| 617 | if (devlink_id < 0) { |
| 618 | ret = devlink_id; |
| 619 | DRV_LOG(DEBUG, |
| 620 | "Failed to get devlink id for ROCE operations by Netlink."); |
| 621 | goto close; |
| 622 | } |
| 623 | ret = mlx5_nl_enable_roce_get(nlsk_fd, devlink_id, addr, &enable); |
| 624 | if (ret) { |
| 625 | DRV_LOG(DEBUG, "Failed to get ROCE enable by Netlink: %d.", |
| 626 | ret); |
| 627 | goto close; |
| 628 | } else if (!enable) { |
| 629 | DRV_LOG(INFO, "ROCE has already disabled(Netlink)."); |
| 630 | goto close; |
| 631 | } |
| 632 | ret = mlx5_nl_enable_roce_set(nlsk_fd, devlink_id, addr, 0); |
| 633 | if (ret) |
| 634 | DRV_LOG(DEBUG, "Failed to disable ROCE by Netlink: %d.", ret); |
| 635 | else |
| 636 | DRV_LOG(INFO, "ROCE is disabled by Netlink successfully."); |
| 637 | close: |
| 638 | close(nlsk_fd); |
| 639 | return ret; |
| 640 | } |
| 641 | |
| 642 | /* Try to disable ROCE by sysfs. */ |
| 643 | static int |
no test coverage detected