@@ -221,6 +221,7 @@ static int chcr_ktls_act_open_req(struct sock *sk,
221
221
return cxgb4_l2t_send (tx_info -> netdev , skb , tx_info -> l2te );
222
222
}
223
223
224
+ #if IS_ENABLED (CONFIG_IPV6 )
224
225
/*
225
226
* chcr_ktls_act_open_req6: creates TCB entry for ipv6 connection.
226
227
* @sk - tcp socket.
@@ -270,6 +271,7 @@ static int chcr_ktls_act_open_req6(struct sock *sk,
270
271
271
272
return cxgb4_l2t_send (tx_info -> netdev , skb , tx_info -> l2te );
272
273
}
274
+ #endif /* #if IS_ENABLED(CONFIG_IPV6) */
273
275
274
276
/*
275
277
* chcr_setup_connection: create a TCB entry so that TP will form tcp packets.
@@ -290,20 +292,26 @@ static int chcr_setup_connection(struct sock *sk,
290
292
tx_info -> atid = atid ;
291
293
tx_info -> ip_family = sk -> sk_family ;
292
294
293
- if (sk -> sk_family == AF_INET ||
294
- (sk -> sk_family == AF_INET6 && !sk -> sk_ipv6only &&
295
- ipv6_addr_type (& sk -> sk_v6_daddr ) == IPV6_ADDR_MAPPED )) {
295
+ if (sk -> sk_family == AF_INET ) {
296
296
tx_info -> ip_family = AF_INET ;
297
297
ret = chcr_ktls_act_open_req (sk , tx_info , atid );
298
+ #if IS_ENABLED (CONFIG_IPV6 )
298
299
} else {
299
- tx_info -> ip_family = AF_INET6 ;
300
- ret =
301
- cxgb4_clip_get (tx_info -> netdev ,
302
- (const u32 * )& sk -> sk_v6_rcv_saddr .in6_u .u6_addr8 ,
303
- 1 );
304
- if (ret )
305
- goto out ;
306
- ret = chcr_ktls_act_open_req6 (sk , tx_info , atid );
300
+ if (!sk -> sk_ipv6only &&
301
+ ipv6_addr_type (& sk -> sk_v6_daddr ) == IPV6_ADDR_MAPPED ) {
302
+ tx_info -> ip_family = AF_INET ;
303
+ ret = chcr_ktls_act_open_req (sk , tx_info , atid );
304
+ } else {
305
+ tx_info -> ip_family = AF_INET6 ;
306
+ ret = cxgb4_clip_get (tx_info -> netdev ,
307
+ (const u32 * )
308
+ & sk -> sk_v6_rcv_saddr .s6_addr ,
309
+ 1 );
310
+ if (ret )
311
+ goto out ;
312
+ ret = chcr_ktls_act_open_req6 (sk , tx_info , atid );
313
+ }
314
+ #endif
307
315
}
308
316
309
317
/* if return type is NET_XMIT_CN, msg will be sent but delayed, mark ret
@@ -394,11 +402,13 @@ void chcr_ktls_dev_del(struct net_device *netdev,
394
402
if (tx_info -> l2te )
395
403
cxgb4_l2t_release (tx_info -> l2te );
396
404
405
+ #if IS_ENABLED (CONFIG_IPV6 )
397
406
/* clear clip entry */
398
407
if (tx_info -> ip_family == AF_INET6 )
399
408
cxgb4_clip_release (netdev ,
400
409
(const u32 * )& sk -> sk_v6_daddr .in6_u .u6_addr8 ,
401
410
1 );
411
+ #endif
402
412
403
413
/* clear tid */
404
414
if (tx_info -> tid != -1 ) {
@@ -491,12 +501,16 @@ int chcr_ktls_dev_add(struct net_device *netdev, struct sock *sk,
491
501
goto out2 ;
492
502
493
503
/* get peer ip */
494
- if (sk -> sk_family == AF_INET ||
495
- (sk -> sk_family == AF_INET6 && !sk -> sk_ipv6only &&
496
- ipv6_addr_type (& sk -> sk_v6_daddr ) == IPV6_ADDR_MAPPED )) {
504
+ if (sk -> sk_family == AF_INET ) {
497
505
memcpy (daaddr , & sk -> sk_daddr , 4 );
506
+ #if IS_ENABLED (CONFIG_IPV6 )
498
507
} else {
499
- memcpy (daaddr , sk -> sk_v6_daddr .in6_u .u6_addr8 , 16 );
508
+ if (!sk -> sk_ipv6only &&
509
+ ipv6_addr_type (& sk -> sk_v6_daddr ) == IPV6_ADDR_MAPPED )
510
+ memcpy (daaddr , & sk -> sk_daddr , 4 );
511
+ else
512
+ memcpy (daaddr , sk -> sk_v6_daddr .in6_u .u6_addr8 , 16 );
513
+ #endif
500
514
}
501
515
502
516
/* get the l2t index */
@@ -903,7 +917,9 @@ chcr_ktls_write_tcp_options(struct chcr_ktls_info *tx_info, struct sk_buff *skb,
903
917
struct fw_eth_tx_pkt_wr * wr ;
904
918
struct cpl_tx_pkt_core * cpl ;
905
919
u32 ctrl , iplen , maclen ;
920
+ #if IS_ENABLED (CONFIG_IPV6 )
906
921
struct ipv6hdr * ip6 ;
922
+ #endif
907
923
unsigned int ndesc ;
908
924
struct tcphdr * tcp ;
909
925
int len16 , pktlen ;
@@ -958,9 +974,11 @@ chcr_ktls_write_tcp_options(struct chcr_ktls_info *tx_info, struct sk_buff *skb,
958
974
/* we need to correct ip header len */
959
975
ip = (struct iphdr * )(buf + maclen );
960
976
ip -> tot_len = htons (pktlen - maclen );
977
+ #if IS_ENABLED (CONFIG_IPV6 )
961
978
} else {
962
979
ip6 = (struct ipv6hdr * )(buf + maclen );
963
980
ip6 -> payload_len = htons (pktlen - maclen - iplen );
981
+ #endif
964
982
}
965
983
/* now take care of the tcp header, if fin is not set then clear push
966
984
* bit as well, and if fin is set, it will be sent at the last so we
0 commit comments