linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] Bluetooth: Nove l2cap_{set,clear}_timer to l2cap.h
@ 2011-12-20 12:57 Gustavo F. Padovan
  2011-12-20 12:57 ` [PATCH 2/3] Bluetooth: convert security timer to delayed_work Gustavo F. Padovan
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Gustavo F. Padovan @ 2011-12-20 12:57 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Gustavo F. Padovan

From: "Gustavo F. Padovan" <padovan@profusion.mobi>

It is the only place where it is used.

Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
---
 include/net/bluetooth/l2cap.h |   15 +++++++++++++++
 net/bluetooth/l2cap_core.c    |   14 --------------
 2 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
index c0d168a..e199c2f 100644
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -595,6 +595,21 @@ enum {
 	FLAG_EFS_ENABLE,
 };
 
+static inline void l2cap_set_timer(struct l2cap_chan *chan,
+					struct delayed_work *work, long timeout)
+{
+	BT_DBG("chan %p state %d timeout %ld", chan, chan->state, timeout);
+
+	cancel_delayed_work_sync(work);
+
+	schedule_delayed_work(work, timeout);
+}
+
+static inline void l2cap_clear_timer(struct delayed_work *work)
+{
+	cancel_delayed_work_sync(work);
+}
+
 #define __set_chan_timer(c, t) l2cap_set_timer(c, &c->chan_timer, (t))
 #define __clear_chan_timer(c) l2cap_clear_timer(&c->chan_timer)
 #define __set_retrans_timer(c) l2cap_set_timer(c, &c->retrans_timer, \
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index ffa2f6b..5978d69 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -228,20 +228,6 @@ static u16 l2cap_alloc_cid(struct l2cap_conn *conn)
 	return 0;
 }
 
-static void l2cap_set_timer(struct l2cap_chan *chan, struct delayed_work *work, long timeout)
-{
-	BT_DBG("chan %p state %d timeout %ld", chan, chan->state, timeout);
-
-	cancel_delayed_work_sync(work);
-
-	schedule_delayed_work(work, timeout);
-}
-
-static void l2cap_clear_timer(struct delayed_work *work)
-{
-	cancel_delayed_work_sync(work);
-}
-
 static char *state_to_string(int state)
 {
 	switch(state) {
-- 
1.7.6.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/3] Bluetooth: convert security timer to delayed_work
  2011-12-20 12:57 [PATCH 1/3] Bluetooth: Nove l2cap_{set,clear}_timer to l2cap.h Gustavo F. Padovan
@ 2011-12-20 12:57 ` Gustavo F. Padovan
  2011-12-20 12:57   ` [PATCH 3/3] Bluetooth: Rename info_work to info_timer Gustavo F. Padovan
  2011-12-20 16:51   ` [PATCH 2/3] Bluetooth: convert security timer to delayed_work Marcel Holtmann
  2011-12-20 13:09 ` [PATCH 1/3] Bluetooth: Nove l2cap_{set,clear}_timer to l2cap.h Anderson Lizardo
  2011-12-20 16:50 ` Marcel Holtmann
  2 siblings, 2 replies; 8+ messages in thread
From: Gustavo F. Padovan @ 2011-12-20 12:57 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Gustavo F. Padovan

From: "Gustavo F. Padovan" <padovan@profusion.mobi>

This one also needs to run in process context

Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
---
 include/net/bluetooth/l2cap.h |    2 +-
 net/bluetooth/l2cap_core.c    |   12 ++++++------
 net/bluetooth/smp.c           |    7 ++++---
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
index e199c2f..fc481d1 100644
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -532,7 +532,7 @@ struct l2cap_conn {
 
 	__u8		disc_reason;
 
-	struct timer_list security_timer;
+	struct delayed_work  security_timer;
 	struct smp_chan *smp_chan;
 
 	struct list_head chan_l;
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 5978d69..d006455 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -1032,7 +1032,7 @@ static void l2cap_conn_del(struct hci_conn *hcon, int err)
 		cancel_delayed_work_sync(&conn->info_work);
 
 	if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &hcon->pend)) {
-		del_timer(&conn->security_timer);
+		cancel_delayed_work_sync(&conn->security_timer);
 		smp_chan_destroy(conn);
 	}
 
@@ -1040,9 +1040,10 @@ static void l2cap_conn_del(struct hci_conn *hcon, int err)
 	kfree(conn);
 }
 
