Skip to contentSkip to conversation

Add MODULE_VERSION to several network drivers

PATCH Applied John W. Linville 4 participants 27 messages Oct 20, 2004 – Oct 21, 2004

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

cover Add MODULE_VERSION to several network drivers

Patches to add MODULE_VERSION lines to several network drivers...

Here is the list:

	tg3
	e100
	e1000
	b44
	tulip
	3c59x
	8139too
	ns83820
	r8169
	bonding
	vlan

Individual patches to follow...

John

Signature · 2 lines
John W. Linville
[email protected]
#1 lore raw

PATCH 1/11 tg3: Add MODULE_VERSION

Add MODULE_VERSION to tg3 driver.

 drivers/net/tg3.c |    1 +
 1 files changed, 1 insertion(+)
drivers/net/tg3.c renamed from drivers/net/tg3.c.orig +1 -0
@@ -143,6 +143,7 @@ MODULE_DESCRIPTION("Broadcom Tigon3 ethe
 MODULE_LICENSE("GPL");
 MODULE_PARM(tg3_debug, "i");
 MODULE_PARM_DESC(tg3_debug, "Tigon3 bitmapped debugging message enable value");
+MODULE_VERSION(DRV_MODULE_VERSION);
 
 static int tg3_debug = -1;	/* -1 == use TG3_DEF_MSG_ENABLE as value */
 
#4 lore raw

PATCH 2/11 e100: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to e100 driver.

 drivers/net/e100.c |    1 +
 1 files changed, 1 insertion(+)
drivers/net/e100.c renamed from drivers/net/e100.c.orig +1 -0
@@ -166,6 +166,7 @@
 MODULE_DESCRIPTION(DRV_DESCRIPTION);
 MODULE_AUTHOR(DRV_COPYRIGHT);
 MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
 
 static int debug = 3;
 module_param(debug, int, 0);
#6 lore raw

PATCH 3/11 e1000: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to e1000 driver.

 drivers/net/e1000/e1000_main.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)
drivers/net/e1000/e1000_main.c renamed from drivers/net/e1000/e1000_main.c.orig +3 -1
@@ -48,7 +48,8 @@ char e1000_driver_string[] = "Intel(R) P
 #else
 #define DRIVERNAPI "-NAPI"
 #endif
-char e1000_driver_version[] = "5.3.19-k2"DRIVERNAPI;
+#define DRV_VERSION "5.3.19-k2"DRIVERNAPI
+char e1000_driver_version[] = DRV_VERSION;
 char e1000_copyright[] = "Copyright (c) 1999-2004 Intel Corporation.";
 
 /* e1000_pci_tbl - PCI Device ID Table
@@ -196,6 +197,7 @@ static struct pci_driver e1000_driver = 
 MODULE_AUTHOR("Intel Corporation, <[email protected]>");
 MODULE_DESCRIPTION("Intel(R) PRO/1000 Network Driver");
 MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
 
 static int debug = NETIF_MSG_DRV | NETIF_MSG_PROBE;
 module_param(debug, int, 0);
#8 lore raw

PATCH 4/11 b44: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to b44 driver.

 drivers/net/b44.c |    1 +
 1 files changed, 1 insertion(+)
drivers/net/b44.c renamed from drivers/net/b44.c.orig +1 -0
@@ -79,6 +79,7 @@ MODULE_DESCRIPTION("Broadcom 4400 10/100
 MODULE_LICENSE("GPL");
 MODULE_PARM(b44_debug, "i");
 MODULE_PARM_DESC(b44_debug, "B44 bitmapped debugging message enable value");
+MODULE_VERSION(DRV_MODULE_VERSION);
 
 static int b44_debug = -1;	/* -1 == use B44_DEF_MSG_ENABLE as value */
 
#11 lore raw

PATCH 5/11 tulip: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to the tulip-based drivers

---
 drivers/net/tulip/de2104x.c         |    1 +
 drivers/net/tulip/dmfe.c            |    1 +
 drivers/net/tulip/tulip_core.c      |    1 +
 drivers/net/tulip/winbond-840.c     |    1 +
 drivers/net/tulip/xircom_tulip_cb.c |    1 +
 5 files changed, 5 insertions(+)
drivers/net/tulip/de2104x.c renamed from drivers/net/tulip/de2104x.c.orig +1 -0
@@ -56,6 +56,7 @@ KERN_INFO DRV_NAME " PCI Ethernet driver
 MODULE_AUTHOR("Jeff Garzik <[email protected]>");
 MODULE_DESCRIPTION("Intel/Digital 21040/1 series PCI Ethernet driver");
 MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
 
 static int debug = -1;
 MODULE_PARM (debug, "i");
