diff -ru -x '*.so' -x '*.lds' -x '*.a' -x '*.elf' -x '.*' -x '*.order' -x '*.ko' -x '*.mod.c' -x '*.o' -x '*.cmd' linux-2.6.26/include/net/bluetooth/hci_core.h linux-2.6.26+mh3+fch/include/net/bluetooth/hci_core.h --- linux-2.6.26/include/net/bluetooth/hci_core.h 2008-09-01 17:06:22.000000000 +0200 +++ linux-2.6.26+mh3+fch/include/net/bluetooth/hci_core.h 2008-09-01 12:22:36.000000000 +0200 @@ -170,6 +170,7 @@ __u32 link_mode; __u8 auth_type; __u8 power_save; + __u8 force_active_mode; unsigned long pend; unsigned int sent; diff -ru -x '*.so' -x '*.lds' -x '*.a' -x '*.elf' -x '.*' -x '*.order' -x '*.ko' -x '*.mod.c' -x '*.o' -x '*.cmd' linux-2.6.26/include/net/bluetooth/l2cap.h linux-2.6.26+mh3+fch/include/net/bluetooth/l2cap.h --- linux-2.6.26/include/net/bluetooth/l2cap.h 2008-07-13 23:51:29.000000000 +0200 +++ linux-2.6.26+mh3+fch/include/net/bluetooth/l2cap.h 2008-09-01 16:20:17.000000000 +0200 @@ -62,6 +62,8 @@ #define L2CAP_LM_RELIABLE 0x0010 #define L2CAP_LM_SECURE 0x0020 +#define L2CAP_FORCE_ACTIVE_MODE 0x04 + /* L2CAP command codes */ #define L2CAP_COMMAND_REJ 0x01 #define L2CAP_CONN_REQ 0x02 Seulement dans linux-2.6.26+mh3+fch/kernel: bounds.s Seulement dans linux-2.6.26+mh3+fch/kernel: timeconst.h Seulement dans linux-2.6.26+mh3+fch/lib: crc32table.h Seulement dans linux-2.6.26+mh3+fch/lib: gen_crc32table Seulement dans linux-2.6.26+mh3+fch/: Module.symvers diff -ru -x '*.so' -x '*.lds' -x '*.a' -x '*.elf' -x '.*' -x '*.order' -x '*.ko' -x '*.mod.c' -x '*.o' -x '*.cmd' linux-2.6.26/net/bluetooth/hci_conn.c linux-2.6.26+mh3+fch/net/bluetooth/hci_conn.c --- linux-2.6.26/net/bluetooth/hci_conn.c 2008-09-01 17:06:22.000000000 +0200 +++ linux-2.6.26+mh3+fch/net/bluetooth/hci_conn.c 2008-09-01 16:16:33.000000000 +0200 @@ -214,6 +214,7 @@ conn->state = BT_OPEN; conn->power_save = 1; + conn->force_active_mode = 0; switch (type) { case ACL_LINK: @@ -464,7 +465,10 @@ if (test_bit(HCI_RAW, &hdev->flags)) return; - if (conn->mode != HCI_CM_SNIFF || !conn->power_save) + if (conn->mode != HCI_CM_SNIFF) + goto timer; + + if (!conn->power_save && !conn->force_active_mode) goto timer; if (!test_and_set_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->pend)) { diff -ru -x '*.so' -x '*.lds' -x '*.a' -x '*.elf' -x '.*' -x '*.order' -x '*.ko' -x '*.mod.c' -x '*.o' -x '*.cmd' linux-2.6.26/net/bluetooth/l2cap.c linux-2.6.26+mh3+fch/net/bluetooth/l2cap.c --- linux-2.6.26/net/bluetooth/l2cap.c 2008-09-01 17:06:22.000000000 +0200 +++ linux-2.6.26+mh3+fch/net/bluetooth/l2cap.c 2008-09-01 17:18:23.000000000 +0200 @@ -1133,6 +1133,20 @@ l2cap_pi(sk)->link_mode = opt; break; + case L2CAP_FORCE_ACTIVE_MODE: + if (sk->sk_state != BT_CONNECTED) { + err = -ENOTCONN; + break; + } + + if (get_user(opt, (u32 __user *) optval)) { + err = -EFAULT; + break; + } + + l2cap_pi(sk)->conn->hcon->force_active_mode = opt; + break; + default: err = -ENOPROTOOPT; break; @@ -1189,6 +1203,17 @@ break; + case L2CAP_FORCE_ACTIVE_MODE: + if (sk->sk_state != BT_CONNECTED) { + err = -ENOTCONN; + break; + } + + if (put_user(l2cap_pi(sk)->conn->hcon->force_active_mode, + (u32 __user *) optval)) + err = -EFAULT; + break; + default: err = -ENOPROTOOPT; break;