Re: [PATCH v2 08/23] RDMA/irdma: Register auxiliary driver and implement private channel OPs
From: Leon Romanovsky <leon@kernel.org>
Date: 2021-03-24 13:48:27
Also in:
linux-rdma
On Tue, Mar 23, 2021 at 06:59:52PM -0500, Shiraz Saleem wrote:
From: Mustafa Ismail <redacted> Register auxiliary drivers which can attach to auxiliary RDMA devices from Intel PCI netdev drivers i40e and ice. Implement the private channel ops, and register net notifiers. Signed-off-by: Mustafa Ismail <redacted> Signed-off-by: Shiraz Saleem <redacted> --- drivers/infiniband/hw/irdma/i40iw_if.c | 229 +++++++++++++ drivers/infiniband/hw/irdma/main.c | 382 ++++++++++++++++++++++ drivers/infiniband/hw/irdma/main.h | 565 +++++++++++++++++++++++++++++++++ 3 files changed, 1176 insertions(+) create mode 100644 drivers/infiniband/hw/irdma/i40iw_if.c create mode 100644 drivers/infiniband/hw/irdma/main.c create mode 100644 drivers/infiniband/hw/irdma/main.h
<...>
+/* client interface functions */
+static const struct i40e_client_ops i40e_ops = {
+ .open = i40iw_open,
+ .close = i40iw_close,
+ .l2_param_change = i40iw_l2param_change
+};
+
+static struct i40e_client i40iw_client = {
+ .ops = &i40e_ops,
+ .type = I40E_CLIENT_IWARP,
+};
+
+static int i40iw_probe(struct auxiliary_device *aux_dev, const struct auxiliary_device_id *id)
+{
+ struct i40e_auxiliary_device *i40e_adev = container_of(aux_dev,
+ struct i40e_auxiliary_device,
+ aux_dev);
+ struct i40e_info *cdev_info = i40e_adev->ldev;
+
+ strncpy(i40iw_client.name, "irdma", I40E_CLIENT_STR_LENGTH);
+ cdev_info->client = &i40iw_client;
+ cdev_info->aux_dev = aux_dev;
+
+ return cdev_info->ops->client_device_register(cdev_info);Why do we need all this indirection? I see it as leftover from previous version where you mixed auxdev with your peer registration logic. Thanks