drivers/net/tulip/tulip_core.c renamed from drivers/net/tulip/tulip_core.c.orig +1 -0
@@ -115,6 +115,7 @@ static int csr0 = 0x00A00000 | 0x4800;
 MODULE_AUTHOR("The Linux Kernel Team");
 MODULE_DESCRIPTION("Digital 21*4* Tulip ethernet driver");
 MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
 MODULE_PARM(tulip_debug, "i");
 MODULE_PARM(max_interrupt_work, "i");
 MODULE_PARM(rx_copybreak, "i");
drivers/net/tulip/xircom_tulip_cb.c renamed from drivers/net/tulip/xircom_tulip_cb.c.orig +1 -0
@@ -116,6 +116,7 @@ KERN_INFO " unofficial 2.4.x kernel port
 MODULE_AUTHOR("Donald Becker <[email protected]>");
 MODULE_DESCRIPTION("Xircom CBE-100 ethernet driver");
 MODULE_LICENSE("GPL v2");
+MODULE_VERSION(DRV_VERSION);
 
 MODULE_PARM(debug, "i");
 MODULE_PARM(max_interrupt_work, "i");
drivers/net/tulip/dmfe.c renamed from drivers/net/tulip/dmfe.c.orig +1 -0
@@ -1986,6 +1986,7 @@ static struct pci_driver dmfe_driver = {
 MODULE_AUTHOR("Sten Wang, [email protected]");
 MODULE_DESCRIPTION("Davicom DM910X fast ethernet driver");
 MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
 
 MODULE_PARM(debug, "i");
 MODULE_PARM(mode, "i");
drivers/net/tulip/winbond-840.c renamed from drivers/net/tulip/winbond-840.c.orig +1 -0
@@ -144,6 +144,7 @@ KERN_INFO "  http://www.scyld.com/networ
 MODULE_AUTHOR("Donald Becker <[email protected]>");
 MODULE_DESCRIPTION("Winbond W89c840 Ethernet driver");
 MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
 
 MODULE_PARM(max_interrupt_work, "i");
 MODULE_PARM(debug, "i");
#12 lore raw

PATCH 6/11 3c59x: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to 3c59x driver.

---

 drivers/net/3c59x.c |    1 +
 1 files changed, 1 insertion(+)
drivers/net/3c59x.c renamed from drivers/net/3c59x.c.orig +1 -0
@@ -277,6 +277,7 @@ MODULE_AUTHOR("Donald Becker <becker@scy
 MODULE_DESCRIPTION("3Com 3c59x/3c9xx ethernet driver "
 					DRV_VERSION " " DRV_RELDATE);
 MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
 
 MODULE_PARM(debug, "i");
 MODULE_PARM(global_options, "i");
#13 lore raw

PATCH 7/11 8139too: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to 8139too driver.

---

 drivers/net/8139too.c |    1 +
 1 files changed, 1 insertion(+)
drivers/net/8139too.c renamed from drivers/net/8139too.c.8139too +1 -0
@@ -598,6 +598,7 @@ struct rtl8139_private {
 MODULE_AUTHOR ("Jeff Garzik <[email protected]>");
 MODULE_DESCRIPTION ("RealTek RTL-8139 Fast Ethernet driver");
 MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
 
 MODULE_PARM (multicast_filter_limit, "i");
 MODULE_PARM (media, "1-" __MODULE_STRING(MAX_UNITS) "i");
#14 lore raw

PATCH 8/11 ns83820: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to ns83820 driver.

---

 drivers/net/ns83820.c |    1 +
 1 files changed, 1 insertion(+)
drivers/net/ns83820.c renamed from drivers/net/ns83820.c.ns83820 +1 -0
@@ -2106,6 +2106,7 @@ static void __exit ns83820_exit(void)
 MODULE_AUTHOR("Benjamin LaHaise <[email protected]>");
 MODULE_DESCRIPTION("National Semiconductor DP83820 10/100/1000 driver");
 MODULE_LICENSE("GPL");
+MODULE_VERSION(VERSION);
 
 MODULE_DEVICE_TABLE(pci, ns83820_pci_tbl);
 
#15 lore raw

PATCH 9/11 r8169: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to r8169 driver.

---

 drivers/net/r8169.c |    1 +
 1 files changed, 1 insertion(+)
drivers/net/r8169.c renamed from drivers/net/r8169.c.orig +1 -0
@@ -362,6 +362,7 @@ MODULE_PARM(rx_copybreak, "i");
 MODULE_PARM(use_dac, "i");
 MODULE_PARM_DESC(use_dac, "Enable PCI DAC. Unsafe on 32 bit PCI slot.");
 MODULE_LICENSE("GPL");
+MODULE_VERSION(RTL8169_VERSION);
 
 static int rtl8169_open(struct net_device *dev);
 static int rtl8169_start_xmit(struct sk_buff *skb, struct net_device *dev);
#19 lore raw

PATCH 10/11 bonding: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to bonding driver.

---

 drivers/net/bonding/bond_main.c |    1 +
 1 files changed, 1 insertion(+)
drivers/net/bonding/bond_main.c renamed from drivers/net/bonding/bond_main.c.orig +1 -0
@@ -4700,6 +4700,7 @@ static void __exit bonding_exit(void)
 module_init(bonding_init);
 module_exit(bonding_exit);
 MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
 MODULE_DESCRIPTION(DRV_DESCRIPTION ", v" DRV_VERSION);
 MODULE_AUTHOR("Thomas Davis, [email protected] and many others");
 MODULE_SUPPORTED_DEVICE("most ethernet devices");
#20 lore raw

PATCH 11/11 vlan: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to vlan driver.

---

 net/8021q/vlan.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)
net/8021q/vlan.c renamed from net/8021q/vlan.c.orig +6 -4
@@ -35,6 +35,8 @@
 #include "vlan.h"
 #include "vlanproc.h"
 
+#define DRV_VERSION "1.8"
+
 /* Global VLAN variables */
 
 /* Our listing of VLAN group(s) */
@@ -42,8 +44,7 @@ struct hlist_head vlan_group_hash[VLAN_G
 #define vlan_grp_hashfn(IDX)	((((IDX) >> VLAN_GRP_HASH_SHIFT) ^ (IDX)) & VLAN_GRP_HASH_MASK)
 
 static char vlan_fullname[] = "802.1Q VLAN Support";
-static unsigned int vlan_version = 1;
-static unsigned int vlan_release = 8;
+static char vlan_version[] = DRV_VERSION;
 static char vlan_copyright[] = "Ben Greear <[email protected]>";
 static char vlan_buggyright[] = "David S. Miller <[email protected]>";
 
@@ -84,8 +85,8 @@ static int __init vlan_proto_init(void)
 {
 	int err;
 
-	printk(VLAN_INF "%s v%u.%u %s\n",
-	       vlan_fullname, vlan_version, vlan_release, vlan_copyright);
+	printk(VLAN_INF "%s v%s %s\n",
+	       vlan_fullname, vlan_version, vlan_copyright);
 	printk(VLAN_INF "All bugs added by %s\n",
 	       vlan_buggyright);
 
@@ -735,3 +736,4 @@ static int vlan_ioctl_handler(void __use
 }
 
 MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
#2 lore raw

PATCH 1/11 tg3: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to tg3 driver.

---

 drivers/net/tg3.c |    1 +
 1 files changed, 1 insertion(+)

Re-send -- forgot Signed-off-by line...

drivers/net/tg3.c renamed from drivers/net/tg3.c.orig +1 -0
@@ -143,6 +143,7 @@ MODULE_DESCRIPTION("Broadcom Tigon3 ethe
 MODULE_LICENSE("GPL");
 MODULE_PARM(tg3_debug, "i");
 MODULE_PARM_DESC(tg3_debug, "Tigon3 bitmapped debugging message enable value");
+MODULE_VERSION(DRV_MODULE_VERSION);
 
 static int tg3_debug = -1;	/* -1 == use TG3_DEF_MSG_ENABLE as value */
 
#5 lore raw

PATCH 2/11 e100: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to e100 driver.

---

 drivers/net/e100.c |    1 +
 1 files changed, 1 insertion(+)

Re-send -- forgot Signed-off-by line...

drivers/net/e100.c renamed from drivers/net/e100.c.orig +1 -0
@@ -166,6 +166,7 @@
 MODULE_DESCRIPTION(DRV_DESCRIPTION);
 MODULE_AUTHOR(DRV_COPYRIGHT);
 MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
 
 static int debug = 3;
 module_param(debug, int, 0);
#7 lore raw

Re: [patch 2.6.9 3/11] e1000: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to e1000 driver.

---

 drivers/net/e1000/e1000_main.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)

Re-send -- forgot Signed-off-by line...

drivers/net/e1000/e1000_main.c renamed from drivers/net/e1000/e1000_main.c.orig +3 -1
@@ -48,7 +48,8 @@ char e1000_driver_string[] = "Intel(R) P
 #else
 #define DRIVERNAPI "-NAPI"
 #endif
-char e1000_driver_version[] = "5.3.19-k2"DRIVERNAPI;
+#define DRV_VERSION "5.3.19-k2"DRIVERNAPI
+char e1000_driver_version[] = DRV_VERSION;
 char e1000_copyright[] = "Copyright (c) 1999-2004 Intel Corporation.";
 
 /* e1000_pci_tbl - PCI Device ID Table
@@ -196,6 +197,7 @@ static struct pci_driver e1000_driver = 
 MODULE_AUTHOR("Intel Corporation, <[email protected]>");
 MODULE_DESCRIPTION("Intel(R) PRO/1000 Network Driver");
 MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
 
 static int debug = NETIF_MSG_DRV | NETIF_MSG_PROBE;
 module_param(debug, int, 0);
#9 lore raw

PATCH 4/11 b44: Add MODULE_VERSION

In reply to John W. Linville

Add MODULE_VERSION to b44 driver.

---

 drivers/net/b44.c |    1 +
 1 files changed, 1 insertion(+)

Re-send -- forgot Signed-off-by line...

drivers/net/b44.c renamed from drivers/net/b44.c.orig +1 -0
@@ -79,6 +79,7 @@ MODULE_DESCRIPTION("Broadcom 4400 10/100
 MODULE_LICENSE("GPL");
 MODULE_PARM(b44_debug, "i");
 MODULE_PARM_DESC(b44_debug, "B44 bitmapped debugging message enable value");
+MODULE_VERSION(DRV_MODULE_VERSION);
 
 static int b44_debug = -1;	/* -1 == use B44_DEF_MSG_ENABLE as value */
 
#17 lore raw

Re: [patch 2.6.9 9/11] r8169: Add MODULE_VERSION

In reply to Richard B. Johnson
Quoted 8 lines · Richard B. Johnson

This makes warning error about :

Warning: could not find versions for .tmp_versions/r8169.mod

Do I have to enable something in .config (like CONFIG_MODVERSIONS)? If so, how does one make this transparent, to get rid of the warning if CONFIG_MODVERSIONS is not set?

Odd...I don't get any such warning, with or without CONFIG_MODVERSIONS...

MODULE_VERSION is used elsewhere -- do you get that warning from any other modules? Was this from a clean build?

Send me your .config, and I'll look into it.

Thanks,

John

Signature · 2 lines
John W. Linville
[email protected]
#16 lore raw

Re: [patch 2.6.9 9/11] r8169: Add MODULE_VERSION

In reply to John W. Linville

This makes warning error about :

Warning: could not find versions for .tmp_versions/r8169.mod

Do I have to enable something in .config (like CONFIG_MODVERSIONS)? If so, how does one make this transparent, to get rid of the warning if CONFIG_MODVERSIONS is not set?

Quoted 19 lines · John W. Linville

Add MODULE_VERSION to r8169 driver.

---

drivers/net/r8169.c | 1 +

1 files changed, 1 insertion(+)
drivers/net/r8169.c renamed from drivers/net/r8169.c.orig +1 -1
@@ -362,6 +362,7 @@ MODULE_PARM(rx_copybreak, "i");
 MODULE_PARM(use_dac, "i");
 MODULE_PARM_DESC(use_dac, "Enable PCI DAC. Unsafe on 32 bit PCI slot.");
 MODULE_LICENSE("GPL");
+MODULE_VERSION(RTL8169_VERSION);
 
 static int rtl8169_open(struct net_device *dev);
 static int rtl8169_start_xmit(struct sk_buff *skb, struct net_device *dev);
-
Quoted 5 lines

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Cheers,
Dick Johnson
Penguin : Linux version 2.6.9 on an i686 machine (5537.79 GrumpyMips).
98.36% of all statistics are fiction.

#21 lore raw
In reply to John W. Linville
Quoted 3 lines · John W. Linville

Patches to add MODULE_VERSION lines to several network drivers...

Here is the list:

have you checked if the version of these drivers is actually useful? (eg updated when the driver changes) If it's not I'd say adding a MODULE_VERSION to it makes no sense whatsoever.

#22 lore raw
Quoted 8 lines · Arjan van de Ven
Quoted 3 lines · John W. Linville

Patches to add MODULE_VERSION lines to several network drivers...

Here is the list:

have you checked if the version of these drivers is actually useful? (eg updated when the driver changes) If it's not I'd say adding a MODULE_VERSION to it makes no sense whatsoever.

Why do I feel like I'm being baited...? :-)

I would have to suspect that if a version string exists, that it has at least some meaning to the primary developers/maintainters. It certainly is beyond my control to force the maintainers to give meaning to their version strings.

Is this a political statement against the MODULE_VERSION macro and/or its purpose? I'm not overly interested in debating that one...

John

Signature · 2 lines
John W. Linville
[email protected]
#18 lore raw

Re: [patch 2.6.9 9/11] r8169: Add MODULE_VERSION

In reply to John W. Linville
Quoted 13 lines · John W. Linville
Quoted 8 lines · Richard B. Johnson

This makes warning error about :

Warning: could not find versions for .tmp_versions/r8169.mod

Do I have to enable something in .config (like CONFIG_MODVERSIONS)? If so, how does one make this transparent, to get rid of the warning if CONFIG_MODVERSIONS is not set?

Odd...I don't get any such warning, with or without CONFIG_MODVERSIONS...

Quoted 8 lines

MODULE_VERSION is used elsewhere -- do you get that warning from any other modules? Was this from a clean build?

Send me your .config, and I'll look into it.

Thanks,

John

It's a generic problem with compiling modules outside of the kernel. The attached module, complete with its Makefile shows the problem.

We really need to fix such problems because, to use the same kernel for a development effort means that the kernel sources are on some NFS server, not writable by developers. They have write permissions only for their own workstations. Therefore, one can't copy their sources to the kernel tree, modify .config and then develop their modules.

Cheers,
Dick Johnson
Penguin : Linux version 2.6.9 on an i686 machine (5537.79 GrumpyMips).
98.36% of all statistics are fiction.

#24 lore raw
In reply to Arjan van de Ven
Quoted 7 lines · Arjan van de Ven
Quoted 2 lines · John W. Linville

I would have to suspect that if a version string exists, that it has at least some meaning to the primary developers/maintainters. It certainly

Since the skeleton driver includes a define for that, I suspect your assumption is a bit overly optimistic.

Perhaps...still, at least the drivers I touched w/ these patches seem to have version numbers that are at least somewhat meaningful.

Quoted 9 lines
Quoted 2 lines

Is this a political statement against the MODULE_VERSION macro and/or its purpose? I'm not overly interested in debating that one...

Not really. I have absolutely no problem with a MODULE_VERSION macro *IF* the version it advertises means something. However if the version it advertises has no meaning whatsoever (eg the version number never gets updated) then imo it's better to NOT advertise anything so that other tools (like dkms) don't make assumptions and decisions based on nothing-meaning data.

Again, I think it would have to be the maintainer's responsibility to make the version numbers meaningful.

John

Signature · 2 lines
John W. Linville
[email protected]
#26 lore raw
In reply to Arjan van de Ven
Quoted 8 lines · Arjan van de Ven
Quoted 2 lines · John W. Linville

Again, I think it would have to be the maintainer's responsibility to make the version numbers meaningful.

absolutely; however you're not the maintainer of all of the ones you patched... and I still argue that until the number is meaningful exporting it as meaning something is more harm than good.

As you say, I'm not the maintainer. I just proposed the patches.

It seems you are not really talking to me. Instead, you are telling the maintainers that by applying these patches, they should be committing themselves to making/keeping the version numbers meaningful?

John

Signature · 2 lines
John W. Linville
[email protected]
#23 lore raw
In reply to John W. Linville
Quoted 11 lines · John W. Linville
Quoted 4 lines

have you checked if the version of these drivers is actually useful? (eg updated when the driver changes) If it's not I'd say adding a MODULE_VERSION to it makes no sense whatsoever.

Why do I feel like I'm being baited...? :-)

I would have to suspect that if a version string exists, that it has at least some meaning to the primary developers/maintainters. It certainly is beyond my control to force the maintainers to give meaning to their version strings.

Since the skeleton driver includes a define for that, I suspect your assumption is a bit overly optimistic.

Quoted 2 lines

Is this a political statement against the MODULE_VERSION macro and/or its purpose? I'm not overly interested in debating that one...

Not really. I have absolutely no problem with a MODULE_VERSION macro *IF* the version it advertises means something. However if the version it advertises has no meaning whatsoever (eg the version number never gets updated) then imo it's better to NOT advertise anything so that other tools (like dkms) don't make assumptions and decisions based on nothing-meaning data.

#25 lore raw
In reply to John W. Linville
Quoted 9 lines · John W. Linville
Quoted 6 lines

Not really. I have absolutely no problem with a MODULE_VERSION macro *IF* the version it advertises means something. However if the version it advertises has no meaning whatsoever (eg the version number never gets updated) then imo it's better to NOT advertise anything so that other tools (like dkms) don't make assumptions and decisions based on nothing-meaning data.

Again, I think it would have to be the maintainer's responsibility to make the version numbers meaningful.

absolutely; however you're not the maintainer of all of the ones you patched... and I still argue that until the number is meaningful exporting it as meaning something is more harm than good.