mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-06 03:06:50 -04:00
net: hibmcge: Implement some ethtool_ops functions
Implement the .get_drvinfo .get_link .get_link_ksettings to get the basic information and working status of the driver. Implement the .set_link_ksettings to modify the rate, duplex, and auto-negotiation status. Signed-off-by: Jijie Shao <shaojijie@huawei.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
17
drivers/net/ethernet/hisilicon/hibmcge/hbg_ethtool.c
Normal file
17
drivers/net/ethernet/hisilicon/hibmcge/hbg_ethtool.c
Normal file
@@ -0,0 +1,17 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
// Copyright (c) 2024 Hisilicon Limited.
|
||||
|
||||
#include <linux/ethtool.h>
|
||||
#include <linux/phy.h>
|
||||
#include "hbg_ethtool.h"
|
||||
|
||||
static const struct ethtool_ops hbg_ethtool_ops = {
|
||||
.get_link = ethtool_op_get_link,
|
||||
.get_link_ksettings = phy_ethtool_get_link_ksettings,
|
||||
.set_link_ksettings = phy_ethtool_set_link_ksettings,
|
||||
};
|
||||
|
||||
void hbg_ethtool_set_ops(struct net_device *netdev)
|
||||
{
|
||||
netdev->ethtool_ops = &hbg_ethtool_ops;
|
||||
}
|
||||
11
drivers/net/ethernet/hisilicon/hibmcge/hbg_ethtool.h
Normal file
11
drivers/net/ethernet/hisilicon/hibmcge/hbg_ethtool.h
Normal file
@@ -0,0 +1,11 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/* Copyright (c) 2024 Hisilicon Limited. */
|
||||
|
||||
#ifndef __HBG_ETHTOOL_H
|
||||
#define __HBG_ETHTOOL_H
|
||||
|
||||
#include <linux/netdevice.h>
|
||||
|
||||
void hbg_ethtool_set_ops(struct net_device *netdev);
|
||||
|
||||
#endif
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/pci.h>
|
||||
#include "hbg_common.h"
|
||||
#include "hbg_ethtool.h"
|
||||
#include "hbg_hw.h"
|
||||
#include "hbg_irq.h"
|
||||
#include "hbg_mdio.h"
|
||||
@@ -223,6 +224,7 @@ static int hbg_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
|
||||
hbg_change_mtu(priv, ETH_DATA_LEN);
|
||||
hbg_net_set_mac_address(priv->netdev, &priv->dev_specs.mac_addr);
|
||||
hbg_ethtool_set_ops(netdev);
|
||||
|
||||
ret = devm_register_netdev(dev, netdev);
|
||||
if (ret)
|
||||
|
||||
Reference in New Issue
Block a user