All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v12 net-next 00/12] Chelsio Inline TLS
@ 2018-03-19 13:55 Atul Gupta
  2018-03-19 13:55 ` [PATCH v12 net-next 01/12] tls: support for Inline tls record Atul Gupta
                   ` (12 more replies)
  0 siblings, 13 replies; 22+ messages in thread
From: Atul Gupta @ 2018-03-19 13:55 UTC (permalink / raw)
  To: davem, herbert; +Cc: davejwatson, sd, sbrivio, linux-crypto, netdev, ganeshgr

Series for Chelsio Inline TLS driver (chtls)

Use tls ULP infrastructure to register chtls as Inline TLS driver.
Chtls use TCP Sockets to transmit and receive TLS record.
TCP proto is extended to offload TLS record.

T6 adapter provides the following features:
        -TLS record offload, TLS header, encrypt, digest and transmit
        -TLS record receive and decrypt
        -TLS keys store
        -TCP/IP engine
        -TLS engine
        -GCM crypto engine [support CBC also]

TLS provides security at the transport layer. It uses TCP to provide
reliable end-to-end transport of application data.
It relies on TCP for any retransmission.
TLS session comprises of three parts:
a. TCP/IP connection
b. TLS handshake
c. Record layer processing

TLS handshake state machine is executed in host (refer standard
implementation eg. OpenSSL).  Setsockopt [SOL_TCP, TCP_ULP]
initialize TCP proto-ops for Chelsio inline tls support.
setsockopt(sock, SOL_TCP, TCP_ULP, "tls", sizeof("tls"));

Tx and Rx Keys are decided during handshake and programmed on
the chip after CCS is exchanged.
struct tls12_crypto_info_aes_gcm_128 crypto_info
setsockopt(sock, SOL_TLS, TLS_TX, &crypto_info, sizeof(crypto_info))
Finish is the first encrypted/decrypted message tx/rx inline.

On the Tx path TLS engine receive plain text from openssl, insert IV,
fetches the tx key, create cipher text records and generate MAC.

TLS header is added to cipher text and forward to TCP/IP engine for
transport layer processing and transmission on wire.
TX PATH:
Apps--openssl--chtls---TLS engine---encrypt/auth---TCP/IP engine---wire

On the Rx side, data received is PDU aligned at record boundaries.
TLS processes only the complete record. If rx key is programmed on
CCS receive, data is decrypted and plain text is posted to host.
RX PATH:
Wire--cipher-text--TCP/IP engine [PDU align]---TLS engine---
decrypt/auth---plain-text--chtls--openssl--application

v12: patch against net-next
    - fixed few build error
    - replace set_queue with skb_set_queue_mapping [Sabrina]
    - copyright year correction

v11: formatting and cleanup, few function rename and error
     handling [Stefano Brivio]
     - ctx freed later for TLS_HW_RECORD
     - split tx and rx in different patch

v10: fixed following based on the review comments of Sabrina Dubroca
     -docs header added for struct tls_device [tls.h]
     -changed TLS_FULL_HW to TLS_HW_RECORD
     -similary using tls-hw-record instead of tls-inline for
     ethtool feature config
     -added more description to patch sets
     -replaced kmalloc/vmalloc/kfree with kvzalloc/kvfree
     -reordered the patch sequence
     -formatted entire patch for func return values

v9: corrected __u8 and similar usage
    -create_ctx to alloc tls_context
    -tls_hw_prot before sk !establish check

v8: tls_main.c cleanup comment [Dave Watson]

v7: func name change, use sk->sk_prot where required

v6: modify prot only for FULL_HW
   -corrected commit message for patch 11

v5: set TLS_FULL_HW for registered inline tls drivers
   -set TLS_FULL_HW prot for offload connection else move
    to TLS_SW_TX
   -Case handled for interface with same IP [Dave Miller]
   -Removed Specific IP and INADDR_ANY handling [v4]

v4: removed chtls ULP type, retained tls ULP
   -registered chtls with net tls
   -defined struct tls_device to register the Inline drivers
   -ethtool interface tls-inline to enable Inline TLS for interface
   -prot update to support inline TLS

v3: fixed the kbuild test issues
   -made few funtions static
   -initialized few variables

v2: fixed the following based on the review comments of Stephan Mueller,
    Stefano Brivio and Hannes Frederic
    -Added more details in cover letter
    -Fixed indentation and formating issues
    -Using aes instead of aes-generic
    -memset key info after programing the key on chip
    -reordered the patch sequence

