struct tcp_sock *tp = tcp_sk(sk);
 
        tp->rcv_nxt++;
-       tp->rx_opt.ts_recent_stamp = get_seconds();
+       tp->rx_opt.ts_recent_stamp = ktime_get_seconds();
        tp->srtt_us = 0;
        tcp_time_wait(sk, TCP_TIME_WAIT, 0);
 }
 
 
 struct tcp_options_received {
 /*     PAWS/RTTM data  */
-       long    ts_recent_stamp;/* Time we stored ts_recent (for aging) */
+       int     ts_recent_stamp;/* Time we stored ts_recent (for aging) */
        u32     ts_recent;      /* Time stamp to echo next              */
        u32     rcv_tsval;      /* Time stamp value                     */
        u32     rcv_tsecr;      /* Time stamp echo reply                */
        /* The time we sent the last out-of-window ACK: */
        u32                       tw_last_oow_ack_time;
 
-       long                      tw_ts_recent_stamp;
+       int                       tw_ts_recent_stamp;
 #ifdef CONFIG_TCP_MD5SIG
        struct tcp_md5sig_key     *tw_md5_key;
 #endif
 
  */
 static inline void tcp_synq_overflow(const struct sock *sk)
 {
-       unsigned long last_overflow = tcp_sk(sk)->rx_opt.ts_recent_stamp;
-       unsigned long now = jiffies;
+       unsigned int last_overflow = tcp_sk(sk)->rx_opt.ts_recent_stamp;
+       unsigned int now = jiffies;
 
-       if (time_after(now, last_overflow + HZ))
+       if (time_after32(now, last_overflow + HZ))
                tcp_sk(sk)->rx_opt.ts_recent_stamp = now;
 }
 
 /* syncookies: no recent synqueue overflow on this listening socket? */
 static inline bool tcp_synq_no_recent_overflow(const struct sock *sk)
 {
-       unsigned long last_overflow = tcp_sk(sk)->rx_opt.ts_recent_stamp;
+       unsigned int last_overflow = tcp_sk(sk)->rx_opt.ts_recent_stamp;
+       unsigned int now = jiffies;
 
-       return time_after(jiffies, last_overflow + TCP_SYNCOOKIE_VALID);
+       return time_after32(now, last_overflow + TCP_SYNCOOKIE_VALID);
 }
 
 static inline u32 tcp_cookie_time(void)
 {
        if ((s32)(rx_opt->ts_recent - rx_opt->rcv_tsval) <= paws_win)
                return true;
-       if (unlikely(get_seconds() >= rx_opt->ts_recent_stamp + TCP_PAWS_24DAYS))
+       if (unlikely(!time_before32(ktime_get_seconds(),
+                                   rx_opt->ts_recent_stamp + TCP_PAWS_24DAYS)))
                return true;
        /*
         * Some OSes send SYN and SYNACK messages with tsval=0 tsecr=0,
 
           However, we can relax time bounds for RST segments to MSL.
         */
-       if (rst && get_seconds() >= rx_opt->ts_recent_stamp + TCP_PAWS_MSL)
+       if (rst && !time_before32(ktime_get_seconds(),
+                                 rx_opt->ts_recent_stamp + TCP_PAWS_MSL))
                return false;
        return true;
 }
 
 static void tcp_store_ts_recent(struct tcp_sock *tp)
 {
        tp->rx_opt.ts_recent = tp->rx_opt.rcv_tsval;
-       tp->rx_opt.ts_recent_stamp = get_seconds();
+       tp->rx_opt.ts_recent_stamp = ktime_get_seconds();
 }
 
 static void tcp_replace_ts_recent(struct tcp_sock *tp, u32 seq)
 
           and use initial timestamp retrieved from peer table.
         */
        if (tcptw->tw_ts_recent_stamp &&
-           (!twp || (reuse && get_seconds() - tcptw->tw_ts_recent_stamp > 1))) {
+           (!twp || (reuse && time_after32(ktime_get_seconds(),
+                                           tcptw->tw_ts_recent_stamp)))) {
                tp->write_seq = tcptw->tw_snd_nxt + 65535 + 2;
                if (tp->write_seq == 0)
                        tp->write_seq = 1;
 
                tw->tw_substate   = TCP_TIME_WAIT;
                tcptw->tw_rcv_nxt = TCP_SKB_CB(skb)->end_seq;
                if (tmp_opt.saw_tstamp) {
-                       tcptw->tw_ts_recent_stamp = get_seconds();
+                       tcptw->tw_ts_recent_stamp = ktime_get_seconds();
                        tcptw->tw_ts_recent       = tmp_opt.rcv_tsval;
                }
 
 
                if (tmp_opt.saw_tstamp) {
                        tcptw->tw_ts_recent       = tmp_opt.rcv_tsval;
-                       tcptw->tw_ts_recent_stamp = get_seconds();
+                       tcptw->tw_ts_recent_stamp = ktime_get_seconds();
                }
 
                inet_twsk_put(tw);
 
        if (newtp->rx_opt.tstamp_ok) {
                newtp->rx_opt.ts_recent = req->ts_recent;
-               newtp->rx_opt.ts_recent_stamp = get_seconds();
+               newtp->rx_opt.ts_recent_stamp = ktime_get_seconds();
                newtp->tcp_header_len = sizeof(struct tcphdr) + TCPOLEN_TSTAMP_ALIGNED;
        } else {
                newtp->rx_opt.ts_recent_stamp = 0;
                         * it can be estimated (approximately)
                         * from another data.
                         */
-                       tmp_opt.ts_recent_stamp = get_seconds() - ((TCP_TIMEOUT_INIT/HZ)<<req->num_timeout);
+                       tmp_opt.ts_recent_stamp = ktime_get_seconds() - ((TCP_TIMEOUT_INIT/HZ)<<req->num_timeout);
                        paws_reject = tcp_paws_reject(&tmp_opt, th->rst);
                }
        }