mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 22:52:35 +02:00
Revert "Bluetooth: Introduce L2CAP_LM_FLUSHABLE to allow flushing of ACL packets."
This reverts commit d7897fd1e9.
Change-Id: I3401550b6dc97b683104e9fdac30a617a2db8c8e
Signed-off-by: Nick Pelly <npelly@google.com>
This commit is contained in:
parent
f6320db511
commit
71682ea19f
|
|
@ -145,14 +145,11 @@ enum {
|
|||
EDR_ESCO_MASK)
|
||||
|
||||
/* ACL flags */
|
||||
#define ACL_START 0x00
|
||||
#define ACL_CONT 0x01
|
||||
#define ACL_START_FLUSHABLE 0x02
|
||||
#define ACL_START 0x02
|
||||
#define ACL_ACTIVE_BCAST 0x04
|
||||
#define ACL_PICO_BCAST 0x08
|
||||
|
||||
#define ACL_PB_MASK (ACL_CONT | ACL_START | ACL_START_FLUSHABLE)
|
||||
|
||||
/* Baseband links */
|
||||
#define SCO_LINK 0x00
|
||||
#define ACL_LINK 0x01
|
||||
|
|
|
|||
|
|
@ -70,7 +70,6 @@ struct l2cap_conninfo {
|
|||
#define L2CAP_LM_TRUSTED 0x0008
|
||||
#define L2CAP_LM_RELIABLE 0x0010
|
||||
#define L2CAP_LM_SECURE 0x0020
|
||||
#define L2CAP_LM_FLUSHABLE 0x0040
|
||||
|
||||
/* L2CAP command codes */
|
||||
#define L2CAP_COMMAND_REJ 0x01
|
||||
|
|
@ -317,7 +316,6 @@ struct l2cap_pinfo {
|
|||
__u8 sec_level;
|
||||
__u8 role_switch;
|
||||
__u8 force_reliable;
|
||||
__u8 flushable;
|
||||
|
||||
__u8 conf_req[64];
|
||||
__u8 conf_len;
|
||||
|
|
|
|||
|
|
@ -1239,7 +1239,7 @@ int hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags)
|
|||
|
||||
skb->dev = (void *) hdev;
|
||||
bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT;
|
||||
hci_add_acl_hdr(skb, conn->handle, flags);
|
||||
hci_add_acl_hdr(skb, conn->handle, flags | ACL_START);
|
||||
|
||||
if (!(list = skb_shinfo(skb)->frag_list)) {
|
||||
/* Non fragmented */
|
||||
|
|
@ -1256,14 +1256,12 @@ int hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags)
|
|||
spin_lock_bh(&conn->data_q.lock);
|
||||
|
||||
__skb_queue_tail(&conn->data_q, skb);
|
||||
flags &= ~ACL_PB_MASK;
|
||||
flags |= ACL_CONT;
|
||||
do {
|
||||
skb = list; list = list->next;
|
||||
|
||||
skb->dev = (void *) hdev;
|
||||
bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT;
|
||||
hci_add_acl_hdr(skb, conn->handle, flags);
|
||||
hci_add_acl_hdr(skb, conn->handle, flags | ACL_CONT);
|
||||
|
||||
BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
|
||||
|
||||
|
|
|
|||
|
|
@ -331,7 +331,7 @@ static inline int l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16
|
|||
if (!skb)
|
||||
return -ENOMEM;
|
||||
|
||||
return hci_send_acl(conn->hcon, skb, ACL_START);
|
||||
return hci_send_acl(conn->hcon, skb, 0);
|
||||
}
|
||||
|
||||
static inline int l2cap_send_sframe(struct l2cap_pinfo *pi, u16 control)
|
||||
|
|
@ -770,7 +770,6 @@ static void l2cap_sock_init(struct sock *sk, struct sock *parent)
|
|||
pi->sec_level = l2cap_pi(parent)->sec_level;
|
||||
pi->role_switch = l2cap_pi(parent)->role_switch;
|
||||
pi->force_reliable = l2cap_pi(parent)->force_reliable;
|
||||
pi->flushable = l2cap_pi(parent)->flushable;
|
||||
} else {
|
||||
pi->imtu = L2CAP_DEFAULT_MTU;
|
||||
pi->omtu = 0;
|
||||
|
|
@ -779,7 +778,6 @@ static void l2cap_sock_init(struct sock *sk, struct sock *parent)
|
|||
pi->sec_level = BT_SECURITY_LOW;
|
||||
pi->role_switch = 0;
|
||||
pi->force_reliable = 0;
|
||||
pi->flushable = 0;
|
||||
}
|
||||
|
||||
/* Default config options */
|
||||
|
|
@ -1261,16 +1259,10 @@ static inline int l2cap_do_send(struct sock *sk, struct sk_buff *skb)
|
|||
{
|
||||
struct l2cap_pinfo *pi = l2cap_pi(sk);
|
||||
int err;
|
||||
u16 flags;
|
||||
|
||||
BT_DBG("sk %p, skb %p len %d", sk, skb, skb->len);
|
||||
|
||||
if (pi->flushable)
|
||||
flags = ACL_START_FLUSHABLE;
|
||||
else
|
||||
flags = ACL_START;
|
||||
|
||||
err = hci_send_acl(pi->conn->hcon, skb, flags);
|
||||
err = hci_send_acl(pi->conn->hcon, skb, 0);
|
||||
if (err < 0)
|
||||
kfree_skb(skb);
|
||||
|
||||
|
|
@ -1755,7 +1747,6 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __us
|
|||
|
||||
l2cap_pi(sk)->role_switch = (opt & L2CAP_LM_MASTER);
|
||||
l2cap_pi(sk)->force_reliable = (opt & L2CAP_LM_RELIABLE);
|
||||
l2cap_pi(sk)->flushable = (opt & L2CAP_LM_FLUSHABLE);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
@ -1883,9 +1874,6 @@ static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, char __us
|
|||
if (l2cap_pi(sk)->force_reliable)
|
||||
opt |= L2CAP_LM_RELIABLE;
|
||||
|
||||
if (l2cap_pi(sk)->flushable)
|
||||
opt |= L2CAP_LM_FLUSHABLE;
|
||||
|
||||
if (put_user(opt, (u32 __user *) optval))
|
||||
err = -EFAULT;
|
||||
break;
|
||||
|
|
@ -3813,7 +3801,7 @@ static int l2cap_recv_acldata(struct hci_conn *hcon, struct sk_buff *skb, u16 fl
|
|||
|
||||
BT_DBG("conn %p len %d flags 0x%x", conn, skb->len, flags);
|
||||
|
||||
if (!(flags & ACL_CONT)) {
|
||||
if (flags & ACL_START) {
|
||||
struct l2cap_hdr *hdr;
|
||||
int len;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user