Bluetooth: Refactor l2cap_send_disconn_req
authorAndrei Emeltchenko <andrei.emeltchenko@intel.com>
Wed, 28 Nov 2012 15:59:39 +0000 (17:59 +0200)
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>
Mon, 3 Dec 2012 17:59:59 +0000 (15:59 -0200)
l2cap_send_disconn_req takes 3 parameters of which conn might be
derived from chan. Make this conversion inside l2cap_send_disconn_req.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
net/bluetooth/l2cap_core.c

index b52f66d..f7ee037 100644 (file)
@@ -53,8 +53,7 @@ static struct sk_buff *l2cap_build_cmd(struct l2cap_conn *conn,
 static void l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16 len,
                           void *data);
 static int l2cap_build_conf_req(struct l2cap_chan *chan, void *data);
-static void l2cap_send_disconn_req(struct l2cap_conn *conn,
-                                  struct l2cap_chan *chan, int err);
+static void l2cap_send_disconn_req(struct l2cap_chan *chan, int err);
 
 static void l2cap_tx(struct l2cap_chan *chan, struct l2cap_ctrl *control,
                     struct sk_buff_head *skbs, u8 event);
@@ -632,7 +631,7 @@ void l2cap_chan_close(struct l2cap_chan *chan, int reason)
                if (chan->chan_type == L2CAP_CHAN_CONN_ORIENTED &&
                    conn->hcon->type == ACL_LINK) {
                        __set_chan_timer(chan, sk->sk_sndtimeo);
-                       l2cap_send_disconn_req(conn, chan, reason);
+                       l2cap_send_disconn_req(chan, reason);
                } else
                        l2cap_chan_del(chan, reason);
                break;
@@ -1180,10 +1179,10 @@ static inline int l2cap_mode_supported(__u8 mode, __u32 feat_mask)
        }
 }
 
