Add seq_puts() statement for dev_mcast, make it more readable.
As also, keep vertical alignment for {dev, ptype, dev_mcast} that
under /proc/net.
Signed-off-by: Yajun Deng <[email protected]>
---
net/core/net-procfs.c | 24 +++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c
index d8b9dbabd4a4..eab5fc88a002 100644
--- a/net/core/net-procfs.c
+++ b/net/core/net-procfs.c
@@ -77,8 +77,8 @@ static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
struct rtnl_link_stats64 temp;
const struct rtnl_link_stats64 *stats = dev_get_stats(dev, &temp);
- seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
- "%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n",
+ seq_printf(seq, "%9s: %16llu %12llu %4llu %6llu %4llu %5llu %10llu %9llu "
+ "%16llu %12llu %4llu %6llu %4llu %5llu %7llu %10llu\n",
dev->name, stats->rx_bytes, stats->rx_packets,
stats->rx_errors,
stats->rx_dropped + stats->rx_missed_errors,
@@ -103,11 +103,11 @@ static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
static int dev_seq_show(struct seq_file *seq, void *v)
{
if (v == SEQ_START_TOKEN)
- seq_puts(seq, "Inter-| Receive "
- " | Transmit\n"
- " face |bytes packets errs drop fifo frame "
- "compressed multicast|bytes packets errs "
- "drop fifo colls carrier compressed\n");
+ seq_puts(seq, "Interface| Receive "
+ " | Transmit\n"
+ " | bytes packets errs drop fifo frame "
+ "compressed multicast| bytes packets errs "
+ " drop fifo colls carrier compressed\n");
else
dev_seq_printf_stats(seq, v);
return 0;
@@ -259,14 +259,14 @@ static int ptype_seq_show(struct seq_file *seq, void *v)
struct packet_type *pt = v;
if (v == SEQ_START_TOKEN)
- seq_puts(seq, "Type Device Function\n");
+ seq_puts(seq, "Type Device Function\n");
else if (pt->dev == NULL || dev_net(pt->dev) == seq_file_net(seq)) {
if (pt->type == htons(ETH_P_ALL))
seq_puts(seq, "ALL ");
else
seq_printf(seq, "%04x", ntohs(pt->type));
- seq_printf(seq, " %-8s %ps\n",
+ seq_printf(seq, " %-9s %ps\n",
pt->dev ? pt->dev->name : "", pt->func);
}
@@ -327,12 +327,14 @@ static int dev_mc_seq_show(struct seq_file *seq, void *v)
struct netdev_hw_addr *ha;
struct net_device *dev = v;
- if (v == SEQ_START_TOKEN)
+ if (v == SEQ_START_TOKEN) {
+ seq_puts(seq, "Ifindex Interface Refcount Global_use Address\n");
return 0;
+ }
netif_addr_lock_bh(dev);
netdev_for_each_mc_addr(ha, dev) {
- seq_printf(seq, "%-4d %-15s %-5d %-5d %*phN\n",
+ seq_printf(seq, "%-7d %-9s %-8d %-10d %*phN\n",
dev->ifindex, dev->name,
ha->refcount, ha->global_use,
(int)dev->addr_len, ha->addr);
--
2.32.0
Hello:
This patch was applied to netdev/net-next.git (refs/heads/master):
On Mon, 16 Aug 2021 16:57:57 +0800 you wrote:
> Add seq_puts() statement for dev_mcast, make it more readable.
> As also, keep vertical alignment for {dev, ptype, dev_mcast} that
> under /proc/net.
>
> Signed-off-by: Yajun Deng <[email protected]>
> ---
> net/core/net-procfs.c | 24 +++++++++++++-----------
> 1 file changed, 13 insertions(+), 11 deletions(-)
Here is the summary with links:
- [net-next] net: procfs: add seq_puts() statement for dev_mcast
https://git.kernel.org/netdev/net-next/c/ec18e8455484
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
On Mon, Aug 16, 2021 at 04:57:57PM +0800, Yajun Deng wrote:
> Add seq_puts() statement for dev_mcast, make it more readable.
> As also, keep vertical alignment for {dev, ptype, dev_mcast} that
> under /proc/net.
>
> Signed-off-by: Yajun Deng <[email protected]>
> ---
FYI, this program got broken by this commit (reverting it restores
functionality):
root@debian:~# ifstat
ifstat: /proc/net/dev: unsupported format.
Confusingly enough, the "ifstat" provided by Debian is not from iproute2:
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/tree/misc/ifstat.c
but rather a similarly named program:
https://packages.debian.org/source/bullseye/ifstat
https://github.com/matttbe/ifstat
I haven't studied how this program parses /proc/net/dev, but here's how
the kernel's output changed:
Doesn't work:
root@debian:~# cat /proc/net/dev
Interface| Receive | Transmit
| bytes packets errs drop fifo frame compressed multicast| bytes packets errs drop fifo colls carrier compressed
lo: 97400 1204 0 0 0 0 0 0 97400 1204 0 0 0 0 0 0
bond0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
eno2: 5002206 6651 0 0 0 0 0 0 105518642 1465023 0 0 0 0 0 0
swp0: 134531 2448 0 0 0 0 0 0 99599598 1464381 0 0 0 0 0 0
swp1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
swp2: 4867675 4203 0 0 0 0 0 0 58134 631 0 0 0 0 0 0
sw0p0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sw0p1: 124739 2448 0 1422 0 0 0 0 93741184 1464369 0 0 0 0 0 0
sw0p2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sw2p0: 4850863 4203 0 0 0 0 0 0 54722 619 0 0 0 0 0 0
sw2p1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sw2p2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sw2p3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
br0: 10508 212 0 212 0 0 0 212 61369558 958857 0 0 0 0 0 0
Works:
root@debian:~# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 13160 164 0 0 0 0 0 0 13160 164 0 0 0 0 0 0
bond0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
eno2: 30824 268 0 0 0 0 0 0 3332 37 0 0 0 0 0 0
swp0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
swp1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
swp2: 30824 268 0 0 0 0 0 0 2428 27 0 0 0 0 0 0
sw0p0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sw0p1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sw0p2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sw2p0: 29752 268 0 0 0 0 0 0 1564 17 0 0 0 0 0 0
sw2p1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sw2p2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sw2p3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> net/core/net-procfs.c | 24 +++++++++++++-----------
> 1 file changed, 13 insertions(+), 11 deletions(-)
>
> diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c
> index d8b9dbabd4a4..eab5fc88a002 100644
> --- a/net/core/net-procfs.c
> +++ b/net/core/net-procfs.c
> @@ -77,8 +77,8 @@ static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
> struct rtnl_link_stats64 temp;
> const struct rtnl_link_stats64 *stats = dev_get_stats(dev, &temp);
>
> - seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
> - "%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n",
> + seq_printf(seq, "%9s: %16llu %12llu %4llu %6llu %4llu %5llu %10llu %9llu "
> + "%16llu %12llu %4llu %6llu %4llu %5llu %7llu %10llu\n",
> dev->name, stats->rx_bytes, stats->rx_packets,
> stats->rx_errors,
> stats->rx_dropped + stats->rx_missed_errors,
> @@ -103,11 +103,11 @@ static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
> static int dev_seq_show(struct seq_file *seq, void *v)
> {
> if (v == SEQ_START_TOKEN)
> - seq_puts(seq, "Inter-| Receive "
> - " | Transmit\n"
> - " face |bytes packets errs drop fifo frame "
> - "compressed multicast|bytes packets errs "
> - "drop fifo colls carrier compressed\n");
> + seq_puts(seq, "Interface| Receive "
> + " | Transmit\n"
> + " | bytes packets errs drop fifo frame "
> + "compressed multicast| bytes packets errs "
> + " drop fifo colls carrier compressed\n");
> else
> dev_seq_printf_stats(seq, v);
> return 0;
> @@ -259,14 +259,14 @@ static int ptype_seq_show(struct seq_file *seq, void *v)
> struct packet_type *pt = v;
>
> if (v == SEQ_START_TOKEN)
> - seq_puts(seq, "Type Device Function\n");
> + seq_puts(seq, "Type Device Function\n");
> else if (pt->dev == NULL || dev_net(pt->dev) == seq_file_net(seq)) {
> if (pt->type == htons(ETH_P_ALL))
> seq_puts(seq, "ALL ");
> else
> seq_printf(seq, "%04x", ntohs(pt->type));
>
> - seq_printf(seq, " %-8s %ps\n",
> + seq_printf(seq, " %-9s %ps\n",
> pt->dev ? pt->dev->name : "", pt->func);
> }
>
> @@ -327,12 +327,14 @@ static int dev_mc_seq_show(struct seq_file *seq, void *v)
> struct netdev_hw_addr *ha;
> struct net_device *dev = v;
>
> - if (v == SEQ_START_TOKEN)
> + if (v == SEQ_START_TOKEN) {
> + seq_puts(seq, "Ifindex Interface Refcount Global_use Address\n");
> return 0;
> + }
>
> netif_addr_lock_bh(dev);
> netdev_for_each_mc_addr(ha, dev) {
> - seq_printf(seq, "%-4d %-15s %-5d %-5d %*phN\n",
> + seq_printf(seq, "%-7d %-9s %-8d %-10d %*phN\n",
> dev->ifindex, dev->name,
> ha->refcount, ha->global_use,
> (int)dev->addr_len, ha->addr);
> --
> 2.32.0
>
On Sat, Oct 09, 2021 at 07:35:11PM +0300, Vladimir Oltean wrote:
> On Mon, Aug 16, 2021 at 04:57:57PM +0800, Yajun Deng wrote:
> > Add seq_puts() statement for dev_mcast, make it more readable.
> > As also, keep vertical alignment for {dev, ptype, dev_mcast} that
> > under /proc/net.
> >
> > Signed-off-by: Yajun Deng <[email protected]>
> > ---
>
> FYI, this program got broken by this commit (reverting it restores
> functionality):
>
> root@debian:~# ifstat
> ifstat: /proc/net/dev: unsupported format.
>
> Confusingly enough, the "ifstat" provided by Debian is not from iproute2:
> https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/tree/misc/ifstat.c
> but rather a similarly named program:
> https://packages.debian.org/source/bullseye/ifstat
> https://github.com/matttbe/ifstat
>
> I haven't studied how this program parses /proc/net/dev, but here's how
> the kernel's output changed:
Ah, it scrapes the text for "Inter-|":
https://github.com/matttbe/ifstat/blob/main/drivers.c#L825
>
> Doesn't work:
>
> root@debian:~# cat /proc/net/dev
> Interface| Receive | Transmit
> | bytes packets errs drop fifo frame compressed multicast| bytes packets errs drop fifo colls carrier compressed
> lo: 97400 1204 0 0 0 0 0 0 97400 1204 0 0 0 0 0 0
> bond0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> eno2: 5002206 6651 0 0 0 0 0 0 105518642 1465023 0 0 0 0 0 0
> swp0: 134531 2448 0 0 0 0 0 0 99599598 1464381 0 0 0 0 0 0
> swp1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> swp2: 4867675 4203 0 0 0 0 0 0 58134 631 0 0 0 0 0 0
> sw0p0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> sw0p1: 124739 2448 0 1422 0 0 0 0 93741184 1464369 0 0 0 0 0 0
> sw0p2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> sw2p0: 4850863 4203 0 0 0 0 0 0 54722 619 0 0 0 0 0 0
> sw2p1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> sw2p2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> sw2p3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> br0: 10508 212 0 212 0 0 0 212 61369558 958857 0 0 0 0 0 0
>
> Works:
>
> root@debian:~# cat /proc/net/dev
> Inter-| Receive | Transmit
> face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
> lo: 13160 164 0 0 0 0 0 0 13160 164 0 0 0 0 0 0
> bond0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> eno2: 30824 268 0 0 0 0 0 0 3332 37 0 0 0 0 0 0
> swp0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> swp1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> swp2: 30824 268 0 0 0 0 0 0 2428 27 0 0 0 0 0 0
> sw0p0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> sw0p1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> sw0p2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> sw2p0: 29752 268 0 0 0 0 0 0 1564 17 0 0 0 0 0 0
> sw2p1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> sw2p2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> sw2p3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
There is PCIe NIC with long name, this is the reason why put the 'Interface' a whole.
before:
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 251136 2956 0 0 0 0 0 0 251136 2956 0 0 0 0 0 0
enp27s0f0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
enp27s0f1: 95099489 627116 0 328486 0 0 0 187285 18680642 67213 0 0 0 0 0 0
docker0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
after:
Interface| Receive | Transmit
| bytes packets errs drop fifo frame compressed multicast| bytes packets errs drop fifo colls carrier compressed
lo: 251136 2956 0 0 0 0 0 0 251136 2956 0 0 0 0 0 0
enp27s0f0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
enp27s0f1: 95099489 627116 0 328486 0 0 0 187285 18680642 67213 0 0 0 0 0 0
docker0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
October 10, 2021 12:42 AM, "Vladimir Oltean" <[email protected]> 写到:
> On Sat, Oct 09, 2021 at 07:35:11PM +0300, Vladimir Oltean wrote:
>
>> On Mon, Aug 16, 2021 at 04:57:57PM +0800, Yajun Deng wrote:
>> Add seq_puts() statement for dev_mcast, make it more readable.
>> As also, keep vertical alignment for {dev, ptype, dev_mcast} that
>> under /proc/net.
>>
>> Signed-off-by: Yajun Deng <[email protected]>
>> ---
>>
>> FYI, this program got broken by this commit (reverting it restores
>> functionality):
>>
>> root@debian:~# ifstat
>> ifstat: /proc/net/dev: unsupported format.
>>
>> Confusingly enough, the "ifstat" provided by Debian is not from iproute2:
>> https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/tree/misc/ifstat.c
>> but rather a similarly named program:
>> https://packages.debian.org/source/bullseye/ifstat
>> https://github.com/matttbe/ifstat
>>
>> I haven't studied how this program parses /proc/net/dev, but here's how
>> the kernel's output changed:
>
> Ah, it scrapes the text for "Inter-|":
> https://github.com/matttbe/ifstat/blob/main/drivers.c#L825
>
>> Doesn't work:
>>
>> root@debian:~# cat /proc/net/dev
>> Interface| Receive | Transmit
>> | bytes packets errs drop fifo frame compressed multicast| bytes packets errs drop fifo colls
>> carrier compressed
>> lo: 97400 1204 0 0 0 0 0 0 97400 1204 0 0 0 0 0 0
>> bond0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> eno2: 5002206 6651 0 0 0 0 0 0 105518642 1465023 0 0 0 0 0 0
>> swp0: 134531 2448 0 0 0 0 0 0 99599598 1464381 0 0 0 0 0 0
>> swp1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> swp2: 4867675 4203 0 0 0 0 0 0 58134 631 0 0 0 0 0 0
>> sw0p0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> sw0p1: 124739 2448 0 1422 0 0 0 0 93741184 1464369 0 0 0 0 0 0
>> sw0p2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> sw2p0: 4850863 4203 0 0 0 0 0 0 54722 619 0 0 0 0 0 0
>> sw2p1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> sw2p2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> sw2p3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> br0: 10508 212 0 212 0 0 0 212 61369558 958857 0 0 0 0 0 0
>>
>> Works:
>>
>> root@debian:~# cat /proc/net/dev
>> Inter-| Receive | Transmit
>> face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls
>> carrier compressed
>> lo: 13160 164 0 0 0 0 0 0 13160 164 0 0 0 0 0 0
>> bond0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> eno2: 30824 268 0 0 0 0 0 0 3332 37 0 0 0 0 0 0
>> swp0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> swp1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> swp2: 30824 268 0 0 0 0 0 0 2428 27 0 0 0 0 0 0
>> sw0p0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> sw0p1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> sw0p2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> sw2p0: 29752 268 0 0 0 0 0 0 1564 17 0 0 0 0 0 0
>> sw2p1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> sw2p2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> sw2p3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0