generic: make switch_port_stats tx/rx_bytes long long
authorThibaut VARENE <hacks@slashdirt.org>
Fri, 4 Aug 2017 10:32:04 +0000 (12:32 +0200)
committerJohn Crispin <john@phrozen.org>
Fri, 1 Sep 2017 07:30:35 +0000 (09:30 +0200)
This generic structure defines tx_bytes and rx_bytes as unsigned long (u32),
while several devices would typically report unsigned long long (u64).

The code can work as is, but there's a chance that with a sufficiently fast
interface the overflow might happen too fast to be correctly noticed by the
consumers of this data.

This patch makes both field unsigned long long and updates the only known
consumer of this data: swconfig_leds.c

Signed-off-by: Thibaut VARENE <hacks@slashdirt.org>
target/linux/generic/files/drivers/net/phy/swconfig_leds.c
target/linux/generic/files/include/linux/switch.h

index dad3c393a0961932aacd7411b6a8f41b243d69cf..20b9a12a542bd5a9b0637ffd4d87cdace13e8991 100644 (file)
@@ -36,7 +36,7 @@ struct switch_led_trigger {
        struct delayed_work sw_led_work;
        u32 port_mask;
        u32 port_link;
-       unsigned long port_traffic[SWCONFIG_LED_NUM_PORTS];
+       unsigned long long port_traffic[SWCONFIG_LED_NUM_PORTS];
        u8 link_speed[SWCONFIG_LED_NUM_PORTS];
 };
 
index f8380b98c56687810816025f63f4e062b69e6f06..4e6238470d3062910d8bf6323ec977c8669b2156 100644 (file)
@@ -59,8 +59,8 @@ struct switch_port_link {
 };
 
 struct switch_port_stats {
-       unsigned long tx_bytes;
-       unsigned long rx_bytes;
+       unsigned long long tx_bytes;
+       unsigned long long rx_bytes;
 };
 
 /**