diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2012-05-21 15:39:42 -0400 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2012-05-21 15:39:42 -0400 |
commit | 0ad8c6a22d03a1598f7cc6585c65354dadca62ad (patch) | |
tree | 1507deef3d55d5f3c71b2f76924fe1f6c6211905 /include/net | |
parent | 8527f8e2934683e53405fbe876a4e6f4a0c46eb8 (diff) | |
parent | 76e10d158efb6d4516018846f60c2ab5501900bc (diff) |
Merge tag 'v3.4' with SCSI updates, needed for subsequent firewire-sbp2 changes
Linux 3.4
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/bluetooth/bluetooth.h | 1 | ||||
-rw-r--r-- | include/net/bluetooth/hci.h | 3 | ||||
-rw-r--r-- | include/net/bluetooth/hci_core.h | 15 | ||||
-rw-r--r-- | include/net/bluetooth/mgmt.h | 2 | ||||
-rw-r--r-- | include/net/dst.h | 7 | ||||
-rw-r--r-- | include/net/ip6_fib.h | 48 | ||||
-rw-r--r-- | include/net/ip_vs.h | 4 | ||||
-rw-r--r-- | include/net/mac80211.h | 2 | ||||
-rw-r--r-- | include/net/red.h | 6 | ||||
-rw-r--r-- | include/net/sctp/sctp.h | 13 | ||||
-rw-r--r-- | include/net/sock.h | 5 |
11 files changed, 90 insertions, 16 deletions
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index 262ebd1747d4..a65910bda381 100644 --- a/include/net/bluetooth/bluetooth.h +++ b/include/net/bluetooth/bluetooth.h | |||
@@ -191,6 +191,7 @@ struct bt_sock { | |||
191 | struct list_head accept_q; | 191 | struct list_head accept_q; |
192 | struct sock *parent; | 192 | struct sock *parent; |
193 | u32 defer_setup; | 193 | u32 defer_setup; |
194 | bool suspended; | ||
194 | }; | 195 | }; |
195 | 196 | ||
196 | struct bt_sock_list { | 197 | struct bt_sock_list { |
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index 344b0f972828..d47e523c9d83 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h | |||
@@ -92,6 +92,7 @@ enum { | |||
92 | HCI_SERVICE_CACHE, | 92 | HCI_SERVICE_CACHE, |
93 | HCI_LINK_KEYS, | 93 | HCI_LINK_KEYS, |
94 | HCI_DEBUG_KEYS, | 94 | HCI_DEBUG_KEYS, |
95 | HCI_UNREGISTER, | ||
95 | 96 | ||
96 | HCI_LE_SCAN, | 97 | HCI_LE_SCAN, |
97 | HCI_SSP_ENABLED, | 98 | HCI_SSP_ENABLED, |
@@ -1327,8 +1328,8 @@ struct sockaddr_hci { | |||
1327 | #define HCI_DEV_NONE 0xffff | 1328 | #define HCI_DEV_NONE 0xffff |
1328 | 1329 | ||
1329 | #define HCI_CHANNEL_RAW 0 | 1330 | #define HCI_CHANNEL_RAW 0 |
1330 | #define HCI_CHANNEL_CONTROL 1 | ||
1331 | #define HCI_CHANNEL_MONITOR 2 | 1331 | #define HCI_CHANNEL_MONITOR 2 |
1332 | #define HCI_CHANNEL_CONTROL 3 | ||
1332 | 1333 | ||
1333 | struct hci_filter { | 1334 | struct hci_filter { |
1334 | unsigned long type_mask; | 1335 | unsigned long type_mask; |
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index daefaac51131..db1c5df45224 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
@@ -314,6 +314,7 @@ struct hci_conn { | |||
314 | 314 | ||
315 | __u8 remote_cap; | 315 | __u8 remote_cap; |
316 | __u8 remote_auth; | 316 | __u8 remote_auth; |
317 | bool flush_key; | ||
317 | 318 | ||
318 | unsigned int sent; | 319 | unsigned int sent; |
319 | 320 | ||
@@ -427,7 +428,7 @@ enum { | |||
427 | static inline bool hci_conn_ssp_enabled(struct hci_conn *conn) | 428 | static inline bool hci_conn_ssp_enabled(struct hci_conn *conn) |
428 | { | 429 | { |
429 | struct hci_dev *hdev = conn->hdev; | 430 | struct hci_dev *hdev = conn->hdev; |
430 | return (test_bit(HCI_SSP_ENABLED, &hdev->flags) && | 431 | return (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags) && |
431 | test_bit(HCI_CONN_SSP_ENABLED, &conn->flags)); | 432 | test_bit(HCI_CONN_SSP_ENABLED, &conn->flags)); |
432 | } | 433 | } |
433 | 434 | ||
@@ -907,11 +908,13 @@ static inline void hci_role_switch_cfm(struct hci_conn *conn, __u8 status, | |||
907 | 908 | ||
908 | static inline bool eir_has_data_type(u8 *data, size_t data_len, u8 type) | 909 | static inline bool eir_has_data_type(u8 *data, size_t data_len, u8 type) |
909 | { | 910 | { |
910 | u8 field_len; | 911 | size_t parsed = 0; |
911 | size_t parsed; | ||
912 | 912 | ||
913 | for (parsed = 0; parsed < data_len - 1; parsed += field_len) { | 913 | if (data_len < 2) |
914 | field_len = data[0]; | 914 | return false; |
915 | |||
916 | while (parsed < data_len - 1) { | ||
917 | u8 field_len = data[0]; | ||
915 | 918 | ||
916 | if (field_len == 0) | 919 | if (field_len == 0) |
917 | break; | 920 | break; |
@@ -978,7 +981,7 @@ int mgmt_discoverable(struct hci_dev *hdev, u8 discoverable); | |||
978 | int mgmt_connectable(struct hci_dev *hdev, u8 connectable); | 981 | int mgmt_connectable(struct hci_dev *hdev, u8 connectable); |
979 | int mgmt_write_scan_failed(struct hci_dev *hdev, u8 scan, u8 status); | 982 | int mgmt_write_scan_failed(struct hci_dev *hdev, u8 scan, u8 status); |
980 | int mgmt_new_link_key(struct hci_dev *hdev, struct link_key *key, | 983 | int mgmt_new_link_key(struct hci_dev *hdev, struct link_key *key, |
981 | u8 persistent); | 984 | bool persistent); |
982 | int mgmt_device_connected(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type, | 985 | int mgmt_device_connected(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type, |
983 | u8 addr_type, u32 flags, u8 *name, u8 name_len, | 986 | u8 addr_type, u32 flags, u8 *name, u8 name_len, |
984 | u8 *dev_class); | 987 | u8 *dev_class); |
diff --git a/include/net/bluetooth/mgmt.h b/include/net/bluetooth/mgmt.h index ffc1377e092e..ebfd91fc20f8 100644 --- a/include/net/bluetooth/mgmt.h +++ b/include/net/bluetooth/mgmt.h | |||
@@ -117,7 +117,7 @@ struct mgmt_mode { | |||
117 | #define MGMT_OP_SET_DISCOVERABLE 0x0006 | 117 | #define MGMT_OP_SET_DISCOVERABLE 0x0006 |
118 | struct mgmt_cp_set_discoverable { | 118 | struct mgmt_cp_set_discoverable { |
119 | __u8 val; | 119 | __u8 val; |
120 | __u16 timeout; | 120 | __le16 timeout; |
121 | } __packed; | 121 | } __packed; |
122 | #define MGMT_SET_DISCOVERABLE_SIZE 3 | 122 | #define MGMT_SET_DISCOVERABLE_SIZE 3 |
123 | 123 | ||
diff --git a/include/net/dst.h b/include/net/dst.h index 59c5d18cc385..bed833d9796a 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
@@ -36,7 +36,11 @@ struct dst_entry { | |||
36 | struct net_device *dev; | 36 | struct net_device *dev; |
37 | struct dst_ops *ops; | 37 | struct dst_ops *ops; |
38 | unsigned long _metrics; | 38 | unsigned long _metrics; |
39 | unsigned long expires; | 39 | union { |
40 | unsigned long expires; | ||
41 | /* point to where the dst_entry copied from */ | ||
42 | struct dst_entry *from; | ||
43 | }; | ||
40 | struct dst_entry *path; | 44 | struct dst_entry *path; |
41 | struct neighbour __rcu *_neighbour; | 45 | struct neighbour __rcu *_neighbour; |
42 | #ifdef CONFIG_XFRM | 46 | #ifdef CONFIG_XFRM |
@@ -55,6 +59,7 @@ struct dst_entry { | |||
55 | #define DST_NOCACHE 0x0010 | 59 | #define DST_NOCACHE 0x0010 |
56 | #define DST_NOCOUNT 0x0020 | 60 | #define DST_NOCOUNT 0x0020 |
57 | #define DST_NOPEER 0x0040 | 61 | #define DST_NOPEER 0x0040 |
62 | #define DST_FAKE_RTABLE 0x0080 | ||
58 | 63 | ||
59 | short error; | 64 | short error; |
60 | short obsolete; | 65 | short obsolete; |
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index b26bb8101981..0ae759a6c76e 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h | |||
@@ -123,6 +123,54 @@ static inline struct inet6_dev *ip6_dst_idev(struct dst_entry *dst) | |||
123 | return ((struct rt6_info *)dst)->rt6i_idev; | 123 | return ((struct rt6_info *)dst)->rt6i_idev; |
124 | } | 124 | } |
125 | 125 | ||
126 | static inline void rt6_clean_expires(struct rt6_info *rt) | ||
127 | { | ||
128 | if (!(rt->rt6i_flags & RTF_EXPIRES) && rt->dst.from) | ||
129 | dst_release(rt->dst.from); | ||
130 | |||
131 | rt->rt6i_flags &= ~RTF_EXPIRES; | ||
132 | rt->dst.from = NULL; | ||
133 | } | ||
134 | |||
135 | static inline void rt6_set_expires(struct rt6_info *rt, unsigned long expires) | ||
136 | { | ||
137 | if (!(rt->rt6i_flags & RTF_EXPIRES) && rt->dst.from) | ||
138 | dst_release(rt->dst.from); | ||
139 | |||
140 | rt->rt6i_flags |= RTF_EXPIRES; | ||
141 | rt->dst.expires = expires; | ||
142 | } | ||
143 | |||
144 | static inline void rt6_update_expires(struct rt6_info *rt, int timeout) | ||
145 | { | ||
146 | if (!(rt->rt6i_flags & RTF_EXPIRES)) { | ||
147 | if (rt->dst.from) | ||
148 | dst_release(rt->dst.from); | ||
149 | /* dst_set_expires relies on expires == 0 | ||
150 | * if it has not been set previously. | ||
151 | */ | ||
152 | rt->dst.expires = 0; | ||
153 | } | ||
154 | |||
155 | dst_set_expires(&rt->dst, timeout); | ||
156 | rt->rt6i_flags |= RTF_EXPIRES; | ||
157 | } | ||
158 | |||
159 | static inline void rt6_set_from(struct rt6_info *rt, struct rt6_info *from) | ||
160 | { | ||
161 | struct dst_entry *new = (struct dst_entry *) from; | ||
162 | |||
163 | if (!(rt->rt6i_flags & RTF_EXPIRES) && rt->dst.from) { | ||
164 | if (new == rt->dst.from) | ||
165 | return; | ||
166 | dst_release(rt->dst.from); | ||
167 | } | ||
168 | |||
169 | rt->rt6i_flags &= ~RTF_EXPIRES; | ||
170 | rt->dst.from = new; | ||
171 | dst_hold(new); | ||
172 | } | ||
173 | |||
126 | struct fib6_walker_t { | 174 | struct fib6_walker_t { |
127 | struct list_head lh; | 175 | struct list_head lh; |
128 | struct fib6_node *root, *node; | 176 | struct fib6_node *root, *node; |
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h index 2bdee51ba30d..72522f087375 100644 --- a/include/net/ip_vs.h +++ b/include/net/ip_vs.h | |||
@@ -393,7 +393,7 @@ struct ip_vs_protocol { | |||
393 | 393 | ||
394 | void (*exit)(struct ip_vs_protocol *pp); | 394 | void (*exit)(struct ip_vs_protocol *pp); |
395 | 395 | ||
396 | void (*init_netns)(struct net *net, struct ip_vs_proto_data *pd); | 396 | int (*init_netns)(struct net *net, struct ip_vs_proto_data *pd); |
397 | 397 | ||
398 | void (*exit_netns)(struct net *net, struct ip_vs_proto_data *pd); | 398 | void (*exit_netns)(struct net *net, struct ip_vs_proto_data *pd); |
399 | 399 | ||
@@ -1203,6 +1203,8 @@ ip_vs_lookup_real_service(struct net *net, int af, __u16 protocol, | |||
1203 | 1203 | ||
1204 | extern int ip_vs_use_count_inc(void); | 1204 | extern int ip_vs_use_count_inc(void); |
1205 | extern void ip_vs_use_count_dec(void); | 1205 | extern void ip_vs_use_count_dec(void); |
1206 | extern int ip_vs_register_nl_ioctl(void); | ||
1207 | extern void ip_vs_unregister_nl_ioctl(void); | ||
1206 | extern int ip_vs_control_init(void); | 1208 | extern int ip_vs_control_init(void); |
1207 | extern void ip_vs_control_cleanup(void); | 1209 | extern void ip_vs_control_cleanup(void); |
1208 | extern struct ip_vs_dest * | 1210 | extern struct ip_vs_dest * |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 87d203ff7a8a..9210bdc7bd8d 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -1327,7 +1327,7 @@ static inline struct ieee80211_rate * | |||
1327 | ieee80211_get_tx_rate(const struct ieee80211_hw *hw, | 1327 | ieee80211_get_tx_rate(const struct ieee80211_hw *hw, |
1328 | const struct ieee80211_tx_info *c) | 1328 | const struct ieee80211_tx_info *c) |
1329 | { | 1329 | { |
1330 | if (WARN_ON(c->control.rates[0].idx < 0)) | 1330 | if (WARN_ON_ONCE(c->control.rates[0].idx < 0)) |
1331 | return NULL; | 1331 | return NULL; |
1332 | return &hw->wiphy->bands[c->band]->bitrates[c->control.rates[0].idx]; | 1332 | return &hw->wiphy->bands[c->band]->bitrates[c->control.rates[0].idx]; |
1333 | } | 1333 | } |
diff --git a/include/net/red.h b/include/net/red.h index 77d4c3745cb5..ef46058d35bf 100644 --- a/include/net/red.h +++ b/include/net/red.h | |||
@@ -245,7 +245,7 @@ static inline unsigned long red_calc_qavg_from_idle_time(const struct red_parms | |||
245 | * | 245 | * |
246 | * dummy packets as a burst after idle time, i.e. | 246 | * dummy packets as a burst after idle time, i.e. |
247 | * | 247 | * |
248 | * p->qavg *= (1-W)^m | 248 | * v->qavg *= (1-W)^m |
249 | * | 249 | * |
250 | * This is an apparently overcomplicated solution (f.e. we have to | 250 | * This is an apparently overcomplicated solution (f.e. we have to |
251 | * precompute a table to make this calculation in reasonable time) | 251 | * precompute a table to make this calculation in reasonable time) |
@@ -279,7 +279,7 @@ static inline unsigned long red_calc_qavg_no_idle_time(const struct red_parms *p | |||
279 | unsigned int backlog) | 279 | unsigned int backlog) |
280 | { | 280 | { |
281 | /* | 281 | /* |
282 | * NOTE: p->qavg is fixed point number with point at Wlog. | 282 | * NOTE: v->qavg is fixed point number with point at Wlog. |
283 | * The formula below is equvalent to floating point | 283 | * The formula below is equvalent to floating point |
284 | * version: | 284 | * version: |
285 | * | 285 | * |
@@ -390,7 +390,7 @@ static inline void red_adaptative_algo(struct red_parms *p, struct red_vars *v) | |||
390 | if (red_is_idling(v)) | 390 | if (red_is_idling(v)) |
391 | qavg = red_calc_qavg_from_idle_time(p, v); | 391 | qavg = red_calc_qavg_from_idle_time(p, v); |
392 | 392 | ||
393 | /* p->qavg is fixed point number with point at Wlog */ | 393 | /* v->qavg is fixed point number with point at Wlog */ |
394 | qavg >>= p->Wlog; | 394 | qavg >>= p->Wlog; |
395 | 395 | ||
396 | if (qavg > p->target_max && p->max_P <= MAX_P_MAX) | 396 | if (qavg > p->target_max && p->max_P <= MAX_P_MAX) |
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 6ee44b24864a..a2ef81466b00 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h | |||
@@ -704,4 +704,17 @@ static inline void sctp_v4_map_v6(union sctp_addr *addr) | |||
704 | addr->v6.sin6_addr.s6_addr32[2] = htonl(0x0000ffff); | 704 | addr->v6.sin6_addr.s6_addr32[2] = htonl(0x0000ffff); |
705 | } | 705 | } |
706 | 706 | ||
707 | /* The cookie is always 0 since this is how it's used in the | ||
708 | * pmtu code. | ||
709 | */ | ||
710 | static inline struct dst_entry *sctp_transport_dst_check(struct sctp_transport *t) | ||
711 | { | ||
712 | if (t->dst && !dst_check(t->dst, 0)) { | ||
713 | dst_release(t->dst); | ||
714 | t->dst = NULL; | ||
715 | } | ||
716 | |||
717 | return t->dst; | ||
718 | } | ||
719 | |||
707 | #endif /* __net_sctp_h__ */ | 720 | #endif /* __net_sctp_h__ */ |
diff --git a/include/net/sock.h b/include/net/sock.h index a6ba1f8871fd..5a0a58ac4126 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
@@ -246,6 +246,7 @@ struct cg_proto; | |||
246 | * @sk_user_data: RPC layer private data | 246 | * @sk_user_data: RPC layer private data |
247 | * @sk_sndmsg_page: cached page for sendmsg | 247 | * @sk_sndmsg_page: cached page for sendmsg |
248 | * @sk_sndmsg_off: cached offset for sendmsg | 248 | * @sk_sndmsg_off: cached offset for sendmsg |
249 | * @sk_peek_off: current peek_offset value | ||
249 | * @sk_send_head: front of stuff to transmit | 250 | * @sk_send_head: front of stuff to transmit |
250 | * @sk_security: used by security modules | 251 | * @sk_security: used by security modules |
251 | * @sk_mark: generic packet mark | 252 | * @sk_mark: generic packet mark |
@@ -1128,9 +1129,9 @@ sk_sockets_allocated_read_positive(struct sock *sk) | |||
1128 | struct proto *prot = sk->sk_prot; | 1129 | struct proto *prot = sk->sk_prot; |
1129 | 1130 | ||
1130 | if (mem_cgroup_sockets_enabled && sk->sk_cgrp) | 1131 | if (mem_cgroup_sockets_enabled && sk->sk_cgrp) |
1131 | return percpu_counter_sum_positive(sk->sk_cgrp->sockets_allocated); | 1132 | return percpu_counter_read_positive(sk->sk_cgrp->sockets_allocated); |
1132 | 1133 | ||
1133 | return percpu_counter_sum_positive(prot->sockets_allocated); | 1134 | return percpu_counter_read_positive(prot->sockets_allocated); |
1134 | } | 1135 | } |
1135 | 1136 | ||
1136 | static inline int | 1137 | static inline int |