Message ID | 20210816085757.28166-1-yajun.deng@linux.dev (mailing list archive) |
---|---|
State | Accepted |
Commit | ec18e8455484370d633a718c6456ddbf6eceef21 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] net: procfs: add seq_puts() statement for dev_mcast | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for net-next |
netdev/subject_prefix | success | Link |
netdev/cc_maintainers | warning | 2 maintainers not CCed: pabeni@redhat.com vladimir.oltean@nxp.com |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | success | Errors and warnings before: 1 this patch: 1 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | warning | WARNING: quoted string split across lines |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 1 this patch: 1 |
netdev/header_inline | success | Link |
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 <yajun.deng@linux.dev> > --- > 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 <yajun.deng@linux.dev> > --- 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 <yajun.deng@linux.dev> > > --- > > 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" <olteanv@gmail.com> 写到: > 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 <yajun.deng@linux.dev> >> --- >> >> 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
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);
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 <yajun.deng@linux.dev> --- net/core/net-procfs.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-)