OSDN Git Service

RDMA/qedr: Fix iWARP active mtu display
authorMichal Kalderon <michal.kalderon@marvell.com>
Wed, 2 Sep 2020 16:57:39 +0000 (19:57 +0300)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 11 Sep 2020 13:24:55 +0000 (10:24 -0300)
Currently iWARP does not support mtu-change. Notify user when MTU changes
that reload of qedr is required for mtu to change.  Display the correct
active mtu.

Fixes: f5b1b1775be6 ("RDMA/qedr: Add iWARP support in existing verbs")
Link: https://lore.kernel.org/r/20200902165741.8355-7-michal.kalderon@marvell.com
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/qedr/main.c
drivers/infiniband/hw/qedr/verbs.c

index 8e13659..1f32e8b 100644 (file)
@@ -1026,6 +1026,13 @@ static void qedr_notify(struct qedr_dev *dev, enum qede_rdma_event event)
        case QEDE_CHANGE_ADDR:
                qedr_mac_address_change(dev);
                break;
+       case QEDE_CHANGE_MTU:
+               if (rdma_protocol_iwarp(&dev->ibdev, 1))
+                       if (dev->ndev->mtu != dev->iwarp_max_mtu)
+                               DP_NOTICE(dev,
+                                         "Mtu was changed from %d to %d. This will not take affect for iWARP until qedr is reloaded\n",
+                                         dev->iwarp_max_mtu, dev->ndev->mtu);
+               break;
        default:
                pr_err("Event not supported\n");
        }
index 1da0131..9edc422 100644 (file)
@@ -231,15 +231,16 @@ int qedr_query_port(struct ib_device *ibdev, u8 port, struct ib_port_attr *attr)
                attr->phys_state = IB_PORT_PHYS_STATE_DISABLED;
        }
        attr->max_mtu = IB_MTU_4096;
-       attr->active_mtu = iboe_get_mtu(dev->ndev->mtu);
        attr->lid = 0;
        attr->lmc = 0;
        attr->sm_lid = 0;
        attr->sm_sl = 0;
        attr->ip_gids = true;
        if (rdma_protocol_iwarp(&dev->ibdev, 1)) {
+               attr->active_mtu = iboe_get_mtu(dev->iwarp_max_mtu);
                attr->gid_tbl_len = 1;
        } else {
+               attr->active_mtu = iboe_get_mtu(dev->ndev->mtu);
                attr->gid_tbl_len = QEDR_MAX_SGID;
                attr->pkey_tbl_len = QEDR_ROCE_PKEY_TABLE_LEN;
        }