Commit e0971c83 authored by Tomer Tayar's avatar Tomer Tayar Committed by David S. Miller

qed*: Add support for the ethtool get_regs operation

Signed-off-by: default avatarTomer Tayar <Tomer.Tayar@qlogic.com>
Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c965db44
...@@ -1398,6 +1398,8 @@ const struct qed_common_ops qed_common_ops_pass = { ...@@ -1398,6 +1398,8 @@ const struct qed_common_ops qed_common_ops_pass = {
.get_link = &qed_get_current_link, .get_link = &qed_get_current_link,
.drain = &qed_drain, .drain = &qed_drain,
.update_msglvl = &qed_init_dp, .update_msglvl = &qed_init_dp,
.dbg_all_data = &qed_dbg_all_data,
.dbg_all_data_size = &qed_dbg_all_data_size,
.chain_alloc = &qed_chain_alloc, .chain_alloc = &qed_chain_alloc,
.chain_free = &qed_chain_free, .chain_free = &qed_chain_free,
.get_coalesce = &qed_get_coalesce, .get_coalesce = &qed_get_coalesce,
......
...@@ -695,6 +695,28 @@ static int qede_set_pauseparam(struct net_device *dev, ...@@ -695,6 +695,28 @@ static int qede_set_pauseparam(struct net_device *dev,
return 0; return 0;
} }
static void qede_get_regs(struct net_device *ndev,
struct ethtool_regs *regs, void *buffer)
{
struct qede_dev *edev = netdev_priv(ndev);
regs->version = 0;
memset(buffer, 0, regs->len);
if (edev->ops && edev->ops->common)
edev->ops->common->dbg_all_data(edev->cdev, buffer);
}
static int qede_get_regs_len(struct net_device *ndev)
{
struct qede_dev *edev = netdev_priv(ndev);
if (edev->ops && edev->ops->common)
return edev->ops->common->dbg_all_data_size(edev->cdev);
else
return -EINVAL;
}
static void qede_update_mtu(struct qede_dev *edev, union qede_reload_args *args) static void qede_update_mtu(struct qede_dev *edev, union qede_reload_args *args)
{ {
edev->ndev->mtu = args->mtu; edev->ndev->mtu = args->mtu;
...@@ -1395,6 +1417,8 @@ static const struct ethtool_ops qede_ethtool_ops = { ...@@ -1395,6 +1417,8 @@ static const struct ethtool_ops qede_ethtool_ops = {
.get_link_ksettings = qede_get_link_ksettings, .get_link_ksettings = qede_get_link_ksettings,
.set_link_ksettings = qede_set_link_ksettings, .set_link_ksettings = qede_set_link_ksettings,
.get_drvinfo = qede_get_drvinfo, .get_drvinfo = qede_get_drvinfo,
.get_regs_len = qede_get_regs_len,
.get_regs = qede_get_regs,
.get_msglevel = qede_get_msglevel, .get_msglevel = qede_get_msglevel,
.set_msglevel = qede_set_msglevel, .set_msglevel = qede_set_msglevel,
.nway_reset = qede_nway_reset, .nway_reset = qede_nway_reset,
......
...@@ -455,6 +455,10 @@ struct qed_common_ops { ...@@ -455,6 +455,10 @@ struct qed_common_ops {
void (*simd_handler_clean)(struct qed_dev *cdev, void (*simd_handler_clean)(struct qed_dev *cdev,
int index); int index);
int (*dbg_all_data) (struct qed_dev *cdev, void *buffer);
int (*dbg_all_data_size) (struct qed_dev *cdev);
/** /**
* @brief can_link_change - can the instance change the link or not * @brief can_link_change - can the instance change the link or not
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment