diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-09-06 11:05:28 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-09-06 11:05:28 -0400 |
commit | 00b14825eead7dd748d15ce6519726d06b3ee0d5 (patch) | |
tree | e771e6dcde53b65a1d438dfabbe8cb4e7402e334 /include/net | |
parent | 882a7c69d3c605bfacf32e19033447dc70204d45 (diff) | |
parent | a4881cc45a3fab4488e16c4934e149cfa620f1a9 (diff) |
Merge remote-tracking branch 'wireless-next/master' into mac80211-next
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/bluetooth/bluetooth.h | 10 | ||||
-rw-r--r-- | include/net/bluetooth/hci.h | 11 | ||||
-rw-r--r-- | include/net/bluetooth/hci_core.h | 22 | ||||
-rw-r--r-- | include/net/bluetooth/l2cap.h | 17 | ||||
-rw-r--r-- | include/net/bluetooth/smp.h | 8 | ||||
-rw-r--r-- | include/net/inet_sock.h | 9 | ||||
-rw-r--r-- | include/net/ip_fib.h | 6 | ||||
-rw-r--r-- | include/net/netns/ipv4.h | 2 | ||||
-rw-r--r-- | include/net/route.h | 3 |
9 files changed, 50 insertions, 38 deletions
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index 565d4bee1e49..ede036977ae8 100644 --- a/include/net/bluetooth/bluetooth.h +++ b/include/net/bluetooth/bluetooth.h | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | #include <linux/poll.h> | 28 | #include <linux/poll.h> |
29 | #include <net/sock.h> | 29 | #include <net/sock.h> |
30 | #include <linux/seq_file.h> | ||
30 | 31 | ||
31 | #ifndef AF_BLUETOOTH | 32 | #ifndef AF_BLUETOOTH |
32 | #define AF_BLUETOOTH 31 | 33 | #define AF_BLUETOOTH 31 |
@@ -202,6 +203,10 @@ enum { | |||
202 | struct bt_sock_list { | 203 | struct bt_sock_list { |
203 | struct hlist_head head; | 204 | struct hlist_head head; |
204 | rwlock_t lock; | 205 | rwlock_t lock; |
206 | #ifdef CONFIG_PROC_FS | ||
207 | struct file_operations fops; | ||
208 | int (* custom_seq_show)(struct seq_file *, void *); | ||
209 | #endif | ||
205 | }; | 210 | }; |
206 | 211 | ||
207 | int bt_sock_register(int proto, const struct net_proto_family *ops); | 212 | int bt_sock_register(int proto, const struct net_proto_family *ops); |
@@ -292,6 +297,11 @@ extern void hci_sock_cleanup(void); | |||
292 | extern int bt_sysfs_init(void); | 297 | extern int bt_sysfs_init(void); |
293 | extern void bt_sysfs_cleanup(void); | 298 | extern void bt_sysfs_cleanup(void); |
294 | 299 | ||
300 | extern int bt_procfs_init(struct module* module, struct net *net, const char *name, | ||
301 | struct bt_sock_list* sk_list, | ||
302 | int (* seq_show)(struct seq_file *, void *)); | ||
303 | extern void bt_procfs_cleanup(struct net *net, const char *name); | ||
304 | |||
295 | extern struct dentry *bt_debugfs; | 305 | extern struct dentry *bt_debugfs; |
296 | 306 | ||
297 | int l2cap_init(void); | 307 | int l2cap_init(void); |
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index ccd723e0f783..23cf413e2acf 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h | |||
@@ -62,6 +62,15 @@ | |||
62 | /* First BR/EDR Controller shall have ID = 0 */ | 62 | /* First BR/EDR Controller shall have ID = 0 */ |
63 | #define HCI_BREDR_ID 0 | 63 | #define HCI_BREDR_ID 0 |
64 | 64 | ||
65 | /* AMP controller status */ | ||
66 | #define AMP_CTRL_POWERED_DOWN 0x00 | ||
67 | #define AMP_CTRL_BLUETOOTH_ONLY 0x01 | ||
68 | #define AMP_CTRL_NO_CAPACITY 0x02 | ||
69 | #define AMP_CTRL_LOW_CAPACITY 0x03 | ||
70 | #define AMP_CTRL_MEDIUM_CAPACITY 0x04 | ||
71 | #define AMP_CTRL_HIGH_CAPACITY 0x05 | ||
72 | #define AMP_CTRL_FULL_CAPACITY 0x06 | ||
73 | |||
65 | /* HCI device quirks */ | 74 | /* HCI device quirks */ |
66 | enum { | 75 | enum { |
67 | HCI_QUIRK_RESET_ON_CLOSE, | 76 | HCI_QUIRK_RESET_ON_CLOSE, |
@@ -1295,6 +1304,8 @@ struct hci_ev_num_comp_blocks { | |||
1295 | } __packed; | 1304 | } __packed; |
1296 | 1305 | ||
1297 | /* Low energy meta events */ | 1306 | /* Low energy meta events */ |
1307 | #define LE_CONN_ROLE_MASTER 0x00 | ||
1308 | |||
1298 | #define HCI_EV_LE_CONN_COMPLETE 0x01 | 1309 | #define HCI_EV_LE_CONN_COMPLETE 0x01 |
1299 | struct hci_ev_le_conn_complete { | 1310 | struct hci_ev_le_conn_complete { |
1300 | __u8 status; | 1311 | __u8 status; |
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index 475b8c04ba52..41d943926d2c 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
@@ -115,12 +115,6 @@ struct oob_data { | |||
115 | u8 randomizer[16]; | 115 | u8 randomizer[16]; |
116 | }; | 116 | }; |
117 | 117 | ||
118 | struct adv_entry { | ||
119 | struct list_head list; | ||
120 | bdaddr_t bdaddr; | ||
121 | u8 bdaddr_type; | ||
122 | }; | ||
123 | |||
124 | struct le_scan_params { | 118 | struct le_scan_params { |
125 | u8 type; | 119 | u8 type; |
126 | u16 interval; | 120 | u16 interval; |
@@ -356,16 +350,16 @@ extern rwlock_t hci_cb_list_lock; | |||
356 | 350 | ||
357 | /* ----- HCI interface to upper protocols ----- */ | 351 | /* ----- HCI interface to upper protocols ----- */ |
358 | extern int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr); | 352 | extern int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr); |
359 | extern int l2cap_connect_cfm(struct hci_conn *hcon, u8 status); | 353 | extern void l2cap_connect_cfm(struct hci_conn *hcon, u8 status); |
360 | extern int l2cap_disconn_ind(struct hci_conn *hcon); | 354 | extern int l2cap_disconn_ind(struct hci_conn *hcon); |
361 | extern int l2cap_disconn_cfm(struct hci_conn *hcon, u8 reason); | 355 | extern void l2cap_disconn_cfm(struct hci_conn *hcon, u8 reason); |
362 | extern int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt); | 356 | extern int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt); |
363 | extern int l2cap_recv_acldata(struct hci_conn *hcon, struct sk_buff *skb, | 357 | extern int l2cap_recv_acldata(struct hci_conn *hcon, struct sk_buff *skb, |
364 | u16 flags); | 358 | u16 flags); |
365 | 359 | ||
366 | extern int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr); | 360 | extern int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr); |
367 | extern int sco_connect_cfm(struct hci_conn *hcon, __u8 status); | 361 | extern void sco_connect_cfm(struct hci_conn *hcon, __u8 status); |
368 | extern int sco_disconn_cfm(struct hci_conn *hcon, __u8 reason); | 362 | extern void sco_disconn_cfm(struct hci_conn *hcon, __u8 reason); |
369 | extern int sco_recv_scodata(struct hci_conn *hcon, struct sk_buff *skb); | 363 | extern int sco_recv_scodata(struct hci_conn *hcon, struct sk_buff *skb); |
370 | 364 | ||
371 | /* ----- Inquiry cache ----- */ | 365 | /* ----- Inquiry cache ----- */ |
@@ -587,8 +581,7 @@ void hci_conn_put_device(struct hci_conn *conn); | |||
587 | 581 | ||
588 | static inline void hci_conn_hold(struct hci_conn *conn) | 582 | static inline void hci_conn_hold(struct hci_conn *conn) |
589 | { | 583 | { |
590 | BT_DBG("hcon %p refcnt %d -> %d", conn, atomic_read(&conn->refcnt), | 584 | BT_DBG("hcon %p orig refcnt %d", conn, atomic_read(&conn->refcnt)); |
591 | atomic_read(&conn->refcnt) + 1); | ||
592 | 585 | ||
593 | atomic_inc(&conn->refcnt); | 586 | atomic_inc(&conn->refcnt); |
594 | cancel_delayed_work(&conn->disc_work); | 587 | cancel_delayed_work(&conn->disc_work); |
@@ -596,8 +589,7 @@ static inline void hci_conn_hold(struct hci_conn *conn) | |||
596 | 589 | ||
597 | static inline void hci_conn_put(struct hci_conn *conn) | 590 | static inline void hci_conn_put(struct hci_conn *conn) |
598 | { | 591 | { |
599 | BT_DBG("hcon %p refcnt %d -> %d", conn, atomic_read(&conn->refcnt), | 592 | BT_DBG("hcon %p orig refcnt %d", conn, atomic_read(&conn->refcnt)); |
600 | atomic_read(&conn->refcnt) - 1); | ||
601 | 593 | ||
602 | if (atomic_dec_and_test(&conn->refcnt)) { | 594 | if (atomic_dec_and_test(&conn->refcnt)) { |
603 | unsigned long timeo; | 595 | unsigned long timeo; |
@@ -1056,7 +1048,7 @@ int mgmt_discovering(struct hci_dev *hdev, u8 discovering); | |||
1056 | int mgmt_interleaved_discovery(struct hci_dev *hdev); | 1048 | int mgmt_interleaved_discovery(struct hci_dev *hdev); |
1057 | int mgmt_device_blocked(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type); | 1049 | int mgmt_device_blocked(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type); |
1058 | int mgmt_device_unblocked(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type); | 1050 | int mgmt_device_unblocked(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type); |
1059 | 1051 | bool mgmt_valid_hdev(struct hci_dev *hdev); | |
1060 | int mgmt_new_ltk(struct hci_dev *hdev, struct smp_ltk *key, u8 persistent); | 1052 | int mgmt_new_ltk(struct hci_dev *hdev, struct smp_ltk *key, u8 persistent); |
1061 | 1053 | ||
1062 | /* HCI info for socket */ | 1054 | /* HCI info for socket */ |
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h index a7679f8913d2..d206296137e2 100644 --- a/include/net/bluetooth/l2cap.h +++ b/include/net/bluetooth/l2cap.h | |||
@@ -671,20 +671,8 @@ enum { | |||
671 | L2CAP_EV_RECV_FRAME, | 671 | L2CAP_EV_RECV_FRAME, |
672 | }; | 672 | }; |
673 | 673 | ||
674 | static inline void l2cap_chan_hold(struct l2cap_chan *c) | 674 | void l2cap_chan_hold(struct l2cap_chan *c); |
675 | { | 675 | void l2cap_chan_put(struct l2cap_chan *c); |
676 | BT_DBG("chan %p orig refcnt %d", c, atomic_read(&c->refcnt)); | ||
677 | |||
678 | atomic_inc(&c->refcnt); | ||
679 | } | ||
680 | |||
681 | static inline void l2cap_chan_put(struct l2cap_chan *c) | ||
682 | { | ||
683 | BT_DBG("chan %p orig refcnt %d", c, atomic_read(&c->refcnt)); | ||
684 | |||
685 | if (atomic_dec_and_test(&c->refcnt)) | ||
686 | kfree(c); | ||
687 | } | ||
688 | 676 | ||
689 | static inline void l2cap_chan_lock(struct l2cap_chan *chan) | 677 | static inline void l2cap_chan_lock(struct l2cap_chan *chan) |
690 | { | 678 | { |
@@ -771,7 +759,6 @@ int l2cap_add_scid(struct l2cap_chan *chan, __u16 scid); | |||
771 | 759 | ||
772 | struct l2cap_chan *l2cap_chan_create(void); | 760 | struct l2cap_chan *l2cap_chan_create(void); |
773 | void l2cap_chan_close(struct l2cap_chan *chan, int reason); | 761 | void l2cap_chan_close(struct l2cap_chan *chan, int reason); |
774 | void l2cap_chan_destroy(struct l2cap_chan *chan); | ||
775 | int l2cap_chan_connect(struct l2cap_chan *chan, __le16 psm, u16 cid, | 762 | int l2cap_chan_connect(struct l2cap_chan *chan, __le16 psm, u16 cid, |
776 | bdaddr_t *dst, u8 dst_type); | 763 | bdaddr_t *dst, u8 dst_type); |
777 | int l2cap_chan_send(struct l2cap_chan *chan, struct msghdr *msg, size_t len, | 764 | int l2cap_chan_send(struct l2cap_chan *chan, struct msghdr *msg, size_t len, |
diff --git a/include/net/bluetooth/smp.h b/include/net/bluetooth/smp.h index ca356a734920..50993a531d45 100644 --- a/include/net/bluetooth/smp.h +++ b/include/net/bluetooth/smp.h | |||
@@ -108,8 +108,8 @@ struct smp_cmd_security_req { | |||
108 | #define SMP_CONFIRM_FAILED 0x04 | 108 | #define SMP_CONFIRM_FAILED 0x04 |
109 | #define SMP_PAIRING_NOTSUPP 0x05 | 109 | #define SMP_PAIRING_NOTSUPP 0x05 |
110 | #define SMP_ENC_KEY_SIZE 0x06 | 110 | #define SMP_ENC_KEY_SIZE 0x06 |
111 | #define SMP_CMD_NOTSUPP 0x07 | 111 | #define SMP_CMD_NOTSUPP 0x07 |
112 | #define SMP_UNSPECIFIED 0x08 | 112 | #define SMP_UNSPECIFIED 0x08 |
113 | #define SMP_REPEATED_ATTEMPTS 0x09 | 113 | #define SMP_REPEATED_ATTEMPTS 0x09 |
114 | 114 | ||
115 | #define SMP_MIN_ENC_KEY_SIZE 7 | 115 | #define SMP_MIN_ENC_KEY_SIZE 7 |
@@ -123,8 +123,8 @@ struct smp_chan { | |||
123 | struct l2cap_conn *conn; | 123 | struct l2cap_conn *conn; |
124 | u8 preq[7]; /* SMP Pairing Request */ | 124 | u8 preq[7]; /* SMP Pairing Request */ |
125 | u8 prsp[7]; /* SMP Pairing Response */ | 125 | u8 prsp[7]; /* SMP Pairing Response */ |
126 | u8 prnd[16]; /* SMP Pairing Random (local) */ | 126 | u8 prnd[16]; /* SMP Pairing Random (local) */ |
127 | u8 rrnd[16]; /* SMP Pairing Random (remote) */ | 127 | u8 rrnd[16]; /* SMP Pairing Random (remote) */ |
128 | u8 pcnf[16]; /* SMP Pairing Confirm */ | 128 | u8 pcnf[16]; /* SMP Pairing Confirm */ |
129 | u8 tk[16]; /* SMP Temporary Key */ | 129 | u8 tk[16]; /* SMP Temporary Key */ |
130 | u8 enc_key_size; | 130 | u8 enc_key_size; |
diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index 613cfa401672..83b567fe1941 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h | |||
@@ -249,4 +249,13 @@ static inline __u8 inet_sk_flowi_flags(const struct sock *sk) | |||
249 | return flags; | 249 | return flags; |
250 | } | 250 | } |
251 | 251 | ||
252 | static inline void inet_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) | ||
253 | { | ||
254 | struct dst_entry *dst = skb_dst(skb); | ||
255 | |||
256 | dst_hold(dst); | ||
257 | sk->sk_rx_dst = dst; | ||
258 | inet_sk(sk)->rx_dst_ifindex = skb->skb_iif; | ||
259 | } | ||
260 | |||
252 | #endif /* _INET_SOCK_H */ | 261 | #endif /* _INET_SOCK_H */ |
diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h index e69c3a47153d..926142ed8d7a 100644 --- a/include/net/ip_fib.h +++ b/include/net/ip_fib.h | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/rcupdate.h> | 21 | #include <linux/rcupdate.h> |
22 | #include <net/fib_rules.h> | 22 | #include <net/fib_rules.h> |
23 | #include <net/inetpeer.h> | 23 | #include <net/inetpeer.h> |
24 | #include <linux/percpu.h> | ||
24 | 25 | ||
25 | struct fib_config { | 26 | struct fib_config { |
26 | u8 fc_dst_len; | 27 | u8 fc_dst_len; |
@@ -54,6 +55,7 @@ struct fib_nh_exception { | |||
54 | u32 fnhe_pmtu; | 55 | u32 fnhe_pmtu; |
55 | __be32 fnhe_gw; | 56 | __be32 fnhe_gw; |
56 | unsigned long fnhe_expires; | 57 | unsigned long fnhe_expires; |
58 | struct rtable __rcu *fnhe_rth; | ||
57 | unsigned long fnhe_stamp; | 59 | unsigned long fnhe_stamp; |
58 | }; | 60 | }; |
59 | 61 | ||
@@ -81,8 +83,8 @@ struct fib_nh { | |||
81 | __be32 nh_gw; | 83 | __be32 nh_gw; |
82 | __be32 nh_saddr; | 84 | __be32 nh_saddr; |
83 | int nh_saddr_genid; | 85 | int nh_saddr_genid; |
84 | struct rtable *nh_rth_output; | 86 | struct rtable __rcu * __percpu *nh_pcpu_rth_output; |
85 | struct rtable *nh_rth_input; | 87 | struct rtable __rcu *nh_rth_input; |
86 | struct fnhe_hash_bucket *nh_exceptions; | 88 | struct fnhe_hash_bucket *nh_exceptions; |
87 | }; | 89 | }; |
88 | 90 | ||
diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h index 0ffb8e31f3cd..1474dd65c66f 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h | |||
@@ -61,8 +61,6 @@ struct netns_ipv4 { | |||
61 | int sysctl_icmp_ratelimit; | 61 | int sysctl_icmp_ratelimit; |
62 | int sysctl_icmp_ratemask; | 62 | int sysctl_icmp_ratemask; |
63 | int sysctl_icmp_errors_use_inbound_ifaddr; | 63 | int sysctl_icmp_errors_use_inbound_ifaddr; |
64 | int sysctl_rt_cache_rebuild_count; | ||
65 | int current_rt_cache_rebuild_count; | ||
66 | 64 | ||
67 | unsigned int sysctl_ping_group_range[2]; | 65 | unsigned int sysctl_ping_group_range[2]; |
68 | long sysctl_tcp_mem[3]; | 66 | long sysctl_tcp_mem[3]; |
diff --git a/include/net/route.h b/include/net/route.h index 8c52bc6f1c90..776a27f1ab78 100644 --- a/include/net/route.h +++ b/include/net/route.h | |||
@@ -57,6 +57,8 @@ struct rtable { | |||
57 | 57 | ||
58 | /* Miscellaneous cached information */ | 58 | /* Miscellaneous cached information */ |
59 | u32 rt_pmtu; | 59 | u32 rt_pmtu; |
60 | |||
61 | struct list_head rt_uncached; | ||
60 | }; | 62 | }; |
61 | 63 | ||
62 | static inline bool rt_is_input_route(const struct rtable *rt) | 64 | static inline bool rt_is_input_route(const struct rtable *rt) |
@@ -107,6 +109,7 @@ extern struct ip_rt_acct __percpu *ip_rt_acct; | |||
107 | struct in_device; | 109 | struct in_device; |
108 | extern int ip_rt_init(void); | 110 | extern int ip_rt_init(void); |
109 | extern void rt_cache_flush(struct net *net, int how); | 111 | extern void rt_cache_flush(struct net *net, int how); |
112 | extern void rt_flush_dev(struct net_device *dev); | ||
110 | extern struct rtable *__ip_route_output_key(struct net *, struct flowi4 *flp); | 113 | extern struct rtable *__ip_route_output_key(struct net *, struct flowi4 *flp); |
111 | extern struct rtable *ip_route_output_flow(struct net *, struct flowi4 *flp, | 114 | extern struct rtable *ip_route_output_flow(struct net *, struct flowi4 *flp, |
112 | struct sock *sk); | 115 | struct sock *sk); |