@@ -432,6 +432,9 @@ static int ixgbe_ipsec_parse_proto_keys(struct xfrm_state *xs,
432
432
char * alg_name = NULL ;
433
433
int key_len ;
434
434
435
+ if (xs -> xso .slave_dev )
436
+ dev = xs -> xso .slave_dev ;
437
+
435
438
if (!xs -> aead ) {
436
439
netdev_err (dev , "Unsupported IPsec algorithm\n" );
437
440
return - EINVAL ;
@@ -478,8 +481,8 @@ static int ixgbe_ipsec_parse_proto_keys(struct xfrm_state *xs,
478
481
static int ixgbe_ipsec_check_mgmt_ip (struct xfrm_state * xs )
479
482
{
480
483
struct net_device * dev = xs -> xso .dev ;
481
- struct ixgbe_adapter * adapter = netdev_priv ( dev ) ;
482
- struct ixgbe_hw * hw = & adapter -> hw ;
484
+ struct ixgbe_adapter * adapter ;
485
+ struct ixgbe_hw * hw ;
483
486
u32 mfval , manc , reg ;
484
487
int num_filters = 4 ;
485
488
bool manc_ipv4 ;
@@ -497,6 +500,12 @@ static int ixgbe_ipsec_check_mgmt_ip(struct xfrm_state *xs)
497
500
#define BMCIP_V6 0x3
498
501
#define BMCIP_MASK 0x3
499
502
503
+ if (xs -> xso .slave_dev )
504
+ dev = xs -> xso .slave_dev ;
505
+
506
+ adapter = netdev_priv (dev );
507
+ hw = & adapter -> hw ;
508
+
500
509
manc = IXGBE_READ_REG (hw , IXGBE_MANC );
501
510
manc_ipv4 = !!(manc & MANC_EN_IPV4_FILTER );
502
511
mfval = IXGBE_READ_REG (hw , IXGBE_MFVAL );
@@ -561,14 +570,21 @@ static int ixgbe_ipsec_check_mgmt_ip(struct xfrm_state *xs)
561
570
static int ixgbe_ipsec_add_sa (struct xfrm_state * xs )
562
571
{
563
572
struct net_device * dev = xs -> xso .dev ;
564
- struct ixgbe_adapter * adapter = netdev_priv ( dev ) ;
565
- struct ixgbe_ipsec * ipsec = adapter -> ipsec ;
566
- struct ixgbe_hw * hw = & adapter -> hw ;
573
+ struct ixgbe_adapter * adapter ;
574
+ struct ixgbe_ipsec * ipsec ;
575
+ struct ixgbe_hw * hw ;
567
576
int checked , match , first ;
568
577
u16 sa_idx ;
569
578
int ret ;
570
579
int i ;
571
580
581
+ if (xs -> xso .slave_dev )
582
+ dev = xs -> xso .slave_dev ;
583
+
584
+ adapter = netdev_priv (dev );
585
+ ipsec = adapter -> ipsec ;
586
+ hw = & adapter -> hw ;
587
+
572
588
if (xs -> id .proto != IPPROTO_ESP && xs -> id .proto != IPPROTO_AH ) {
573
589
netdev_err (dev , "Unsupported protocol 0x%04x for ipsec offload\n" ,
574
590
xs -> id .proto );
@@ -746,12 +762,19 @@ static int ixgbe_ipsec_add_sa(struct xfrm_state *xs)
746
762
static void ixgbe_ipsec_del_sa (struct xfrm_state * xs )
747
763
{
748
764
struct net_device * dev = xs -> xso .dev ;
749
- struct ixgbe_adapter * adapter = netdev_priv ( dev ) ;
750
- struct ixgbe_ipsec * ipsec = adapter -> ipsec ;
751
- struct ixgbe_hw * hw = & adapter -> hw ;
765
+ struct ixgbe_adapter * adapter ;
766
+ struct ixgbe_ipsec * ipsec ;
767
+ struct ixgbe_hw * hw ;
752
768
u32 zerobuf [4 ] = {0 , 0 , 0 , 0 };
753
769
u16 sa_idx ;
754
770
771
+ if (xs -> xso .slave_dev )
772
+ dev = xs -> xso .slave_dev ;
773
+
774
+ adapter = netdev_priv (dev );
775
+ ipsec = adapter -> ipsec ;
776
+ hw = & adapter -> hw ;
777
+
755
778
if (xs -> xso .flags & XFRM_OFFLOAD_INBOUND ) {
756
779
struct rx_sa * rsa ;
757
780
u8 ipi ;
0 commit comments