On Wed, Jun 16, 2010 at 4:39 PM, Ed Tsang <netdesign_98@xxxxxxxxx> wrote: > Anrel, what kernel version are you using? > Previously it was happening with a Blackberry on 2.6.31-17. I was planning to dig into it, then I upgraded my ubuntu with (2.6.32-22) and the problem disappeared. I am guessing it might be a raising condition with certain phone during certain circumstance. I think Liejun Tao <liejuntao001@xxxxxxxxx> has investigate this one too. I guess that new kernel have different timing. This condition is not easy to get as several packets have milliseconds between each other ... We are using kernel 2.6.32-xx and it is a bit different since several patches which fixes kernel crashes are not yet in bluez ... Regards, Andrei Emeltchenko MeeGo Devices > > Cheers, > Ed > > > > ----- Original Message ---- > From: Andrei Emeltchenko <andrei.emeltchenko.news@xxxxxxxxx> > To: Marcel Holtmann <marcel@xxxxxxxxxxxx> > Cc: Ed Tsang <netdesign_98@xxxxxxxxx>; Bluettooth Linux <linux-bluetooth@xxxxxxxxxxxxxxx> > Sent: Wed, June 16, 2010 6:21:55 AM > Subject: Re: double Connect req: psm 1 scid 0x0040 ? > > Hi, > > On Wed, Feb 3, 2010 at 6:07 PM, Marcel Holtmann <marcel@xxxxxxxxxxxx> wrote: >>> >> In hcidump I seem to see a problem in #3. After the Encrypt Change there seem to be 2 >con. req. psm 1 scid 0x0040 >>> >>> >what kernel version is this? I think we fixed that already. >>> It is a ubutunu distribution. 2.6.31-17-generic. >> >> can you test with a 2.6.33-rc6 vanilla kernel. I really thing this got >> fixed and you might see a side effect or bad patch here. > > Marcel we are seeing "double L2CAP connect also" when connecting to > some smartphones using contran profile. What about following patch > proposal: > > The idea is to use existing flag L2CAP_CONF_CONNECT_PEND to mark that > L2CAP request has been sent. > > Currently it is durty hack, I will send modified patch later today. > > diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c > index fc81acb..27bff6e 100644 > --- a/net/bluetooth/l2cap.c > +++ b/net/bluetooth/l2cap.c > @@ -394,6 +394,12 @@ static void l2cap_do_start(struct sock *sk) > > l2cap_pi(sk)->ident = l2cap_get_ident(conn); > > + if (l2cap_pi(sk)->conf_state & > L2CAP_CONF_CONNECT_PEND) { > + printk(KERN_ERR "\n!!! %s: Connection > pending !!!\n", __FUNCTION__); > + return; > + } > + > + l2cap_pi(sk)->conf_state |= L2CAP_CONF_CONNECT_PEND; > l2cap_send_cmd(conn, l2cap_pi(sk)->ident, > L2CAP_CONN_REQ, sizeof(req), &req); > } > @@ -448,6 +454,13 @@ static void l2cap_conn_start(struct l2cap_conn *conn) > > l2cap_pi(sk)->ident = l2cap_get_ident(conn); > > + if (l2cap_pi(sk)->conf_state & > L2CAP_CONF_CONNECT_PEND) { > + printk(KERN_ERR "\n!!! %s: > Connection pending !!!\n", __FUNCTION__); > + bh_unlock_sock(sk); > + continue; > + } > + > + l2cap_pi(sk)->conf_state |= > L2CAP_CONF_CONNECT_PEND; > l2cap_send_cmd(conn, l2cap_pi(sk)->ident, > L2CAP_CONN_REQ, sizeof(req), &req); > } > @@ -3809,6 +3822,7 @@ static int l2cap_security_cfm(struct hci_conn > *hcon, u8 status, u8 encrypt) > bh_lock_sock(sk); > > if (l2cap_pi(sk)->conf_state & L2CAP_CONF_CONNECT_PEND) { > + printk(KERN_ERR "\n!!! %s: Connection pending > !!!\n", __FUNCTION__); > bh_unlock_sock(sk); > continue; > } > @@ -3828,6 +3842,7 @@ static int l2cap_security_cfm(struct hci_conn > *hcon, u8 status, u8 encrypt) > > l2cap_pi(sk)->ident = l2cap_get_ident(conn); > > + l2cap_pi(sk)->conf_state |= > L2CAP_CONF_CONNECT_PEND; > l2cap_send_cmd(conn, l2cap_pi(sk)->ident, > L2CAP_CONN_REQ, sizeof(req), &req); > > > >> >> Regards >> >> Marcel >> >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> > > > > -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html