| .. | .. |
|---|
| 549 | 549 | */ |
|---|
| 550 | 550 | static int srpt_refresh_port(struct srpt_port *sport) |
|---|
| 551 | 551 | { |
|---|
| 552 | + struct ib_mad_agent *mad_agent; |
|---|
| 552 | 553 | struct ib_mad_reg_req reg_req; |
|---|
| 553 | 554 | struct ib_port_modify port_modify; |
|---|
| 554 | 555 | struct ib_port_attr port_attr; |
|---|
| .. | .. |
|---|
| 593 | 594 | set_bit(IB_MGMT_METHOD_GET, reg_req.method_mask); |
|---|
| 594 | 595 | set_bit(IB_MGMT_METHOD_SET, reg_req.method_mask); |
|---|
| 595 | 596 | |
|---|
| 596 | | - sport->mad_agent = ib_register_mad_agent(sport->sdev->device, |
|---|
| 597 | | - sport->port, |
|---|
| 598 | | - IB_QPT_GSI, |
|---|
| 599 | | - ®_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 | + ®_req, 0, |
|---|
| 601 | + srpt_mad_send_handler, |
|---|
| 602 | + srpt_mad_recv_handler, |
|---|
| 603 | + sport, 0); |
|---|
| 604 | + if (IS_ERR(mad_agent)) { |
|---|
| 604 | 605 | pr_err("%s-%d: MAD agent registration failed (%ld). Note: this is expected if SR-IOV is enabled.\n", |
|---|
| 605 | 606 | dev_name(&sport->sdev->device->dev), sport->port, |
|---|
| 606 | | - PTR_ERR(sport->mad_agent)); |
|---|
| 607 | + PTR_ERR(mad_agent)); |
|---|
| 607 | 608 | sport->mad_agent = NULL; |
|---|
| 608 | 609 | memset(&port_modify, 0, sizeof(port_modify)); |
|---|
| 609 | 610 | port_modify.clr_port_cap_mask = IB_PORT_DEVICE_MGMT_SUP; |
|---|
| 610 | 611 | ib_modify_port(sport->sdev->device, sport->port, 0, |
|---|
| 611 | 612 | &port_modify); |
|---|
| 612 | | - |
|---|
| 613 | + return 0; |
|---|
| 613 | 614 | } |
|---|
| 615 | + |
|---|
| 616 | + sport->mad_agent = mad_agent; |
|---|
| 614 | 617 | } |
|---|
| 615 | 618 | |
|---|
| 616 | 619 | return 0; |
|---|