From 69cf090fde0a7e6fdf3678b7bb8efc7f10f32b62 Mon Sep 17 00:00:00 2001 From: Bhadram Varka Date: Wed, 18 Mar 2020 12:28:04 +0530 Subject: [PATCH] nvethernet: check return code for set_speed osi_set_speed will return error if there is no set_speed callback defined or if something error happened while setting speed. Bug 200565886 Change-Id: I9c74364d1a2e951059c3718c719314424b13c729 Signed-off-by: Bhadram Varka Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2314494 Tested-by: mobile promotions Reviewed-by: mobile promotions --- drivers/net/ethernet/nvidia/nvethernet/ether_linux.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c index fb15313a..a8f0943b 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c +++ b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c @@ -271,10 +271,12 @@ static void ether_adjust_link(struct net_device *dev) int new_state = 0, speed_changed = 0; unsigned long val; unsigned int eee_enable = OSI_DISABLE; + int ret = 0; if (phydev == NULL) { return; } + if (phydev->link) { if ((pdata->osi_core->pause_frames == OSI_PAUSE_FRAMES_ENABLE) && (phydev->pause || phydev->asym_pause)) { @@ -291,7 +293,12 @@ static void ether_adjust_link(struct net_device *dev) if (phydev->speed != pdata->speed) { new_state = 1; speed_changed = 1; - osi_set_speed(pdata->osi_core, phydev->speed); + ret = osi_set_speed(pdata->osi_core, phydev->speed); + if (ret < 0) { + netdev_err(dev, "Failed to set speed\n"); + return; + } + pdata->speed = phydev->speed; }