Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec
authorDavid S. Miller <davem@davemloft.net>
Fri, 19 Jun 2020 20:03:47 +0000 (13:03 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 19 Jun 2020 20:03:47 +0000 (13:03 -0700)
Steffen Klassert says:

====================
pull request (net): ipsec 2020-06-19

1) Fix double ESP trailer insertion in IPsec crypto offload if
   netif_xmit_frozen_or_stopped is true. From Huy Nguyen.

2) Merge fixup for "remove output_finish indirection from
   xfrm_state_afinfo". From Stephen Rothwell.

3) Select CRYPTO_SEQIV for ESP as this is needed for GCM and several
   other encryption algorithms. Also modernize the crypto algorithm
   selections for ESP and AH, remove those that are maked as "MUST NOT"
   and add those that are marked as "MUST" be implemented in RFC 8221.
   From Eric Biggers.

Please note the merge conflict between commit:

a7f7f6248d97 ("treewide: replace '---help---' in Kconfig files with 'help'")

from Linus' tree and commits:

7d4e39195925 ("esp, ah: consolidate the crypto algorithm selections")
be01369859b8 ("esp, ah: modernize the crypto algorithm selections")

from the ipsec tree.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
1  2 
net/ipv4/Kconfig
net/ipv6/Kconfig
net/xfrm/Kconfig

diff --combined net/ipv4/Kconfig
index 6ecbb0ced1776934de4caeb55b777ff7331b701b,dc9dfaef77e5a405e7ea1b29e0a1c2195ac117a4..e64e59b536d30bb7ce6a4ff8e5eaca4579b08f1c
@@@ -14,7 -14,7 +14,7 @@@ config IP_MULTICAS
  
  config IP_ADVANCED_ROUTER
        bool "IP: advanced router"
 -      ---help---
 +      help
          If you intend to run your Linux box mostly as a router, i.e. as a
          computer that forwards and redistributes network packets, say Y; you
          will then be presented with several options that allow more precise
@@@ -56,7 -56,7 +56,7 @@@
  config IP_FIB_TRIE_STATS
        bool "FIB TRIE statistics"
        depends on IP_ADVANCED_ROUTER
 -      ---help---
 +      help
          Keep track of statistics on structure of FIB TRIE table.
          Useful for testing and measuring TRIE performance.
  
@@@ -64,7 -64,7 +64,7 @@@ config IP_MULTIPLE_TABLE
        bool "IP: policy routing"
        depends on IP_ADVANCED_ROUTER
        select FIB_RULES
 -      ---help---
 +      help
          Normally, a router decides what to do with a received packet based
          solely on the packet's final destination address. If you say Y here,
          the Linux router will also be able to take the packet's source
@@@ -117,7 -117,7 +117,7 @@@ config IP_PN
  config IP_PNP_DHCP
        bool "IP: DHCP support"
        depends on IP_PNP
 -      ---help---
 +      help
          If you want your Linux box to mount its whole root file system (the
          one containing the directory /) from some other computer over the
          net via NFS and you want the IP address of your computer to be
  config IP_PNP_BOOTP
        bool "IP: BOOTP support"
        depends on IP_PNP
 -      ---help---
 +      help
          If you want your Linux box to mount its whole root file system (the
          one containing the directory /) from some other computer over the
          net via NFS and you want the IP address of your computer to be
@@@ -163,7 -163,7 +163,7 @@@ config NET_IPI
        tristate "IP: tunneling"
        select INET_TUNNEL
        select NET_IP_TUNNEL
 -      ---help---
 +      help
          Tunneling means encapsulating data of one protocol type within
          another protocol and sending it over a channel that understands the
          encapsulating protocol. This particular tunneling driver implements
@@@ -267,7 -267,7 +267,7 @@@ config IP_PIMSM_V
  
  config SYN_COOKIES
        bool "IP: TCP syncookie support"
 -      ---help---
 +      help
          Normal TCP/IP networking is open to an attack known as "SYN
          flooding". This denial-of-service attack prevents legitimate remote
          users from being able to connect to your computer during an ongoing
@@@ -307,7 -307,7 +307,7 @@@ config NET_IPVT
        select INET_TUNNEL
        select NET_IP_TUNNEL
        select XFRM
 -      ---help---
 +      help
          Tunneling means encapsulating data of one protocol type within
          another protocol and sending it over a channel that understands the
          encapsulating protocol. This can be used with xfrm mode tunnel to give
