diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/can/dev.h | 2 | ||||
-rw-r--r-- | include/linux/in.h | 1 | ||||
-rw-r--r-- | include/linux/in6.h | 1 | ||||
-rw-r--r-- | include/linux/ipv6.h | 1 | ||||
-rw-r--r-- | include/linux/netlink.h | 18 | ||||
-rw-r--r-- | include/linux/nfc.h | 7 | ||||
-rw-r--r-- | include/linux/nl80211.h | 8 | ||||
-rw-r--r-- | include/linux/pkt_sched.h | 21 | ||||
-rw-r--r-- | include/linux/snmp.h | 1 | ||||
-rw-r--r-- | include/linux/ssb/ssb.h | 8 | ||||
-rw-r--r-- | include/linux/ssb/ssb_regs.h | 34 | ||||
-rw-r--r-- | include/linux/tcp.h | 5 | ||||
-rw-r--r-- | include/net/addrconf.h | 1 | ||||
-rw-r--r-- | include/net/caif/caif_hsi.h | 1 | ||||
-rw-r--r-- | include/net/cfg80211.h | 6 | ||||
-rw-r--r-- | include/net/genetlink.h | 31 | ||||
-rw-r--r-- | include/net/inet_sock.h | 2 | ||||
-rw-r--r-- | include/net/iucv/af_iucv.h | 2 | ||||
-rw-r--r-- | include/net/mac80211.h | 44 | ||||
-rw-r--r-- | include/net/ndisc.h | 1 | ||||
-rw-r--r-- | include/net/netlink.h | 35 | ||||
-rw-r--r-- | include/net/nfc/nci.h | 53 | ||||
-rw-r--r-- | include/net/nfc/nci_core.h | 26 | ||||
-rw-r--r-- | include/net/nfc/nfc.h | 9 | ||||
-rw-r--r-- | include/net/tcp.h | 66 |
25 files changed, 235 insertions, 149 deletions
diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h index a0969fcb72b9..5d2efe7e3f1b 100644 --- a/include/linux/can/dev.h +++ b/include/linux/can/dev.h | |||
@@ -92,7 +92,7 @@ void can_bus_off(struct net_device *dev); | |||
92 | 92 | ||
93 | void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev, | 93 | void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev, |
94 | unsigned int idx); | 94 | unsigned int idx); |
95 | void can_get_echo_skb(struct net_device *dev, unsigned int idx); | 95 | unsigned int can_get_echo_skb(struct net_device *dev, unsigned int idx); |
96 | void can_free_echo_skb(struct net_device *dev, unsigned int idx); | 96 | void can_free_echo_skb(struct net_device *dev, unsigned int idx); |
97 | 97 | ||
98 | struct sk_buff *alloc_can_skb(struct net_device *dev, struct can_frame **cf); | 98 | struct sk_buff *alloc_can_skb(struct net_device *dev, struct can_frame **cf); |
diff --git a/include/linux/in.h b/include/linux/in.h index 01129c0ea87c..e0337f11d92e 100644 --- a/include/linux/in.h +++ b/include/linux/in.h | |||
@@ -111,6 +111,7 @@ struct in_addr { | |||
111 | #define MCAST_LEAVE_SOURCE_GROUP 47 | 111 | #define MCAST_LEAVE_SOURCE_GROUP 47 |
112 | #define MCAST_MSFILTER 48 | 112 | #define MCAST_MSFILTER 48 |
113 | #define IP_MULTICAST_ALL 49 | 113 | #define IP_MULTICAST_ALL 49 |
114 | #define IP_UNICAST_IF 50 | ||
114 | 115 | ||
115 | #define MCAST_EXCLUDE 0 | 116 | #define MCAST_EXCLUDE 0 |
116 | #define MCAST_INCLUDE 1 | 117 | #define MCAST_INCLUDE 1 |
diff --git a/include/linux/in6.h b/include/linux/in6.h index 097a34b55560..5c83d9e3eb8f 100644 --- a/include/linux/in6.h +++ b/include/linux/in6.h | |||
@@ -271,6 +271,7 @@ struct in6_flowlabel_req { | |||
271 | #define IPV6_ORIGDSTADDR 74 | 271 | #define IPV6_ORIGDSTADDR 74 |
272 | #define IPV6_RECVORIGDSTADDR IPV6_ORIGDSTADDR | 272 | #define IPV6_RECVORIGDSTADDR IPV6_ORIGDSTADDR |
273 | #define IPV6_TRANSPARENT 75 | 273 | #define IPV6_TRANSPARENT 75 |
274 | #define IPV6_UNICAST_IF 76 | ||
274 | 275 | ||
275 | /* | 276 | /* |
276 | * Multicast Routing: | 277 | * Multicast Routing: |
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index 6318268dcaf5..743a16a41040 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
@@ -324,6 +324,7 @@ struct ipv6_pinfo { | |||
324 | __unused_2:6; | 324 | __unused_2:6; |
325 | __s16 mcast_hops:9; | 325 | __s16 mcast_hops:9; |
326 | #endif | 326 | #endif |
327 | int ucast_oif; | ||
327 | int mcast_oif; | 328 | int mcast_oif; |
328 | 329 | ||
329 | /* pktoption flags */ | 330 | /* pktoption flags */ |
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index 52e48959cfa1..a390e9d54827 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
@@ -237,22 +237,8 @@ struct netlink_notify { | |||
237 | int protocol; | 237 | int protocol; |
238 | }; | 238 | }; |
239 | 239 | ||
240 | static __inline__ struct nlmsghdr * | 240 | struct nlmsghdr * |
241 | __nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len, int flags) | 241 | __nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len, int flags); |
242 | { | ||
243 | struct nlmsghdr *nlh; | ||
244 | int size = NLMSG_LENGTH(len); | ||
245 | |||
246 | nlh = (struct nlmsghdr*)skb_put(skb, NLMSG_ALIGN(size)); | ||
247 | nlh->nlmsg_type = type; | ||
248 | nlh->nlmsg_len = size; | ||
249 | nlh->nlmsg_flags = flags; | ||
250 | nlh->nlmsg_pid = pid; | ||
251 | nlh->nlmsg_seq = seq; | ||
252 | if (!__builtin_constant_p(size) || NLMSG_ALIGN(size) - size != 0) | ||
253 | memset(NLMSG_DATA(nlh) + len, 0, NLMSG_ALIGN(size) - size); | ||
254 | return nlh; | ||
255 | } | ||
256 | 242 | ||
257 | #define NLMSG_NEW(skb, pid, seq, type, len, flags) \ | 243 | #define NLMSG_NEW(skb, pid, seq, type, len, flags) \ |
258 | ({ if (unlikely(skb_tailroom(skb) < (int)NLMSG_SPACE(len))) \ | 244 | ({ if (unlikely(skb_tailroom(skb) < (int)NLMSG_SPACE(len))) \ |
diff --git a/include/linux/nfc.h b/include/linux/nfc.h index 01d4e5d60325..b4999abcb2a2 100644 --- a/include/linux/nfc.h +++ b/include/linux/nfc.h | |||
@@ -89,6 +89,8 @@ enum nfc_commands { | |||
89 | * @NFC_ATTR_TARGET_SEL_RES: NFC-A targets extra information (useful if the | 89 | * @NFC_ATTR_TARGET_SEL_RES: NFC-A targets extra information (useful if the |
90 | * target is not NFC-Forum compliant) | 90 | * target is not NFC-Forum compliant) |
91 | * @NFC_ATTR_TARGET_NFCID1: NFC-A targets identifier, max 10 bytes | 91 | * @NFC_ATTR_TARGET_NFCID1: NFC-A targets identifier, max 10 bytes |
92 | * @NFC_ATTR_TARGET_SENSB_RES: NFC-B targets extra information, max 12 bytes | ||
93 | * @NFC_ATTR_TARGET_SENSF_RES: NFC-F targets extra information, max 18 bytes | ||
92 | * @NFC_ATTR_COMM_MODE: Passive or active mode | 94 | * @NFC_ATTR_COMM_MODE: Passive or active mode |
93 | * @NFC_ATTR_RF_MODE: Initiator or target | 95 | * @NFC_ATTR_RF_MODE: Initiator or target |
94 | */ | 96 | */ |
@@ -101,6 +103,8 @@ enum nfc_attrs { | |||
101 | NFC_ATTR_TARGET_SENS_RES, | 103 | NFC_ATTR_TARGET_SENS_RES, |
102 | NFC_ATTR_TARGET_SEL_RES, | 104 | NFC_ATTR_TARGET_SEL_RES, |
103 | NFC_ATTR_TARGET_NFCID1, | 105 | NFC_ATTR_TARGET_NFCID1, |
106 | NFC_ATTR_TARGET_SENSB_RES, | ||
107 | NFC_ATTR_TARGET_SENSF_RES, | ||
104 | NFC_ATTR_COMM_MODE, | 108 | NFC_ATTR_COMM_MODE, |
105 | NFC_ATTR_RF_MODE, | 109 | NFC_ATTR_RF_MODE, |
106 | /* private: internal use only */ | 110 | /* private: internal use only */ |
@@ -109,6 +113,9 @@ enum nfc_attrs { | |||
109 | #define NFC_ATTR_MAX (__NFC_ATTR_AFTER_LAST - 1) | 113 | #define NFC_ATTR_MAX (__NFC_ATTR_AFTER_LAST - 1) |
110 | 114 | ||
111 | #define NFC_DEVICE_NAME_MAXSIZE 8 | 115 | #define NFC_DEVICE_NAME_MAXSIZE 8 |
116 | #define NFC_NFCID1_MAXSIZE 10 | ||
117 | #define NFC_SENSB_RES_MAXSIZE 12 | ||
118 | #define NFC_SENSF_RES_MAXSIZE 18 | ||
112 | 119 | ||
113 | /* NFC protocols */ | 120 | /* NFC protocols */ |
114 | #define NFC_PROTO_JEWEL 1 | 121 | #define NFC_PROTO_JEWEL 1 |
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h index 0f5ff3739820..ad56e21a9f10 100644 --- a/include/linux/nl80211.h +++ b/include/linux/nl80211.h | |||
@@ -1475,6 +1475,7 @@ enum nl80211_attrs { | |||
1475 | #define NL80211_ATTR_FEATURE_FLAGS NL80211_ATTR_FEATURE_FLAGS | 1475 | #define NL80211_ATTR_FEATURE_FLAGS NL80211_ATTR_FEATURE_FLAGS |
1476 | 1476 | ||
1477 | #define NL80211_MAX_SUPP_RATES 32 | 1477 | #define NL80211_MAX_SUPP_RATES 32 |
1478 | #define NL80211_MAX_SUPP_HT_RATES 77 | ||
1478 | #define NL80211_MAX_SUPP_REG_RULES 32 | 1479 | #define NL80211_MAX_SUPP_REG_RULES 32 |
1479 | #define NL80211_TKIP_DATA_OFFSET_ENCR_KEY 0 | 1480 | #define NL80211_TKIP_DATA_OFFSET_ENCR_KEY 0 |
1480 | #define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16 | 1481 | #define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16 |
@@ -2104,6 +2105,9 @@ enum nl80211_mntr_flags { | |||
2104 | * TUs) during which a mesh STA can send only one Action frame containing a | 2105 | * TUs) during which a mesh STA can send only one Action frame containing a |
2105 | * PERR element. | 2106 | * PERR element. |
2106 | * | 2107 | * |
2108 | * @NL80211_MESHCONF_FORWARDING: set Mesh STA as forwarding or non-forwarding | ||
2109 | * or forwarding entity (default is TRUE - forwarding entity) | ||
2110 | * | ||
2107 | * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute | 2111 | * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute |
2108 | * | 2112 | * |
2109 | * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use | 2113 | * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use |
@@ -2128,6 +2132,7 @@ enum nl80211_meshconf_params { | |||
2128 | NL80211_MESHCONF_HWMP_RANN_INTERVAL, | 2132 | NL80211_MESHCONF_HWMP_RANN_INTERVAL, |
2129 | NL80211_MESHCONF_GATE_ANNOUNCEMENTS, | 2133 | NL80211_MESHCONF_GATE_ANNOUNCEMENTS, |
2130 | NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL, | 2134 | NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL, |
2135 | NL80211_MESHCONF_FORWARDING, | ||
2131 | 2136 | ||
2132 | /* keep last */ | 2137 | /* keep last */ |
2133 | __NL80211_MESHCONF_ATTR_AFTER_LAST, | 2138 | __NL80211_MESHCONF_ATTR_AFTER_LAST, |
@@ -2401,12 +2406,15 @@ enum nl80211_key_attributes { | |||
2401 | * in an array of rates as defined in IEEE 802.11 7.3.2.2 (u8 values with | 2406 | * in an array of rates as defined in IEEE 802.11 7.3.2.2 (u8 values with |
2402 | * 1 = 500 kbps) but without the IE length restriction (at most | 2407 | * 1 = 500 kbps) but without the IE length restriction (at most |
2403 | * %NL80211_MAX_SUPP_RATES in a single array). | 2408 | * %NL80211_MAX_SUPP_RATES in a single array). |
2409 | * @NL80211_TXRATE_MCS: HT (MCS) rates allowed for TX rate selection | ||
2410 | * in an array of MCS numbers. | ||
2404 | * @__NL80211_TXRATE_AFTER_LAST: internal | 2411 | * @__NL80211_TXRATE_AFTER_LAST: internal |
2405 | * @NL80211_TXRATE_MAX: highest TX rate attribute | 2412 | * @NL80211_TXRATE_MAX: highest TX rate attribute |
2406 | */ | 2413 | */ |
2407 | enum nl80211_tx_rate_attributes { | 2414 | enum nl80211_tx_rate_attributes { |
2408 | __NL80211_TXRATE_INVALID, | 2415 | __NL80211_TXRATE_INVALID, |
2409 | NL80211_TXRATE_LEGACY, | 2416 | NL80211_TXRATE_LEGACY, |
2417 | NL80211_TXRATE_MCS, | ||
2410 | 2418 | ||
2411 | /* keep last */ | 2419 | /* keep last */ |
2412 | __NL80211_TXRATE_AFTER_LAST, | 2420 | __NL80211_TXRATE_AFTER_LAST, |
diff --git a/include/linux/pkt_sched.h b/include/linux/pkt_sched.h index 0d5b79365d03..410b33d014d2 100644 --- a/include/linux/pkt_sched.h +++ b/include/linux/pkt_sched.h | |||
@@ -127,6 +127,27 @@ struct tc_multiq_qopt { | |||
127 | __u16 max_bands; /* Maximum number of queues */ | 127 | __u16 max_bands; /* Maximum number of queues */ |
128 | }; | 128 | }; |
129 | 129 | ||
130 | /* PLUG section */ | ||
131 | |||
132 | #define TCQ_PLUG_BUFFER 0 | ||
133 | #define TCQ_PLUG_RELEASE_ONE 1 | ||
134 | #define TCQ_PLUG_RELEASE_INDEFINITE 2 | ||
135 | #define TCQ_PLUG_LIMIT 3 | ||
136 | |||
137 | struct tc_plug_qopt { | ||
138 | /* TCQ_PLUG_BUFFER: Inset a plug into the queue and | ||
139 | * buffer any incoming packets | ||
140 | * TCQ_PLUG_RELEASE_ONE: Dequeue packets from queue head | ||
141 | * to beginning of the next plug. | ||
142 | * TCQ_PLUG_RELEASE_INDEFINITE: Dequeue all packets from queue. | ||
143 | * Stop buffering packets until the next TCQ_PLUG_BUFFER | ||
144 | * command is received (just act as a pass-thru queue). | ||
145 | * TCQ_PLUG_LIMIT: Increase/decrease queue size | ||
146 | */ | ||
147 | int action; | ||
148 | __u32 limit; | ||
149 | }; | ||
150 | |||
130 | /* TBF section */ | 151 | /* TBF section */ |
131 | 152 | ||
132 | struct tc_tbf_qopt { | 153 | struct tc_tbf_qopt { |
diff --git a/include/linux/snmp.h b/include/linux/snmp.h index c1241c428179..8ee8af4e6da9 100644 --- a/include/linux/snmp.h +++ b/include/linux/snmp.h | |||
@@ -232,6 +232,7 @@ enum | |||
232 | LINUX_MIB_TCPTIMEWAITOVERFLOW, /* TCPTimeWaitOverflow */ | 232 | LINUX_MIB_TCPTIMEWAITOVERFLOW, /* TCPTimeWaitOverflow */ |
233 | LINUX_MIB_TCPREQQFULLDOCOOKIES, /* TCPReqQFullDoCookies */ | 233 | LINUX_MIB_TCPREQQFULLDOCOOKIES, /* TCPReqQFullDoCookies */ |
234 | LINUX_MIB_TCPREQQFULLDROP, /* TCPReqQFullDrop */ | 234 | LINUX_MIB_TCPREQQFULLDROP, /* TCPReqQFullDrop */ |
235 | LINUX_MIB_TCPRETRANSFAIL, /* TCPRetransFail */ | ||
235 | __LINUX_MIB_MAX | 236 | __LINUX_MIB_MAX |
236 | }; | 237 | }; |
237 | 238 | ||
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h index dcf35b0f303a..bbc2612cb64a 100644 --- a/include/linux/ssb/ssb.h +++ b/include/linux/ssb/ssb.h | |||
@@ -16,6 +16,12 @@ struct pcmcia_device; | |||
16 | struct ssb_bus; | 16 | struct ssb_bus; |
17 | struct ssb_driver; | 17 | struct ssb_driver; |
18 | 18 | ||
19 | struct ssb_sprom_core_pwr_info { | ||
20 | u8 itssi_2g, itssi_5g; | ||
21 | u8 maxpwr_2g, maxpwr_5gl, maxpwr_5g, maxpwr_5gh; | ||
22 | u16 pa_2g[3], pa_5gl[3], pa_5g[3], pa_5gh[3]; | ||
23 | }; | ||
24 | |||
19 | struct ssb_sprom { | 25 | struct ssb_sprom { |
20 | u8 revision; | 26 | u8 revision; |
21 | u8 il0mac[6]; /* MAC address for 802.11b/g */ | 27 | u8 il0mac[6]; /* MAC address for 802.11b/g */ |
@@ -82,6 +88,8 @@ struct ssb_sprom { | |||
82 | u16 boardflags2_hi; /* Board flags (bits 48-63) */ | 88 | u16 boardflags2_hi; /* Board flags (bits 48-63) */ |
83 | /* TODO store board flags in a single u64 */ | 89 | /* TODO store board flags in a single u64 */ |
84 | 90 | ||
91 | struct ssb_sprom_core_pwr_info core_pwr_info[4]; | ||
92 | |||
85 | /* Antenna gain values for up to 4 antennas | 93 | /* Antenna gain values for up to 4 antennas |
86 | * on each band. Values in dBm/4 (Q5.2). Negative gain means the | 94 | * on each band. Values in dBm/4 (Q5.2). Negative gain means the |
87 | * loss in the connectors is bigger than the gain. */ | 95 | * loss in the connectors is bigger than the gain. */ |
diff --git a/include/linux/ssb/ssb_regs.h b/include/linux/ssb/ssb_regs.h index c814ae6eeb22..40b1ef8595ee 100644 --- a/include/linux/ssb/ssb_regs.h +++ b/include/linux/ssb/ssb_regs.h | |||
@@ -449,6 +449,39 @@ | |||
449 | #define SSB_SPROM8_TS_SLP_OPT_CORRX 0x00B6 | 449 | #define SSB_SPROM8_TS_SLP_OPT_CORRX 0x00B6 |
450 | #define SSB_SPROM8_FOC_HWIQ_IQSWP 0x00B8 | 450 | #define SSB_SPROM8_FOC_HWIQ_IQSWP 0x00B8 |
451 | #define SSB_SPROM8_PHYCAL_TEMPDELTA 0x00BA | 451 | #define SSB_SPROM8_PHYCAL_TEMPDELTA 0x00BA |
452 | |||
453 | /* There are 4 blocks with power info sharing the same layout */ | ||
454 | #define SSB_SROM8_PWR_INFO_CORE0 0x00C0 | ||
455 | #define SSB_SROM8_PWR_INFO_CORE1 0x00E0 | ||
456 | #define SSB_SROM8_PWR_INFO_CORE2 0x0100 | ||
457 | #define SSB_SROM8_PWR_INFO_CORE3 0x0120 | ||
458 | |||
459 | #define SSB_SROM8_2G_MAXP_ITSSI 0x00 | ||
460 | #define SSB_SPROM8_2G_MAXP 0x00FF | ||
461 | #define SSB_SPROM8_2G_ITSSI 0xFF00 | ||
462 | #define SSB_SPROM8_2G_ITSSI_SHIFT 8 | ||
463 | #define SSB_SROM8_2G_PA_0 0x02 /* 2GHz power amp settings */ | ||
464 | #define SSB_SROM8_2G_PA_1 0x04 | ||
465 | #define SSB_SROM8_2G_PA_2 0x06 | ||
466 | #define SSB_SROM8_5G_MAXP_ITSSI 0x08 /* 5GHz ITSSI and 5.3GHz Max Power */ | ||
467 | #define SSB_SPROM8_5G_MAXP 0x00FF | ||
468 | #define SSB_SPROM8_5G_ITSSI 0xFF00 | ||
469 | #define SSB_SPROM8_5G_ITSSI_SHIFT 8 | ||
470 | #define SSB_SPROM8_5GHL_MAXP 0x0A /* 5.2GHz and 5.8GHz Max Power */ | ||
471 | #define SSB_SPROM8_5GH_MAXP 0x00FF | ||
472 | #define SSB_SPROM8_5GL_MAXP 0xFF00 | ||
473 | #define SSB_SPROM8_5GL_MAXP_SHIFT 8 | ||
474 | #define SSB_SROM8_5G_PA_0 0x0C /* 5.3GHz power amp settings */ | ||
475 | #define SSB_SROM8_5G_PA_1 0x0E | ||
476 | #define SSB_SROM8_5G_PA_2 0x10 | ||
477 | #define SSB_SROM8_5GL_PA_0 0x12 /* 5.2GHz power amp settings */ | ||
478 | #define SSB_SROM8_5GL_PA_1 0x14 | ||
479 | #define SSB_SROM8_5GL_PA_2 0x16 | ||
480 | #define SSB_SROM8_5GH_PA_0 0x18 /* 5.8GHz power amp settings */ | ||
481 | #define SSB_SROM8_5GH_PA_1 0x1A | ||
482 | #define SSB_SROM8_5GH_PA_2 0x1C | ||
483 | |||
484 | /* TODO: Make it deprecated */ | ||
452 | #define SSB_SPROM8_MAXP_BG 0x00C0 /* Max Power 2GHz in path 1 */ | 485 | #define SSB_SPROM8_MAXP_BG 0x00C0 /* Max Power 2GHz in path 1 */ |
453 | #define SSB_SPROM8_MAXP_BG_MASK 0x00FF /* Mask for Max Power 2GHz */ | 486 | #define SSB_SPROM8_MAXP_BG_MASK 0x00FF /* Mask for Max Power 2GHz */ |
454 | #define SSB_SPROM8_ITSSI_BG 0xFF00 /* Mask for path 1 itssi_bg */ | 487 | #define SSB_SPROM8_ITSSI_BG 0xFF00 /* Mask for path 1 itssi_bg */ |
@@ -473,6 +506,7 @@ | |||
473 | #define SSB_SPROM8_PA1HIB0 0x00D8 /* 5.8GHz power amp settings */ | 506 | #define SSB_SPROM8_PA1HIB0 0x00D8 /* 5.8GHz power amp settings */ |
474 | #define SSB_SPROM8_PA1HIB1 0x00DA | 507 | #define SSB_SPROM8_PA1HIB1 0x00DA |
475 | #define SSB_SPROM8_PA1HIB2 0x00DC | 508 | #define SSB_SPROM8_PA1HIB2 0x00DC |
509 | |||
476 | #define SSB_SPROM8_CCK2GPO 0x0140 /* CCK power offset */ | 510 | #define SSB_SPROM8_CCK2GPO 0x0140 /* CCK power offset */ |
477 | #define SSB_SPROM8_OFDM2GPO 0x0142 /* 2.4GHz OFDM power offset */ | 511 | #define SSB_SPROM8_OFDM2GPO 0x0142 /* 2.4GHz OFDM power offset */ |
478 | #define SSB_SPROM8_OFDM5GPO 0x0146 /* 5.3GHz OFDM power offset */ | 512 | #define SSB_SPROM8_OFDM5GPO 0x0146 /* 5.3GHz OFDM power offset */ |
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 46a85c9e1f25..115389e9b945 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
@@ -463,7 +463,7 @@ struct tcp_sock { | |||
463 | const struct tcp_sock_af_ops *af_specific; | 463 | const struct tcp_sock_af_ops *af_specific; |
464 | 464 | ||
465 | /* TCP MD5 Signature Option information */ | 465 | /* TCP MD5 Signature Option information */ |
466 | struct tcp_md5sig_info *md5sig_info; | 466 | struct tcp_md5sig_info __rcu *md5sig_info; |
467 | #endif | 467 | #endif |
468 | 468 | ||
469 | /* When the cookie options are generated and exchanged, then this | 469 | /* When the cookie options are generated and exchanged, then this |
@@ -486,8 +486,7 @@ struct tcp_timewait_sock { | |||
486 | u32 tw_ts_recent; | 486 | u32 tw_ts_recent; |
487 | long tw_ts_recent_stamp; | 487 | long tw_ts_recent_stamp; |
488 | #ifdef CONFIG_TCP_MD5SIG | 488 | #ifdef CONFIG_TCP_MD5SIG |
489 | u16 tw_md5_keylen; | 489 | struct tcp_md5sig_key *tw_md5_key; |
490 | u8 tw_md5_key[TCP_MD5SIG_MAXKEYLEN]; | ||
491 | #endif | 490 | #endif |
492 | /* Few sockets in timewait have cookies; in that case, then this | 491 | /* Few sockets in timewait have cookies; in that case, then this |
493 | * object holds a reference to them (tw_cookie_values->kref). | 492 | * object holds a reference to them (tw_cookie_values->kref). |
diff --git a/include/net/addrconf.h b/include/net/addrconf.h index f68dce2d8d88..757a17638b1b 100644 --- a/include/net/addrconf.h +++ b/include/net/addrconf.h | |||
@@ -160,7 +160,6 @@ extern void addrconf_prefix_rcv(struct net_device *dev, | |||
160 | extern int ipv6_sock_ac_join(struct sock *sk,int ifindex, const struct in6_addr *addr); | 160 | extern int ipv6_sock_ac_join(struct sock *sk,int ifindex, const struct in6_addr *addr); |
161 | extern int ipv6_sock_ac_drop(struct sock *sk,int ifindex, const struct in6_addr *addr); | 161 | extern int ipv6_sock_ac_drop(struct sock *sk,int ifindex, const struct in6_addr *addr); |
162 | extern void ipv6_sock_ac_close(struct sock *sk); | 162 | extern void ipv6_sock_ac_close(struct sock *sk); |
163 | extern int inet6_ac_check(struct sock *sk, const struct in6_addr *addr, int ifindex); | ||
164 | 163 | ||
165 | extern int ipv6_dev_ac_inc(struct net_device *dev, const struct in6_addr *addr); | 164 | extern int ipv6_dev_ac_inc(struct net_device *dev, const struct in6_addr *addr); |
166 | extern int __ipv6_dev_ac_dec(struct inet6_dev *idev, const struct in6_addr *addr); | 165 | extern int __ipv6_dev_ac_dec(struct inet6_dev *idev, const struct in6_addr *addr); |
diff --git a/include/net/caif/caif_hsi.h b/include/net/caif/caif_hsi.h index 8d552519ff67..6db8ecf52aa2 100644 --- a/include/net/caif/caif_hsi.h +++ b/include/net/caif/caif_hsi.h | |||
@@ -138,6 +138,7 @@ struct cfhsi { | |||
138 | u8 *rx_ptr; | 138 | u8 *rx_ptr; |
139 | u8 *tx_buf; | 139 | u8 *tx_buf; |
140 | u8 *rx_buf; | 140 | u8 *rx_buf; |
141 | u8 *rx_flip_buf; | ||
141 | spinlock_t lock; | 142 | spinlock_t lock; |
142 | int flow_off_sent; | 143 | int flow_off_sent; |
143 | u32 q_low_mark; | 144 | u32 q_low_mark; |
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index a067d30ce73e..2964205332f4 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -120,6 +120,7 @@ enum ieee80211_channel_flags { | |||
120 | * @band: band this channel belongs to. | 120 | * @band: band this channel belongs to. |
121 | * @max_antenna_gain: maximum antenna gain in dBi | 121 | * @max_antenna_gain: maximum antenna gain in dBi |
122 | * @max_power: maximum transmission power (in dBm) | 122 | * @max_power: maximum transmission power (in dBm) |
123 | * @max_reg_power: maximum regulatory transmission power (in dBm) | ||
123 | * @beacon_found: helper to regulatory code to indicate when a beacon | 124 | * @beacon_found: helper to regulatory code to indicate when a beacon |
124 | * has been found on this channel. Use regulatory_hint_found_beacon() | 125 | * has been found on this channel. Use regulatory_hint_found_beacon() |
125 | * to enable this, this is useful only on 5 GHz band. | 126 | * to enable this, this is useful only on 5 GHz band. |
@@ -133,6 +134,7 @@ struct ieee80211_channel { | |||
133 | u32 flags; | 134 | u32 flags; |
134 | int max_antenna_gain; | 135 | int max_antenna_gain; |
135 | int max_power; | 136 | int max_power; |
137 | int max_reg_power; | ||
136 | bool beacon_found; | 138 | bool beacon_found; |
137 | u32 orig_flags; | 139 | u32 orig_flags; |
138 | int orig_mag, orig_mpwr; | 140 | int orig_mag, orig_mpwr; |
@@ -796,6 +798,7 @@ struct mesh_config { | |||
796 | * mesh gate, but not necessarily using the gate announcement protocol. | 798 | * mesh gate, but not necessarily using the gate announcement protocol. |
797 | * Still keeping the same nomenclature to be in sync with the spec. */ | 799 | * Still keeping the same nomenclature to be in sync with the spec. */ |
798 | bool dot11MeshGateAnnouncementProtocol; | 800 | bool dot11MeshGateAnnouncementProtocol; |
801 | bool dot11MeshForwarding; | ||
799 | }; | 802 | }; |
800 | 803 | ||
801 | /** | 804 | /** |
@@ -1229,8 +1232,7 @@ enum wiphy_params_flags { | |||
1229 | struct cfg80211_bitrate_mask { | 1232 | struct cfg80211_bitrate_mask { |
1230 | struct { | 1233 | struct { |
1231 | u32 legacy; | 1234 | u32 legacy; |
1232 | /* TODO: add support for masking MCS rates; e.g.: */ | 1235 | u8 mcs[IEEE80211_HT_MCS_MASK_LEN]; |
1233 | /* u8 mcs[IEEE80211_HT_MCS_MASK_LEN]; */ | ||
1234 | } control[IEEE80211_NUM_BANDS]; | 1236 | } control[IEEE80211_NUM_BANDS]; |
1235 | }; | 1237 | }; |
1236 | /** | 1238 | /** |
diff --git a/include/net/genetlink.h b/include/net/genetlink.h index 7db32995ccd3..ccb68880abf5 100644 --- a/include/net/genetlink.h +++ b/include/net/genetlink.h | |||
@@ -131,35 +131,8 @@ extern void genl_unregister_mc_group(struct genl_family *family, | |||
131 | extern void genl_notify(struct sk_buff *skb, struct net *net, u32 pid, | 131 | extern void genl_notify(struct sk_buff *skb, struct net *net, u32 pid, |
132 | u32 group, struct nlmsghdr *nlh, gfp_t flags); | 132 | u32 group, struct nlmsghdr *nlh, gfp_t flags); |
133 | 133 | ||
134 | /** | 134 | void *genlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, |
135 | * genlmsg_put - Add generic netlink header to netlink message | 135 | struct genl_family *family, int flags, u8 cmd); |
136 | * @skb: socket buffer holding the message | ||
137 | * @pid: netlink pid the message is addressed to | ||
138 | * @seq: sequence number (usually the one of the sender) | ||
139 | * @family: generic netlink family | ||
140 | * @flags netlink message flags | ||
141 | * @cmd: generic netlink command | ||
142 | * | ||
143 | * Returns pointer to user specific header | ||
144 | */ | ||
145 | static inline void *genlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, | ||
146 | struct genl_family *family, int flags, u8 cmd) | ||
147 | { | ||
148 | struct nlmsghdr *nlh; | ||
149 | struct genlmsghdr *hdr; | ||
150 | |||
151 | nlh = nlmsg_put(skb, pid, seq, family->id, GENL_HDRLEN + | ||
152 | family->hdrsize, flags); | ||
153 | if (nlh == NULL) | ||
154 | return NULL; | ||
155 | |||
156 | hdr = nlmsg_data(nlh); | ||
157 | hdr->cmd = cmd; | ||
158 | hdr->version = family->version; | ||
159 | hdr->reserved = 0; | ||
160 | |||
161 | return (char *) hdr + GENL_HDRLEN; | ||
162 | } | ||
163 | 136 | ||
164 | /** | 137 | /** |
165 | * genlmsg_nlhdr - Obtain netlink header from user specified header | 138 | * genlmsg_nlhdr - Obtain netlink header from user specified header |
diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index e3e405106afe..022f772c0ebe 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h | |||
@@ -132,6 +132,7 @@ struct rtable; | |||
132 | * @tos - TOS | 132 | * @tos - TOS |
133 | * @mc_ttl - Multicasting TTL | 133 | * @mc_ttl - Multicasting TTL |
134 | * @is_icsk - is this an inet_connection_sock? | 134 | * @is_icsk - is this an inet_connection_sock? |
135 | * @uc_index - Unicast outgoing device index | ||
135 | * @mc_index - Multicast device index | 136 | * @mc_index - Multicast device index |
136 | * @mc_list - Group array | 137 | * @mc_list - Group array |
137 | * @cork - info to build ip hdr on each ip frag while socket is corked | 138 | * @cork - info to build ip hdr on each ip frag while socket is corked |
@@ -167,6 +168,7 @@ struct inet_sock { | |||
167 | transparent:1, | 168 | transparent:1, |
168 | mc_all:1, | 169 | mc_all:1, |
169 | nodefrag:1; | 170 | nodefrag:1; |
171 | int uc_index; | ||
170 | int mc_index; | 172 | int mc_index; |
171 | __be32 mc_addr; | 173 | __be32 mc_addr; |
172 | struct ip_mc_socklist __rcu *mc_list; | 174 | struct ip_mc_socklist __rcu *mc_list; |
diff --git a/include/net/iucv/af_iucv.h b/include/net/iucv/af_iucv.h index 0954ec959159..2e1d5ecc2d1b 100644 --- a/include/net/iucv/af_iucv.h +++ b/include/net/iucv/af_iucv.h | |||
@@ -113,6 +113,7 @@ struct iucv_sock { | |||
113 | spinlock_t accept_q_lock; | 113 | spinlock_t accept_q_lock; |
114 | struct sock *parent; | 114 | struct sock *parent; |
115 | struct iucv_path *path; | 115 | struct iucv_path *path; |
116 | struct net_device *hs_dev; | ||
116 | struct sk_buff_head send_skb_q; | 117 | struct sk_buff_head send_skb_q; |
117 | struct sk_buff_head backlog_skb_q; | 118 | struct sk_buff_head backlog_skb_q; |
118 | struct sock_msg_q message_q; | 119 | struct sock_msg_q message_q; |
@@ -131,6 +132,7 @@ struct iucv_sock { | |||
131 | /* iucv socket options (SOL_IUCV) */ | 132 | /* iucv socket options (SOL_IUCV) */ |
132 | #define SO_IPRMDATA_MSG 0x0080 /* send/recv IPRM_DATA msgs */ | 133 | #define SO_IPRMDATA_MSG 0x0080 /* send/recv IPRM_DATA msgs */ |
133 | #define SO_MSGLIMIT 0x1000 /* get/set IUCV MSGLIMIT */ | 134 | #define SO_MSGLIMIT 0x1000 /* get/set IUCV MSGLIMIT */ |
135 | #define SO_MSGSIZE 0x0800 /* get maximum msgsize */ | ||
134 | 136 | ||
135 | /* iucv related control messages (scm) */ | 137 | /* iucv related control messages (scm) */ |
136 | #define SCM_IUCV_TRGCLS 0x0001 /* target class control message */ | 138 | #define SCM_IUCV_TRGCLS 0x0001 /* target class control message */ |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index d49928ba5d09..520eb4c5e5a2 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -852,6 +852,21 @@ struct ieee80211_channel_switch { | |||
852 | }; | 852 | }; |
853 | 853 | ||
854 | /** | 854 | /** |
855 | * enum ieee80211_vif_flags - virtual interface flags | ||
856 | * | ||
857 | * @IEEE80211_VIF_BEACON_FILTER: the device performs beacon filtering | ||
858 | * on this virtual interface to avoid unnecessary CPU wakeups | ||
859 | * @IEEE80211_VIF_SUPPORTS_CQM_RSSI: the device can do connection quality | ||
860 | * monitoring on this virtual interface -- i.e. it can monitor | ||
861 | * connection quality related parameters, such as the RSSI level and | ||
862 | * provide notifications if configured trigger levels are reached. | ||
863 | */ | ||
864 | enum ieee80211_vif_flags { | ||
865 | IEEE80211_VIF_BEACON_FILTER = BIT(0), | ||
866 | IEEE80211_VIF_SUPPORTS_CQM_RSSI = BIT(1), | ||
867 | }; | ||
868 | |||
869 | /** | ||
855 | * struct ieee80211_vif - per-interface data | 870 | * struct ieee80211_vif - per-interface data |
856 | * | 871 | * |
857 | * Data in this structure is continually present for driver | 872 | * Data in this structure is continually present for driver |
@@ -863,6 +878,10 @@ struct ieee80211_channel_switch { | |||
863 | * @addr: address of this interface | 878 | * @addr: address of this interface |
864 | * @p2p: indicates whether this AP or STA interface is a p2p | 879 | * @p2p: indicates whether this AP or STA interface is a p2p |
865 | * interface, i.e. a GO or p2p-sta respectively | 880 | * interface, i.e. a GO or p2p-sta respectively |
881 | * @driver_flags: flags/capabilities the driver has for this interface, | ||
882 | * these need to be set (or cleared) when the interface is added | ||
883 | * or, if supported by the driver, the interface type is changed | ||
884 | * at runtime, mac80211 will never touch this field | ||
866 | * @drv_priv: data area for driver use, will always be aligned to | 885 | * @drv_priv: data area for driver use, will always be aligned to |
867 | * sizeof(void *). | 886 | * sizeof(void *). |
868 | */ | 887 | */ |
@@ -871,6 +890,7 @@ struct ieee80211_vif { | |||
871 | struct ieee80211_bss_conf bss_conf; | 890 | struct ieee80211_bss_conf bss_conf; |
872 | u8 addr[ETH_ALEN]; | 891 | u8 addr[ETH_ALEN]; |
873 | bool p2p; | 892 | bool p2p; |
893 | u32 driver_flags; | ||
874 | /* must be last */ | 894 | /* must be last */ |
875 | u8 drv_priv[0] __attribute__((__aligned__(sizeof(void *)))); | 895 | u8 drv_priv[0] __attribute__((__aligned__(sizeof(void *)))); |
876 | }; | 896 | }; |
@@ -1079,10 +1099,6 @@ enum sta_notify_cmd { | |||
1079 | * @IEEE80211_HW_MFP_CAPABLE: | 1099 | * @IEEE80211_HW_MFP_CAPABLE: |
1080 | * Hardware supports management frame protection (MFP, IEEE 802.11w). | 1100 | * Hardware supports management frame protection (MFP, IEEE 802.11w). |
1081 | * | 1101 | * |
1082 | * @IEEE80211_HW_BEACON_FILTER: | ||
1083 | * Hardware supports dropping of irrelevant beacon frames to | ||
1084 | * avoid waking up cpu. | ||
1085 | * | ||
1086 | * @IEEE80211_HW_SUPPORTS_STATIC_SMPS: | 1102 | * @IEEE80211_HW_SUPPORTS_STATIC_SMPS: |
1087 | * Hardware supports static spatial multiplexing powersave, | 1103 | * Hardware supports static spatial multiplexing powersave, |
1088 | * ie. can turn off all but one chain even on HT connections | 1104 | * ie. can turn off all but one chain even on HT connections |
@@ -1108,11 +1124,6 @@ enum sta_notify_cmd { | |||
1108 | * When this flag is set, signaling beacon-loss will cause an immediate | 1124 | * When this flag is set, signaling beacon-loss will cause an immediate |
1109 | * change to disassociated state. | 1125 | * change to disassociated state. |
1110 | * | 1126 | * |
1111 | * @IEEE80211_HW_SUPPORTS_CQM_RSSI: | ||
1112 | * Hardware can do connection quality monitoring - i.e. it can monitor | ||
1113 | * connection quality related parameters, such as the RSSI level and | ||
1114 | * provide notifications if configured trigger levels are reached. | ||
1115 | * | ||
1116 | * @IEEE80211_HW_NEED_DTIM_PERIOD: | 1127 | * @IEEE80211_HW_NEED_DTIM_PERIOD: |
1117 | * This device needs to know the DTIM period for the BSS before | 1128 | * This device needs to know the DTIM period for the BSS before |
1118 | * associating. | 1129 | * associating. |
@@ -1150,13 +1161,13 @@ enum ieee80211_hw_flags { | |||
1150 | IEEE80211_HW_PS_NULLFUNC_STACK = 1<<11, | 1161 | IEEE80211_HW_PS_NULLFUNC_STACK = 1<<11, |
1151 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS = 1<<12, | 1162 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS = 1<<12, |
1152 | IEEE80211_HW_MFP_CAPABLE = 1<<13, | 1163 | IEEE80211_HW_MFP_CAPABLE = 1<<13, |
1153 | IEEE80211_HW_BEACON_FILTER = 1<<14, | 1164 | /* reuse bit 14 */ |
1154 | IEEE80211_HW_SUPPORTS_STATIC_SMPS = 1<<15, | 1165 | IEEE80211_HW_SUPPORTS_STATIC_SMPS = 1<<15, |
1155 | IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS = 1<<16, | 1166 | IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS = 1<<16, |
1156 | IEEE80211_HW_SUPPORTS_UAPSD = 1<<17, | 1167 | IEEE80211_HW_SUPPORTS_UAPSD = 1<<17, |
1157 | IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18, | 1168 | IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18, |
1158 | IEEE80211_HW_CONNECTION_MONITOR = 1<<19, | 1169 | IEEE80211_HW_CONNECTION_MONITOR = 1<<19, |
1159 | IEEE80211_HW_SUPPORTS_CQM_RSSI = 1<<20, | 1170 | /* reuse bit 20 */ |
1160 | IEEE80211_HW_SUPPORTS_PER_STA_GTK = 1<<21, | 1171 | IEEE80211_HW_SUPPORTS_PER_STA_GTK = 1<<21, |
1161 | IEEE80211_HW_AP_LINK_PS = 1<<22, | 1172 | IEEE80211_HW_AP_LINK_PS = 1<<22, |
1162 | IEEE80211_HW_TX_AMPDU_SETUP_IN_HW = 1<<23, | 1173 | IEEE80211_HW_TX_AMPDU_SETUP_IN_HW = 1<<23, |
@@ -1446,8 +1457,8 @@ void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb); | |||
1446 | * way the host will only receive beacons where some relevant information | 1457 | * way the host will only receive beacons where some relevant information |
1447 | * (for example ERP protection or WMM settings) have changed. | 1458 | * (for example ERP protection or WMM settings) have changed. |
1448 | * | 1459 | * |
1449 | * Beacon filter support is advertised with the %IEEE80211_HW_BEACON_FILTER | 1460 | * Beacon filter support is advertised with the %IEEE80211_VIF_BEACON_FILTER |
1450 | * hardware capability. The driver needs to enable beacon filter support | 1461 | * interface capability. The driver needs to enable beacon filter support |
1451 | * whenever power save is enabled, that is %IEEE80211_CONF_PS is set. When | 1462 | * whenever power save is enabled, that is %IEEE80211_CONF_PS is set. When |
1452 | * power save is enabled, the stack will not check for beacon loss and the | 1463 | * power save is enabled, the stack will not check for beacon loss and the |
1453 | * driver needs to notify about loss of beacons with ieee80211_beacon_loss(). | 1464 | * driver needs to notify about loss of beacons with ieee80211_beacon_loss(). |
@@ -3316,7 +3327,7 @@ struct sk_buff *ieee80211_ap_probereq_get(struct ieee80211_hw *hw, | |||
3316 | * | 3327 | * |
3317 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | 3328 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. |
3318 | * | 3329 | * |
3319 | * When beacon filtering is enabled with %IEEE80211_HW_BEACON_FILTER and | 3330 | * When beacon filtering is enabled with %IEEE80211_VIF_BEACON_FILTER and |
3320 | * %IEEE80211_CONF_PS is set, the driver needs to inform whenever the | 3331 | * %IEEE80211_CONF_PS is set, the driver needs to inform whenever the |
3321 | * hardware is not receiving beacons with this function. | 3332 | * hardware is not receiving beacons with this function. |
3322 | */ | 3333 | */ |
@@ -3327,7 +3338,7 @@ void ieee80211_beacon_loss(struct ieee80211_vif *vif); | |||
3327 | * | 3338 | * |
3328 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | 3339 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. |
3329 | * | 3340 | * |
3330 | * When beacon filtering is enabled with %IEEE80211_HW_BEACON_FILTER, and | 3341 | * When beacon filtering is enabled with %IEEE80211_VIF_BEACON_FILTER, and |
3331 | * %IEEE80211_CONF_PS and %IEEE80211_HW_CONNECTION_MONITOR are set, the driver | 3342 | * %IEEE80211_CONF_PS and %IEEE80211_HW_CONNECTION_MONITOR are set, the driver |
3332 | * needs to inform if the connection to the AP has been lost. | 3343 | * needs to inform if the connection to the AP has been lost. |
3333 | * | 3344 | * |
@@ -3397,7 +3408,7 @@ void ieee80211_enable_dyn_ps(struct ieee80211_vif *vif); | |||
3397 | * @rssi_event: the RSSI trigger event type | 3408 | * @rssi_event: the RSSI trigger event type |
3398 | * @gfp: context flags | 3409 | * @gfp: context flags |
3399 | * | 3410 | * |
3400 | * When the %IEEE80211_HW_SUPPORTS_CQM_RSSI is set, and a connection quality | 3411 | * When the %IEEE80211_VIF_SUPPORTS_CQM_RSSI is set, and a connection quality |
3401 | * monitoring is configured with an rssi threshold, the driver will inform | 3412 | * monitoring is configured with an rssi threshold, the driver will inform |
3402 | * whenever the rssi level reaches the threshold. | 3413 | * whenever the rssi level reaches the threshold. |
3403 | */ | 3414 | */ |
@@ -3540,6 +3551,7 @@ struct ieee80211_tx_rate_control { | |||
3540 | bool rts, short_preamble; | 3551 | bool rts, short_preamble; |
3541 | u8 max_rate_idx; | 3552 | u8 max_rate_idx; |
3542 | u32 rate_idx_mask; | 3553 | u32 rate_idx_mask; |
3554 | u8 rate_idx_mcs_mask[IEEE80211_HT_MCS_MASK_LEN]; | ||
3543 | bool bss; | 3555 | bool bss; |
3544 | }; | 3556 | }; |
3545 | 3557 | ||
diff --git a/include/net/ndisc.h b/include/net/ndisc.h index e3133c23980e..6f9c25a76cd1 100644 --- a/include/net/ndisc.h +++ b/include/net/ndisc.h | |||
@@ -133,7 +133,6 @@ extern void ndisc_send_rs(struct net_device *dev, | |||
133 | const struct in6_addr *daddr); | 133 | const struct in6_addr *daddr); |
134 | 134 | ||
135 | extern void ndisc_send_redirect(struct sk_buff *skb, | 135 | extern void ndisc_send_redirect(struct sk_buff *skb, |
136 | struct neighbour *neigh, | ||
137 | const struct in6_addr *target); | 136 | const struct in6_addr *target); |
138 | 137 | ||
139 | extern int ndisc_mc_map(const struct in6_addr *addr, char *buf, | 138 | extern int ndisc_mc_map(const struct in6_addr *addr, char *buf, |
diff --git a/include/net/netlink.h b/include/net/netlink.h index cb1f3504687f..f394fe5d7641 100644 --- a/include/net/netlink.h +++ b/include/net/netlink.h | |||
@@ -441,41 +441,6 @@ static inline int nlmsg_report(const struct nlmsghdr *nlh) | |||
441 | nla_for_each_attr(pos, nlmsg_attrdata(nlh, hdrlen), \ | 441 | nla_for_each_attr(pos, nlmsg_attrdata(nlh, hdrlen), \ |
442 | nlmsg_attrlen(nlh, hdrlen), rem) | 442 | nlmsg_attrlen(nlh, hdrlen), rem) |
443 | 443 | ||
444 | #if 0 | ||
445 | /* FIXME: Enable once all users have been converted */ | ||
446 | |||
447 | /** | ||
448 | * __nlmsg_put - Add a new netlink message to an skb | ||
449 | * @skb: socket buffer to store message in | ||
450 | * @pid: netlink process id | ||
451 | * @seq: sequence number of message | ||
452 | * @type: message type | ||
453 | * @payload: length of message payload | ||
454 | * @flags: message flags | ||
455 | * | ||
456 | * The caller is responsible to ensure that the skb provides enough | ||
457 | * tailroom for both the netlink header and payload. | ||
458 | */ | ||
459 | static inline struct nlmsghdr *__nlmsg_put(struct sk_buff *skb, u32 pid, | ||
460 | u32 seq, int type, int payload, | ||
461 | int flags) | ||
462 | { | ||
463 | struct nlmsghdr *nlh; | ||
464 | |||
465 | nlh = (struct nlmsghdr *) skb_put(skb, nlmsg_total_size(payload)); | ||
466 | nlh->nlmsg_type = type; | ||
467 | nlh->nlmsg_len = nlmsg_msg_size(payload); | ||
468 | nlh->nlmsg_flags = flags; | ||
469 | nlh->nlmsg_pid = pid; | ||
470 | nlh->nlmsg_seq = seq; | ||
471 | |||
472 | memset((unsigned char *) nlmsg_data(nlh) + payload, 0, | ||
473 | nlmsg_padlen(payload)); | ||
474 | |||
475 | return nlh; | ||
476 | } | ||
477 | #endif | ||
478 | |||
479 | /** | 444 | /** |
480 | * nlmsg_put - Add a new netlink message to an skb | 445 | * nlmsg_put - Add a new netlink message to an skb |
481 | * @skb: socket buffer to store message in | 446 | * @skb: socket buffer to store message in |
diff --git a/include/net/nfc/nci.h b/include/net/nfc/nci.h index 2be95e2626c0..276094b91d7c 100644 --- a/include/net/nfc/nci.h +++ b/include/net/nfc/nci.h | |||
@@ -116,6 +116,11 @@ | |||
116 | #define NCI_DISC_MAP_MODE_POLL 0x01 | 116 | #define NCI_DISC_MAP_MODE_POLL 0x01 |
117 | #define NCI_DISC_MAP_MODE_LISTEN 0x02 | 117 | #define NCI_DISC_MAP_MODE_LISTEN 0x02 |
118 | 118 | ||
119 | /* NCI Discover Notification Type */ | ||
120 | #define NCI_DISCOVER_NTF_TYPE_LAST 0x00 | ||
121 | #define NCI_DISCOVER_NTF_TYPE_LAST_NFCC 0x01 | ||
122 | #define NCI_DISCOVER_NTF_TYPE_MORE 0x02 | ||
123 | |||
119 | /* NCI Deactivation Type */ | 124 | /* NCI Deactivation Type */ |
120 | #define NCI_DEACTIVATE_TYPE_IDLE_MODE 0x00 | 125 | #define NCI_DEACTIVATE_TYPE_IDLE_MODE 0x00 |
121 | #define NCI_DEACTIVATE_TYPE_SLEEP_MODE 0x01 | 126 | #define NCI_DEACTIVATE_TYPE_SLEEP_MODE 0x01 |
@@ -207,6 +212,13 @@ struct nci_rf_disc_cmd { | |||
207 | struct disc_config disc_configs[NCI_MAX_NUM_RF_CONFIGS]; | 212 | struct disc_config disc_configs[NCI_MAX_NUM_RF_CONFIGS]; |
208 | } __packed; | 213 | } __packed; |
209 | 214 | ||
215 | #define NCI_OP_RF_DISCOVER_SELECT_CMD nci_opcode_pack(NCI_GID_RF_MGMT, 0x04) | ||
216 | struct nci_rf_discover_select_cmd { | ||
217 | __u8 rf_discovery_id; | ||
218 | __u8 rf_protocol; | ||
219 | __u8 rf_interface; | ||
220 | } __packed; | ||
221 | |||
210 | #define NCI_OP_RF_DEACTIVATE_CMD nci_opcode_pack(NCI_GID_RF_MGMT, 0x06) | 222 | #define NCI_OP_RF_DEACTIVATE_CMD nci_opcode_pack(NCI_GID_RF_MGMT, 0x06) |
211 | struct nci_rf_deactivate_cmd { | 223 | struct nci_rf_deactivate_cmd { |
212 | __u8 type; | 224 | __u8 type; |
@@ -244,6 +256,8 @@ struct nci_core_init_rsp_2 { | |||
244 | 256 | ||
245 | #define NCI_OP_RF_DISCOVER_RSP nci_opcode_pack(NCI_GID_RF_MGMT, 0x03) | 257 | #define NCI_OP_RF_DISCOVER_RSP nci_opcode_pack(NCI_GID_RF_MGMT, 0x03) |
246 | 258 | ||
259 | #define NCI_OP_RF_DISCOVER_SELECT_RSP nci_opcode_pack(NCI_GID_RF_MGMT, 0x04) | ||
260 | |||
247 | #define NCI_OP_RF_DEACTIVATE_RSP nci_opcode_pack(NCI_GID_RF_MGMT, 0x06) | 261 | #define NCI_OP_RF_DEACTIVATE_RSP nci_opcode_pack(NCI_GID_RF_MGMT, 0x06) |
248 | 262 | ||
249 | /* --------------------------- */ | 263 | /* --------------------------- */ |
@@ -260,13 +274,15 @@ struct nci_core_conn_credit_ntf { | |||
260 | struct conn_credit_entry conn_entries[NCI_MAX_NUM_CONN]; | 274 | struct conn_credit_entry conn_entries[NCI_MAX_NUM_CONN]; |
261 | } __packed; | 275 | } __packed; |
262 | 276 | ||
277 | #define NCI_OP_CORE_GENERIC_ERROR_NTF nci_opcode_pack(NCI_GID_CORE, 0x07) | ||
278 | |||
263 | #define NCI_OP_CORE_INTF_ERROR_NTF nci_opcode_pack(NCI_GID_CORE, 0x08) | 279 | #define NCI_OP_CORE_INTF_ERROR_NTF nci_opcode_pack(NCI_GID_CORE, 0x08) |
264 | struct nci_core_intf_error_ntf { | 280 | struct nci_core_intf_error_ntf { |
265 | __u8 status; | 281 | __u8 status; |
266 | __u8 conn_id; | 282 | __u8 conn_id; |
267 | } __packed; | 283 | } __packed; |
268 | 284 | ||
269 | #define NCI_OP_RF_INTF_ACTIVATED_NTF nci_opcode_pack(NCI_GID_RF_MGMT, 0x05) | 285 | #define NCI_OP_RF_DISCOVER_NTF nci_opcode_pack(NCI_GID_RF_MGMT, 0x03) |
270 | struct rf_tech_specific_params_nfca_poll { | 286 | struct rf_tech_specific_params_nfca_poll { |
271 | __u16 sens_res; | 287 | __u16 sens_res; |
272 | __u8 nfcid1_len; /* 0, 4, 7, or 10 Bytes */ | 288 | __u8 nfcid1_len; /* 0, 4, 7, or 10 Bytes */ |
@@ -275,11 +291,43 @@ struct rf_tech_specific_params_nfca_poll { | |||
275 | __u8 sel_res; | 291 | __u8 sel_res; |
276 | } __packed; | 292 | } __packed; |
277 | 293 | ||
294 | struct rf_tech_specific_params_nfcb_poll { | ||
295 | __u8 sensb_res_len; | ||
296 | __u8 sensb_res[12]; /* 11 or 12 Bytes */ | ||
297 | } __packed; | ||
298 | |||
299 | struct rf_tech_specific_params_nfcf_poll { | ||
300 | __u8 bit_rate; | ||
301 | __u8 sensf_res_len; | ||
302 | __u8 sensf_res[18]; /* 16 or 18 Bytes */ | ||
303 | } __packed; | ||
304 | |||
305 | struct nci_rf_discover_ntf { | ||
306 | __u8 rf_discovery_id; | ||
307 | __u8 rf_protocol; | ||
308 | __u8 rf_tech_and_mode; | ||
309 | __u8 rf_tech_specific_params_len; | ||
310 | |||
311 | union { | ||
312 | struct rf_tech_specific_params_nfca_poll nfca_poll; | ||
313 | struct rf_tech_specific_params_nfcb_poll nfcb_poll; | ||
314 | struct rf_tech_specific_params_nfcf_poll nfcf_poll; | ||
315 | } rf_tech_specific_params; | ||
316 | |||
317 | __u8 ntf_type; | ||
318 | } __packed; | ||
319 | |||
320 | #define NCI_OP_RF_INTF_ACTIVATED_NTF nci_opcode_pack(NCI_GID_RF_MGMT, 0x05) | ||
278 | struct activation_params_nfca_poll_iso_dep { | 321 | struct activation_params_nfca_poll_iso_dep { |
279 | __u8 rats_res_len; | 322 | __u8 rats_res_len; |
280 | __u8 rats_res[20]; | 323 | __u8 rats_res[20]; |
281 | }; | 324 | }; |
282 | 325 | ||
326 | struct activation_params_nfcb_poll_iso_dep { | ||
327 | __u8 attrib_res_len; | ||
328 | __u8 attrib_res[50]; | ||
329 | }; | ||
330 | |||
283 | struct nci_rf_intf_activated_ntf { | 331 | struct nci_rf_intf_activated_ntf { |
284 | __u8 rf_discovery_id; | 332 | __u8 rf_discovery_id; |
285 | __u8 rf_interface; | 333 | __u8 rf_interface; |
@@ -291,6 +339,8 @@ struct nci_rf_intf_activated_ntf { | |||
291 | 339 | ||
292 | union { | 340 | union { |
293 | struct rf_tech_specific_params_nfca_poll nfca_poll; | 341 | struct rf_tech_specific_params_nfca_poll nfca_poll; |
342 | struct rf_tech_specific_params_nfcb_poll nfcb_poll; | ||
343 | struct rf_tech_specific_params_nfcf_poll nfcf_poll; | ||
294 | } rf_tech_specific_params; | 344 | } rf_tech_specific_params; |
295 | 345 | ||
296 | __u8 data_exch_rf_tech_and_mode; | 346 | __u8 data_exch_rf_tech_and_mode; |
@@ -300,6 +350,7 @@ struct nci_rf_intf_activated_ntf { | |||
300 | 350 | ||
301 | union { | 351 | union { |
302 | struct activation_params_nfca_poll_iso_dep nfca_poll_iso_dep; | 352 | struct activation_params_nfca_poll_iso_dep nfca_poll_iso_dep; |
353 | struct activation_params_nfcb_poll_iso_dep nfcb_poll_iso_dep; | ||
303 | } activation_params; | 354 | } activation_params; |
304 | 355 | ||
305 | } __packed; | 356 | } __packed; |
diff --git a/include/net/nfc/nci_core.h b/include/net/nfc/nci_core.h index bccd89e9d4c2..86fee8b5c65c 100644 --- a/include/net/nfc/nci_core.h +++ b/include/net/nfc/nci_core.h | |||
@@ -34,21 +34,31 @@ | |||
34 | #include <net/nfc/nfc.h> | 34 | #include <net/nfc/nfc.h> |
35 | #include <net/nfc/nci.h> | 35 | #include <net/nfc/nci.h> |
36 | 36 | ||
37 | /* NCI device state */ | 37 | /* NCI device flags */ |
38 | enum { | 38 | enum nci_flag { |
39 | NCI_INIT, | 39 | NCI_INIT, |
40 | NCI_UP, | 40 | NCI_UP, |
41 | NCI_DATA_EXCHANGE, | ||
42 | NCI_DATA_EXCHANGE_TO, | ||
43 | }; | ||
44 | |||
45 | /* NCI device states */ | ||
46 | enum nci_state { | ||
47 | NCI_IDLE, | ||
41 | NCI_DISCOVERY, | 48 | NCI_DISCOVERY, |
49 | NCI_W4_ALL_DISCOVERIES, | ||
50 | NCI_W4_HOST_SELECT, | ||
42 | NCI_POLL_ACTIVE, | 51 | NCI_POLL_ACTIVE, |
43 | NCI_DATA_EXCHANGE, | ||
44 | }; | 52 | }; |
45 | 53 | ||
46 | /* NCI timeouts */ | 54 | /* NCI timeouts */ |
47 | #define NCI_RESET_TIMEOUT 5000 | 55 | #define NCI_RESET_TIMEOUT 5000 |
48 | #define NCI_INIT_TIMEOUT 5000 | 56 | #define NCI_INIT_TIMEOUT 5000 |
49 | #define NCI_RF_DISC_TIMEOUT 5000 | 57 | #define NCI_RF_DISC_TIMEOUT 5000 |
50 | #define NCI_RF_DEACTIVATE_TIMEOUT 5000 | 58 | #define NCI_RF_DISC_SELECT_TIMEOUT 5000 |
59 | #define NCI_RF_DEACTIVATE_TIMEOUT 30000 | ||
51 | #define NCI_CMD_TIMEOUT 5000 | 60 | #define NCI_CMD_TIMEOUT 5000 |
61 | #define NCI_DATA_TIMEOUT 700 | ||
52 | 62 | ||
53 | struct nci_dev; | 63 | struct nci_dev; |
54 | 64 | ||
@@ -59,6 +69,7 @@ struct nci_ops { | |||
59 | }; | 69 | }; |
60 | 70 | ||
61 | #define NCI_MAX_SUPPORTED_RF_INTERFACES 4 | 71 | #define NCI_MAX_SUPPORTED_RF_INTERFACES 4 |
72 | #define NCI_MAX_DISCOVERED_TARGETS 10 | ||
62 | 73 | ||
63 | /* NCI Core structures */ | 74 | /* NCI Core structures */ |
64 | struct nci_dev { | 75 | struct nci_dev { |
@@ -68,12 +79,14 @@ struct nci_dev { | |||
68 | int tx_headroom; | 79 | int tx_headroom; |
69 | int tx_tailroom; | 80 | int tx_tailroom; |
70 | 81 | ||
82 | atomic_t state; | ||
71 | unsigned long flags; | 83 | unsigned long flags; |
72 | 84 | ||
73 | atomic_t cmd_cnt; | 85 | atomic_t cmd_cnt; |
74 | atomic_t credits_cnt; | 86 | atomic_t credits_cnt; |
75 | 87 | ||
76 | struct timer_list cmd_timer; | 88 | struct timer_list cmd_timer; |
89 | struct timer_list data_timer; | ||
77 | 90 | ||
78 | struct workqueue_struct *cmd_wq; | 91 | struct workqueue_struct *cmd_wq; |
79 | struct work_struct cmd_work; | 92 | struct work_struct cmd_work; |
@@ -96,9 +109,11 @@ struct nci_dev { | |||
96 | void *driver_data; | 109 | void *driver_data; |
97 | 110 | ||
98 | __u32 poll_prots; | 111 | __u32 poll_prots; |
99 | __u32 target_available_prots; | ||
100 | __u32 target_active_prot; | 112 | __u32 target_active_prot; |
101 | 113 | ||
114 | struct nfc_target targets[NCI_MAX_DISCOVERED_TARGETS]; | ||
115 | int n_targets; | ||
116 | |||
102 | /* received during NCI_OP_CORE_RESET_RSP */ | 117 | /* received during NCI_OP_CORE_RESET_RSP */ |
103 | __u8 nci_ver; | 118 | __u8 nci_ver; |
104 | 119 | ||
@@ -169,6 +184,7 @@ int nci_send_cmd(struct nci_dev *ndev, __u16 opcode, __u8 plen, void *payload); | |||
169 | int nci_send_data(struct nci_dev *ndev, __u8 conn_id, struct sk_buff *skb); | 184 | int nci_send_data(struct nci_dev *ndev, __u8 conn_id, struct sk_buff *skb); |
170 | void nci_data_exchange_complete(struct nci_dev *ndev, struct sk_buff *skb, | 185 | void nci_data_exchange_complete(struct nci_dev *ndev, struct sk_buff *skb, |
171 | int err); | 186 | int err); |
187 | void nci_clear_target_list(struct nci_dev *ndev); | ||
172 | 188 | ||
173 | /* ----- NCI requests ----- */ | 189 | /* ----- NCI requests ----- */ |
174 | #define NCI_REQ_DONE 0 | 190 | #define NCI_REQ_DONE 0 |
diff --git a/include/net/nfc/nfc.h b/include/net/nfc/nfc.h index 8696b773a695..d253278e5a96 100644 --- a/include/net/nfc/nfc.h +++ b/include/net/nfc/nfc.h | |||
@@ -24,6 +24,7 @@ | |||
24 | #ifndef __NET_NFC_H | 24 | #ifndef __NET_NFC_H |
25 | #define __NET_NFC_H | 25 | #define __NET_NFC_H |
26 | 26 | ||
27 | #include <linux/nfc.h> | ||
27 | #include <linux/device.h> | 28 | #include <linux/device.h> |
28 | #include <linux/skbuff.h> | 29 | #include <linux/skbuff.h> |
29 | 30 | ||
@@ -65,7 +66,6 @@ struct nfc_ops { | |||
65 | 66 | ||
66 | #define NFC_TARGET_IDX_ANY -1 | 67 | #define NFC_TARGET_IDX_ANY -1 |
67 | #define NFC_MAX_GT_LEN 48 | 68 | #define NFC_MAX_GT_LEN 48 |
68 | #define NFC_MAX_NFCID1_LEN 10 | ||
69 | 69 | ||
70 | struct nfc_target { | 70 | struct nfc_target { |
71 | u32 idx; | 71 | u32 idx; |
@@ -73,7 +73,11 @@ struct nfc_target { | |||
73 | u16 sens_res; | 73 | u16 sens_res; |
74 | u8 sel_res; | 74 | u8 sel_res; |
75 | u8 nfcid1_len; | 75 | u8 nfcid1_len; |
76 | u8 nfcid1[NFC_MAX_NFCID1_LEN]; | 76 | u8 nfcid1[NFC_NFCID1_MAXSIZE]; |
77 | u8 sensb_res_len; | ||
78 | u8 sensb_res[NFC_SENSB_RES_MAXSIZE]; | ||
79 | u8 sensf_res_len; | ||
80 | u8 sensf_res[NFC_SENSF_RES_MAXSIZE]; | ||
77 | }; | 81 | }; |
78 | 82 | ||
79 | struct nfc_genl_data { | 83 | struct nfc_genl_data { |
@@ -83,7 +87,6 @@ struct nfc_genl_data { | |||
83 | 87 | ||
84 | struct nfc_dev { | 88 | struct nfc_dev { |
85 | unsigned idx; | 89 | unsigned idx; |
86 | unsigned target_idx; | ||
87 | struct nfc_target *targets; | 90 | struct nfc_target *targets; |
88 | int n_targets; | 91 | int n_targets; |
89 | int targets_generation; | 92 | int targets_generation; |
diff --git a/include/net/tcp.h b/include/net/tcp.h index 42c29bfbcee3..6b2acfce4cfd 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -1138,35 +1138,27 @@ static inline void tcp_clear_all_retrans_hints(struct tcp_sock *tp) | |||
1138 | /* MD5 Signature */ | 1138 | /* MD5 Signature */ |
1139 | struct crypto_hash; | 1139 | struct crypto_hash; |
1140 | 1140 | ||
1141 | union tcp_md5_addr { | ||
1142 | struct in_addr a4; | ||
1143 | #if IS_ENABLED(CONFIG_IPV6) | ||
1144 | struct in6_addr a6; | ||
1145 | #endif | ||
1146 | }; | ||
1147 | |||
1141 | /* - key database */ | 1148 | /* - key database */ |
1142 | struct tcp_md5sig_key { | 1149 | struct tcp_md5sig_key { |
1143 | u8 *key; | 1150 | struct hlist_node node; |
1144 | u8 keylen; | 1151 | u8 keylen; |
1145 | }; | 1152 | u8 family; /* AF_INET or AF_INET6 */ |
1146 | 1153 | union tcp_md5_addr addr; | |
1147 | struct tcp4_md5sig_key { | 1154 | u8 key[TCP_MD5SIG_MAXKEYLEN]; |
1148 | struct tcp_md5sig_key base; | 1155 | struct rcu_head rcu; |
1149 | __be32 addr; | ||
1150 | }; | ||
1151 | |||
1152 | struct tcp6_md5sig_key { | ||
1153 | struct tcp_md5sig_key base; | ||
1154 | #if 0 | ||
1155 | u32 scope_id; /* XXX */ | ||
1156 | #endif | ||
1157 | struct in6_addr addr; | ||
1158 | }; | 1156 | }; |
1159 | 1157 | ||
1160 | /* - sock block */ | 1158 | /* - sock block */ |
1161 | struct tcp_md5sig_info { | 1159 | struct tcp_md5sig_info { |
1162 | struct tcp4_md5sig_key *keys4; | 1160 | struct hlist_head head; |
1163 | #if IS_ENABLED(CONFIG_IPV6) | 1161 | struct rcu_head rcu; |
1164 | struct tcp6_md5sig_key *keys6; | ||
1165 | u32 entries6; | ||
1166 | u32 alloced6; | ||
1167 | #endif | ||
1168 | u32 entries4; | ||
1169 | u32 alloced4; | ||
1170 | }; | 1162 | }; |
1171 | 1163 | ||
1172 | /* - pseudo header */ | 1164 | /* - pseudo header */ |
@@ -1203,19 +1195,25 @@ extern int tcp_v4_md5_hash_skb(char *md5_hash, struct tcp_md5sig_key *key, | |||
1203 | const struct sock *sk, | 1195 | const struct sock *sk, |
1204 | const struct request_sock *req, | 1196 | const struct request_sock *req, |
1205 | const struct sk_buff *skb); | 1197 | const struct sk_buff *skb); |
1206 | extern struct tcp_md5sig_key * tcp_v4_md5_lookup(struct sock *sk, | 1198 | extern int tcp_md5_do_add(struct sock *sk, const union tcp_md5_addr *addr, |
1207 | struct sock *addr_sk); | 1199 | int family, const u8 *newkey, |
1208 | extern int tcp_v4_md5_do_add(struct sock *sk, __be32 addr, u8 *newkey, | 1200 | u8 newkeylen, gfp_t gfp); |
1209 | u8 newkeylen); | 1201 | extern int tcp_md5_do_del(struct sock *sk, const union tcp_md5_addr *addr, |
1210 | extern int tcp_v4_md5_do_del(struct sock *sk, __be32 addr); | 1202 | int family); |
1203 | extern struct tcp_md5sig_key *tcp_v4_md5_lookup(struct sock *sk, | ||
1204 | struct sock *addr_sk); | ||
1211 | 1205 | ||
1212 | #ifdef CONFIG_TCP_MD5SIG | 1206 | #ifdef CONFIG_TCP_MD5SIG |
1213 | #define tcp_twsk_md5_key(twsk) ((twsk)->tw_md5_keylen ? \ | 1207 | extern struct tcp_md5sig_key *tcp_md5_do_lookup(struct sock *sk, |
1214 | &(struct tcp_md5sig_key) { \ | 1208 | const union tcp_md5_addr *addr, int family); |
1215 | .key = (twsk)->tw_md5_key, \ | 1209 | #define tcp_twsk_md5_key(twsk) ((twsk)->tw_md5_key) |
1216 | .keylen = (twsk)->tw_md5_keylen, \ | ||
1217 | } : NULL) | ||
1218 | #else | 1210 | #else |
1211 | static inline struct tcp_md5sig_key *tcp_md5_do_lookup(struct sock *sk, | ||
1212 | const union tcp_md5_addr *addr, | ||
1213 | int family) | ||
1214 | { | ||
1215 | return NULL; | ||
1216 | } | ||
1219 | #define tcp_twsk_md5_key(twsk) NULL | 1217 | #define tcp_twsk_md5_key(twsk) NULL |
1220 | #endif | 1218 | #endif |
1221 | 1219 | ||
@@ -1470,10 +1468,6 @@ struct tcp_sock_af_ops { | |||
1470 | const struct sock *sk, | 1468 | const struct sock *sk, |
1471 | const struct request_sock *req, | 1469 | const struct request_sock *req, |
1472 | const struct sk_buff *skb); | 1470 | const struct sk_buff *skb); |
1473 | int (*md5_add) (struct sock *sk, | ||
1474 | struct sock *addr_sk, | ||
1475 | u8 *newkey, | ||
1476 | u8 len); | ||
1477 | int (*md5_parse) (struct sock *sk, | 1471 | int (*md5_parse) (struct sock *sk, |
1478 | char __user *optval, | 1472 | char __user *optval, |
1479 | int optlen); | 1473 | int optlen); |