Hi Gustavo,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on net/master]
[also build test ERROR on v4.15 next-20180202]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Gustavo-A-R-Silva/tcp_lp-use-64-bit-arithmetic-instead-of-32-bit/20180202-135349
config: i386-randconfig-i0-201804 (attached as .config)
compiler: gcc-7 (Debian 7.2.0-12) 7.2.1 20171025
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   net/ipv4/tcp_lp.o: In function `tcp_lp_remote_hz_estimator':
>> net/ipv4/tcp_lp.c:150: undefined reference to `__divdi3'

vim +150 net/ipv4/tcp_lp.c

   125  
   126  /**
   127   * tcp_lp_remote_hz_estimator
   128   *
   129   * Estimate remote HZ.
   130   * We keep on updating the estimated value, where original TCP-LP
   131   * implementation only guest it for once and use forever.
   132   */
   133  static u32 tcp_lp_remote_hz_estimator(struct sock *sk)
   134  {
   135          struct tcp_sock *tp = tcp_sk(sk);
   136          struct lp *lp = inet_csk_ca(sk);
   137          s64 rhz = (s64)lp->remote_hz << 6;      /* remote HZ << 6 */
   138          s64 m = 0;
   139  
   140          /* not yet record reference time
   141           * go away!! record it before come back!! */
   142          if (lp->remote_ref_time == 0 || lp->local_ref_time == 0)
   143                  goto out;
   144  
   145          /* we can't calc remote HZ with no different!! */
   146          if (tp->rx_opt.rcv_tsval == lp->remote_ref_time ||
   147              tp->rx_opt.rcv_tsecr == lp->local_ref_time)
   148                  goto out;
   149  
 > 150          m = (s64)TCP_TS_HZ *
   151              (tp->rx_opt.rcv_tsval - lp->remote_ref_time) /
   152              (tp->rx_opt.rcv_tsecr - lp->local_ref_time);
   153          if (m < 0)
   154                  m = -m;
   155  
   156          if (rhz > 0) {
   157                  m -= rhz >> 6;  /* m is now error in remote HZ est */
   158                  rhz += m;       /* 63/64 old + 1/64 new */
   159          } else
   160                  rhz = m << 6;
   161  
   162   out:
   163          /* record time for successful remote HZ calc */
   164          if ((rhz >> 6) > 0)
   165                  lp->flag |= LP_VALID_RHZ;
   166          else
   167                  lp->flag &= ~LP_VALID_RHZ;
   168  
   169          /* record reference time stamp */
   170          lp->remote_ref_time = tp->rx_opt.rcv_tsval;
   171          lp->local_ref_time = tp->rx_opt.rcv_tsecr;
   172  
   173          return rhz >> 6;
   174  }
   175  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to