@@@ -323,7 -323,7 +323,7 @@@ config NET_FO
        tristate "IP: Foo (IP protocols) over UDP"
        select XFRM
        select NET_UDP_TUNNEL
 -      ---help---
 +      help
          Foo over UDP allows any IP protocol to be directly encapsulated
          over UDP include tunnels (IPIP, GRE, SIT). By encapsulating in UDP
          network mechanisms and optimizations for UDP (such as ECMP
@@@ -333,36 -333,38 +333,38 @@@ config NET_FOU_IP_TUNNEL
        bool "IP: FOU encapsulation of IP tunnels"
        depends on NET_IPIP || NET_IPGRE || IPV6_SIT
        select NET_FOU
 -      ---help---
 +      help
          Allow configuration of FOU or GUE encapsulation for IP tunnels.
          When this option is enabled IP tunnels can be configured to use
          FOU or GUE encapsulation.
  
  config INET_AH
        tristate "IP: AH transformation"
-       select XFRM_ALGO
-       select CRYPTO
-       select CRYPTO_HMAC
-       select CRYPTO_MD5
-       select CRYPTO_SHA1
+       select XFRM_AH
 -      ---help---
 +      help
-         Support for IPsec AH.
+         Support for IPsec AH (Authentication Header).
+         AH can be used with various authentication algorithms.  Besides
+         enabling AH support itself, this option enables the generic
+         implementations of the algorithms that RFC 8221 lists as MUST be
+         implemented.  If you need any other algorithms, you'll need to enable
+         them in the crypto API.  You should also enable accelerated
+         implementations of any needed algorithms when available.
  
          If unsure, say Y.
  
  config INET_ESP
        tristate "IP: ESP transformation"
-       select XFRM_ALGO
-       select CRYPTO
-       select CRYPTO_AUTHENC
-       select CRYPTO_HMAC
-       select CRYPTO_MD5
-       select CRYPTO_CBC
-       select CRYPTO_SHA1
-       select CRYPTO_DES
-       select CRYPTO_ECHAINIV
+       select XFRM_ESP
 -      ---help---
 +      help
-         Support for IPsec ESP.
+         Support for IPsec ESP (Encapsulating Security Payload).
+         ESP can be used with various encryption and authentication algorithms.
+         Besides enabling ESP support itself, this option enables the generic
+         implementations of the algorithms that RFC 8221 lists as MUST be
+         implemented.  If you need any other algorithms, you'll need to enable
+         them in the crypto API.  You should also enable accelerated
+         implementations of any needed algorithms when available.
  
          If unsure, say Y.
  
@@@ -371,7 -373,7 +373,7 @@@ config INET_ESP_OFFLOA
        depends on INET_ESP
        select XFRM_OFFLOAD
        default n
 -      ---help---
 +      help
          Support for ESP transformation offload. This makes sense
          only if this system really does IPsec and want to do it
          with high throughput. A typical desktop system does not
@@@ -395,7 -397,7 +397,7 @@@ config INET_IPCOM
        tristate "IP: IPComp transformation"
        select INET_XFRM_TUNNEL
        select XFRM_IPCOMP
 -      ---help---
 +      help
          Support for IP Payload Compression Protocol (IPComp) (RFC3173),
          typically needed for IPsec.
  
@@@ -413,7 -415,7 +415,7 @@@ config INET_TUNNE
  config INET_DIAG
        tristate "INET: socket monitoring interface"
        default y
 -      ---help---
 +      help
          Support for INET (TCP, DCCP, etc) socket monitoring interface used by
          native Linux tools such as ss. ss is included in iproute2, currently
          downloadable at:
@@@ -430,7 -432,7 +432,7 @@@ config INET_UDP_DIA
        tristate "UDP: socket monitoring interface"
        depends on INET_DIAG && (IPV6 || IPV6=n)
        default n
 -      ---help---
 +      help
          Support for UDP socket monitoring interface used by the ss tool.
          If unsure, say Y.
  
@@@ -438,7 -440,7 +440,7 @@@ config INET_RAW_DIA
        tristate "RAW: socket monitoring interface"
        depends on INET_DIAG && (IPV6 || IPV6=n)
        default n
 -      ---help---
 +      help
          Support for RAW socket monitoring interface used by the ss tool.
          If unsure, say Y.
  
@@@ -446,7 -448,7 +448,7 @@@ config INET_DIAG_DESTRO
        bool "INET: allow privileged process to administratively close sockets"
        depends on INET_DIAG
        default n
 -      ---help---
 +      help
          Provides a SOCK_DESTROY operation that allows privileged processes
          (e.g., a connection manager or a network administration tool such as
          ss) to close sockets opened by other processes. Closing a socket in
  
  menuconfig TCP_CONG_ADVANCED
        bool "TCP: advanced congestion control"
 -      ---help---
 +      help
          Support for selection of various TCP congestion control
          modules.
  
@@@ -471,7 -473,7 +473,7 @@@ if TCP_CONG_ADVANCE
  config TCP_CONG_BIC
        tristate "Binary Increase Congestion (BIC) control"
        default m
 -      ---help---
 +      help
          BIC-TCP is a sender-side only change that ensures a linear RTT
          fairness under large windows while offering both scalability and
          bounded TCP-friendliness. The protocol combines two schemes
  config TCP_CONG_CUBIC
        tristate "CUBIC TCP"
        default y
 -      ---help---
 +      help
          This is version 2.0 of BIC-TCP which uses a cubic growth function
          among other techniques.
          See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf
  config TCP_CONG_WESTWOOD
        tristate "TCP Westwood+"
        default m
 -      ---help---
 +      help
          TCP Westwood+ is a sender-side only modification of the TCP Reno
          protocol stack that optimizes the performance of TCP congestion
          control. It is based on end-to-end bandwidth estimation to set
  config TCP_CONG_HTCP
        tristate "H-TCP"
        default m
 -      ---help---
 +      help
          H-TCP is a send-side only modifications of the TCP Reno
          protocol stack that optimizes the performance of TCP
          congestion control for high speed network links. It uses a
  config TCP_CONG_HSTCP
        tristate "High Speed TCP"
        default n
 -      ---help---
 +      help
          Sally Floyd's High Speed TCP (RFC 3649) congestion control.
          A modification to TCP's congestion control mechanism for use
          with large congestion windows. A table indicates how much to
  config TCP_CONG_HYBLA
        tristate "TCP-Hybla congestion control algorithm"
        default n
 -      ---help---
 +      help
          TCP-Hybla is a sender-side only change that eliminates penalization of
          long-RTT, large-bandwidth connections, like when satellite legs are
          involved, especially when sharing a common bottleneck with normal
  config TCP_CONG_VEGAS
        tristate "TCP Vegas"
        default n
 -      ---help---
 +      help
          TCP Vegas is a sender-side only change to TCP that anticipates
          the onset of congestion by estimating the bandwidth. TCP Vegas
          adjusts the sending rate by modifying the congestion
  config TCP_CONG_NV
        tristate "TCP NV"
        default n
 -      ---help---
 +      help
          TCP NV is a follow up to TCP Vegas. It has been modified to deal with
          10G networks, measurement noise introduced by LRO, GRO and interrupt
          coalescence. In addition, it will decrease its cwnd multiplicatively
  config TCP_CONG_SCALABLE
        tristate "Scalable TCP"
        default n
 -      ---help---
 +      help
          Scalable TCP is a sender-side only change to TCP which uses a
          MIMD congestion control algorithm which has some nice scaling
          properties, though is known to have fairness issues.
  config TCP_CONG_LP
        tristate "TCP Low Priority"
        default n
 -      ---help---
 +      help
          TCP Low Priority (TCP-LP), a distributed algorithm whose goal is
          to utilize only the excess network bandwidth as compared to the
          ``fair share`` of bandwidth as targeted by TCP.
  config TCP_CONG_VENO
        tristate "TCP Veno"
        default n
 -      ---help---
 +      help
          TCP Veno is a sender-side only enhancement of TCP to obtain better
          throughput over wireless networks. TCP Veno makes use of state
          distinguishing to circumvent the difficult judgment of the packet loss
@@@ -593,7 -595,7 +595,7 @@@ config TCP_CONG_YEA
        tristate "YeAH TCP"
        select TCP_CONG_VEGAS
        default n
 -      ---help---
 +      help
          YeAH-TCP is a sender-side high-speed enabled TCP congestion control
          algorithm, which uses a mixed loss/delay approach to compute the
          congestion window. It's design goals target high efficiency,
  config TCP_CONG_ILLINOIS
        tristate "TCP Illinois"
        default n
 -      ---help---
 +      help
          TCP-Illinois is a sender-side modification of TCP Reno for
          high speed long delay links. It uses round-trip-time to
          adjust the alpha and beta parameters to achieve a higher average
  config TCP_CONG_DCTCP
        tristate "DataCenter TCP (DCTCP)"
        default n
 -      ---help---
 +      help
          DCTCP leverages Explicit Congestion Notification (ECN) in the network to
          provide multi-bit feedback to the end hosts. It is designed to provide:
  
  config TCP_CONG_CDG
        tristate "CAIA Delay-Gradient (CDG)"
        default n
 -      ---help---
 +      help
          CAIA Delay-Gradient (CDG) is a TCP congestion control that modifies
          the TCP sender in order to:
  
  config TCP_CONG_BBR
        tristate "BBR TCP"
        default n
 -      ---help---
 +      help
  
          BBR (Bottleneck Bandwidth and RTT) TCP congestion control aims to
          maximize network utilization and minimize queues. It builds an explicit
@@@ -734,7 -736,7 +736,7 @@@ config TCP_MD5SI
        bool "TCP: MD5 Signature Option support (RFC2385)"
        select CRYPTO
        select CRYPTO_MD5
 -      ---help---
 +      help
          RFC2385 specifies a method of giving MD5 protection to TCP sessions.
          Its main (only?) use is to protect BGP sessions between core routers
          on the Internet.
diff --combined net/ipv6/Kconfig
index 992cf45fb4f66585ec1d3e9f64c687f75ab96d2c,414a68b16869ec57683be8b65675d9c11ae24f81..f4f19e89af5edd44c777f92551cf8b4a7b213621
@@@ -7,7 -7,7 +7,7 @@@
  menuconfig IPV6
        tristate "The IPv6 protocol"
        default y
 -      ---help---
 +      help
          Support for IP version 6 (IPv6).
  
          For general information about IPv6, see
@@@ -23,7 -23,7 +23,7 @@@ if IPV
  
  config IPV6_ROUTER_PREF
        bool "IPv6: Router Preference (RFC 4191) support"
 -      ---help---
 +      help
          Router Preference is an optional extension to the Router
          Advertisement message which improves the ability of hosts
          to pick an appropriate router, especially when the hosts
  config IPV6_ROUTE_INFO
        bool "IPv6: Route Information (RFC 4191) support"
        depends on IPV6_ROUTER_PREF
 -      ---help---
 +      help
          Support of Route Information.
  
          If unsure, say N.
  
  config IPV6_OPTIMISTIC_DAD
        bool "IPv6: Enable RFC 4429 Optimistic DAD"
 -      ---help---
 +      help
          Support for optimistic Duplicate Address Detection. It allows for
          autoconfigured addresses to be used more quickly.
  
  
  config INET6_AH
        tristate "IPv6: AH transformation"
-       select XFRM_ALGO
-       select CRYPTO
-       select CRYPTO_HMAC
-       select CRYPTO_MD5
-       select CRYPTO_SHA1
+       select XFRM_AH
 -      ---help---
 +      help
-         Support for IPsec AH.
+         Support for IPsec AH (Authentication Header).
+         AH can be used with various authentication algorithms.  Besides
+         enabling AH support itself, this option enables the generic
+         implementations of the algorithms that RFC 8221 lists as MUST be
+         implemented.  If you need any other algorithms, you'll need to enable
+         them in the crypto API.  You should also enable accelerated
+         implementations of any needed algorithms when available.
  
          If unsure, say Y.
  
  config INET6_ESP
        tristate "IPv6: ESP transformation"
-       select XFRM_ALGO
-       select CRYPTO
-       select CRYPTO_AUTHENC
-       select CRYPTO_HMAC
-       select CRYPTO_MD5
-       select CRYPTO_CBC
-       select CRYPTO_SHA1
-       select CRYPTO_DES
-       select CRYPTO_ECHAINIV
+       select XFRM_ESP
 -      ---help---
 +      help
-         Support for IPsec ESP.
+         Support for IPsec ESP (Encapsulating Security Payload).
+         ESP can be used with various encryption and authentication algorithms.
+         Besides enabling ESP support itself, this option enables the generic
+         implementations of the algorithms that RFC 8221 lists as MUST be
+         implemented.  If you need any other algorithms, you'll need to enable
+         them in the crypto API.  You should also enable accelerated
+         implementations of any needed algorithms when available.
  
          If unsure, say Y.
  
@@@ -80,7 -82,7 +82,7 @@@ config INET6_ESP_OFFLOA
        depends on INET6_ESP
        select XFRM_OFFLOAD
        default n
 -      ---help---
 +      help
          Support for ESP transformation offload. This makes sense
          only if this system really does IPsec and want to do it
          with high throughput. A typical desktop system does not
@@@ -104,7 -106,7 +106,7 @@@ config INET6_IPCOM
        tristate "IPv6: IPComp transformation"
        select INET6_XFRM_TUNNEL
        select XFRM_IPCOMP
 -      ---help---
 +      help
          Support for IP Payload Compression Protocol (IPComp) (RFC3173),
          typically needed for IPsec.
  
  config IPV6_MIP6
        tristate "IPv6: Mobility"
        select XFRM
 -      ---help---
 +      help
          Support for IPv6 Mobility described in RFC 3775.
  
          If unsure, say N.
@@@ -123,7 -125,7 +125,7 @@@ config IPV6_IL
        depends on NETFILTER
        select DST_CACHE
        select LWTUNNEL
 -      ---help---
 +      help
          Support for IPv6 Identifier Locator Addressing (ILA).
  
          ILA is a mechanism to do network virtualization without
@@@ -153,7 -155,7 +155,7 @@@ tristate "Virtual (secure) IPv6: tunnel
        select IPV6_TUNNEL
        select NET_IP_TUNNEL
        select XFRM
 -      ---help---
 +      help
        Tunneling means encapsulating data of one protocol type within
        another protocol and sending it over a channel that understands the
        encapsulating protocol. This can be used with xfrm mode tunnel to give
@@@ -166,7 -168,7 +168,7 @@@ config IPV6_SI
        select NET_IP_TUNNEL
        select IPV6_NDISC_NODETYPE
        default y
 -      ---help---
 +      help
          Tunneling means encapsulating data of one protocol type within
          another protocol and sending it over a channel that understands the
          encapsulating protocol. This driver implements encapsulation of IPv6
@@@ -179,7 -181,7 +181,7 @@@ config IPV6_SIT_6R
        bool "IPv6: IPv6 Rapid Deployment (6RD)"
        depends on IPV6_SIT
        default n
 -      ---help---
 +      help
          IPv6 Rapid Deployment (6rd; draft-ietf-softwire-ipv6-6rd) builds upon
          mechanisms of 6to4 (RFC3056) to enable a service provider to rapidly
          deploy IPv6 unicast service to IPv4 sites to which it provides
@@@ -202,7 -204,7 +204,7 @@@ config IPV6_TUNNE
        select INET6_TUNNEL
        select DST_CACHE
        select GRO_CELLS
 -      ---help---
 +      help
          Support for IPv6-in-IPv6 and IPv4-in-IPv6 tunnels described in
          RFC 2473.
  
@@@ -213,7 -215,7 +215,7 @@@ config IPV6_GR
        select IPV6_TUNNEL
        select NET_IP_TUNNEL
        depends on NET_IPGRE_DEMUX
 -      ---help---
 +      help
          Tunneling means encapsulating data of one protocol type within
          another protocol and sending it over a channel that understands the
          encapsulating protocol. This particular tunneling driver implements
@@@ -238,13 -240,13 +240,13 @@@ config IPV6_FOU_TUNNE
  config IPV6_MULTIPLE_TABLES
        bool "IPv6: Multiple Routing Tables"
        select FIB_RULES
 -      ---help---
 +      help
          Support multiple routing tables.
  
  config IPV6_SUBTREES
        bool "IPv6: source address based routing"
        depends on IPV6_MULTIPLE_TABLES
 -      ---help---
 +      help
          Enable routing by source address or prefix.
  
          The destination address is still the primary routing key, so mixing
@@@ -259,7 -261,7 +261,7 @@@ config IPV6_MROUT
        bool "IPv6: multicast routing"
        depends on IPV6
        select IP_MROUTE_COMMON
 -      ---help---
 +      help
          Support for IPv6 multicast forwarding.
          If unsure, say N.
  
@@@ -280,7 -282,7 +282,7 @@@ config IPV6_MROUTE_MULTIPLE_TABLE
  config IPV6_PIMSM_V2
        bool "IPv6: PIM-SM version 2 support"
        depends on IPV6_MROUTE
 -      ---help---
 +      help
          Support for IPv6 PIM multicast routing protocol PIM-SMv2.
          If unsure, say N.
  
@@@ -290,7 -292,7 +292,7 @@@ config IPV6_SEG6_LWTUNNE
        select LWTUNNEL
        select DST_CACHE
        select IPV6_MULTIPLE_TABLES
 -      ---help---
 +      help
          Support for encapsulation of packets within an outer IPv6
          header and a Segment Routing Header using the lightweight
          tunnels mechanism. Also enable support for advanced local
@@@ -304,7 -306,7 +306,7 @@@ config IPV6_SEG6_HMA
        select CRYPTO_HMAC
        select CRYPTO_SHA1
        select CRYPTO_SHA256
 -      ---help---
 +      help
          Support for HMAC signature generation and verification
          of SR-enabled packets.
  
@@@ -319,7 -321,7 +321,7 @@@ config IPV6_RPL_LWTUNNE
        bool "IPv6: RPL Source Routing Header support"
        depends on IPV6
        select LWTUNNEL
 -      ---help---
 +      help
          Support for RFC6554 RPL Source Routing Header using the lightweight
          tunnels mechanism.
  
diff --combined net/xfrm/Kconfig
index b5d4a1ef04b9bff47681c3ade2a86c9c70bd7149,e77ba529229cf511c8aacb813901758c67a07388..5b9a5ab48111cc1667f04b1166063a9b8c27f607
@@@ -22,7 -22,7 +22,7 @@@ if INE
  config XFRM_USER
        tristate "Transformation user configuration interface"
        select XFRM_ALGO
 -      ---help---
 +      help
          Support for Transformation(XFRM) user configuration interface
          like IPsec used by native Linux tools.
  
@@@ -31,7 -31,7 +31,7 @@@
  config XFRM_INTERFACE
        tristate "Transformation virtual interface"
        depends on XFRM && IPV6
 -      ---help---
 +      help
          This provides a virtual interface to route IPsec traffic.
  
          If unsure, say N.
@@@ -39,7 -39,7 +39,7 @@@
  config XFRM_SUB_POLICY
        bool "Transformation sub policy support"
        depends on XFRM
 -      ---help---
 +      help
          Support sub policy for developers. By using sub policy with main
          one, two policies can be applied to the same packet at once.
          Policy which lives shorter time in kernel should be a sub.
@@@ -49,7 -49,7 +49,7 @@@
  config XFRM_MIGRATE
        bool "Transformation migrate database"
        depends on XFRM
 -      ---help---
 +      help
          A feature to update locator(s) of a given IPsec security
          association dynamically.  This feature is required, for
          instance, in a Mobile IPv6 environment with IPsec configuration
  config XFRM_STATISTICS
        bool "Transformation statistics"
        depends on XFRM && PROC_FS
 -      ---help---
 +      help
          This statistics is not a SNMP/MIB specification but shows
          statistics about transformation error (or almost error) factor
          at packet processing for developer.
  
          If unsure, say N.
  
+ # This option selects XFRM_ALGO along with the AH authentication algorithms that
+ # RFC 8221 lists as MUST be implemented.
+ config XFRM_AH
+       tristate
+       select XFRM_ALGO
+       select CRYPTO
+       select CRYPTO_HMAC
+       select CRYPTO_SHA256
+ # This option selects XFRM_ALGO along with the ESP encryption and authentication
+ # algorithms that RFC 8221 lists as MUST be implemented.
+ config XFRM_ESP
+       tristate
+       select XFRM_ALGO
+       select CRYPTO
+       select CRYPTO_AES
+       select CRYPTO_AUTHENC
+       select CRYPTO_CBC
+       select CRYPTO_ECHAINIV
+       select CRYPTO_GCM
+       select CRYPTO_HMAC
+       select CRYPTO_SEQIV
+       select CRYPTO_SHA256
  config XFRM_IPCOMP
        tristate
        select XFRM_ALGO
  config NET_KEY
        tristate "PF_KEY sockets"
        select XFRM_ALGO
 -      ---help---
 +      help
          PF_KEYv2 socket family, compatible to KAME ones.
          They are required if you are going to use IPsec tools ported
          from KAME.
@@@ -87,7 -111,7 +111,7 @@@ config NET_KEY_MIGRAT
        bool "PF_KEY MIGRATE"
        depends on NET_KEY
        select XFRM_MIGRATE
 -      ---help---
 +      help
          Add a PF_KEY MIGRATE message to PF_KEYv2 socket family.
          The PF_KEY MIGRATE message is used to dynamically update
          locator(s) of a given IPsec security association.