linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mat Martineau <mathewm@codeaurora.org>
To: linux-bluetooth@vger.kernel.org
Cc: marcel@holtmann.org, gustavo@padovan.org,
	rshaffer@codeaurora.org, linux-arm-msm@vger.kernel.org,
	Mat Martineau <mathewm@codeaurora.org>
Subject: [RFC 2/7] Bluetooth: Use enhanced L2CAP header structure and symbolic values.
Date: Tue, 10 Aug 2010 12:14:59 -0700	[thread overview]
Message-ID: <1281467704-5378-3-git-send-email-mathewm@codeaurora.org> (raw)
In-Reply-To: <1281467704-5378-1-git-send-email-mathewm@codeaurora.org>


Signed-off-by: Mat Martineau <mathewm@codeaurora.org>
---
 net/bluetooth/l2cap.c |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c
index 5e78c18..aa69c84 100644
--- a/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
@@ -1753,33 +1753,36 @@ static struct sk_buff *l2cap_create_iframe_pdu(struct sock *sk, struct msghdr *m
 {
 	struct l2cap_conn *conn = l2cap_pi(sk)->conn;
 	struct sk_buff *skb;
-	int err, count, hlen = L2CAP_HDR_SIZE + 2;
-	struct l2cap_hdr *lh;
+	int err, count, hlen = L2CAP_ENHANCED_HDR_SIZE;
+	struct l2cap_enhanced_hdr *lh;
 
-	BT_DBG("sk %p len %d", sk, (int)len);
+	BT_DBG("sk %p, msg %p, len %d, control %x, sdulen %d",
+		sk, msg, (int)len, control, (int)sdulen);
 
 	if (!conn)
 		return ERR_PTR(-ENOTCONN);
 
 	if (sdulen)
-		hlen += 2;
+		hlen += L2CAP_SDULEN_SIZE;
 
 	if (l2cap_pi(sk)->fcs == L2CAP_FCS_CRC16)
-		hlen += 2;
+		hlen += L2CAP_FCS_SIZE;
 
 	count = min_t(unsigned int, (conn->mtu - hlen), len);
+
 	skb = bt_skb_send_alloc(sk, count + hlen,
 			msg->msg_flags & MSG_DONTWAIT, &err);
 	if (!skb)
-		return ERR_PTR(-ENOMEM);
+		return ERR_PTR(err);
 
 	/* Create L2CAP header */
-	lh = (struct l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
+	lh = (struct l2cap_enhanced_hdr *) skb_put(skb,
+						L2CAP_ENHANCED_HDR_SIZE);
 	lh->cid = cpu_to_le16(l2cap_pi(sk)->dcid);
-	lh->len = cpu_to_le16(len + (hlen - L2CAP_HDR_SIZE));
-	put_unaligned_le16(control, skb_put(skb, 2));
+	lh->len = cpu_to_le16(len + hlen - L2CAP_HDR_SIZE);
+	lh->control = cpu_to_le16(control);
 	if (sdulen)
-		put_unaligned_le16(sdulen, skb_put(skb, 2));
+		put_unaligned_le16(sdulen, skb_put(skb, L2CAP_SDULEN_SIZE));
 
 	err = l2cap_skbuff_fromiovec(sk, msg, len, count, skb);
 	if (unlikely(err < 0)) {
-- 
1.7.1

--
Mat Martineau
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum

  parent reply	other threads:[~2010-08-10 19:15 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-10 19:14 [RFC 0/7] L2CAP fragmentation changes Mat Martineau
2010-08-10 19:14 ` [RFC 1/7] Bluetooth: Calculate L2CAP FCS on fragmented skbuffs Mat Martineau
2010-08-10 21:22   ` Marcel Holtmann
2010-08-10 21:57   ` Gustavo F. Padovan
2010-08-10 19:14 ` Mat Martineau [this message]
2010-08-10 21:39   ` [RFC 2/7] Bluetooth: Use enhanced L2CAP header structure and symbolic values Marcel Holtmann
2010-08-10 22:07   ` Gustavo F. Padovan
2010-08-11  2:24     ` Mat Martineau
2010-08-11  3:23       ` Gustavo F. Padovan
2010-08-10 19:15 ` [RFC 3/7] Bluetooth: Add FCS awareness to L2CAP HCI fragmentation Mat Martineau
2010-08-10 21:29   ` Marcel Holtmann
2010-08-11  3:35   ` Gustavo F. Padovan
2010-08-11  3:56     ` Gustavo F. Padovan
2010-08-10 19:15 ` [RFC 4/7] Bluetooth: Linearize received L2CAP skbuffs Mat Martineau
2010-08-10 21:38   ` Marcel Holtmann
2010-08-11  3:58     ` Gustavo F. Padovan
2010-08-10 19:15 ` [RFC 5/7] Bluetooth: Handle fragmented skbs in bt_sock_stream_recvmsg() Mat Martineau
2010-08-11  4:25   ` Gustavo F. Padovan
2010-08-10 19:15 ` [RFC 6/7] Bluetooth: Reassemble enhanced L2CAP PDUs using skb fragments Mat Martineau
2010-08-11  5:24   ` Gustavo F. Padovan
2010-08-10 19:15 ` [RFC 7/7] Bluetooth: Do not limit enhanced L2CAP max PDU size to HCI MTU Mat Martineau
2010-08-11  5:25   ` Gustavo F. Padovan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1281467704-5378-3-git-send-email-mathewm@codeaurora.org \
    --to=mathewm@codeaurora.org \
    --cc=gustavo@padovan.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=marcel@holtmann.org \
    --cc=rshaffer@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).