diff options
author | Johan Hedberg <johan.hedberg@intel.com> | 2015-03-30 16:21:01 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2015-03-30 17:20:53 -0400 |
commit | a4368ff3ed3b57e4b5e36d83b75604f68bbcdaad (patch) | |
tree | fadfd6e1b967980891816b1773cf871afebe4065 /net/bluetooth | |
parent | 20fa110a54d8070a7d68fb44a6c0ea2d8b09fddc (diff) |
Bluetooth: Refactor L2CAP variables into l2cap_ctrl
We're getting very close to the maximum possible size of bt_skb_cb. To
prepare to shrink the struct with the help of a union this patch moves
all L2CAP related variables into the l2cap_ctrl struct. To later add
other 'ctrl' structs the L2CAP one is renamed simple 'l2cap' instead
of 'control'.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth')
-rw-r--r-- | net/bluetooth/l2cap_core.c | 48 | ||||
-rw-r--r-- | net/bluetooth/l2cap_sock.c | 6 | ||||
-rw-r--r-- | net/bluetooth/smp.c | 2 |
3 files changed, 28 insertions, 28 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index d69861c89bb5..dad419782a12 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c | |||
@@ -292,7 +292,7 @@ static struct sk_buff *l2cap_ertm_seq_in_queue(struct sk_buff_head *head, | |||
292 | struct sk_buff *skb; | 292 | struct sk_buff *skb; |
293 | 293 | ||
294 | skb_queue_walk(head, skb) { | 294 | skb_queue_walk(head, skb) { |
295 | if (bt_cb(skb)->control.txseq == seq) | 295 | if (bt_cb(skb)->l2cap.txseq == seq) |
296 | return skb; | 296 | return skb; |
297 | } | 297 | } |
298 | 298 | ||
@@ -954,11 +954,11 @@ static inline void __unpack_control(struct l2cap_chan *chan, | |||
954 | { | 954 | { |
955 | if (test_bit(FLAG_EXT_CTRL, &chan->flags)) { | 955 | if (test_bit(FLAG_EXT_CTRL, &chan->flags)) { |
956 | __unpack_extended_control(get_unaligned_le32(skb->data), | 956 | __unpack_extended_control(get_unaligned_le32(skb->data), |
957 | &bt_cb(skb)->control); | 957 | &bt_cb(skb)->l2cap); |
958 | skb_pull(skb, L2CAP_EXT_CTRL_SIZE); | 958 | skb_pull(skb, L2CAP_EXT_CTRL_SIZE); |
959 | } else { | 959 | } else { |
960 | __unpack_enhanced_control(get_unaligned_le16(skb->data), | 960 | __unpack_enhanced_control(get_unaligned_le16(skb->data), |
961 | &bt_cb(skb)->control); | 961 | &bt_cb(skb)->l2cap); |
962 | skb_pull(skb, L2CAP_ENH_CTRL_SIZE); | 962 | skb_pull(skb, L2CAP_ENH_CTRL_SIZE); |
963 | } | 963 | } |
964 | } | 964 | } |
@@ -1200,8 +1200,8 @@ static void l2cap_move_setup(struct l2cap_chan *chan) | |||
1200 | 1200 | ||
1201 | chan->retry_count = 0; | 1201 | chan->retry_count = 0; |
1202 | skb_queue_walk(&chan->tx_q, skb) { | 1202 | skb_queue_walk(&chan->tx_q, skb) { |
1203 | if (bt_cb(skb)->control.retries) | 1203 | if (bt_cb(skb)->l2cap.retries) |
1204 | bt_cb(skb)->control.retries = 1; | 1204 | bt_cb(skb)->l2cap.retries = 1; |
1205 | else | 1205 | else |
1206 | break; | 1206 | break; |
1207 | } | 1207 | } |
@@ -1846,8 +1846,8 @@ static void l2cap_streaming_send(struct l2cap_chan *chan, | |||
1846 | 1846 | ||
1847 | skb = skb_dequeue(&chan->tx_q); | 1847 | skb = skb_dequeue(&chan->tx_q); |
1848 | 1848 | ||
1849 | bt_cb(skb)->control.retries = 1; | 1849 | bt_cb(skb)->l2cap.retries = 1; |
1850 | control = &bt_cb(skb)->control; | 1850 | control = &bt_cb(skb)->l2cap; |
1851 | 1851 | ||
1852 | control->reqseq = 0; | 1852 | control->reqseq = 0; |
1853 | control->txseq = chan->next_tx_seq; | 1853 | control->txseq = chan->next_tx_seq; |
@@ -1891,8 +1891,8 @@ static int l2cap_ertm_send(struct l2cap_chan *chan) | |||
1891 | 1891 | ||
1892 | skb = chan->tx_send_head; | 1892 | skb = chan->tx_send_head; |
1893 | 1893 | ||
1894 | bt_cb(skb)->control.retries = 1; | 1894 | bt_cb(skb)->l2cap.retries = 1; |
1895 | control = &bt_cb(skb)->control; | 1895 | control = &bt_cb(skb)->l2cap; |
1896 | 1896 | ||
1897 | if (test_and_clear_bit(CONN_SEND_FBIT, &chan->conn_state)) | 1897 | if (test_and_clear_bit(CONN_SEND_FBIT, &chan->conn_state)) |
1898 | control->final = 1; | 1898 | control->final = 1; |
@@ -1963,11 +1963,11 @@ static void l2cap_ertm_resend(struct l2cap_chan *chan) | |||
1963 | continue; | 1963 | continue; |
1964 | } | 1964 | } |
1965 | 1965 | ||
1966 | bt_cb(skb)->control.retries++; | 1966 | bt_cb(skb)->l2cap.retries++; |
1967 | control = bt_cb(skb)->control; | 1967 | control = bt_cb(skb)->l2cap; |
1968 | 1968 | ||
1969 | if (chan->max_tx != 0 && | 1969 | if (chan->max_tx != 0 && |
1970 | bt_cb(skb)->control.retries > chan->max_tx) { | 1970 | bt_cb(skb)->l2cap.retries > chan->max_tx) { |
1971 | BT_DBG("Retry limit exceeded (%d)", chan->max_tx); | 1971 | BT_DBG("Retry limit exceeded (%d)", chan->max_tx); |
1972 | l2cap_send_disconn_req(chan, ECONNRESET); | 1972 | l2cap_send_disconn_req(chan, ECONNRESET); |
1973 | l2cap_seq_list_clear(&chan->retrans_list); | 1973 | l2cap_seq_list_clear(&chan->retrans_list); |
@@ -2045,7 +2045,7 @@ static void l2cap_retransmit_all(struct l2cap_chan *chan, | |||
2045 | 2045 | ||
2046 | if (chan->unacked_frames) { | 2046 | if (chan->unacked_frames) { |
2047 | skb_queue_walk(&chan->tx_q, skb) { | 2047 | skb_queue_walk(&chan->tx_q, skb) { |
2048 | if (bt_cb(skb)->control.txseq == control->reqseq || | 2048 | if (bt_cb(skb)->l2cap.txseq == control->reqseq || |
2049 | skb == chan->tx_send_head) | 2049 | skb == chan->tx_send_head) |
2050 | break; | 2050 | break; |
2051 | } | 2051 | } |
@@ -2055,7 +2055,7 @@ static void l2cap_retransmit_all(struct l2cap_chan *chan, | |||
2055 | break; | 2055 | break; |
2056 | 2056 | ||
2057 | l2cap_seq_list_append(&chan->retrans_list, | 2057 | l2cap_seq_list_append(&chan->retrans_list, |
2058 | bt_cb(skb)->control.txseq); | 2058 | bt_cb(skb)->l2cap.txseq); |
2059 | } | 2059 | } |
2060 | 2060 | ||
2061 | l2cap_ertm_resend(chan); | 2061 | l2cap_ertm_resend(chan); |
@@ -2267,8 +2267,8 @@ static struct sk_buff *l2cap_create_iframe_pdu(struct l2cap_chan *chan, | |||
2267 | return ERR_PTR(err); | 2267 | return ERR_PTR(err); |
2268 | } | 2268 | } |
2269 | 2269 | ||
2270 | bt_cb(skb)->control.fcs = chan->fcs; | 2270 | bt_cb(skb)->l2cap.fcs = chan->fcs; |
2271 | bt_cb(skb)->control.retries = 0; | 2271 | bt_cb(skb)->l2cap.retries = 0; |
2272 | return skb; | 2272 | return skb; |
2273 | } | 2273 | } |
2274 | 2274 | ||
@@ -2321,7 +2321,7 @@ static int l2cap_segment_sdu(struct l2cap_chan *chan, | |||
2321 | return PTR_ERR(skb); | 2321 | return PTR_ERR(skb); |
2322 | } | 2322 | } |
2323 | 2323 | ||
2324 | bt_cb(skb)->control.sar = sar; | 2324 | bt_cb(skb)->l2cap.sar = sar; |
2325 | __skb_queue_tail(seg_queue, skb); | 2325 | __skb_queue_tail(seg_queue, skb); |
2326 | 2326 | ||
2327 | len -= pdu_len; | 2327 | len -= pdu_len; |
@@ -2856,7 +2856,7 @@ static void l2cap_raw_recv(struct l2cap_conn *conn, struct sk_buff *skb) | |||
2856 | continue; | 2856 | continue; |
2857 | 2857 | ||
2858 | /* Don't send frame to the channel it came from */ | 2858 | /* Don't send frame to the channel it came from */ |
2859 | if (bt_cb(skb)->chan == chan) | 2859 | if (bt_cb(skb)->l2cap.chan == chan) |
2860 | continue; | 2860 | continue; |
2861 | 2861 | ||
2862 | nskb = skb_clone(skb, GFP_KERNEL); | 2862 | nskb = skb_clone(skb, GFP_KERNEL); |
@@ -5918,7 +5918,7 @@ static int l2cap_rx_queued_iframes(struct l2cap_chan *chan) | |||
5918 | 5918 | ||
5919 | skb_unlink(skb, &chan->srej_q); | 5919 | skb_unlink(skb, &chan->srej_q); |
5920 | chan->buffer_seq = __next_seq(chan, chan->buffer_seq); | 5920 | chan->buffer_seq = __next_seq(chan, chan->buffer_seq); |
5921 | err = l2cap_reassemble_sdu(chan, skb, &bt_cb(skb)->control); | 5921 | err = l2cap_reassemble_sdu(chan, skb, &bt_cb(skb)->l2cap); |
5922 | if (err) | 5922 | if (err) |
5923 | break; | 5923 | break; |
5924 | } | 5924 | } |
@@ -5952,7 +5952,7 @@ static void l2cap_handle_srej(struct l2cap_chan *chan, | |||
5952 | return; | 5952 | return; |
5953 | } | 5953 | } |
5954 | 5954 | ||
5955 | if (chan->max_tx != 0 && bt_cb(skb)->control.retries >= chan->max_tx) { | 5955 | if (chan->max_tx != 0 && bt_cb(skb)->l2cap.retries >= chan->max_tx) { |
5956 | BT_DBG("Retry limit exceeded (%d)", chan->max_tx); | 5956 | BT_DBG("Retry limit exceeded (%d)", chan->max_tx); |
5957 | l2cap_send_disconn_req(chan, ECONNRESET); | 5957 | l2cap_send_disconn_req(chan, ECONNRESET); |
5958 | return; | 5958 | return; |
@@ -6005,7 +6005,7 @@ static void l2cap_handle_rej(struct l2cap_chan *chan, | |||
6005 | skb = l2cap_ertm_seq_in_queue(&chan->tx_q, control->reqseq); | 6005 | skb = l2cap_ertm_seq_in_queue(&chan->tx_q, control->reqseq); |
6006 | 6006 | ||
6007 | if (chan->max_tx && skb && | 6007 | if (chan->max_tx && skb && |
6008 | bt_cb(skb)->control.retries >= chan->max_tx) { | 6008 | bt_cb(skb)->l2cap.retries >= chan->max_tx) { |
6009 | BT_DBG("Retry limit exceeded (%d)", chan->max_tx); | 6009 | BT_DBG("Retry limit exceeded (%d)", chan->max_tx); |
6010 | l2cap_send_disconn_req(chan, ECONNRESET); | 6010 | l2cap_send_disconn_req(chan, ECONNRESET); |
6011 | return; | 6011 | return; |
@@ -6565,7 +6565,7 @@ static int l2cap_stream_rx(struct l2cap_chan *chan, struct l2cap_ctrl *control, | |||
6565 | 6565 | ||
6566 | static int l2cap_data_rcv(struct l2cap_chan *chan, struct sk_buff *skb) | 6566 | static int l2cap_data_rcv(struct l2cap_chan *chan, struct sk_buff *skb) |
6567 | { | 6567 | { |
6568 | struct l2cap_ctrl *control = &bt_cb(skb)->control; | 6568 | struct l2cap_ctrl *control = &bt_cb(skb)->l2cap; |
6569 | u16 len; | 6569 | u16 len; |
6570 | u8 event; | 6570 | u8 event; |
6571 | 6571 | ||
@@ -6864,8 +6864,8 @@ static void l2cap_conless_channel(struct l2cap_conn *conn, __le16 psm, | |||
6864 | goto drop; | 6864 | goto drop; |
6865 | 6865 | ||
6866 | /* Store remote BD_ADDR and PSM for msg_name */ | 6866 | /* Store remote BD_ADDR and PSM for msg_name */ |
6867 | bacpy(&bt_cb(skb)->bdaddr, &hcon->dst); | 6867 | bacpy(&bt_cb(skb)->l2cap.bdaddr, &hcon->dst); |
6868 | bt_cb(skb)->psm = psm; | 6868 | bt_cb(skb)->l2cap.psm = psm; |
6869 | 6869 | ||
6870 | if (!chan->ops->recv(chan, skb)) { | 6870 | if (!chan->ops->recv(chan, skb)) { |
6871 | l2cap_chan_put(chan); | 6871 | l2cap_chan_put(chan); |
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index 9070720eedc8..a7278f05eafb 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c | |||
@@ -1330,7 +1330,7 @@ static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan, | |||
1330 | 1330 | ||
1331 | skb->priority = sk->sk_priority; | 1331 | skb->priority = sk->sk_priority; |
1332 | 1332 | ||
1333 | bt_cb(skb)->chan = chan; | 1333 | bt_cb(skb)->l2cap.chan = chan; |
1334 | 1334 | ||
1335 | return skb; | 1335 | return skb; |
1336 | } | 1336 | } |
@@ -1444,8 +1444,8 @@ static void l2cap_skb_msg_name(struct sk_buff *skb, void *msg_name, | |||
1444 | 1444 | ||
1445 | memset(la, 0, sizeof(struct sockaddr_l2)); | 1445 | memset(la, 0, sizeof(struct sockaddr_l2)); |
1446 | la->l2_family = AF_BLUETOOTH; | 1446 | la->l2_family = AF_BLUETOOTH; |
1447 | la->l2_psm = bt_cb(skb)->psm; | 1447 | la->l2_psm = bt_cb(skb)->l2cap.psm; |
1448 | bacpy(&la->l2_bdaddr, &bt_cb(skb)->bdaddr); | 1448 | bacpy(&la->l2_bdaddr, &bt_cb(skb)->l2cap.bdaddr); |
1449 | 1449 | ||
1450 | *msg_namelen = sizeof(struct sockaddr_l2); | 1450 | *msg_namelen = sizeof(struct sockaddr_l2); |
1451 | } | 1451 | } |
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index 1ec3f66b5a74..1910c5806974 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c | |||
@@ -3017,7 +3017,7 @@ static struct sk_buff *smp_alloc_skb_cb(struct l2cap_chan *chan, | |||
3017 | return ERR_PTR(-ENOMEM); | 3017 | return ERR_PTR(-ENOMEM); |
3018 | 3018 | ||
3019 | skb->priority = HCI_PRIO_MAX; | 3019 | skb->priority = HCI_PRIO_MAX; |
3020 | bt_cb(skb)->chan = chan; | 3020 | bt_cb(skb)->l2cap.chan = chan; |
3021 | 3021 | ||
3022 | return skb; | 3022 | return skb; |
3023 | } | 3023 | } |