#define __set_chan_timer(c, t) l2cap_set_timer(c, &c->chan_timer, (t))
 #define __clear_chan_timer(c) l2cap_clear_timer(c, &c->chan_timer)
-#define __mod_retrans_timer() mod_timer(&chan->retrans_timer, \
-               jiffies +  msecs_to_jiffies(L2CAP_DEFAULT_RETRANS_TO));
-#define __mod_monitor_timer() mod_timer(&chan->monitor_timer, \
-               jiffies + msecs_to_jiffies(L2CAP_DEFAULT_MONITOR_TO));
-#define __mod_ack_timer() mod_timer(&chan->ack_timer, \
-               jiffies + msecs_to_jiffies(L2CAP_DEFAULT_ACK_TO));
+#define __set_retrans_timer(c) l2cap_set_timer(c, &c->retrans_timer, \
+               L2CAP_DEFAULT_RETRANS_TO);
+#define __clear_retrans_timer(c) l2cap_clear_timer(c, &c->retrans_timer)
+#define __set_monitor_timer(c) l2cap_set_timer(c, &c->monitor_timer, \
+               L2CAP_DEFAULT_MONITOR_TO);
+#define __clear_monitor_timer(c) l2cap_clear_timer(c, &c->monitor_timer)
+#define __set_ack_timer(c) l2cap_set_timer(c, &chan->ack_timer, \
+               L2CAP_DEFAULT_ACK_TO);
+#define __clear_ack_timer(c) l2cap_clear_timer(c, &c->ack_timer)
 
 static inline int l2cap_tx_window_full(struct l2cap_chan *ch)
 {
 
        if (chan->mode == L2CAP_MODE_ERTM) {
                struct srej_list *l, *tmp;
 
-               del_timer(&chan->retrans_timer);
-               del_timer(&chan->monitor_timer);
-               del_timer(&chan->ack_timer);
+               __clear_retrans_timer(chan);
+               __clear_monitor_timer(chan);
+               __clear_ack_timer(chan);
 
                skb_queue_purge(&chan->srej_q);
                skb_queue_purge(&chan->busy_q);
        sk = chan->sk;
 
        if (chan->mode == L2CAP_MODE_ERTM) {
-               del_timer(&chan->retrans_timer);
-               del_timer(&chan->monitor_timer);
-               del_timer(&chan->ack_timer);
+               __clear_retrans_timer(chan);
+               __clear_monitor_timer(chan);
+               __clear_ack_timer(chan);
        }
 
        req.dcid = cpu_to_le16(chan->dcid);
        }
 
        chan->retry_count++;
-       __mod_monitor_timer();
+       __set_monitor_timer(chan);
 
        l2cap_send_rr_or_rnr(chan, L2CAP_CTRL_POLL);
        bh_unlock_sock(sk);
 
        bh_lock_sock(sk);
        chan->retry_count = 1;
-       __mod_monitor_timer();
+       __set_monitor_timer(chan);
 
        chan->conn_state |= L2CAP_CONN_WAIT_F;
 
        }
 
        if (!chan->unacked_frames)
-               del_timer(&chan->retrans_timer);
+               __clear_retrans_timer(chan);
 }
 
 void l2cap_do_send(struct l2cap_chan *chan, struct sk_buff *skb)
 
                l2cap_do_send(chan, tx_skb);
 
-               __mod_retrans_timer();
+               __set_retrans_timer(chan);
 
                bt_cb(skb)->tx_seq = chan->next_tx_seq;
                chan->next_tx_seq = (chan->next_tx_seq + 1) % 64;
        l2cap_send_sframe(chan, control);
        chan->retry_count = 1;
 
-       del_timer(&chan->retrans_timer);
-       __mod_monitor_timer();
+       __clear_retrans_timer(chan);
+       __set_monitor_timer(chan);
 
        chan->conn_state |= L2CAP_CONN_WAIT_F;
 
 
        chan->conn_state |= L2CAP_CONN_RNR_SENT;
 
-       del_timer(&chan->ack_timer);
+       __clear_ack_timer(chan);
 
        queue_work(_busy_wq, &chan->busy_work);
 
 
        if (L2CAP_CTRL_FINAL & rx_control &&
                        chan->conn_state & L2CAP_CONN_WAIT_F) {
-               del_timer(&chan->monitor_timer);
+               __clear_monitor_timer(chan);
                if (chan->unacked_frames > 0)
-                       __mod_retrans_timer();
+                       __set_retrans_timer(chan);
                chan->conn_state &= ~L2CAP_CONN_WAIT_F;
        }
 
 
                l2cap_send_srejframe(chan, tx_seq);
 
-               del_timer(&chan->ack_timer);
+               __clear_ack_timer(chan);
        }
        return 0;
 
                        l2cap_retransmit_frames(chan);
        }
 
-       __mod_ack_timer();
+       __set_ack_timer(chan);
 
        chan->num_acked = (chan->num_acked + 1) % num_to_ack;
        if (chan->num_acked == num_to_ack - 1)
                if (chan->conn_state & L2CAP_CONN_SREJ_SENT) {
                        if ((chan->conn_state & L2CAP_CONN_REMOTE_BUSY) &&
                                        (chan->unacked_frames > 0))
-                               __mod_retrans_timer();
+                               __set_retrans_timer(chan);
 
                        chan->conn_state &= ~L2CAP_CONN_REMOTE_BUSY;
                        l2cap_send_srejtail(chan);
        } else {
                if ((chan->conn_state & L2CAP_CONN_REMOTE_BUSY) &&
                                (chan->unacked_frames > 0))
-                       __mod_retrans_timer();
+                       __set_retrans_timer(chan);
 
                chan->conn_state &= ~L2CAP_CONN_REMOTE_BUSY;
                if (chan->conn_state & L2CAP_CONN_SREJ_SENT)
                chan->conn_state |= L2CAP_CONN_SEND_FBIT;
 
        if (!(chan->conn_state & L2CAP_CONN_SREJ_SENT)) {
-               del_timer(&chan->retrans_timer);
+               __clear_retrans_timer(chan);
                if (rx_control & L2CAP_CTRL_POLL)
                        l2cap_send_rr_or_rnr(chan, L2CAP_CTRL_FINAL);
                return;
 
        if (L2CAP_CTRL_FINAL & rx_control &&
                        chan->conn_state & L2CAP_CONN_WAIT_F) {
-               del_timer(&chan->monitor_timer);
+               __clear_monitor_timer(chan);
                if (chan->unacked_frames > 0)
-                       __mod_retrans_timer();
+                       __set_retrans_timer(chan);
                chan->conn_state &= ~L2CAP_CONN_WAIT_F;
        }