diff options
author | takeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp> | 2020-11-02 11:07:33 +0900 |
---|---|---|
committer | takeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp> | 2020-11-02 11:07:33 +0900 |
commit | 1c7d6584a7811b7785ae5c1e378f14b5ba0971cf (patch) | |
tree | cd70a267a5ef105ba32f200aa088e281fbd85747 /meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch | |
parent | 4204309872da5cb401cbb2729d9e2d4869a87f42 (diff) |
basesystem-jjsandbox/ToshikazuOhiwa/master-jj
recipes
Diffstat (limited to 'meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch')
-rw-r--r-- | meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch new file mode 100644 index 00000000..d0a562a7 --- /dev/null +++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch @@ -0,0 +1,61 @@ +From 98f68e69e2e950b44e7324bbcc94700705193443 Mon Sep 17 00:00:00 2001 +From: Jan Kiszka <jan.kiszka@siemens.com> +Date: Sun, 1 Jan 2017 15:46:26 +0100 +Subject: [PATCH 20/32] ivshmem-net: Add ethtool register dump + +Helps debugging inconsistent states. + +Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> +--- + drivers/net/ivshmem-net.c | 31 +++++++++++++++++++++++++++++++ + 1 file changed, 31 insertions(+) + +diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c +index 09484d652add..c52727ef40c1 100644 +--- a/drivers/net/ivshmem-net.c ++++ b/drivers/net/ivshmem-net.c +@@ -748,10 +748,41 @@ static void ivshm_net_get_ethtool_stats(struct net_device *ndev, + memset(&in->stats, 0, sizeof(in->stats)); + } + ++#define IVSHM_NET_REGS_LEN (3 * sizeof(u32) + 6 * sizeof(u16)) ++ ++static int ivshm_net_get_regs_len(struct net_device *ndev) ++{ ++ return IVSHM_NET_REGS_LEN; ++} ++ ++static void ivshm_net_get_regs(struct net_device *ndev, ++ struct ethtool_regs *regs, void *p) ++{ ++ struct ivshm_net *in = netdev_priv(ndev); ++ u32 *reg32 = p; ++ u16 *reg16; ++ ++ *reg32++ = in->lstate; ++ *reg32++ = in->rstate; ++ *reg32++ = in->qlen; ++ ++ reg16 = (u16 *)reg32; ++ ++ *reg16++ = in->tx.vr.avail ? in->tx.vr.avail->idx : 0; ++ *reg16++ = in->tx.vr.used ? in->tx.vr.used->idx : 0; ++ *reg16++ = in->tx.vr.avail ? vring_avail_event(&in->tx.vr) : 0; ++ ++ *reg16++ = in->rx.vr.avail ? in->rx.vr.avail->idx : 0; ++ *reg16++ = in->rx.vr.used ? in->rx.vr.used->idx : 0; ++ *reg16++ = in->rx.vr.avail ? vring_avail_event(&in->rx.vr) : 0; ++} ++ + static const struct ethtool_ops ivshm_net_ethtool_ops = { + .get_sset_count = ivshm_net_get_sset_count, + .get_strings = ivshm_net_get_strings, + .get_ethtool_stats = ivshm_net_get_ethtool_stats, ++ .get_regs_len = ivshm_net_get_regs_len, ++ .get_regs = ivshm_net_get_regs, + }; + + static int ivshm_net_probe(struct pci_dev *pdev, +-- +2.11.0 + |