-static void security_timeout(unsigned long arg)
+static void security_timeout(struct work_struct *work)
 {
-	struct l2cap_conn *conn = (void *) arg;
+	struct l2cap_conn *conn = container_of(work, struct l2cap_conn,
+						security_timer.work);
 
 	l2cap_conn_del(conn->hcon, ETIMEDOUT);
 }
@@ -1086,8 +1087,7 @@ static struct l2cap_conn *l2cap_conn_add(struct hci_conn *hcon, u8 status)
 	INIT_LIST_HEAD(&conn->chan_l);
 
 	if (hcon->type == LE_LINK)
-		setup_timer(&conn->security_timer, security_timeout,
-						(unsigned long) conn);
+		INIT_DELAYED_WORK(&conn->security_timer, security_timeout);
 	else
 		INIT_DELAYED_WORK(&conn->info_work, l2cap_info_timeout);
 
@@ -4519,7 +4519,7 @@ static int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
 
 	if (hcon->type == LE_LINK) {
 		smp_distribute_keys(conn, 0);
-		del_timer(&conn->security_timer);
+		cancel_delayed_work_sync(&conn->security_timer);
 	}
 
 	rcu_read_lock();
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index 0b96737..0ee2905 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -184,7 +184,8 @@ static void smp_send_cmd(struct l2cap_conn *conn, u8 code, u16 len, void *data)
 	skb->priority = HCI_PRIO_MAX;
 	hci_send_acl(conn->hchan, skb, 0);
 
-	mod_timer(&conn->security_timer, jiffies +
+	cancel_delayed_work_sync(&conn->security_timer);
+	schedule_delayed_work(&conn->security_timer,
 					msecs_to_jiffies(SMP_TIMEOUT));
 }
 
@@ -240,7 +241,7 @@ static void smp_failure(struct l2cap_conn *conn, u8 reason, u8 send)
 
 	clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->hcon->pend);
 	mgmt_auth_failed(conn->hcon->hdev, conn->dst, reason);
-	del_timer(&conn->security_timer);
+	cancel_delayed_work_sync(&conn->security_timer);
 	smp_chan_destroy(conn);
 }
 
@@ -800,7 +801,7 @@ int smp_distribute_keys(struct l2cap_conn *conn, __u8 force)
 
 	if (conn->hcon->out || force) {
 		clear_bit(HCI_CONN_LE_SMP_PEND, &conn->hcon->pend);
-		del_timer(&conn->security_timer);
+		cancel_delayed_work_sync(&conn->security_timer);
 		smp_chan_destroy(conn);
 	}
 
-- 
1.7.6.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/3] Bluetooth: Rename info_work to info_timer
  2011-12-20 12:57 ` [PATCH 2/3] Bluetooth: convert security timer to delayed_work Gustavo F. Padovan
@ 2011-12-20 12:57   ` Gustavo F. Padovan
  2011-12-20 16:51     ` Marcel Holtmann
  2011-12-20 16:51   ` [PATCH 2/3] Bluetooth: convert security timer to delayed_work Marcel Holtmann
  1 sibling, 1 reply; 8+ messages in thread
From: Gustavo F. Padovan @ 2011-12-20 12:57 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Gustavo F. Padovan

From: "Gustavo F. Padovan" <padovan@profusion.mobi>

It makes more sense this way, since info_timer is a timer using delayed
work API.

Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
---
 include/net/bluetooth/l2cap.h |    2 +-
 net/bluetooth/l2cap_core.c    |   14 +++++++-------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
