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 | } |
