Bluetooth: AMP: Factor out amp_ctrl_add
authorAndrei Emeltchenko <andrei.emeltchenko@intel.com>
Fri, 5 Oct 2012 13:56:55 +0000 (16:56 +0300)
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>
Sun, 7 Oct 2012 22:19:04 +0000 (06:19 +0800)
Add ctrl_id parameter to amp_ctrl_add since we always set it
after function ctrl is created.

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

index b1e5490..ae2c3e5 100644 (file)
@@ -26,7 +26,7 @@ struct amp_ctrl {
 
 int amp_ctrl_put(struct amp_ctrl *ctrl);
 void amp_ctrl_get(struct amp_ctrl *ctrl);
-struct amp_ctrl *amp_ctrl_add(struct amp_mgr *mgr);
+struct amp_ctrl *amp_ctrl_add(struct amp_mgr *mgr, u8 id);
 struct amp_ctrl *amp_ctrl_lookup(struct amp_mgr *mgr, u8 id);
 void amp_ctrl_list_flush(struct amp_mgr *mgr);
 
index d4946b5..88a4b58 100644 (file)
@@ -316,12 +316,10 @@ static int a2mp_getinfo_rsp(struct amp_mgr *mgr, struct sk_buff *skb,
        if (rsp->status)
                return -EINVAL;
 
-       ctrl = amp_ctrl_add(mgr);
+       ctrl = amp_ctrl_add(mgr, rsp->id);
        if (!ctrl)
                return -ENOMEM;
 
-       ctrl->id = rsp->id;
-
        req.id = rsp->id;
        a2mp_send(mgr, A2MP_GETAMPASSOC_REQ, __next_ident(mgr), sizeof(req),
                  &req);
@@ -461,7 +459,7 @@ static int a2mp_createphyslink_req(struct amp_mgr *mgr, struct sk_buff *skb,
 
        ctrl = amp_ctrl_lookup(mgr, rsp.remote_id);
        if (!ctrl) {
-               ctrl = amp_ctrl_add(mgr);
+               ctrl = amp_ctrl_add(mgr, rsp.remote_id);
                if (ctrl) {
                        amp_ctrl_get(ctrl);
                } else {
@@ -474,8 +472,6 @@ static int a2mp_createphyslink_req(struct amp_mgr *mgr, struct sk_buff *skb,
                size_t assoc_len = le16_to_cpu(hdr->len) - sizeof(*req);
                u8 *assoc;
 
-               ctrl->id = rsp.remote_id;
-
                assoc = kzalloc(assoc_len, GFP_KERNEL);
                if (!assoc) {
                        amp_ctrl_put(ctrl);
index b6e1c3a..2fc5562 100644 (file)
@@ -45,7 +45,7 @@ int amp_ctrl_put(struct amp_ctrl *ctrl)
        return kref_put(&ctrl->kref, &amp_ctrl_destroy);
 }
 
-struct amp_ctrl *amp_ctrl_add(struct amp_mgr *mgr)
+struct amp_ctrl *amp_ctrl_add(struct amp_mgr *mgr, u8 id)
 {
        struct amp_ctrl *ctrl;
 
@@ -53,12 +53,13 @@ struct amp_ctrl *amp_ctrl_add(struct amp_mgr *mgr)
        if (!ctrl)
                return NULL;
 
+       kref_init(&ctrl->kref);
+       ctrl->id = id;
+
        mutex_lock(&mgr->amp_ctrls_lock);
        list_add(&ctrl->list, &mgr->amp_ctrls);
        mutex_unlock(&mgr->amp_ctrls_lock);
 
-       kref_init(&ctrl->kref);
-
        BT_DBG("mgr %p ctrl %p", mgr, ctrl);
 
        return ctrl;