summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/netronome/nfp/crypto/fw.h24
-rw-r--r--drivers/net/ethernet/netronome/nfp/crypto/tls.c8
2 files changed, 21 insertions, 11 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/crypto/fw.h b/drivers/net/ethernet/netronome/nfp/crypto/fw.h
index dcb67c2b5e5e..1e869599febb 100644
--- a/drivers/net/ethernet/netronome/nfp/crypto/fw.h
+++ b/drivers/net/ethernet/netronome/nfp/crypto/fw.h
@@ -32,16 +32,22 @@ struct nfp_crypto_req_reset {
#define NFP_NET_TLS_VLAN_UNUSED 4095
struct nfp_crypto_req_add_front {
- struct nfp_ccm_hdr hdr;
- __be32 ep_id;
- u8 resv[3];
- u8 opcode;
- u8 key_len;
- __be16 ipver_vlan __packed;
- u8 l4_proto;
+ /* New members MUST be added within the struct_group() macro below. */
+ struct_group_tagged(nfp_crypto_req_add_front_hdr, __hdr,
+ struct nfp_ccm_hdr hdr;
+ __be32 ep_id;
+ u8 resv[3];
+ u8 opcode;
+ u8 key_len;
+ __be16 ipver_vlan __packed;
+ u8 l4_proto;
+ );
#define NFP_NET_TLS_NON_ADDR_KEY_LEN 8
u8 l3_addrs[];
};
+static_assert(offsetof(struct nfp_crypto_req_add_front, l3_addrs) ==
+ sizeof(struct nfp_crypto_req_add_front_hdr),
+ "struct member likely outside of struct_group_tagged()");
struct nfp_crypto_req_add_back {
__be16 src_port;
@@ -55,14 +61,14 @@ struct nfp_crypto_req_add_back {
};
struct nfp_crypto_req_add_v4 {
- struct nfp_crypto_req_add_front front;
+ struct nfp_crypto_req_add_front_hdr front;
__be32 src_ip;
__be32 dst_ip;
struct nfp_crypto_req_add_back back;
};
struct nfp_crypto_req_add_v6 {
- struct nfp_crypto_req_add_front front;
+ struct nfp_crypto_req_add_front_hdr front;
__be32 src_ip[4];
__be32 dst_ip[4];
struct nfp_crypto_req_add_back back;
diff --git a/drivers/net/ethernet/netronome/nfp/crypto/tls.c b/drivers/net/ethernet/netronome/nfp/crypto/tls.c
index f252ecdcd2cd..9983d7aa2b9c 100644
--- a/drivers/net/ethernet/netronome/nfp/crypto/tls.c
+++ b/drivers/net/ethernet/netronome/nfp/crypto/tls.c
@@ -180,7 +180,9 @@ nfp_net_tls_set_ipv4(struct nfp_net *nn, struct nfp_crypto_req_add_v4 *req,
req->front.key_len += sizeof(__be32) * 2;
if (direction == TLS_OFFLOAD_CTX_DIR_TX) {
- nfp_net_tls_assign_conn_id(nn, &req->front);
+ nfp_net_tls_assign_conn_id(nn,
+ container_of(&req->front,
+ struct nfp_crypto_req_add_front, __hdr));
} else {
req->src_ip = inet->inet_daddr;
req->dst_ip = inet->inet_saddr;
@@ -199,7 +201,9 @@ nfp_net_tls_set_ipv6(struct nfp_net *nn, struct nfp_crypto_req_add_v6 *req,
req->front.key_len += sizeof(struct in6_addr) * 2;
if (direction == TLS_OFFLOAD_CTX_DIR_TX) {
- nfp_net_tls_assign_conn_id(nn, &req->front);
+ nfp_net_tls_assign_conn_id(nn,
+ container_of(&req->front,
+ struct nfp_crypto_req_add_front, __hdr));
} else {
memcpy(req->src_ip, &sk->sk_v6_daddr, sizeof(req->src_ip));
memcpy(req->dst_ip, &np->saddr, sizeof(req->dst_ip));