-static void l2cap_send_disconn_req(struct l2cap_conn *conn,
-                                  struct l2cap_chan *chan, int err)
+static void l2cap_send_disconn_req(struct l2cap_chan *chan, int err)
 {
        struct sock *sk = chan->sk;
+       struct l2cap_conn *conn = chan->conn;
        struct l2cap_disconn_req req;
 
        if (!conn)
@@ -1960,7 +1959,7 @@ static void l2cap_ertm_resend(struct l2cap_chan *chan)
                if (chan->max_tx != 0 &&
                    bt_cb(skb)->control.retries > chan->max_tx) {
                        BT_DBG("Retry limit exceeded (%d)", chan->max_tx);
-                       l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
+                       l2cap_send_disconn_req(chan, ECONNRESET);
                        l2cap_seq_list_clear(&chan->retrans_list);
                        break;
                }
@@ -2666,7 +2665,7 @@ static void l2cap_tx_state_wait_f(struct l2cap_chan *chan,
                        __set_monitor_timer(chan);
                        chan->retry_count++;
                } else {
-                       l2cap_send_disconn_req(chan->conn, chan, ECONNABORTED);
+                       l2cap_send_disconn_req(chan, ECONNABORTED);
                }
                break;
        default:
@@ -3877,7 +3876,7 @@ static inline int l2cap_config_req(struct l2cap_conn *conn,
        /* Complete config. */
        len = l2cap_parse_conf_req(chan, rsp);
        if (len < 0) {
-               l2cap_send_disconn_req(conn, chan, ECONNRESET);
+               l2cap_send_disconn_req(chan, ECONNRESET);
                goto unlock;
        }
 
@@ -3899,7 +3898,7 @@ static inline int l2cap_config_req(struct l2cap_conn *conn,
                        err = l2cap_ertm_init(chan);
 
                if (err < 0)
-                       l2cap_send_disconn_req(chan->conn, chan, -err);
+                       l2cap_send_disconn_req(chan, -err);
                else
                        l2cap_chan_ready(chan);
 
@@ -3967,7 +3966,7 @@ static inline int l2cap_config_rsp(struct l2cap_conn *conn,
                        len = l2cap_parse_conf_rsp(chan, rsp->data, len,
                                                   buf, &result);
                        if (len < 0) {
-                               l2cap_send_disconn_req(conn, chan, ECONNRESET);
+                               l2cap_send_disconn_req(chan, ECONNRESET);
                                goto done;
                        }
 
@@ -3988,7 +3987,7 @@ static inline int l2cap_config_rsp(struct l2cap_conn *conn,
                        char req[64];
 
                        if (len > sizeof(req) - sizeof(struct l2cap_conf_req)) {
-                               l2cap_send_disconn_req(conn, chan, ECONNRESET);
+                               l2cap_send_disconn_req(chan, ECONNRESET);
                                goto done;
                        }
 
@@ -3997,7 +3996,7 @@ static inline int l2cap_config_rsp(struct l2cap_conn *conn,
                        len = l2cap_parse_conf_rsp(chan, rsp->data, len,
                                                   req, &result);
                        if (len < 0) {
-                               l2cap_send_disconn_req(conn, chan, ECONNRESET);
+                               l2cap_send_disconn_req(chan, ECONNRESET);
                                goto done;
                        }
 
@@ -4013,7 +4012,7 @@ static inline int l2cap_config_rsp(struct l2cap_conn *conn,
                l2cap_chan_set_err(chan, ECONNRESET);
 
                __set_chan_timer(chan, L2CAP_DISC_REJ_TIMEOUT);
-               l2cap_send_disconn_req(conn, chan, ECONNRESET);
+               l2cap_send_disconn_req(chan, ECONNRESET);
                goto done;
        }
 
@@ -4030,7 +4029,7 @@ static inline int l2cap_config_rsp(struct l2cap_conn *conn,
                        err = l2cap_ertm_init(chan);
 
                if (err < 0)
-                       l2cap_send_disconn_req(chan->conn, chan, -err);
+                       l2cap_send_disconn_req(chan, -err);
                else
                        l2cap_chan_ready(chan);
        }
@@ -4392,7 +4391,7 @@ static void l2cap_logical_fail(struct l2cap_chan *chan)
        /* Logical link setup failed */
        if (chan->state != BT_CONNECTED) {
                /* Create channel failure, disconnect */
-               l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
+               l2cap_send_disconn_req(chan, ECONNRESET);
                return;
        }
 
@@ -4435,7 +4434,7 @@ static void l2cap_logical_finish_create(struct l2cap_chan *chan,
 
                err = l2cap_ertm_init(chan);
                if (err < 0)
-                       l2cap_send_disconn_req(chan->conn, chan, -err);
+                       l2cap_send_disconn_req(chan, -err);
                else
                        l2cap_chan_ready(chan);
        }
@@ -5400,7 +5399,7 @@ static void l2cap_handle_srej(struct l2cap_chan *chan,
 
        if (control->reqseq == chan->next_tx_seq) {
                BT_DBG("Invalid reqseq %d, disconnecting", control->reqseq);
-               l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
+               l2cap_send_disconn_req(chan, ECONNRESET);
                return;
        }
 
@@ -5414,7 +5413,7 @@ static void l2cap_handle_srej(struct l2cap_chan *chan,
 
        if (chan->max_tx != 0 && bt_cb(skb)->control.retries >= chan->max_tx) {
                BT_DBG("Retry limit exceeded (%d)", chan->max_tx);
-               l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
+               l2cap_send_disconn_req(chan, ECONNRESET);
                return;
        }
 
@@ -5458,7 +5457,7 @@ static void l2cap_handle_rej(struct l2cap_chan *chan,
 
        if (control->reqseq == chan->next_tx_seq) {
                BT_DBG("Invalid reqseq %d, disconnecting", control->reqseq);
-               l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
+               l2cap_send_disconn_req(chan, ECONNRESET);
                return;
        }
 
@@ -5467,7 +5466,7 @@ static void l2cap_handle_rej(struct l2cap_chan *chan,
        if (chan->max_tx && skb &&
            bt_cb(skb)->control.retries >= chan->max_tx) {
                BT_DBG("Retry limit exceeded (%d)", chan->max_tx);
-               l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
+               l2cap_send_disconn_req(chan, ECONNRESET);
                return;
        }
 
@@ -5651,8 +5650,7 @@ static int l2cap_rx_state_recv(struct l2cap_chan *chan,
                        break;
                case L2CAP_TXSEQ_INVALID:
                default:
-                       l2cap_send_disconn_req(chan->conn, chan,
-                                              ECONNRESET);
+                       l2cap_send_disconn_req(chan, ECONNRESET);
                        break;
                }
                break;
@@ -5785,8 +5783,7 @@ static int l2cap_rx_state_srej_sent(struct l2cap_chan *chan,
                        break;
                case L2CAP_TXSEQ_INVALID:
                default:
-                       l2cap_send_disconn_req(chan->conn, chan,
-                                              ECONNRESET);
+                       l2cap_send_disconn_req(chan, ECONNRESET);
                        break;
                }
                break;
@@ -5981,7 +5978,7 @@ static int l2cap_rx(struct l2cap_chan *chan, struct l2cap_ctrl *control,
                BT_DBG("Invalid reqseq %d (next_tx_seq %d, expected_ack_seq %d",
                       control->reqseq, chan->next_tx_seq,
                       chan->expected_ack_seq);
-               l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
+               l2cap_send_disconn_req(chan, ECONNRESET);
        }
 
        return err;
@@ -6050,7 +6047,7 @@ static int l2cap_data_rcv(struct l2cap_chan *chan, struct sk_buff *skb)
                len -= L2CAP_FCS_SIZE;
 
        if (len > chan->mps) {
-               l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
+               l2cap_send_disconn_req(chan, ECONNRESET);
                goto drop;
        }
 
@@ -6075,8 +6072,7 @@ static int l2cap_data_rcv(struct l2cap_chan *chan, struct sk_buff *skb)
                }
 
                if (err)
-                       l2cap_send_disconn_req(chan->conn, chan,
-                                              ECONNRESET);
+                       l2cap_send_disconn_req(chan, ECONNRESET);
        } else {
                const u8 rx_func_to_event[4] = {
                        L2CAP_EV_RECV_RR, L2CAP_EV_RECV_REJ,
@@ -6093,7 +6089,7 @@ static int l2cap_data_rcv(struct l2cap_chan *chan, struct sk_buff *skb)
 
                if (len != 0) {
                        BT_ERR("Trailing bytes: %d in sframe", len);
-                       l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
+                       l2cap_send_disconn_req(chan, ECONNRESET);
                        goto drop;
                }
 
@@ -6104,7 +6100,7 @@ static int l2cap_data_rcv(struct l2cap_chan *chan, struct sk_buff *skb)
 
                event = rx_func_to_event[control->super];
                if (l2cap_rx(chan, control, skb, event))
-                       l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
+                       l2cap_send_disconn_req(chan, ECONNRESET);
        }
 
        return 0;