--- src/connman.h | 2 +- src/ipconfig.c | 8 +++++++- src/service.c | 4 +--- 3 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/connman.h b/src/connman.h index 4fa9050..9b8fcc7 100644 --- a/src/connman.h +++ b/src/connman.h @@ -510,7 +510,7 @@ void __connman_service_set_proxy_autoconfig(struct connman_service *service, void __connman_service_set_passphrase(struct connman_service *service, const char* passphrase); -void __connman_service_notify(struct connman_ipconfig *ipconfig, +void __connman_service_notify(struct connman_service *service, unsigned int rx_packets, unsigned int tx_packets, unsigned int rx_bytes, unsigned int tx_bytes, unsigned int rx_error, unsigned int tx_error, diff --git a/src/ipconfig.c b/src/ipconfig.c index fe99b81..c6e33ec 100644 --- a/src/ipconfig.c +++ b/src/ipconfig.c @@ -423,6 +423,8 @@ static void __connman_ipconfig_lower_down(struct connman_ipdevice *ipdevice) static void update_stats(struct connman_ipdevice *ipdevice, struct rtnl_link_stats *stats) { + struct connman_service *service; + if (stats->rx_packets == 0 && stats->tx_packets == 0) return; @@ -434,6 +436,10 @@ static void update_stats(struct connman_ipdevice *ipdevice, if (ipdevice->config == NULL) return; + service = connman_ipconfig_get_data(ipdevice->config); + if (service == NULL) + return; + ipdevice->rx_packets = stats->rx_packets; ipdevice->tx_packets = stats->tx_packets; ipdevice->rx_bytes = stats->rx_bytes; @@ -443,7 +449,7 @@ static void update_stats(struct connman_ipdevice *ipdevice, ipdevice->rx_dropped = stats->rx_dropped; ipdevice->tx_dropped = stats->tx_dropped; - __connman_service_notify(ipdevice->config, + __connman_service_notify(service, ipdevice->rx_packets, ipdevice->tx_packets, ipdevice->rx_bytes, ipdevice->tx_bytes, ipdevice->rx_errors, ipdevice->tx_errors, diff --git a/src/service.c b/src/service.c index aecbe9a..27d6495 100644 --- a/src/service.c +++ b/src/service.c @@ -1219,13 +1219,12 @@ static void stats_update(struct connman_service *service, stats->data.time = stats->data_last.time + seconds; } -void __connman_service_notify(struct connman_ipconfig *ipconfig, +void __connman_service_notify(struct connman_service *service, unsigned int rx_packets, unsigned int tx_packets, unsigned int rx_bytes, unsigned int tx_bytes, unsigned int rx_errors, unsigned int tx_errors, unsigned int rx_dropped, unsigned int tx_dropped) { - struct connman_service *service; GHashTableIter iter; gpointer key, value; const char *counter; @@ -1233,7 +1232,6 @@ void __connman_service_notify(struct connman_ipconfig *ipconfig, struct connman_stats_data *data; int err; - service = connman_ipconfig_get_data(ipconfig); if (service == NULL) return; -- 1.7.0.4 _______________________________________________ connman mailing list connman@connman.net http://lists.connman.net/listinfo/connman