hc
2024-05-14 bedbef8ad3e75a304af6361af235302bcc61d06b
kernel/drivers/infiniband/ulp/srpt/ib_srpt.c
....@@ -549,6 +549,7 @@
549549 */
550550 static int srpt_refresh_port(struct srpt_port *sport)
551551 {
552
+ struct ib_mad_agent *mad_agent;
552553 struct ib_mad_reg_req reg_req;
553554 struct ib_port_modify port_modify;
554555 struct ib_port_attr port_attr;
....@@ -593,24 +594,26 @@
593594 set_bit(IB_MGMT_METHOD_GET, reg_req.method_mask);
594595 set_bit(IB_MGMT_METHOD_SET, reg_req.method_mask);
595596
596
- sport->mad_agent = ib_register_mad_agent(sport->sdev->device,
597
- sport->port,
598
- IB_QPT_GSI,
599
- &reg_req, 0,
600
- srpt_mad_send_handler,
601
- srpt_mad_recv_handler,
602
- sport, 0);
603
- if (IS_ERR(sport->mad_agent)) {
597
+ mad_agent = ib_register_mad_agent(sport->sdev->device,
598
+ sport->port,
599
+ IB_QPT_GSI,
600
+ &reg_req, 0,
601
+ srpt_mad_send_handler,
602
+ srpt_mad_recv_handler,
603
+ sport, 0);
604
+ if (IS_ERR(mad_agent)) {
604605 pr_err("%s-%d: MAD agent registration failed (%ld). Note: this is expected if SR-IOV is enabled.\n",
605606 dev_name(&sport->sdev->device->dev), sport->port,
606
- PTR_ERR(sport->mad_agent));
607
+ PTR_ERR(mad_agent));
607608 sport->mad_agent = NULL;
608609 memset(&port_modify, 0, sizeof(port_modify));
609610 port_modify.clr_port_cap_mask = IB_PORT_DEVICE_MGMT_SUP;
610611 ib_modify_port(sport->sdev->device, sport->port, 0,
611612 &port_modify);
612
-
613
+ return 0;
613614 }
615
+
616
+ sport->mad_agent = mad_agent;
614617 }
615618
616619 return 0;