Atul Gupta (12):
  tls: support for Inline tls record
  ethtool: enable Inline TLS in HW
  cxgb4: Inline TLS FW Interface
  cxgb4: LLD driver changes to support TLS
  crypto: chcr - Inline TLS Key Macros
  crypto: chtls - structure and macro for Inline TLS
  crypto: chtls - Program the TLS session Key
  crypto : chtls - CPL handler definition
  crypto: chtls - Inline TLS record Tx
  crypto: chtls - Inline TLS record Rx
  crypto: chtls - Register chtls with net tls
  crypto: chtls - Makefile Kconfig

 drivers/crypto/chelsio/Kconfig                  |   11 +
 drivers/crypto/chelsio/Makefile                 |    1 +
 drivers/crypto/chelsio/chcr_algo.h              |   42 +
 drivers/crypto/chelsio/chcr_core.h              |   55 +-
 drivers/crypto/chelsio/chtls/Makefile           |    4 +
 drivers/crypto/chelsio/chtls/chtls.h            |  485 ++++++
 drivers/crypto/chelsio/chtls/chtls_cm.c         | 2056 +++++++++++++++++++++++
 drivers/crypto/chelsio/chtls/chtls_cm.h         |  202 +++
 drivers/crypto/chelsio/chtls/chtls_hw.c         |  394 +++++
 drivers/crypto/chelsio/chtls/chtls_io.c         | 1852 ++++++++++++++++++++
 drivers/crypto/chelsio/chtls/chtls_main.c       |  590 +++++++
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |   32 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h  |    7 +
 drivers/net/ethernet/chelsio/cxgb4/sge.c        |   99 +-
 drivers/net/ethernet/chelsio/cxgb4/t4_msg.h     |  121 +-
 drivers/net/ethernet/chelsio/cxgb4/t4_regs.h    |    2 +
 drivers/net/ethernet/chelsio/cxgb4/t4fw_api.h   |  165 +-
 include/linux/netdev_features.h                 |    2 +
 include/net/tls.h                               |   45 +
 include/uapi/linux/tls.h                        |    1 +
 net/core/ethtool.c                              |    1 +
 net/ipv4/tcp_minisocks.c                        |    1 +
 net/tls/tls_main.c                              |  123 +-
 23 files changed, 6257 insertions(+), 34 deletions(-)
 create mode 100644 drivers/crypto/chelsio/chtls/Makefile
 create mode 100644 drivers/crypto/chelsio/chtls/chtls.h
 create mode 100644 drivers/crypto/chelsio/chtls/chtls_cm.c
 create mode 100644 drivers/crypto/chelsio/chtls/chtls_cm.h
 create mode 100644 drivers/crypto/chelsio/chtls/chtls_hw.c
 create mode 100644 drivers/crypto/chelsio/chtls/chtls_io.c
 create mode 100644 drivers/crypto/chelsio/chtls/chtls_main.c

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2018-03-20 18:07 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-19 13:55 [PATCH v12 net-next 00/12] Chelsio Inline TLS Atul Gupta
2018-03-19 13:55 ` [PATCH v12 net-next 01/12] tls: support for Inline tls record Atul Gupta
2018-03-19 16:57   ` Stefano Brivio
2018-03-20 17:53   ` [RFC PATCH] tls: create_ctx() can be static kbuild test robot
2018-03-20 17:53   ` [PATCH v12 net-next 01/12] tls: support for Inline tls record kbuild test robot
2018-03-19 13:55 ` [PATCH v12 net-next 02/12] ethtool: enable Inline TLS in HW Atul Gupta
2018-03-19 13:55 ` [PATCH v12 net-next 03/12] cxgb4: Inline TLS FW Interface Atul Gupta
2018-03-19 13:55 ` [PATCH v12 net-next 04/12] cxgb4: LLD driver changes to support TLS Atul Gupta
2018-03-19 13:55 ` [PATCH v12 net-next 05/12] crypto: chcr - Inline TLS Key Macros Atul Gupta
2018-03-19 13:55 ` [PATCH v12 net-next 06/12] crypto: chtls - structure and macro for Inline TLS Atul Gupta
2018-03-19 17:02   ` Stefano Brivio
2018-03-19 13:55 ` [PATCH v12 net-next 07/12] crypto: chtls - Program the TLS session Key Atul Gupta
2018-03-19 13:55 ` [PATCH v12 net-next 08/12] crypto : chtls - CPL handler definition Atul Gupta
2018-03-19 13:55 ` [PATCH v12 net-next 09/12] crypto: chtls - Inline TLS record Tx Atul Gupta
2018-03-19 16:57   ` Stefano Brivio
2018-03-19 13:55 ` [PATCH v12 net-next 10/12] crypto: chtls - Inline TLS record Rx Atul Gupta
2018-03-19 17:01   ` Stefano Brivio
2018-03-19 13:55 ` [PATCH v12 net-next 11/12] crypto: chtls - Register chtls with net tls Atul Gupta
2018-03-19 13:55 ` [PATCH v12 net-next 12/12] crypto: chtls - Makefile Kconfig Atul Gupta
2018-03-20 16:28   ` kbuild test robot
2018-03-20 18:06   ` kbuild test robot
2018-03-19 16:57 ` [PATCH v12 net-next 00/12] Chelsio Inline TLS Stefano Brivio

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.