* [RFC 0/4] Clean up sco, rfcomm and hci code
@ 2010-11-26 15:22 Emeltchenko Andrei
2010-11-26 15:22 ` [RFC 1/4] Bluetooth: clean up sco code Emeltchenko Andrei
` (3 more replies)
0 siblings, 4 replies; 15+ messages in thread
From: Emeltchenko Andrei @ 2010-11-26 15:22 UTC (permalink / raw)
To: linux-bluetooth
From: Andrei Emeltchenko <andrei.emeltchenko@nokia.com>
Remove extra spaces, do not use assignments in "if" statements,
remove initialization to zero static vars, other errors
reported by checkpatch.
Andrei Emeltchenko (4):
Bluetooth: cleanup sco code
Bluetooth: clean up rfcomm code
Bluetooth: clean up l2cap code
Bluetooth: clean up hci code
include/net/bluetooth/hci.h | 16 +++++-----
include/net/bluetooth/hci_core.h | 14 ++++----
include/net/bluetooth/l2cap.h | 22 +++++++-------
include/net/bluetooth/rfcomm.h | 18 ++++++------
include/net/bluetooth/sco.h | 20 ++++++------
net/bluetooth/hci_conn.c | 23 ++++++++++-----
net/bluetooth/hci_core.c | 57 ++++++++++++++++++++++++--------------
net/bluetooth/hci_event.c | 8 +++--
net/bluetooth/hci_sock.c | 17 +++++++----
net/bluetooth/l2cap.c | 7 ++--
net/bluetooth/rfcomm/core.c | 8 ++--
net/bluetooth/rfcomm/sock.c | 5 ++-
net/bluetooth/rfcomm/tty.c | 28 ++++++++++--------
net/bluetooth/sco.c | 22 ++++++++------
14 files changed, 151 insertions(+), 114 deletions(-)
^ permalink raw reply [flat|nested] 15+ messages in thread* [RFC 1/4] Bluetooth: clean up sco code 2010-11-26 15:22 [RFC 0/4] Clean up sco, rfcomm and hci code Emeltchenko Andrei @ 2010-11-26 15:22 ` Emeltchenko Andrei 2010-11-26 16:14 ` Anderson Lizardo 2010-11-26 15:22 ` [RFC 2/4] Bluetooth: clean up rfcomm code Emeltchenko Andrei ` (2 subsequent siblings) 3 siblings, 1 reply; 15+ messages in thread From: Emeltchenko Andrei @ 2010-11-26 15:22 UTC (permalink / raw) To: linux-bluetooth From: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> Do not use assignments in IF condition, clean extra spaces. Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> --- include/net/bluetooth/sco.h | 20 ++++++++++---------- net/bluetooth/sco.c | 22 +++++++++++++--------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/include/net/bluetooth/sco.h b/include/net/bluetooth/sco.h index e28a2a7..1e35c43 100644 --- a/include/net/bluetooth/sco.h +++ b/include/net/bluetooth/sco.h @@ -1,4 +1,4 @@ -/* +/* BlueZ - Bluetooth protocol stack for Linux Copyright (C) 2000-2001 Qualcomm Incorporated @@ -12,13 +12,13 @@ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY - CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, - COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS + ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, + COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS SOFTWARE IS DISCLAIMED. */ @@ -55,11 +55,11 @@ struct sco_conninfo { struct sco_conn { struct hci_conn *hcon; - bdaddr_t *dst; - bdaddr_t *src; - + bdaddr_t *dst; + bdaddr_t *src; + spinlock_t lock; - struct sock *sk; + struct sock *sk; unsigned int mtu; }; diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c index 66b9e5c..960c6d1 100644 --- a/net/bluetooth/sco.c +++ b/net/bluetooth/sco.c @@ -44,7 +44,7 @@ #include <net/sock.h> #include <asm/system.h> -#include <asm/uaccess.h> +#include <linux/uaccess.h> #include <net/bluetooth/bluetooth.h> #include <net/bluetooth/hci_core.h> @@ -52,7 +52,7 @@ #define VERSION "0.6" -static int disable_esco = 0; +static int disable_esco; static const struct proto_ops sco_sock_ops; @@ -138,16 +138,17 @@ static inline struct sock *sco_chan_get(struct sco_conn *conn) static int sco_conn_del(struct hci_conn *hcon, int err) { - struct sco_conn *conn; + struct sco_conn *conn = hcon->sco_data; struct sock *sk; - if (!(conn = hcon->sco_data)) + if (!conn) return 0; BT_DBG("hcon %p conn %p, err %d", hcon, conn, err); /* Kill socket */ - if ((sk = sco_chan_get(conn))) { + sk = sco_chan_get(conn); + if (sk) { bh_lock_sock(sk); sco_sock_clear_timer(sk); sco_chan_del(sk, err); @@ -185,7 +186,8 @@ static int sco_connect(struct sock *sk) BT_DBG("%s -> %s", batostr(src), batostr(dst)); - if (!(hdev = hci_get_route(dst, src))) + hdev = hci_get_route(dst, src); + if (!hdev) return -EHOSTUNREACH; hci_dev_lock_bh(hdev); @@ -510,7 +512,8 @@ static int sco_sock_connect(struct socket *sock, struct sockaddr *addr, int alen /* Set destination address and psm */ bacpy(&bt_sk(sk)->dst, &sa->sco_bdaddr); - if ((err = sco_connect(sk))) + err = sco_connect(sk); + if (err) goto done; err = bt_sock_wait_state(sk, BT_CONNECTED, @@ -828,13 +831,14 @@ static void sco_chan_del(struct sock *sk, int err) static void sco_conn_ready(struct sco_conn *conn) { - struct sock *parent, *sk; + struct sock *parent; + struct sock *sk = conn->sk; BT_DBG("conn %p", conn); sco_conn_lock(conn); - if ((sk = conn->sk)) { + if (sk) { sco_sock_clear_timer(sk); bh_lock_sock(sk); sk->sk_state = BT_CONNECTED; -- 1.7.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [RFC 1/4] Bluetooth: clean up sco code 2010-11-26 15:22 ` [RFC 1/4] Bluetooth: clean up sco code Emeltchenko Andrei @ 2010-11-26 16:14 ` Anderson Lizardo 2010-12-01 13:44 ` Andrei Emeltchenko 0 siblings, 1 reply; 15+ messages in thread From: Anderson Lizardo @ 2010-11-26 16:14 UTC (permalink / raw) To: Emeltchenko Andrei; +Cc: linux-bluetooth Hi Andrei, On Fri, Nov 26, 2010 at 11:22 AM, Emeltchenko Andrei <Andrei.Emeltchenko.news@gmail.com> wrote: > @@ -828,13 +831,14 @@ static void sco_chan_del(struct sock *sk, int err) > > static void sco_conn_ready(struct sco_conn *conn) > { > - struct sock *parent, *sk; > + struct sock *parent; > + struct sock *sk = conn->sk; I wonder if there is a problem with accessing conn->sk here outside the lock protection? > > BT_DBG("conn %p", conn); > > sco_conn_lock(conn); > > - if ((sk = conn->sk)) { > + if (sk) { > sco_sock_clear_timer(sk); > bh_lock_sock(sk); > sk->sk_state = BT_CONNECTED; Regards, -- Anderson Lizardo OpenBossa Labs - INdT Manaus - Brazil ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 1/4] Bluetooth: clean up sco code 2010-11-26 16:14 ` Anderson Lizardo @ 2010-12-01 13:44 ` Andrei Emeltchenko 2010-12-01 21:16 ` Gustavo F. Padovan 0 siblings, 1 reply; 15+ messages in thread From: Andrei Emeltchenko @ 2010-12-01 13:44 UTC (permalink / raw) To: Anderson Lizardo; +Cc: linux-bluetooth Hi, On Fri, Nov 26, 2010 at 6:14 PM, Anderson Lizardo <anderson.lizardo@openbossa.org> wrote: > Hi Andrei, > > On Fri, Nov 26, 2010 at 11:22 AM, Emeltchenko Andrei > <Andrei.Emeltchenko.news@gmail.com> wrote: >> @@ -828,13 +831,14 @@ static void sco_chan_del(struct sock *sk, int err) >> >> static void sco_conn_ready(struct sco_conn *conn) >> { >> - struct sock *parent, *sk; >> + struct sock *parent; >> + struct sock *sk = conn->sk; > > I wonder if there is a problem with accessing conn->sk here outside > the lock protection? I believe here is a safe access. We just acquire pointer and possible protected operations are executed inside lock. > >> >> BT_DBG("conn %p", conn); >> >> sco_conn_lock(conn); >> >> - if ((sk = conn->sk)) { >> + if (sk) { >> sco_sock_clear_timer(sk); >> bh_lock_sock(sk); >> sk->sk_state = BT_CONNECTED; -- Regards, Andrei ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 1/4] Bluetooth: clean up sco code 2010-12-01 13:44 ` Andrei Emeltchenko @ 2010-12-01 21:16 ` Gustavo F. Padovan 0 siblings, 0 replies; 15+ messages in thread From: Gustavo F. Padovan @ 2010-12-01 21:16 UTC (permalink / raw) To: Andrei Emeltchenko; +Cc: Anderson Lizardo, linux-bluetooth Hi Andrei, * Andrei Emeltchenko <andrei.emeltchenko.news@gmail.com> [2010-12-01 15:44:50 +0200]: > Hi, > > On Fri, Nov 26, 2010 at 6:14 PM, Anderson Lizardo > <anderson.lizardo@openbossa.org> wrote: > > Hi Andrei, > > > > On Fri, Nov 26, 2010 at 11:22 AM, Emeltchenko Andrei > > <Andrei.Emeltchenko.news@gmail.com> wrote: > >> @@ -828,13 +831,14 @@ static void sco_chan_del(struct sock *sk, int err) > >> > >> static void sco_conn_ready(struct sco_conn *conn) > >> { > >> - struct sock *parent, *sk; > >> + struct sock *parent; > >> + struct sock *sk = conn->sk; > > > > I wonder if there is a problem with accessing conn->sk here outside > > the lock protection? > > I believe here is a safe access. We just acquire pointer and possible > protected operations > are executed inside lock. Agreed. -- Gustavo F. Padovan http://profusion.mobi ^ permalink raw reply [flat|nested] 15+ messages in thread
* [RFC 2/4] Bluetooth: clean up rfcomm code 2010-11-26 15:22 [RFC 0/4] Clean up sco, rfcomm and hci code Emeltchenko Andrei 2010-11-26 15:22 ` [RFC 1/4] Bluetooth: clean up sco code Emeltchenko Andrei @ 2010-11-26 15:22 ` Emeltchenko Andrei 2010-11-30 1:09 ` Gustavo F. Padovan 2010-11-26 15:22 ` [RFC 3/4] Bluetooth: clean up l2cap code Emeltchenko Andrei 2010-11-26 15:22 ` [RFC 4/4] Bluetooth: clean up hci code Emeltchenko Andrei 3 siblings, 1 reply; 15+ messages in thread From: Emeltchenko Andrei @ 2010-11-26 15:22 UTC (permalink / raw) To: linux-bluetooth From: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> Remove extra spaces, assignments in if statement, zeroing static variables. Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> --- include/net/bluetooth/rfcomm.h | 18 +++++++++--------- net/bluetooth/rfcomm/core.c | 8 ++++---- net/bluetooth/rfcomm/sock.c | 5 +++-- net/bluetooth/rfcomm/tty.c | 28 ++++++++++++++++------------ 4 files changed, 32 insertions(+), 27 deletions(-) diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rfcomm.h index 71047bc..6eac4a7 100644 --- a/include/net/bluetooth/rfcomm.h +++ b/include/net/bluetooth/rfcomm.h @@ -1,5 +1,5 @@ -/* - RFCOMM implementation for Linux Bluetooth stack (BlueZ). +/* + RFCOMM implementation for Linux Bluetooth stack (BlueZ) Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> @@ -11,13 +11,13 @@ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY - CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, - COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS + ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, + COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS SOFTWARE IS DISCLAIMED. */ @@ -105,7 +105,7 @@ struct rfcomm_hdr { u8 addr; u8 ctrl; - u8 len; // Actual size can be 2 bytes + u8 len; /* Actual size can be 2 bytes */ } __packed; struct rfcomm_cmd { @@ -228,7 +228,7 @@ struct rfcomm_dlc { /* ---- RFCOMM SEND RPN ---- */ int rfcomm_send_rpn(struct rfcomm_session *s, int cr, u8 dlci, u8 bit_rate, u8 data_bits, u8 stop_bits, - u8 parity, u8 flow_ctrl_settings, + u8 parity, u8 flow_ctrl_settings, u8 xon_char, u8 xoff_char, u16 param_mask); /* ---- RFCOMM DLCs (channels) ---- */ diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c index fa642aa..c1e2bba 100644 --- a/net/bluetooth/rfcomm/core.c +++ b/net/bluetooth/rfcomm/core.c @@ -41,7 +41,7 @@ #include <linux/slab.h> #include <net/sock.h> -#include <asm/uaccess.h> +#include <linux/uaccess.h> #include <asm/unaligned.h> #include <net/bluetooth/bluetooth.h> @@ -51,10 +51,10 @@ #define VERSION "1.11" -static int disable_cfc = 0; +static int disable_cfc; +static int l2cap_ertm; static int channel_mtu = -1; static unsigned int l2cap_mtu = RFCOMM_MAX_L2CAP_MTU; -static int l2cap_ertm = 0; static struct task_struct *rfcomm_thread; @@ -1901,7 +1901,7 @@ static inline void rfcomm_check_connection(struct rfcomm_session *s) BT_DBG("%p state %ld", s, s->state); - switch(sk->sk_state) { + switch (sk->sk_state) { case BT_CONNECTED: s->state = BT_CONNECT; diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c index 0207bd6..66cc1f0 100644 --- a/net/bluetooth/rfcomm/sock.c +++ b/net/bluetooth/rfcomm/sock.c @@ -45,7 +45,7 @@ #include <net/sock.h> #include <asm/system.h> -#include <asm/uaccess.h> +#include <linux/uaccess.h> #include <net/bluetooth/bluetooth.h> #include <net/bluetooth/hci_core.h> @@ -888,7 +888,8 @@ static int rfcomm_sock_shutdown(struct socket *sock, int how) BT_DBG("sock %p, sk %p", sock, sk); - if (!sk) return 0; + if (!sk) + return 0; lock_sock(sk); if (!sk->sk_shutdown) { diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c index a9b81f5..2575c2d 100644 --- a/net/bluetooth/rfcomm/tty.c +++ b/net/bluetooth/rfcomm/tty.c @@ -58,9 +58,9 @@ struct rfcomm_dev { bdaddr_t src; bdaddr_t dst; - u8 channel; + u8 channel; - uint modem_status; + uint modem_status; struct rfcomm_dlc *dlc; struct tty_struct *tty; @@ -69,7 +69,7 @@ struct rfcomm_dev { struct device *tty_dev; - atomic_t wmem_alloc; + atomic_t wmem_alloc; struct sk_buff_head pending; }; @@ -431,7 +431,8 @@ static int rfcomm_release_dev(void __user *arg) BT_DBG("dev_id %d flags 0x%x", req.dev_id, req.flags); - if (!(dev = rfcomm_dev_get(req.dev_id))) + dev = rfcomm_dev_get(req.dev_id); + if (!dev) return -ENODEV; if (dev->flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN)) { @@ -470,7 +471,8 @@ static int rfcomm_get_dev_list(void __user *arg) size = sizeof(*dl) + dev_num * sizeof(*di); - if (!(dl = kmalloc(size, GFP_KERNEL))) + dl = kmalloc(size, GFP_KERNEL); + if (!dl) return -ENOMEM; di = dl->dev_info; @@ -513,7 +515,8 @@ static int rfcomm_get_dev_info(void __user *arg) if (copy_from_user(&di, arg, sizeof(di))) return -EFAULT; - if (!(dev = rfcomm_dev_get(di.id))) + dev = rfcomm_dev_get(di.id); + if (!dev) return -ENODEV; di.flags = dev->flags; @@ -561,7 +564,8 @@ static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb) return; } - if (!(tty = dev->tty) || !skb_queue_empty(&dev->pending)) { + tty = dev->tty; + if (!tty || !skb_queue_empty(&dev->pending)) { skb_queue_tail(&dev->pending, skb); return; } @@ -796,7 +800,8 @@ static int rfcomm_tty_write(struct tty_struct *tty, const unsigned char *buf, in memcpy(skb_put(skb, size), buf + sent, size); - if ((err = rfcomm_dlc_send(dlc, skb)) < 0) { + err = rfcomm_dlc_send(dlc, skb); + if (err < 0) { kfree_skb(skb); break; } @@ -892,7 +897,7 @@ static void rfcomm_tty_set_termios(struct tty_struct *tty, struct ktermios *old) /* Parity on/off and when on, odd/even */ if (((old->c_cflag & PARENB) != (new->c_cflag & PARENB)) || - ((old->c_cflag & PARODD) != (new->c_cflag & PARODD)) ) { + ((old->c_cflag & PARODD) != (new->c_cflag & PARODD))) { changes |= RFCOMM_RPN_PM_PARITY; BT_DBG("Parity change detected."); } @@ -937,11 +942,10 @@ static void rfcomm_tty_set_termios(struct tty_struct *tty, struct ktermios *old) /* POSIX does not support 1.5 stop bits and RFCOMM does not * support 2 stop bits. So a request for 2 stop bits gets * translated to 1.5 stop bits */ - if (new->c_cflag & CSTOPB) { + if (new->c_cflag & CSTOPB) stop_bits = RFCOMM_RPN_STOP_15; - } else { + else stop_bits = RFCOMM_RPN_STOP_1; - } /* Handle number of data bits [5-8] */ if ((old->c_cflag & CSIZE) != (new->c_cflag & CSIZE)) -- 1.7.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [RFC 2/4] Bluetooth: clean up rfcomm code 2010-11-26 15:22 ` [RFC 2/4] Bluetooth: clean up rfcomm code Emeltchenko Andrei @ 2010-11-30 1:09 ` Gustavo F. Padovan 2010-11-30 8:41 ` Andrei Emeltchenko 0 siblings, 1 reply; 15+ messages in thread From: Gustavo F. Padovan @ 2010-11-30 1:09 UTC (permalink / raw) To: Emeltchenko Andrei; +Cc: linux-bluetooth, marcel Hi Andrei, * Emeltchenko Andrei <Andrei.Emeltchenko.news@gmail.com> [2010-11-26 17:22:43 +0200]: > From: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> > > Remove extra spaces, assignments in if statement, zeroing static > variables. > > Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> > --- > include/net/bluetooth/rfcomm.h | 18 +++++++++--------- > net/bluetooth/rfcomm/core.c | 8 ++++---- > net/bluetooth/rfcomm/sock.c | 5 +++-- > net/bluetooth/rfcomm/tty.c | 28 ++++++++++++++++------------ > 4 files changed, 32 insertions(+), 27 deletions(-) > > diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rfcomm.h > index 71047bc..6eac4a7 100644 > --- a/include/net/bluetooth/rfcomm.h > +++ b/include/net/bluetooth/rfcomm.h > @@ -1,5 +1,5 @@ > -/* > - RFCOMM implementation for Linux Bluetooth stack (BlueZ). > +/* > + RFCOMM implementation for Linux Bluetooth stack (BlueZ) > Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> > Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> > > @@ -11,13 +11,13 @@ > OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. > IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY > - CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES > - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN > - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF > + CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES > + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN > + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF > OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > > - ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, > - COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS > + ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, > + COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS > SOFTWARE IS DISCLAIMED. Marcel refused a patch from me in the past because its was touching legal stuff, so or you remove these changes for your patches or wait for Marcel's comments here. -- Gustavo F. Padovan http://profusion.mobi ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 2/4] Bluetooth: clean up rfcomm code 2010-11-30 1:09 ` Gustavo F. Padovan @ 2010-11-30 8:41 ` Andrei Emeltchenko 2010-11-30 18:22 ` Gustavo F. Padovan 2010-12-01 10:45 ` Marcel Holtmann 0 siblings, 2 replies; 15+ messages in thread From: Andrei Emeltchenko @ 2010-11-30 8:41 UTC (permalink / raw) To: Gustavo F. Padovan; +Cc: linux-bluetooth, marcel Gustavo, On Tue, Nov 30, 2010 at 3:09 AM, Gustavo F. Padovan <padovan@profusion.mobi> wrote: > Hi Andrei, > > * Emeltchenko Andrei <Andrei.Emeltchenko.news@gmail.com> [2010-11-26 17:2= 2:43 +0200]: > >> From: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> >> >> Remove extra spaces, assignments in if statement, zeroing static >> variables. >> >> Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> >> --- >> =A0include/net/bluetooth/rfcomm.h | =A0 18 +++++++++--------- >> =A0net/bluetooth/rfcomm/core.c =A0 =A0| =A0 =A08 ++++---- >> =A0net/bluetooth/rfcomm/sock.c =A0 =A0| =A0 =A05 +++-- >> =A0net/bluetooth/rfcomm/tty.c =A0 =A0 | =A0 28 ++++++++++++++++---------= --- >> =A04 files changed, 32 insertions(+), 27 deletions(-) >> >> diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rfco= mm.h >> index 71047bc..6eac4a7 100644 >> --- a/include/net/bluetooth/rfcomm.h >> +++ b/include/net/bluetooth/rfcomm.h >> @@ -1,5 +1,5 @@ >> -/* >> - =A0 RFCOMM implementation for Linux Bluetooth stack (BlueZ). >> +/* >> + =A0 RFCOMM implementation for Linux Bluetooth stack (BlueZ) >> =A0 =A0 Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> >> =A0 =A0 Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> >> >> @@ -11,13 +11,13 @@ >> =A0 =A0 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCH= ANTABILITY, >> =A0 =A0 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PA= RTY RIGHTS. >> =A0 =A0 IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABL= E FOR ANY >> - =A0 CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DA= MAGES >> - =A0 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN= AN >> - =A0 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING O= UT OF >> + =A0 CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DA= MAGES >> + =A0 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN= AN >> + =A0 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING O= UT OF >> =A0 =A0 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. >> >> - =A0 ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS= , >> - =A0 COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS >> + =A0 ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS= , >> + =A0 COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS >> =A0 =A0 SOFTWARE IS DISCLAIMED. > > Marcel refused a patch from me in the past because its was touching legal > stuff, so or you remove these changes for your patches or wait for > Marcel's comments here. I fixed extra spaces at the end of the sentences, no legal stuff touched in legal terms :-) I believe that it is better to have legal text identical to other parts of the kernel otherwise the legal stuff looks different when comparing with diff tools. Regards, Andrei > > -- > Gustavo F. Padovan > http://profusion.mobi > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 2/4] Bluetooth: clean up rfcomm code 2010-11-30 8:41 ` Andrei Emeltchenko @ 2010-11-30 18:22 ` Gustavo F. Padovan 2010-12-01 10:45 ` Marcel Holtmann 1 sibling, 0 replies; 15+ messages in thread From: Gustavo F. Padovan @ 2010-11-30 18:22 UTC (permalink / raw) To: Andrei Emeltchenko; +Cc: linux-bluetooth, marcel Hi Andrei, * Andrei Emeltchenko <andrei.emeltchenko.news@gmail.com> [2010-11-30 10:41:= 56 +0200]: > Gustavo, >=20 > On Tue, Nov 30, 2010 at 3:09 AM, Gustavo F. Padovan > <padovan@profusion.mobi> wrote: > > Hi Andrei, > > > > * Emeltchenko Andrei <Andrei.Emeltchenko.news@gmail.com> [2010-11-26 17= :22:43 +0200]: > > > >> From: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> > >> > >> Remove extra spaces, assignments in if statement, zeroing static > >> variables. > >> > >> Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> > >> --- > >> =A0include/net/bluetooth/rfcomm.h | =A0 18 +++++++++--------- > >> =A0net/bluetooth/rfcomm/core.c =A0 =A0| =A0 =A08 ++++---- > >> =A0net/bluetooth/rfcomm/sock.c =A0 =A0| =A0 =A05 +++-- > >> =A0net/bluetooth/rfcomm/tty.c =A0 =A0 | =A0 28 ++++++++++++++++-------= ----- > >> =A04 files changed, 32 insertions(+), 27 deletions(-) > >> > >> diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rf= comm.h > >> index 71047bc..6eac4a7 100644 > >> --- a/include/net/bluetooth/rfcomm.h > >> +++ b/include/net/bluetooth/rfcomm.h > >> @@ -1,5 +1,5 @@ > >> -/* > >> - =A0 RFCOMM implementation for Linux Bluetooth stack (BlueZ). > >> +/* > >> + =A0 RFCOMM implementation for Linux Bluetooth stack (BlueZ) > >> =A0 =A0 Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> > >> =A0 =A0 Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> > >> > >> @@ -11,13 +11,13 @@ > >> =A0 =A0 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MER= CHANTABILITY, > >> =A0 =A0 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD = PARTY RIGHTS. > >> =A0 =A0 IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIA= BLE FOR ANY > >> - =A0 CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY = DAMAGES > >> - =A0 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER = IN AN > >> - =A0 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING= OUT OF > >> + =A0 CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY = DAMAGES > >> + =A0 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER = IN AN > >> + =A0 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING= OUT OF > >> =A0 =A0 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > >> > >> - =A0 ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATEN= TS, > >> - =A0 COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS > >> + =A0 ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATEN= TS, > >> + =A0 COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS > >> =A0 =A0 SOFTWARE IS DISCLAIMED. > > > > Marcel refused a patch from me in the past because its was touching leg= al > > stuff, so or you remove these changes for your patches or wait for > > Marcel's comments here. >=20 > I fixed extra spaces at the end of the sentences, no legal stuff > touched in legal terms :-) > I believe that it is better to have legal text identical to other > parts of the kernel otherwise > the legal stuff looks different when comparing with diff tools. I know, but I did the same in the past and got a NACK from Marcel. :) --=20 Gustavo F. Padovan http://profusion.mobi ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 2/4] Bluetooth: clean up rfcomm code 2010-11-30 8:41 ` Andrei Emeltchenko 2010-11-30 18:22 ` Gustavo F. Padovan @ 2010-12-01 10:45 ` Marcel Holtmann 2010-12-01 12:20 ` Andrei Emeltchenko 1 sibling, 1 reply; 15+ messages in thread From: Marcel Holtmann @ 2010-12-01 10:45 UTC (permalink / raw) To: Andrei Emeltchenko; +Cc: Gustavo F. Padovan, linux-bluetooth Hi Andrei, > > * Emeltchenko Andrei <Andrei.Emeltchenko.news@gmail.com> [2010-11-26 17:22:43 +0200]: > > > >> From: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> > >> > >> Remove extra spaces, assignments in if statement, zeroing static > >> variables. > >> > >> Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> > >> --- > >> include/net/bluetooth/rfcomm.h | 18 +++++++++--------- > >> net/bluetooth/rfcomm/core.c | 8 ++++---- > >> net/bluetooth/rfcomm/sock.c | 5 +++-- > >> net/bluetooth/rfcomm/tty.c | 28 ++++++++++++++++------------ > >> 4 files changed, 32 insertions(+), 27 deletions(-) > >> > >> diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rfcomm.h > >> index 71047bc..6eac4a7 100644 > >> --- a/include/net/bluetooth/rfcomm.h > >> +++ b/include/net/bluetooth/rfcomm.h > >> @@ -1,5 +1,5 @@ > >> -/* > >> - RFCOMM implementation for Linux Bluetooth stack (BlueZ). > >> +/* > >> + RFCOMM implementation for Linux Bluetooth stack (BlueZ) > >> Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> > >> Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> > >> > >> @@ -11,13 +11,13 @@ > >> OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > >> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. > >> IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY > >> - CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES > >> - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN > >> - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF > >> + CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES > >> + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN > >> + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF > >> OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > >> > >> - ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, > >> - COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS > >> + ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, > >> + COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS > >> SOFTWARE IS DISCLAIMED. > > > > Marcel refused a patch from me in the past because its was touching legal > > stuff, so or you remove these changes for your patches or wait for > > Marcel's comments here. > > I fixed extra spaces at the end of the sentences, no legal stuff > touched in legal terms :-) > I believe that it is better to have legal text identical to other > parts of the kernel otherwise > the legal stuff looks different when comparing with diff tools. make it a separate patch and not just fix it while at it. Regards Marcel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 2/4] Bluetooth: clean up rfcomm code 2010-12-01 10:45 ` Marcel Holtmann @ 2010-12-01 12:20 ` Andrei Emeltchenko 0 siblings, 0 replies; 15+ messages in thread From: Andrei Emeltchenko @ 2010-12-01 12:20 UTC (permalink / raw) To: Marcel Holtmann; +Cc: Gustavo F. Padovan, linux-bluetooth Hi Marcel, On Wed, Dec 1, 2010 at 12:45 PM, Marcel Holtmann <marcel@holtmann.org> wrot= e: > Hi Andrei, > >> > * Emeltchenko Andrei <Andrei.Emeltchenko.news@gmail.com> [2010-11-26 1= 7:22:43 +0200]: >> > >> >> From: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> >> >> >> >> Remove extra spaces, assignments in if statement, zeroing static >> >> variables. >> >> >> >> Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> >> >> --- >> >> =A0include/net/bluetooth/rfcomm.h | =A0 18 +++++++++--------- >> >> =A0net/bluetooth/rfcomm/core.c =A0 =A0| =A0 =A08 ++++---- >> >> =A0net/bluetooth/rfcomm/sock.c =A0 =A0| =A0 =A05 +++-- >> >> =A0net/bluetooth/rfcomm/tty.c =A0 =A0 | =A0 28 ++++++++++++++++------= ------ >> >> =A04 files changed, 32 insertions(+), 27 deletions(-) >> >> >> >> diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/r= fcomm.h >> >> index 71047bc..6eac4a7 100644 >> >> --- a/include/net/bluetooth/rfcomm.h >> >> +++ b/include/net/bluetooth/rfcomm.h >> >> @@ -1,5 +1,5 @@ >> >> -/* >> >> - =A0 RFCOMM implementation for Linux Bluetooth stack (BlueZ). >> >> +/* >> >> + =A0 RFCOMM implementation for Linux Bluetooth stack (BlueZ) >> >> =A0 =A0 Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> >> >> =A0 =A0 Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> >> >> >> >> @@ -11,13 +11,13 @@ >> >> =A0 =A0 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ME= RCHANTABILITY, >> >> =A0 =A0 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD= PARTY RIGHTS. >> >> =A0 =A0 IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LI= ABLE FOR ANY >> >> - =A0 CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY= DAMAGES >> >> - =A0 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER= IN AN >> >> - =A0 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISIN= G OUT OF >> >> + =A0 CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY= DAMAGES >> >> + =A0 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER= IN AN >> >> + =A0 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISIN= G OUT OF >> >> =A0 =A0 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE= . >> >> >> >> - =A0 ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATE= NTS, >> >> - =A0 COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS >> >> + =A0 ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATE= NTS, >> >> + =A0 COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS >> >> =A0 =A0 SOFTWARE IS DISCLAIMED. >> > >> > Marcel refused a patch from me in the past because its was touching le= gal >> > stuff, so or you remove these changes for your patches or wait for >> > Marcel's comments here. >> >> I fixed extra spaces at the end of the sentences, no legal stuff >> touched in legal terms :-) >> I believe that it is better to have legal text identical to other >> parts of the kernel otherwise >> the legal stuff looks different when comparing with diff tools. > > make it a separate patch and not just fix it while at it. OK, I'll do it this way. Regards, Andrei ^ permalink raw reply [flat|nested] 15+ messages in thread
* [RFC 3/4] Bluetooth: clean up l2cap code 2010-11-26 15:22 [RFC 0/4] Clean up sco, rfcomm and hci code Emeltchenko Andrei 2010-11-26 15:22 ` [RFC 1/4] Bluetooth: clean up sco code Emeltchenko Andrei 2010-11-26 15:22 ` [RFC 2/4] Bluetooth: clean up rfcomm code Emeltchenko Andrei @ 2010-11-26 15:22 ` Emeltchenko Andrei 2010-11-26 15:22 ` [RFC 4/4] Bluetooth: clean up hci code Emeltchenko Andrei 3 siblings, 0 replies; 15+ messages in thread From: Emeltchenko Andrei @ 2010-11-26 15:22 UTC (permalink / raw) To: linux-bluetooth From: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> clean extra spaces, do not initialize static to zero, macros with complex values enclosed to (). Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> --- include/net/bluetooth/l2cap.h | 22 +++++++++++----------- net/bluetooth/l2cap.c | 7 +++---- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h index c819c8b..7ad25ca 100644 --- a/include/net/bluetooth/l2cap.h +++ b/include/net/bluetooth/l2cap.h @@ -1,4 +1,4 @@ -/* +/* BlueZ - Bluetooth protocol stack for Linux Copyright (C) 2000-2001 Qualcomm Incorporated Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org> @@ -14,13 +14,13 @@ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY - CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, - COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS + ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, + COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS SOFTWARE IS DISCLAIMED. */ @@ -417,11 +417,11 @@ static inline int l2cap_tx_window_full(struct sock *sk) return sub == pi->remote_tx_win; } -#define __get_txseq(ctrl) ((ctrl) & L2CAP_CTRL_TXSEQ) >> 1 -#define __get_reqseq(ctrl) ((ctrl) & L2CAP_CTRL_REQSEQ) >> 8 -#define __is_iframe(ctrl) !((ctrl) & L2CAP_CTRL_FRAME_TYPE) -#define __is_sframe(ctrl) (ctrl) & L2CAP_CTRL_FRAME_TYPE -#define __is_sar_start(ctrl) ((ctrl) & L2CAP_CTRL_SAR) == L2CAP_SDU_START +#define __get_txseq(ctrl) (((ctrl) & L2CAP_CTRL_TXSEQ) >> 1) +#define __get_reqseq(ctrl) (((ctrl) & L2CAP_CTRL_REQSEQ) >> 8) +#define __is_iframe(ctrl) (!((ctrl) & L2CAP_CTRL_FRAME_TYPE)) +#define __is_sframe(ctrl) ((ctrl) & L2CAP_CTRL_FRAME_TYPE) +#define __is_sar_start(ctrl) (((ctrl) & L2CAP_CTRL_SAR) == L2CAP_SDU_START) void l2cap_load(void); diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c index 12b4aa2..d4b4fbd 100644 --- a/net/bluetooth/l2cap.c +++ b/net/bluetooth/l2cap.c @@ -57,7 +57,7 @@ #define VERSION "2.15" -static int disable_ertm = 0; +static int disable_ertm; static u32 l2cap_feat_mask = L2CAP_FEAT_FIXED_CHAN; static u8 l2cap_fixed_chan[8] = { 0x02, }; @@ -4162,11 +4162,10 @@ static inline void l2cap_data_channel_rrframe(struct sock *sk, u16 rx_control) __mod_retrans_timer(); pi->conn_state &= ~L2CAP_CONN_REMOTE_BUSY; - if (pi->conn_state & L2CAP_CONN_SREJ_SENT) { + if (pi->conn_state & L2CAP_CONN_SREJ_SENT) l2cap_send_ack(pi); - } else { + else l2cap_ertm_send(sk); - } } } -- 1.7.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC 4/4] Bluetooth: clean up hci code 2010-11-26 15:22 [RFC 0/4] Clean up sco, rfcomm and hci code Emeltchenko Andrei ` (2 preceding siblings ...) 2010-11-26 15:22 ` [RFC 3/4] Bluetooth: clean up l2cap code Emeltchenko Andrei @ 2010-11-26 15:22 ` Emeltchenko Andrei 2010-11-26 16:22 ` Anderson Lizardo 3 siblings, 1 reply; 15+ messages in thread From: Emeltchenko Andrei @ 2010-11-26 15:22 UTC (permalink / raw) To: linux-bluetooth From: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> Remove extra spaces Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@nokia.com> --- include/net/bluetooth/hci.h | 16 +++++----- include/net/bluetooth/hci_core.h | 14 ++++---- net/bluetooth/hci_conn.c | 23 ++++++++++----- net/bluetooth/hci_core.c | 57 ++++++++++++++++++++++++-------------- net/bluetooth/hci_event.c | 8 +++-- net/bluetooth/hci_sock.c | 17 +++++++---- 6 files changed, 82 insertions(+), 53 deletions(-) diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index e30e008..f3c5ed6 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h @@ -1,4 +1,4 @@ -/* +/* BlueZ - Bluetooth protocol stack for Linux Copyright (C) 2000-2001 Qualcomm Incorporated @@ -12,13 +12,13 @@ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY - CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, - COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS + ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, + COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS SOFTWARE IS DISCLAIMED. */ @@ -489,7 +489,7 @@ struct hci_rp_read_local_name { #define HCI_OP_WRITE_PG_TIMEOUT 0x0c18 -#define HCI_OP_WRITE_SCAN_ENABLE 0x0c1a +#define HCI_OP_WRITE_SCAN_ENABLE 0x0c1a #define SCAN_DISABLED 0x00 #define SCAN_INQUIRY 0x01 #define SCAN_PAGE 0x02 @@ -874,7 +874,7 @@ struct hci_ev_si_security { struct hci_command_hdr { __le16 opcode; /* OCF & OGF */ - __u8 plen; + __u8 plen; } __packed; struct hci_event_hdr { diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index ebec8c9..9c08625 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h @@ -44,15 +44,15 @@ struct inquiry_data { }; struct inquiry_entry { - struct inquiry_entry *next; + struct inquiry_entry *next; __u32 timestamp; struct inquiry_data data; }; struct inquiry_cache { - spinlock_t lock; + spinlock_t lock; __u32 timestamp; - struct inquiry_entry *list; + struct inquiry_entry *list; }; struct hci_conn_hash { @@ -141,7 +141,7 @@ struct hci_dev { void *driver_data; void *core_data; - atomic_t promisc; + atomic_t promisc; struct dentry *debugfs; @@ -150,7 +150,7 @@ struct hci_dev { struct rfkill *rfkill; - struct module *owner; + struct module *owner; int (*open)(struct hci_dev *hdev); int (*close)(struct hci_dev *hdev); @@ -215,8 +215,8 @@ extern rwlock_t hci_dev_list_lock; extern rwlock_t hci_cb_list_lock; /* ----- Inquiry cache ----- */ -#define INQUIRY_CACHE_AGE_MAX (HZ*30) // 30 seconds -#define INQUIRY_ENTRY_AGE_MAX (HZ*60) // 60 seconds +#define INQUIRY_CACHE_AGE_MAX (HZ*30) /* 30 seconds */ +#define INQUIRY_ENTRY_AGE_MAX (HZ*60) /* 60 seconds */ #define inquiry_cache_lock(c) spin_lock(&c->lock) #define inquiry_cache_unlock(c) spin_unlock(&c->lock) diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c index 0b1e460..6b90a41 100644 --- a/net/bluetooth/hci_conn.c +++ b/net/bluetooth/hci_conn.c @@ -39,7 +39,7 @@ #include <net/sock.h> #include <asm/system.h> -#include <asm/uaccess.h> +#include <linux/uaccess.h> #include <asm/unaligned.h> #include <net/bluetooth/bluetooth.h> @@ -66,7 +66,8 @@ void hci_acl_connect(struct hci_conn *conn) bacpy(&cp.bdaddr, &conn->dst); cp.pscan_rep_mode = 0x02; - if ((ie = hci_inquiry_cache_lookup(hdev, &conn->dst))) { + ie = hci_inquiry_cache_lookup(hdev, &conn->dst); + if (ie) { if (inquiry_entry_age(ie) <= INQUIRY_ENTRY_AGE_MAX) { cp.pscan_rep_mode = ie->data.pscan_rep_mode; cp.pscan_mode = ie->data.pscan_mode; @@ -368,8 +369,10 @@ struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst, __u8 BT_DBG("%s dst %s", hdev->name, batostr(dst)); - if (!(acl = hci_conn_hash_lookup_ba(hdev, ACL_LINK, dst))) { - if (!(acl = hci_conn_add(hdev, ACL_LINK, dst))) + acl = hci_conn_hash_lookup_ba(hdev, ACL_LINK, dst); + if (!acl) { + acl = hci_conn_add(hdev, ACL_LINK, dst); + if (!acl) return NULL; } @@ -389,8 +392,10 @@ struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst, __u8 if (type == ACL_LINK) return acl; - if (!(sco = hci_conn_hash_lookup_ba(hdev, type, dst))) { - if (!(sco = hci_conn_add(hdev, type, dst))) { + sco = hci_conn_hash_lookup_ba(hdev, type, dst); + if (!sco) { + sco = hci_conn_add(hdev, type, dst); + if (!sco) { hci_conn_put(acl); return NULL; } @@ -647,10 +652,12 @@ int hci_get_conn_list(void __user *arg) size = sizeof(req) + req.conn_num * sizeof(*ci); - if (!(cl = kmalloc(size, GFP_KERNEL))) + cl = kmalloc(size, GFP_KERNEL); + if (!cl) return -ENOMEM; - if (!(hdev = hci_dev_get(req.dev_id))) { + hdev = hci_dev_get(req.dev_id); + if (!hdev) { kfree(cl); return -ENODEV; } diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index bc2a052..7305d84 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -44,7 +44,7 @@ #include <net/sock.h> #include <asm/system.h> -#include <asm/uaccess.h> +#include <linux/uaccess.h> #include <asm/unaligned.h> #include <net/bluetooth/bluetooth.h> @@ -349,20 +349,23 @@ struct inquiry_entry *hci_inquiry_cache_lookup(struct hci_dev *hdev, bdaddr_t *b void hci_inquiry_cache_update(struct hci_dev *hdev, struct inquiry_data *data) { struct inquiry_cache *cache = &hdev->inq_cache; - struct inquiry_entry *e; + struct inquiry_entry *ie; BT_DBG("cache %p, %s", cache, batostr(&data->bdaddr)); - if (!(e = hci_inquiry_cache_lookup(hdev, &data->bdaddr))) { + ie = hci_inquiry_cache_lookup(hdev, &data->bdaddr); + if (!ie) { /* Entry not in the cache. Add new one. */ - if (!(e = kzalloc(sizeof(struct inquiry_entry), GFP_ATOMIC))) + ie = kzalloc(sizeof(struct inquiry_entry), GFP_ATOMIC); + if (!ie) return; - e->next = cache->list; - cache->list = e; + + ie->next = cache->list; + cache->list = ie; } - memcpy(&e->data, data, sizeof(*data)); - e->timestamp = jiffies; + memcpy(&ie->data, data, sizeof(*data)); + ie->timestamp = jiffies; cache->timestamp = jiffies; } @@ -430,7 +433,8 @@ int hci_inquiry(void __user *arg) hci_dev_unlock_bh(hdev); timeo = ir.length * msecs_to_jiffies(2000); - if (do_inquiry && (err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo)) < 0) + err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo); + if (do_inquiry && err < 0) goto done; /* for unlimited number of responses we will use buffer with 255 entries */ @@ -439,7 +443,8 @@ int hci_inquiry(void __user *arg) /* cache_dump can't sleep. Therefore we allocate temp buffer and then * copy it to the user space. */ - if (!(buf = kmalloc(sizeof(struct inquiry_info) * max_rsp, GFP_KERNEL))) { + buf = kmalloc(sizeof(struct inquiry_info) *max_rsp, GFP_KERNEL); + if (!buf) { err = -ENOMEM; goto done; } @@ -611,7 +616,8 @@ int hci_dev_close(__u16 dev) struct hci_dev *hdev; int err; - if (!(hdev = hci_dev_get(dev))) + hdev = hci_dev_get(dev); + if (!hdev) return -ENODEV; err = hci_dev_do_close(hdev); hci_dev_put(hdev); @@ -623,7 +629,8 @@ int hci_dev_reset(__u16 dev) struct hci_dev *hdev; int ret = 0; - if (!(hdev = hci_dev_get(dev))) + hdev = hci_dev_get(dev); + if (!hdev) return -ENODEV; hci_req_lock(hdev); @@ -663,7 +670,8 @@ int hci_dev_reset_stat(__u16 dev) struct hci_dev *hdev; int ret = 0; - if (!(hdev = hci_dev_get(dev))) + hdev = hci_dev_get(dev); + if (!hdev) return -ENODEV; memset(&hdev->stat, 0, sizeof(struct hci_dev_stats)); @@ -682,7 +690,8 @@ int hci_dev_cmd(unsigned int cmd, void __user *arg) if (copy_from_user(&dr, arg, sizeof(dr))) return -EFAULT; - if (!(hdev = hci_dev_get(dr.dev_id))) + hdev = hci_dev_get(dr.dev_id); + if (!hdev) return -ENODEV; switch (cmd) { @@ -763,7 +772,8 @@ int hci_get_dev_list(void __user *arg) size = sizeof(*dl) + dev_num * sizeof(*dr); - if (!(dl = kzalloc(size, GFP_KERNEL))) + dl = kzalloc(size, GFP_KERNEL); + if (!dl) return -ENOMEM; dr = dl->dev_req; @@ -797,7 +807,8 @@ int hci_get_dev_info(void __user *arg) if (copy_from_user(&di, arg, sizeof(di))) return -EFAULT; - if (!(hdev = hci_dev_get(di.dev_id))) + hdev = hci_dev_get(di.dev_id); + if (!hdev) return -ENODEV; strcpy(di.name, hdev->name); @@ -905,7 +916,7 @@ int hci_register_dev(struct hci_dev *hdev) hdev->sniff_max_interval = 800; hdev->sniff_min_interval = 80; - tasklet_init(&hdev->cmd_task, hci_cmd_task,(unsigned long) hdev); + tasklet_init(&hdev->cmd_task, hci_cmd_task, (unsigned long) hdev); tasklet_init(&hdev->rx_task, hci_rx_task, (unsigned long) hdev); tasklet_init(&hdev->tx_task, hci_tx_task, (unsigned long) hdev); @@ -1368,7 +1379,8 @@ void hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags) bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT; hci_add_acl_hdr(skb, conn->handle, flags | ACL_START); - if (!(list = skb_shinfo(skb)->frag_list)) { + list = skb_shinfo(skb)->frag_list; + if (!list) { /* Non fragmented */ BT_DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len); @@ -1609,7 +1621,8 @@ static inline void hci_acldata_packet(struct hci_dev *hdev, struct sk_buff *skb) hci_conn_enter_active_mode(conn); /* Send to upper protocol */ - if ((hp = hci_proto[HCI_PROTO_L2CAP]) && hp->recv_acldata) { + hp = hci_proto[HCI_PROTO_L2CAP]; + if (hp && hp->recv_acldata) { hp->recv_acldata(conn, skb, flags); return; } @@ -1644,7 +1657,8 @@ static inline void hci_scodata_packet(struct hci_dev *hdev, struct sk_buff *skb) register struct hci_proto *hp; /* Send to upper protocol */ - if ((hp = hci_proto[HCI_PROTO_SCO]) && hp->recv_scodata) { + hp = hci_proto[HCI_PROTO_SCO]; + if (hp && hp->recv_scodata) { hp->recv_scodata(conn, skb); return; } @@ -1727,7 +1741,8 @@ static void hci_cmd_task(unsigned long arg) if (atomic_read(&hdev->cmd_cnt) && (skb = skb_dequeue(&hdev->cmd_q))) { kfree_skb(hdev->sent_cmd); - if ((hdev->sent_cmd = skb_clone(skb, GFP_ATOMIC))) { + hdev->sent_cmd = skb_clone(skb, GFP_ATOMIC); + if (hdev->sent_cmd) { atomic_dec(&hdev->cmd_cnt); hci_send_frame(skb); hdev->cmd_last_tx = jiffies; diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 3c1957c..8923b36 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -39,7 +39,7 @@ #include <net/sock.h> #include <asm/system.h> -#include <asm/uaccess.h> +#include <linux/uaccess.h> #include <asm/unaligned.h> #include <net/bluetooth/bluetooth.h> @@ -1512,10 +1512,12 @@ static inline void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *s conn->sent -= count; if (conn->type == ACL_LINK) { - if ((hdev->acl_cnt += count) > hdev->acl_pkts) + hdev->acl_cnt += count; + if (hdev->acl_cnt > hdev->acl_pkts) hdev->acl_cnt = hdev->acl_pkts; } else { - if ((hdev->sco_cnt += count) > hdev->sco_pkts) + hdev->sco_cnt += count; + if (hdev->sco_cnt > hdev->sco_pkts) hdev->sco_cnt = hdev->sco_pkts; } } diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c index 83acd16..b3753ba 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c @@ -43,7 +43,7 @@ #include <net/sock.h> #include <asm/system.h> -#include <asm/uaccess.h> +#include <linux/uaccess.h> #include <asm/unaligned.h> #include <net/bluetooth/bluetooth.h> @@ -125,7 +125,8 @@ void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb) continue; } - if (!(nskb = skb_clone(skb, GFP_ATOMIC))) + nskb = skb_clone(skb, GFP_ATOMIC); + if (!nskb) continue; /* Put type byte before the data */ @@ -370,7 +371,8 @@ static int hci_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_le } if (haddr->hci_dev != HCI_DEV_NONE) { - if (!(hdev = hci_dev_get(haddr->hci_dev))) { + hdev = hci_dev_get(haddr->hci_dev); + if (!hdev) { err = -ENODEV; goto done; } @@ -457,7 +459,8 @@ static int hci_sock_recvmsg(struct kiocb *iocb, struct socket *sock, if (sk->sk_state == BT_CLOSED) return 0; - if (!(skb = skb_recv_datagram(sk, flags, noblock, &err))) + skb = skb_recv_datagram(sk, flags, noblock, &err); + if (!skb) return err; msg->msg_namelen = 0; @@ -499,7 +502,8 @@ static int hci_sock_sendmsg(struct kiocb *iocb, struct socket *sock, lock_sock(sk); - if (!(hdev = hci_pi(sk)->hdev)) { + hdev = hci_pi(sk)->hdev; + if (!hdev) { err = -EBADFD; goto done; } @@ -509,7 +513,8 @@ static int hci_sock_sendmsg(struct kiocb *iocb, struct socket *sock, goto done; } - if (!(skb = bt_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err))) + skb = bt_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err); + if (!skb) goto done; if (memcpy_fromiovec(skb_put(skb, len), msg->msg_iov, len)) { -- 1.7.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [RFC 4/4] Bluetooth: clean up hci code 2010-11-26 15:22 ` [RFC 4/4] Bluetooth: clean up hci code Emeltchenko Andrei @ 2010-11-26 16:22 ` Anderson Lizardo 2010-11-26 20:03 ` Andrei Emeltchenko 0 siblings, 1 reply; 15+ messages in thread From: Anderson Lizardo @ 2010-11-26 16:22 UTC (permalink / raw) To: Emeltchenko Andrei; +Cc: linux-bluetooth Hi Andrei, On Fri, Nov 26, 2010 at 11:22 AM, Emeltchenko Andrei <Andrei.Emeltchenko.news@gmail.com> wrote: > @@ -430,7 +433,8 @@ int hci_inquiry(void __user *arg) > hci_dev_unlock_bh(hdev); > > timeo = ir.length * msecs_to_jiffies(2000); > - if (do_inquiry && (err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo)) < 0) > + err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo); > + if (do_inquiry && err < 0) > goto done; I think there is a problem here. the "do_inquiry" flag will be checked *after* the inquiry request is done. Maybe you should do something like: if (do_inquiry) { err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo); if (err < 0) goto done; } Regards, -- Anderson Lizardo OpenBossa Labs - INdT Manaus - Brazil ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 4/4] Bluetooth: clean up hci code 2010-11-26 16:22 ` Anderson Lizardo @ 2010-11-26 20:03 ` Andrei Emeltchenko 0 siblings, 0 replies; 15+ messages in thread From: Andrei Emeltchenko @ 2010-11-26 20:03 UTC (permalink / raw) To: Anderson Lizardo; +Cc: linux-bluetooth Hi Anderson, > Hi Andrei, > > On Fri, Nov 26, 2010 at 11:22 AM, Emeltchenko Andrei > <Andrei.Emeltchenko.news@gmail.com> wrote: > > @@ -430,7 +433,8 @@ int hci_inquiry(void __user *arg) > > hci_dev_unlock_bh(hdev); > > > > timeo = ir.length * msecs_to_jiffies(2000); > > - if (do_inquiry && (err = hci_request(hdev, hci_inq_req, > > (unsigned long)&ir, timeo)) < 0) + err = hci_request(hdev, > > hci_inq_req, (unsigned long)&ir, timeo); + if (do_inquiry && err > > < 0) goto done; > > I think there is a problem here. the "do_inquiry" flag will be checked > *after* the inquiry request is done. Maybe you should do something > like: > > if (do_inquiry) { > err = hci_request(hdev, hci_inq_req,sur (unsigned long)&ir, timeo); > if (err < 0) > goto done; > } sure, thanks for reviewing. Will rewrite this part. -- Andrei > > Regards, > -- > Anderson Lizardo > OpenBossa Labs - INdT > Manaus - Brazil ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2010-12-01 21:16 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-11-26 15:22 [RFC 0/4] Clean up sco, rfcomm and hci code Emeltchenko Andrei 2010-11-26 15:22 ` [RFC 1/4] Bluetooth: clean up sco code Emeltchenko Andrei 2010-11-26 16:14 ` Anderson Lizardo 2010-12-01 13:44 ` Andrei Emeltchenko 2010-12-01 21:16 ` Gustavo F. Padovan 2010-11-26 15:22 ` [RFC 2/4] Bluetooth: clean up rfcomm code Emeltchenko Andrei 2010-11-30 1:09 ` Gustavo F. Padovan 2010-11-30 8:41 ` Andrei Emeltchenko 2010-11-30 18:22 ` Gustavo F. Padovan 2010-12-01 10:45 ` Marcel Holtmann 2010-12-01 12:20 ` Andrei Emeltchenko 2010-11-26 15:22 ` [RFC 3/4] Bluetooth: clean up l2cap code Emeltchenko Andrei 2010-11-26 15:22 ` [RFC 4/4] Bluetooth: clean up hci code Emeltchenko Andrei 2010-11-26 16:22 ` Anderson Lizardo 2010-11-26 20:03 ` Andrei Emeltchenko
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).