diff mbox series

[net-next] net: procfs: add seq_puts() statement for dev_mcast

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

Checks

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

Commit Message

Yajun Deng Aug. 16, 2021, 8:57 a.m. UTC
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(-)

Comments

patchwork-bot+netdevbpf@kernel.org Aug. 18, 2021, 9:20 a.m. UTC | #1
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
Vladimir Oltean Oct. 9, 2021, 4:35 p.m. UTC | #2
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
>
Vladimir Oltean Oct. 9, 2021, 4:42 p.m. UTC | #3
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
Yajun Deng Oct. 11, 2021, 2:44 a.m. UTC | #4
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 mbox series

Patch

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);