index fc481d1..f141fbe 100644
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -522,7 +522,7 @@ struct l2cap_conn {
 	__u8		info_state;
 	__u8		info_ident;
 
-	struct delayed_work info_work;
+	struct delayed_work info_timer;
 
 	spinlock_t	lock;
 
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index d006455..a898285 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -699,7 +699,7 @@ static void l2cap_do_start(struct l2cap_chan *chan)
 		conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_SENT;
 		conn->info_ident = l2cap_get_ident(conn);
 
-		schedule_delayed_work(&conn->info_work,
+		schedule_delayed_work(&conn->info_timer,
 					msecs_to_jiffies(L2CAP_INFO_TIMEOUT));
 
 		l2cap_send_cmd(conn, conn->info_ident,
@@ -996,7 +996,7 @@ static void l2cap_conn_unreliable(struct l2cap_conn *conn, int err)
 static void l2cap_info_timeout(struct work_struct *work)
 {
 	struct l2cap_conn *conn = container_of(work, struct l2cap_conn,
-							info_work.work);
+							info_timer.work);
 
 	conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
 	conn->info_ident = 0;
@@ -1029,7 +1029,7 @@ static void l2cap_conn_del(struct hci_conn *hcon, int err)
 	hci_chan_del(conn->hchan);
 
 	if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT)
-		cancel_delayed_work_sync(&conn->info_work);
+		cancel_delayed_work_sync(&conn->info_timer);
 
 	if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &hcon->pend)) {
 		cancel_delayed_work_sync(&conn->security_timer);
@@ -1089,7 +1089,7 @@ static struct l2cap_conn *l2cap_conn_add(struct hci_conn *hcon, u8 status)
 	if (hcon->type == LE_LINK)
 		INIT_DELAYED_WORK(&conn->security_timer, security_timeout);
 	else
-		INIT_DELAYED_WORK(&conn->info_work, l2cap_info_timeout);
+		INIT_DELAYED_WORK(&conn->info_timer, l2cap_info_timeout);
 
 	conn->disc_reason = HCI_ERROR_REMOTE_USER_TERM;
 
@@ -2583,7 +2583,7 @@ static inline int l2cap_command_rej(struct l2cap_conn *conn, struct l2cap_cmd_hd
 
 	if ((conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT) &&
 					cmd->ident == conn->info_ident) {
-		cancel_delayed_work_sync(&conn->info_work);
+		cancel_delayed_work_sync(&conn->info_timer);
 
 		conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
 		conn->info_ident = 0;
@@ -2704,7 +2704,7 @@ sendresp:
 		conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_SENT;
 		conn->info_ident = l2cap_get_ident(conn);
 
-		schedule_delayed_work(&conn->info_work,
+		schedule_delayed_work(&conn->info_timer,
 					msecs_to_jiffies(L2CAP_INFO_TIMEOUT));
 
 		l2cap_send_cmd(conn, conn->info_ident,
@@ -3129,7 +3129,7 @@ static inline int l2cap_information_rsp(struct l2cap_conn *conn, struct l2cap_cm
 			conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_DONE)
 		return 0;
 
-	cancel_delayed_work_sync(&conn->info_work);
+	cancel_delayed_work_sync(&conn->info_timer);
 
 	if (result != L2CAP_IR_SUCCESS) {
 		conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
-- 
1.7.6.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Bluetooth: Nove l2cap_{set,clear}_timer to l2cap.h
  2011-12-20 12:57 [PATCH 1/3] Bluetooth: Nove l2cap_{set,clear}_timer to l2cap.h Gustavo F. Padovan
  2011-12-20 12:57 ` [PATCH 2/3] Bluetooth: convert security timer to delayed_work Gustavo F. Padovan
@ 2011-12-20 13:09 ` Anderson Lizardo
  2011-12-20 19:10   ` Gustavo Padovan
  2011-12-20 16:50 ` Marcel Holtmann
  2 siblings, 1 reply; 8+ messages in thread
From: Anderson Lizardo @ 2011-12-20 13:09 UTC (permalink / raw)
  To: Gustavo F. Padovan; +Cc: linux-bluetooth

Hi Padovan,

On Tue, Dec 20, 2011 at 8:57 AM, Gustavo F. Padovan
<padovan@profusion.mobi> wrote:
> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
>
> It is the only place where it is used.

I don't understand. If l2cap.h is the only place where it is used, how
it used to work/compile before? I can only imagine that the macros
using   l2cap_{set,clear}_timer  are in l2cap_core.c , in which case
they should be moved to l2cap_core.c , not the other way around?

Regards,
-- 
Anderson Lizardo
Instituto Nokia de Tecnologia - INdT
Manaus - Brazil

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Bluetooth: Nove l2cap_{set,clear}_timer to l2cap.h
  2011-12-20 12:57 [PATCH 1/3] Bluetooth: Nove l2cap_{set,clear}_timer to l2cap.h Gustavo F. Padovan
  2011-12-20 12:57 ` [PATCH 2/3] Bluetooth: convert security timer to delayed_work Gustavo F. Padovan
  2011-12-20 13:09 ` [PATCH 1/3] Bluetooth: Nove l2cap_{set,clear}_timer to l2cap.h Anderson Lizardo
@ 2011-12-20 16:50 ` Marcel Holtmann
  2 siblings, 0 replies; 8+ messages in thread
From: Marcel Holtmann @ 2011-12-20 16:50 UTC (permalink / raw)
  To: Gustavo F. Padovan; +Cc: linux-bluetooth

Hi Gustavo,

it is Move and not Nove ;)

> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
> 
> It is the only place where it is used.
> 
> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
> ---
>  include/net/bluetooth/l2cap.h |   15 +++++++++++++++
>  net/bluetooth/l2cap_core.c    |   14 --------------
>  2 files changed, 15 insertions(+), 14 deletions(-)

Acked-by: Marcel Holtmann <marcel@holtmann.org>

Regards

Marcel



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/3] Bluetooth: convert security timer to delayed_work
  2011-12-20 12:57 ` [PATCH 2/3] Bluetooth: convert security timer to delayed_work Gustavo F. Padovan
  2011-12-20 12:57   ` [PATCH 3/3] Bluetooth: Rename info_work to info_timer Gustavo F. Padovan
@ 2011-12-20 16:51   ` Marcel Holtmann
  1 sibling, 0 replies; 8+ messages in thread
From: Marcel Holtmann @ 2011-12-20 16:51 UTC (permalink / raw)
  To: Gustavo F. Padovan; +Cc: linux-bluetooth

Hi Gustavo,

> This one also needs to run in process context
> 
> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
> ---
>  include/net/bluetooth/l2cap.h |    2 +-
>  net/bluetooth/l2cap_core.c    |   12 ++++++------
>  net/bluetooth/smp.c           |    7 ++++---
>  3 files changed, 11 insertions(+), 10 deletions(-)

Acked-by: Marcel Holtmann <marcel@holtmann.org>

Regards

Marcel



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] Bluetooth: Rename info_work to info_timer
  2011-12-20 12:57   ` [PATCH 3/3] Bluetooth: Rename info_work to info_timer Gustavo F. Padovan
@ 2011-12-20 16:51     ` Marcel Holtmann
  0 siblings, 0 replies; 8+ messages in thread
From: Marcel Holtmann @ 2011-12-20 16:51 UTC (permalink / raw)
  To: Gustavo F. Padovan; +Cc: linux-bluetooth

Hi Gustavo,

> It makes more sense this way, since info_timer is a timer using delayed
> work API.
> 
> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
> ---
>  include/net/bluetooth/l2cap.h |    2 +-
>  net/bluetooth/l2cap_core.c    |   14 +++++++-------
>  2 files changed, 8 insertions(+), 8 deletions(-)

Acked-by: Marcel Holtmann <marcel@holtmann.org>

Regards

Marcel



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Bluetooth: Nove l2cap_{set,clear}_timer to l2cap.h
  2011-12-20 13:09 ` [PATCH 1/3] Bluetooth: Nove l2cap_{set,clear}_timer to l2cap.h Anderson Lizardo
@ 2011-12-20 19:10   ` Gustavo Padovan
  0 siblings, 0 replies; 8+ messages in thread
From: Gustavo Padovan @ 2011-12-20 19:10 UTC (permalink / raw)
  To: Anderson Lizardo; +Cc: linux-bluetooth

Hi Anderson,

* Anderson Lizardo <anderson.lizardo@openbossa.org> [2011-12-20 09:09:23 -0400]:

> Hi Padovan,
> 
> On Tue, Dec 20, 2011 at 8:57 AM, Gustavo F. Padovan
> <padovan@profusion.mobi> wrote:
> > From: "Gustavo F. Padovan" <padovan@profusion.mobi>
> >
> > It is the only place where it is used.
> 
> I don't understand. If l2cap.h is the only place where it is used, how
> it used to work/compile before? I can only imagine that the macros
> using   l2cap_{set,clear}_timer  are in l2cap_core.c , in which case
> they should be moved to l2cap_core.c , not the other way around?

It worked because only macros were using them. Also l2cap.h keeps a lot of
helpers functions to be used only in l2cap_core.c. So to me this seems the
right move.

	Gustavo

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-12-20 19:10 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-20 12:57 [PATCH 1/3] Bluetooth: Nove l2cap_{set,clear}_timer to l2cap.h Gustavo F. Padovan
2011-12-20 12:57 ` [PATCH 2/3] Bluetooth: convert security timer to delayed_work Gustavo F. Padovan
2011-12-20 12:57   ` [PATCH 3/3] Bluetooth: Rename info_work to info_timer Gustavo F. Padovan
2011-12-20 16:51     ` Marcel Holtmann
2011-12-20 16:51   ` [PATCH 2/3] Bluetooth: convert security timer to delayed_work Marcel Holtmann
2011-12-20 13:09 ` [PATCH 1/3] Bluetooth: Nove l2cap_{set,clear}_timer to l2cap.h Anderson Lizardo
2011-12-20 19:10   ` Gustavo Padovan
2011-12-20 16:50 ` Marcel Holtmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).