]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
qed*: Add support for the ethtool get_regs operation
authorTomer Tayar <Tomer.Tayar@qlogic.com>
Wed, 7 Sep 2016 13:36:25 +0000 (16:36 +0300)
committerChuck Anderson <chuck.anderson@oracle.com>
Mon, 6 Mar 2017 04:59:46 +0000 (20:59 -0800)
Orabug: 25477939

Signed-off-by: Tomer Tayar <Tomer.Tayar@qlogic.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit e0971c832af4cd906ab931c9f6e9e1791a62fc98)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/net/ethernet/qlogic/qed/qed_main.c
drivers/net/ethernet/qlogic/qede/qede_ethtool.c
include/linux/qed/qed_if.h

index e2f0c483f6e6ee09831ef8b41125d587e2e77608..1462ad46891130c8863d18c1daf2bd66a4b51805 100644 (file)
@@ -1391,6 +1391,8 @@ const struct qed_common_ops qed_common_ops_pass = {
        .get_link = &qed_get_current_link,
        .drain = &qed_drain,
        .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_free = &qed_chain_free,
        .get_coalesce = &qed_get_coalesce,
index 552e1f4d75890828864453ec30c5186e161d1768..e22f2fc5f4ea5f40e7c12079e0f18485480f332e 100644 (file)
@@ -623,6 +623,28 @@ static int qede_set_pauseparam(struct net_device *dev,
        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)
 {
        edev->ndev->mtu = args->mtu;
@@ -1323,6 +1345,8 @@ static const struct ethtool_ops qede_ethtool_ops = {
        .get_settings = qede_get_settings,
        .set_settings = qede_set_settings,
        .get_drvinfo = qede_get_drvinfo,
+       .get_regs_len = qede_get_regs_len,
+       .get_regs = qede_get_regs,
        .get_msglevel = qede_get_msglevel,
        .set_msglevel = qede_set_msglevel,
        .nway_reset = qede_nway_reset,
index d8dc5c2243d5e018b731e1f9fac9b7e32432015f..e4546abcea08f3bb6cd7581cf2853ab602f11e29 100644 (file)
@@ -455,6 +455,10 @@ struct qed_common_ops {
        void            (*simd_handler_clean)(struct qed_dev *cdev,
                                              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
  *