RE: [EXTERNAL] Re: [net-next PATCH v11 08/11] octeontx2-pf: Configure VF mtu via representor
From: Geethasowjanya Akula <gakula@marvell.com>
Date: 2024-09-01 09:51:41
Also in:
lkml
-----Original Message----- From: Jiri Pirko <jiri@resnulli.us> Sent: Thursday, August 22, 2024 7:54 PM To: Geethasowjanya Akula <gakula@marvell.com> Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org; kuba@kernel.org; davem@davemloft.net; pabeni@redhat.com; edumazet@google.com; Sunil Kovvuri Goutham [off-list ref]; Subbaraya Sundeep Bhatta [off-list ref]; Hariprasad Kelam [off-list ref] Subject: [EXTERNAL] Re: [net-next PATCH v11 08/11] octeontx2-pf: Configure VF mtu via representor Thu, Aug 22, 2024 at 03:20:28PM CEST, gakula@marvell.com wrote:quoted
Adds support to manage the mtu configuration for VF through representor. On update of representor mtu a mbox notification is send to VF to update its mtu.NACK Nope. If your patch does what you describe, this is certainly incorrect. VF is responsible of setting MTU itself. If you set MTU on representor netdev, it's related only to that, you SHOULD NOT touch VF MTU.
We implemented this feature based on the kernel representor documentation "https://docs.kernel.org/networking/representors.html" "Setting an MTU on the representor should cause that same MTU to be reported to the representee. (On hardware that allows configuring separate and distinct MTU and MRU values, the representor MTU should correspond to the representee’s MRU and vice-versa.)"
quoted
Signed-off-by: Sai Krishna <redacted> Signed-off-by: Geetha sowjanya <gakula@marvell.com> Reviewed-by: Simon Horman <horms@kernel.org> --- .../ethernet/marvell/octeontx2/nic/otx2_pf.c | 5 +++++ .../net/ethernet/marvell/octeontx2/nic/rep.c | 17 +++++++++++++++++ 2 files changed, 22 insertions(+)diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.cb/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c index cdd1f1321318..955ea941a53b 100644--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c +++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c@@ -854,6 +854,11 @@ static intotx2_mbox_up_handler_rep_event_up_notify(struct otx2_nic *pf, { struct net_device *netdev = pf->netdev; + if (info->event == RVU_EVENT_MTU_CHANGE) { + netdev->mtu = info->evt_data.mtu; + return 0; + } + if (info->event == RVU_EVENT_PORT_STATE) { if (info->evt_data.port_state) { pf->flags |= OTX2_FLAG_PORT_UP;diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/rep.cb/drivers/net/ethernet/marvell/octeontx2/nic/rep.c index 95301faf6afe..5f767b6e79c3 100644--- a/drivers/net/ethernet/marvell/octeontx2/nic/rep.c +++ b/drivers/net/ethernet/marvell/octeontx2/nic/rep.c@@ -79,6 +79,22 @@ int rvu_event_up_notify(struct otx2_nic *pf, structrep_event *info)quoted
return 0; } +static int rvu_rep_change_mtu(struct net_device *dev, int new_mtu) { + struct rep_dev *rep = netdev_priv(dev); + struct otx2_nic *priv = rep->mdev; + struct rep_event evt = {0}; + + netdev_info(dev, "Changing MTU from %d to %d\n", + dev->mtu, new_mtu); + dev->mtu = new_mtu; + + evt.evt_data.mtu = new_mtu; + evt.pcifunc = rep->pcifunc; + rvu_rep_notify_pfvf(priv, RVU_EVENT_MTU_CHANGE, &evt); + return 0; +} + static void rvu_rep_get_stats(struct work_struct *work) { struct delayed_work *del_work = to_delayed_work(work); @@ -226,6 +242,7 @@ static const struct net_device_ops rvu_rep_netdev_ops = { .ndo_stop = rvu_rep_stop, .ndo_start_xmit = rvu_rep_xmit, .ndo_get_stats64 = rvu_rep_get_stats64, + .ndo_change_mtu = rvu_rep_change_mtu, }; static int rvu_rep_napi_init(struct otx2_nic *priv, -- 2.25.1