Introduce a new netlink command to allow rdma event monitoring. The rdma events supported now are IB device registration/unregistration and net device attachment/detachment. Example output of rdma monitor and the commands which trigger the events: $ rdma monitor $ rmmod mlx5_ib [UNREGISTER] dev 1 rocep8s0f1 [UNREGISTER] dev 0 rocep8s0f0 $ modprobe mlx5_ib [REGISTER] dev 2 mlx5_0 [NETDEV_ATTACH] dev 2 mlx5_0 port 1 netdev 4 eth2 [REGISTER] dev 3 mlx5_1 [NETDEV_ATTACH] dev 3 mlx5_1 port 1 netdev 5 eth3 $ devlink dev eswitch set pci/0000:08:00.0 mode switchdev [UNREGISTER] dev 2 rocep8s0f0 [REGISTER] dev 4 mlx5_0 [NETDEV_ATTACH] dev 4 mlx5_0 port 30 netdev 4 eth2 $ echo 4 > /sys/class/net/eth2/device/sriov_numvfs [NETDEV_ATTACH] dev 4 rdmap8s0f0 port 2 netdev 7 eth4 [NETDEV_ATTACH] dev 4 rdmap8s0f0 port 3 netdev 8 eth5 [NETDEV_ATTACH] dev 4 rdmap8s0f0 port 4 netdev 9 eth6 [NETDEV_ATTACH] dev 4 rdmap8s0f0 port 5 netdev 10 eth7 [REGISTER] dev 5 mlx5_0 [NETDEV_ATTACH] dev 5 mlx5_0 port 1 netdev 11 eth8 [REGISTER] dev 6 mlx5_0 [NETDEV_ATTACH] dev 6 mlx5_0 port 1 netdev 12 eth9 [REGISTER] dev 7 mlx5_0 [NETDEV_ATTACH] dev 7 mlx5_0 port 1 netdev 13 eth10 [REGISTER] dev 8 mlx5_0 [NETDEV_ATTACH] dev 8 mlx5_0 port 1 netdev 14 eth11 $ echo 0 > /sys/class/net/eth2/device/sriov_numvfs [UNREGISTER] dev 5 rocep8s0f0v0 [UNREGISTER] dev 6 rocep8s0f0v1 [UNREGISTER] dev 7 rocep8s0f0v2 [UNREGISTER] dev 8 rocep8s0f0v3 [NETDEV_DETACH] dev 4 rdmap8s0f0 port 2 [NETDEV_DETACH] dev 4 rdmap8s0f0 port 3 [NETDEV_DETACH] dev 4 rdmap8s0f0 port 4 [NETDEV_DETACH] dev 4 rdmap8s0f0 port 5
Showing the changes to include/uapi (1 of 5 files). Show all
Unified · Split
| @@ -15,6 +15,7 @@ enum { · 14 unmodified lines | ||
| 15 | 15 | enum { |
| 16 | 16 | RDMA_NL_GROUP_IWPM = 2, |
| 17 | 17 | RDMA_NL_GROUP_LS, |
| 18 | + RDMA_NL_GROUP_NOTIFY, | |
| 18 | 19 | RDMA_NL_NUM_GROUPS |
| 19 | 20 | }; |
| 20 | 21 | |
| @@ -305,6 +306,8 @@ enum rdma_nldev_command { · 284 unmodified lines | ||
| 305 | 306 | |
| 306 | 307 | RDMA_NLDEV_CMD_DELDEV, |
| 307 | 308 | |
| 309 | + RDMA_NLDEV_CMD_MONITOR, | |
| 310 | + | |
| 308 | 311 | RDMA_NLDEV_NUM_OPS |
| 309 | 312 | }; |
| 310 | 313 | |
| @@ -574,6 +577,8 @@ enum rdma_nldev_attr { · 263 unmodified lines | ||
| 574 | 577 | |
| 575 | 578 | RDMA_NLDEV_ATTR_NAME_ASSIGN_TYPE, /* u8 */ |
| 576 | 579 | |
| 580 | + RDMA_NLDEV_ATTR_EVENT_TYPE, /* u8 */ | |
| 581 | + | |
| 577 | 582 | /* |
| 578 | 583 | * Always the end |
| 579 | 584 | */ |
| @@ -624,4 +629,14 @@ enum rdma_nl_name_assign_type { · 44 unmodified lines | ||
| 624 | 629 | RDMA_NAME_ASSIGN_TYPE_USER = 1, /* Provided by user-space */ |
| 625 | 630 | }; |
| 626 | 631 | |
| 632 | +/* | |
| 633 | + * Supported rdma monitoring event types. | |
| 634 | + */ | |
| 635 | +enum rdma_nl_notify_event_type { | |
| 636 | + RDMA_REGISTER_EVENT, | |
| 637 | + RDMA_UNREGISTER_EVENT, | |
| 638 | + RDMA_NETDEV_ATTACH_EVENT, | |
| 639 | + RDMA_NETDEV_DETACH_EVENT, | |
| 640 | +}; | |
| 641 | + | |
| 627 | 642 | #endif /* _UAPI_RDMA_NETLINK_H */ |