Skip to content

Commit

Permalink
Bluetooth: Create function to return the ERTM header size
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Gustavo Padovan authored and Johan Hedberg committed Jun 5, 2012
1 parent 6810fca commit ba7aa64
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions net/bluetooth/l2cap_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
u32 control)
{
struct sk_buff *skb;
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)
hlen += L2CAP_FCS_SIZE;
Expand Down Expand Up @@ -2018,10 +2021,7 @@ static struct sk_buff *l2cap_create_iframe_pdu(struct l2cap_chan *chan,
if (!conn)
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)
hlen += L2CAP_SDULEN_SIZE;
Expand Down Expand Up @@ -2087,10 +2087,7 @@ static int l2cap_segment_sdu(struct l2cap_chan *chan,
if (chan->fcs)
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 */
pdu_len = min_t(size_t, pdu_len, chan->remote_mps);
Expand Down

0 comments on commit ba7aa64

Please sign in to comment.