pppd: Do not call update_link_stats() for every LcpSendEchoRequest() call
authorPali Rohár <pali@kernel.org>
Tue, 1 Sep 2020 18:53:30 +0000 (20:53 +0200)
committerPali Rohár <pali@kernel.org>
Tue, 1 Sep 2020 18:53:30 +0000 (20:53 +0200)
Function update_link_stats() is doing more than reading number of received
bytes, e.g. it changes state of link_stats_valid.

This change replace update_link_stats() by get_ppp_stats() in
LcpSendEchoRequest() function to avoid any side effects.

Signed-off-by: Pali Rohár <pali@kernel.org>
pppd/lcp.c

index 902b64a565c21d11940c39cb0fe5e10cf911848f..d7ea47106376cc3e3a43a6c7d55ed40a137994c2 100644 (file)
@@ -2339,12 +2339,10 @@ LcpSendEchoRequest (f)
      */
     if (lcp_echo_adaptive) {
        static unsigned int last_pkts_in = 0;
+       struct pppd_stats cur_stats;
 
-       update_link_stats(f->unit);
-       link_stats_valid = 0;
-
-       if (link_stats.pkts_in != last_pkts_in) {
-           last_pkts_in = link_stats.pkts_in;
+       if (get_ppp_stats(f->unit, &cur_stats) && cur_stats.pkts_in != last_pkts_in) {
+           last_pkts_in = cur_stats.pkts_in;
            return;
        }
     }