Browse Source

Bluetooth: Create function to return the ERTM header size

Simplify the handling of different ERTM header size. We were the same
check in some places of the code, and more is expected to come, so just
replace them with a function.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Acked-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Gustavo Padovan 13 years ago
parent
commit
ba7aa64fe2
1 changed files with 11 additions and 14 deletions
  1. 11 14
      net/bluetooth/l2cap_core.c

+ 11 - 14
net/bluetooth/l2cap_core.c

@@ -824,17 +824,20 @@ static inline void __pack_control(struct l2cap_chan *chan,
 	}
 	}
 }
 }
 
 
+static inline unsigned int __ertm_hdr_size(struct l2cap_chan *chan)
+{
+	if (test_bit(FLAG_EXT_CTRL, &chan->flags))
+		return L2CAP_EXT_HDR_SIZE;
+	else
+		return L2CAP_ENH_HDR_SIZE;
+}
+
 static struct sk_buff *l2cap_create_sframe_pdu(struct l2cap_chan *chan,
 static struct sk_buff *l2cap_create_sframe_pdu(struct l2cap_chan *chan,
 					       u32 control)
 					       u32 control)
 {
 {
 	struct sk_buff *skb;
 	struct sk_buff *skb;
 	struct l2cap_hdr *lh;
 	struct l2cap_hdr *lh;
-	int hlen;
-
-	if (test_bit(FLAG_EXT_CTRL, &chan->flags))
-		hlen = L2CAP_EXT_HDR_SIZE;
-	else
-		hlen = L2CAP_ENH_HDR_SIZE;
+	int hlen = __ertm_hdr_size(chan);
 
 
 	if (chan->fcs == L2CAP_FCS_CRC16)
 	if (chan->fcs == L2CAP_FCS_CRC16)
 		hlen += L2CAP_FCS_SIZE;
 		hlen += L2CAP_FCS_SIZE;
@@ -2018,10 +2021,7 @@ static struct sk_buff *l2cap_create_iframe_pdu(struct l2cap_chan *chan,
 	if (!conn)
 	if (!conn)
 		return ERR_PTR(-ENOTCONN);
 		return ERR_PTR(-ENOTCONN);
 
 
-	if (test_bit(FLAG_EXT_CTRL, &chan->flags))
-		hlen = L2CAP_EXT_HDR_SIZE;
-	else
-		hlen = L2CAP_ENH_HDR_SIZE;
+	hlen = __ertm_hdr_size(chan);
 
 
 	if (sdulen)
 	if (sdulen)
 		hlen += L2CAP_SDULEN_SIZE;
 		hlen += L2CAP_SDULEN_SIZE;
@@ -2087,10 +2087,7 @@ static int l2cap_segment_sdu(struct l2cap_chan *chan,
 	if (chan->fcs)
 	if (chan->fcs)
 		pdu_len -= L2CAP_FCS_SIZE;
 		pdu_len -= L2CAP_FCS_SIZE;
 
 
-	if (test_bit(FLAG_EXT_CTRL, &chan->flags))
-		pdu_len -= L2CAP_EXT_HDR_SIZE;
-	else
-		pdu_len -= L2CAP_ENH_HDR_SIZE;
+	pdu_len -= __ertm_hdr_size(chan);
 
 
 	/* Remote device may have requested smaller PDUs */
 	/* Remote device may have requested smaller PDUs */
 	pdu_len = min_t(size_t, pdu_len, chan->remote_mps);
 	pdu_len = min_t(size_t, pdu_len, chan->remote_mps);