diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-24 14:54:29 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-24 14:54:29 -0400 |
| commit | 28f3d717618156c0dcd2f497d791b578a7931d87 (patch) | |
| tree | 37b11581b51929b5473541e53bd242b3e1a9f666 /include/net | |
| parent | 654443e20dfc0617231f28a07c96a979ee1a0239 (diff) | |
| parent | 1ca7ee30630e1022dbcf1b51be20580815ffab73 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull more networking updates from David Miller:
"Ok, everything from here on out will be bug fixes."
1) One final sync of wireless and bluetooth stuff from John Linville.
These changes have all been in his tree for more than a week, and
therefore have had the necessary -next exposure. John was just away
on a trip and didn't have a change to send the pull request until a
day or two ago.
2) Put back some defines in user exposed header file areas that were
removed during the tokenring purge. From Stephen Hemminger and Paul
Gortmaker.
3) A bug fix for UDP hash table allocation got lost in the pile due to
one of those "you got it.. no I've got it.." situations. :-)
From Tim Bird.
4) SKB coalescing in TCP needs to have stricter checks, otherwise we'll
try to coalesce overlapping frags and crash. Fix from Eric Dumazet.
5) RCU routing table lookups can race with free_fib_info(), causing
crashes when we deref the device pointers in the route. Fix by
releasing the net device in the RCU callback. From Yanmin Zhang.
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (293 commits)
tcp: take care of overlaps in tcp_try_coalesce()
ipv4: fix the rcu race between free_fib_info and ip_route_output_slow
mm: add a low limit to alloc_large_system_hash
ipx: restore token ring define to include/linux/ipx.h
if: restore token ring ARP type to header
xen: do not disable netfront in dom0
phy/micrel: Fix ID of KSZ9021
mISDN: Add X-Tensions USB ISDN TA XC-525
gianfar:don't add FCB length to hard_header_len
Bluetooth: Report proper error number in disconnection
Bluetooth: Create flags for bt_sk()
Bluetooth: report the right security level in getsockopt
Bluetooth: Lock the L2CAP channel when sending
Bluetooth: Restore locking semantics when looking up L2CAP channels
Bluetooth: Fix a redundant and problematic incoming MTU check
Bluetooth: Add support for Foxconn/Hon Hai AR5BBU22 0489:E03C
Bluetooth: Fix EIR data generation for mgmt_device_found
Bluetooth: Fix Inquiry with RSSI event mask
Bluetooth: improve readability of l2cap_seq_list code
Bluetooth: Fix skb length calculation
...
Diffstat (limited to 'include/net')
| -rw-r--r-- | include/net/bluetooth/bluetooth.h | 32 | ||||
| -rw-r--r-- | include/net/bluetooth/hci.h | 8 | ||||
| -rw-r--r-- | include/net/bluetooth/hci_core.h | 67 | ||||
| -rw-r--r-- | include/net/bluetooth/l2cap.h | 93 | ||||
| -rw-r--r-- | include/net/bluetooth/mgmt.h | 9 | ||||
| -rw-r--r-- | include/net/bluetooth/smp.h | 2 | ||||
| -rw-r--r-- | include/net/cfg80211.h | 6 | ||||
| -rw-r--r-- | include/net/mac80211.h | 12 | ||||
| -rw-r--r-- | include/net/nfc/hci.h | 6 | ||||
| -rw-r--r-- | include/net/nfc/nfc.h | 19 | ||||
| -rw-r--r-- | include/net/nfc/shdlc.h | 2 |
11 files changed, 184 insertions, 72 deletions
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index a65910bda381..961669b648fd 100644 --- a/include/net/bluetooth/bluetooth.h +++ b/include/net/bluetooth/bluetooth.h | |||
| @@ -163,6 +163,11 @@ typedef struct { | |||
| 163 | __u8 b[6]; | 163 | __u8 b[6]; |
| 164 | } __packed bdaddr_t; | 164 | } __packed bdaddr_t; |
| 165 | 165 | ||
| 166 | /* BD Address type */ | ||
| 167 | #define BDADDR_BREDR 0x00 | ||
| 168 | #define BDADDR_LE_PUBLIC 0x01 | ||
| 169 | #define BDADDR_LE_RANDOM 0x02 | ||
| 170 | |||
| 166 | #define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}}) | 171 | #define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}}) |
| 167 | #define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}}) | 172 | #define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}}) |
| 168 | 173 | ||
| @@ -178,7 +183,6 @@ static inline void bacpy(bdaddr_t *dst, bdaddr_t *src) | |||
| 178 | 183 | ||
| 179 | void baswap(bdaddr_t *dst, bdaddr_t *src); | 184 | void baswap(bdaddr_t *dst, bdaddr_t *src); |
| 180 | char *batostr(bdaddr_t *ba); | 185 | char *batostr(bdaddr_t *ba); |
| 181 | bdaddr_t *strtoba(char *str); | ||
| 182 | 186 | ||
| 183 | /* Common socket structures and functions */ | 187 | /* Common socket structures and functions */ |
| 184 | 188 | ||
| @@ -190,8 +194,12 @@ struct bt_sock { | |||
| 190 | bdaddr_t dst; | 194 | bdaddr_t dst; |
| 191 | struct list_head accept_q; | 195 | struct list_head accept_q; |
| 192 | struct sock *parent; | 196 | struct sock *parent; |
| 193 | u32 defer_setup; | 197 | unsigned long flags; |
| 194 | bool suspended; | 198 | }; |
| 199 | |||
| 200 | enum { | ||
| 201 | BT_SK_DEFER_SETUP, | ||
| 202 | BT_SK_SUSPEND, | ||
| 195 | }; | 203 | }; |
| 196 | 204 | ||
| 197 | struct bt_sock_list { | 205 | struct bt_sock_list { |
| @@ -216,14 +224,24 @@ void bt_accept_unlink(struct sock *sk); | |||
| 216 | struct sock *bt_accept_dequeue(struct sock *parent, struct socket *newsock); | 224 | struct sock *bt_accept_dequeue(struct sock *parent, struct socket *newsock); |
| 217 | 225 | ||
| 218 | /* Skb helpers */ | 226 | /* Skb helpers */ |
| 227 | struct l2cap_ctrl { | ||
| 228 | unsigned int sframe : 1, | ||
| 229 | poll : 1, | ||
| 230 | final : 1, | ||
| 231 | fcs : 1, | ||
| 232 | sar : 2, | ||
| 233 | super : 2; | ||
| 234 | __u16 reqseq; | ||
| 235 | __u16 txseq; | ||
| 236 | __u8 retries; | ||
| 237 | }; | ||
| 238 | |||
| 219 | struct bt_skb_cb { | 239 | struct bt_skb_cb { |
| 220 | __u8 pkt_type; | 240 | __u8 pkt_type; |
| 221 | __u8 incoming; | 241 | __u8 incoming; |
| 222 | __u16 expect; | 242 | __u16 expect; |
| 223 | __u16 tx_seq; | ||
| 224 | __u8 retries; | ||
| 225 | __u8 sar; | ||
| 226 | __u8 force_active; | 243 | __u8 force_active; |
| 244 | struct l2cap_ctrl control; | ||
| 227 | }; | 245 | }; |
| 228 | #define bt_cb(skb) ((struct bt_skb_cb *)((skb)->cb)) | 246 | #define bt_cb(skb) ((struct bt_skb_cb *)((skb)->cb)) |
| 229 | 247 | ||
| @@ -243,12 +261,10 @@ static inline struct sk_buff *bt_skb_send_alloc(struct sock *sk, | |||
| 243 | { | 261 | { |
| 244 | struct sk_buff *skb; | 262 | struct sk_buff *skb; |
| 245 | 263 | ||
| 246 | release_sock(sk); | ||
| 247 | if ((skb = sock_alloc_send_skb(sk, len + BT_SKB_RESERVE, nb, err))) { | 264 | if ((skb = sock_alloc_send_skb(sk, len + BT_SKB_RESERVE, nb, err))) { |
| 248 | skb_reserve(skb, BT_SKB_RESERVE); | 265 | skb_reserve(skb, BT_SKB_RESERVE); |
| 249 | bt_cb(skb)->incoming = 0; | 266 | bt_cb(skb)->incoming = 0; |
| 250 | } | 267 | } |
| 251 | lock_sock(sk); | ||
| 252 | 268 | ||
| 253 | if (!skb && *err) | 269 | if (!skb && *err) |
| 254 | return NULL; | 270 | return NULL; |
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index d47e523c9d83..66a7b579e31c 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h | |||
| @@ -102,6 +102,7 @@ enum { | |||
| 102 | HCI_DISCOVERABLE, | 102 | HCI_DISCOVERABLE, |
| 103 | HCI_LINK_SECURITY, | 103 | HCI_LINK_SECURITY, |
| 104 | HCI_PENDING_CLASS, | 104 | HCI_PENDING_CLASS, |
| 105 | HCI_PERIODIC_INQ, | ||
| 105 | }; | 106 | }; |
| 106 | 107 | ||
| 107 | /* HCI ioctl defines */ | 108 | /* HCI ioctl defines */ |
| @@ -324,6 +325,8 @@ struct hci_cp_inquiry { | |||
| 324 | 325 | ||
| 325 | #define HCI_OP_INQUIRY_CANCEL 0x0402 | 326 | #define HCI_OP_INQUIRY_CANCEL 0x0402 |
| 326 | 327 | ||
| 328 | #define HCI_OP_PERIODIC_INQ 0x0403 | ||
| 329 | |||
| 327 | #define HCI_OP_EXIT_PERIODIC_INQ 0x0404 | 330 | #define HCI_OP_EXIT_PERIODIC_INQ 0x0404 |
| 328 | 331 | ||
| 329 | #define HCI_OP_CREATE_CONN 0x0405 | 332 | #define HCI_OP_CREATE_CONN 0x0405 |
| @@ -717,6 +720,10 @@ struct hci_rp_read_local_oob_data { | |||
| 717 | } __packed; | 720 | } __packed; |
| 718 | 721 | ||
| 719 | #define HCI_OP_READ_INQ_RSP_TX_POWER 0x0c58 | 722 | #define HCI_OP_READ_INQ_RSP_TX_POWER 0x0c58 |
| 723 | struct hci_rp_read_inq_rsp_tx_power { | ||
| 724 | __u8 status; | ||
| 725 | __s8 tx_power; | ||
| 726 | } __packed; | ||
| 720 | 727 | ||
| 721 | #define HCI_OP_READ_FLOW_CONTROL_MODE 0x0c66 | 728 | #define HCI_OP_READ_FLOW_CONTROL_MODE 0x0c66 |
| 722 | struct hci_rp_read_flow_control_mode { | 729 | struct hci_rp_read_flow_control_mode { |
| @@ -1431,6 +1438,5 @@ struct hci_inquiry_req { | |||
| 1431 | #define IREQ_CACHE_FLUSH 0x0001 | 1438 | #define IREQ_CACHE_FLUSH 0x0001 |
| 1432 | 1439 | ||
| 1433 | extern bool enable_hs; | 1440 | extern bool enable_hs; |
| 1434 | extern bool enable_le; | ||
| 1435 | 1441 | ||
| 1436 | #endif /* __HCI_H */ | 1442 | #endif /* __HCI_H */ |
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index db1c5df45224..9fc7728f94e4 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
| @@ -155,9 +155,14 @@ struct hci_dev { | |||
| 155 | __u16 hci_rev; | 155 | __u16 hci_rev; |
| 156 | __u8 lmp_ver; | 156 | __u8 lmp_ver; |
| 157 | __u16 manufacturer; | 157 | __u16 manufacturer; |
| 158 | __le16 lmp_subver; | 158 | __u16 lmp_subver; |
| 159 | __u16 voice_setting; | 159 | __u16 voice_setting; |
| 160 | __u8 io_capability; | 160 | __u8 io_capability; |
| 161 | __s8 inq_tx_power; | ||
| 162 | __u16 devid_source; | ||
| 163 | __u16 devid_vendor; | ||
| 164 | __u16 devid_product; | ||
| 165 | __u16 devid_version; | ||
| 161 | 166 | ||
| 162 | __u16 pkt_type; | 167 | __u16 pkt_type; |
| 163 | __u16 esco_type; | 168 | __u16 esco_type; |
| @@ -250,9 +255,6 @@ struct hci_dev { | |||
| 250 | 255 | ||
| 251 | struct list_head remote_oob_data; | 256 | struct list_head remote_oob_data; |
| 252 | 257 | ||
| 253 | struct list_head adv_entries; | ||
| 254 | struct delayed_work adv_work; | ||
| 255 | |||
| 256 | struct hci_dev_stats stat; | 258 | struct hci_dev_stats stat; |
| 257 | 259 | ||
| 258 | struct sk_buff_head driver_init; | 260 | struct sk_buff_head driver_init; |
| @@ -263,7 +265,6 @@ struct hci_dev { | |||
| 263 | 265 | ||
| 264 | struct dentry *debugfs; | 266 | struct dentry *debugfs; |
| 265 | 267 | ||
| 266 | struct device *parent; | ||
| 267 | struct device dev; | 268 | struct device dev; |
| 268 | |||
