Commit 97fb3e33 authored by Michal Kalderon's avatar Michal Kalderon Committed by Jason Gunthorpe
Browse files

qede: Notify qedr when mtu has changed

MTU change on ethtool is currently not supported for iWARP.  Notify qedr
driver so that appropriate logging can take place.

Link: https://lore.kernel.org/r/20200902165741.8355-6-michal.kalderon@marvell.com


Signed-off-by: default avatarMichal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent 8a5a10a1
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1026,7 +1026,9 @@ int qede_change_mtu(struct net_device *ndev, int new_mtu)
	args.u.mtu = new_mtu;
	args.func = &qede_update_mtu;
	qede_reload(edev, &args, false);

#if IS_ENABLED(CONFIG_QED_RDMA)
	qede_rdma_event_change_mtu(edev);
#endif
	edev->ops->common->update_mtu(edev->cdev, new_mtu);

	return 0;
+17 −0
Original line number Diff line number Diff line
@@ -234,6 +234,15 @@ static void qede_rdma_changeaddr(struct qede_dev *edev)
		qedr_drv->notify(edev->rdma_info.qedr_dev, QEDE_CHANGE_ADDR);
}

static void qede_rdma_change_mtu(struct qede_dev *edev)
{
	if (qede_rdma_supported(edev)) {
		if (qedr_drv && edev->rdma_info.qedr_dev && qedr_drv->notify)
			qedr_drv->notify(edev->rdma_info.qedr_dev,
					 QEDE_CHANGE_MTU);
	}
}

static struct qede_rdma_event_work *
qede_rdma_get_free_event_node(struct qede_dev *edev)
{
@@ -287,6 +296,9 @@ static void qede_rdma_handle_event(struct work_struct *work)
	case QEDE_CHANGE_ADDR:
		qede_rdma_changeaddr(edev);
		break;
	case QEDE_CHANGE_MTU:
		qede_rdma_change_mtu(edev);
		break;
	default:
		DP_NOTICE(edev, "Invalid rdma event %d", event);
	}
@@ -338,3 +350,8 @@ void qede_rdma_event_changeaddr(struct qede_dev *edev)
{
	qede_rdma_add_event(edev, QEDE_CHANGE_ADDR);
}

void qede_rdma_event_change_mtu(struct qede_dev *edev)
{
	qede_rdma_add_event(edev, QEDE_CHANGE_MTU);
}
+3 −1
Original line number Diff line number Diff line
@@ -20,7 +20,8 @@ enum qede_rdma_event {
	QEDE_UP,
	QEDE_DOWN,
	QEDE_CHANGE_ADDR,
	QEDE_CLOSE
	QEDE_CLOSE,
	QEDE_CHANGE_MTU,
};

struct qede_rdma_event_work {
@@ -54,6 +55,7 @@ void qede_rdma_dev_event_open(struct qede_dev *dev);
void qede_rdma_dev_event_close(struct qede_dev *dev);
void qede_rdma_dev_remove(struct qede_dev *dev, bool recovery);
void qede_rdma_event_changeaddr(struct qede_dev *edr);
void qede_rdma_event_change_mtu(struct qede_dev *edev);

#else
static inline int qede_rdma_dev_add(struct qede_dev *dev,