nvethernet: add lane bringup restart callback

Issue: In the current scenrio, when the remote
interface is brought down and up. There is no way
of getting the link up again with the remote device
which in turn fails the data transfers even though
interface from other end is brought up.

Fix: When interface is gone down on the other side,
MAC receives local faults and in this scenario
no data should be sent to MAC, so disable network
queues and initiate the lane bring up process for
monitoring the link status. Once the link is up,
re enable the network queues for data transfers.

Also added support for enabling driver logs using
msglvl of ethtool

Bug 3744088
Bug 3654543
Bug 3665378

Change-Id: I16cdee74e4e3ff6cd176924575f5005f385d4c5d
Signed-off-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2730876
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com>
GVS: Gerrit_Virtual_Submit
This commit is contained in:
Narayan Reddy
2022-06-18 11:37:01 +00:00
committed by Revanth Kumar Uppala
parent f502700729
commit 99acf2912b
4 changed files with 54 additions and 1 deletions

View File

@@ -1603,6 +1603,20 @@ static int ether_set_ringparam(struct net_device *ndev,
return ret;
}
static unsigned int ether_get_msglevel(struct net_device *ndev)
{
struct ether_priv_data *pdata = netdev_priv(ndev);
return pdata->msg_enable;
}
static void ether_set_msglevel(struct net_device *ndev, u32 level)
{
struct ether_priv_data *pdata = netdev_priv(ndev);
pdata->msg_enable = level;
}
/**
* @brief Set of ethtool operations
*/
@@ -1634,6 +1648,8 @@ static const struct ethtool_ops ether_ethtool_ops = {
.set_rxfh = ether_set_rxfh,
.get_ringparam = ether_get_ringparam,
.set_ringparam = ether_set_ringparam,
.get_msglevel = ether_get_msglevel,
.set_msglevel = ether_set_msglevel,
};
void ether_set_ethtool_ops(struct net_device *ndev)