char *alg_name = NULL;
        int key_len;
 
+       if (xs->xso.slave_dev)
+               dev = xs->xso.slave_dev;
+
        if (!xs->aead) {
                netdev_err(dev, "Unsupported IPsec algorithm\n");
                return -EINVAL;
 static int ixgbe_ipsec_check_mgmt_ip(struct xfrm_state *xs)
 {
        struct net_device *dev = xs->xso.dev;
-       struct ixgbe_adapter *adapter = netdev_priv(dev);
-       struct ixgbe_hw *hw = &adapter->hw;
+       struct ixgbe_adapter *adapter;
+       struct ixgbe_hw *hw;
        u32 mfval, manc, reg;
        int num_filters = 4;
        bool manc_ipv4;
 #define BMCIP_V6                 0x3
 #define BMCIP_MASK               0x3
 
+       if (xs->xso.slave_dev)
+               dev = xs->xso.slave_dev;
+
+       adapter = netdev_priv(dev);
+       hw = &adapter->hw;
+
        manc = IXGBE_READ_REG(hw, IXGBE_MANC);
        manc_ipv4 = !!(manc & MANC_EN_IPV4_FILTER);
        mfval = IXGBE_READ_REG(hw, IXGBE_MFVAL);
 static int ixgbe_ipsec_add_sa(struct xfrm_state *xs)
 {
        struct net_device *dev = xs->xso.dev;
-       struct ixgbe_adapter *adapter = netdev_priv(dev);
-       struct ixgbe_ipsec *ipsec = adapter->ipsec;
-       struct ixgbe_hw *hw = &adapter->hw;
+       struct ixgbe_adapter *adapter;
+       struct ixgbe_ipsec *ipsec;
+       struct ixgbe_hw *hw;
        int checked, match, first;
        u16 sa_idx;
        int ret;
        int i;
 
+       if (xs->xso.slave_dev)
+               dev = xs->xso.slave_dev;
+
+       adapter = netdev_priv(dev);
+       ipsec = adapter->ipsec;
+       hw = &adapter->hw;
+
        if (xs->id.proto != IPPROTO_ESP && xs->id.proto != IPPROTO_AH) {
                netdev_err(dev, "Unsupported protocol 0x%04x for ipsec offload\n",
                           xs->id.proto);
 static void ixgbe_ipsec_del_sa(struct xfrm_state *xs)
 {
        struct net_device *dev = xs->xso.dev;
-       struct ixgbe_adapter *adapter = netdev_priv(dev);
-       struct ixgbe_ipsec *ipsec = adapter->ipsec;
-       struct ixgbe_hw *hw = &adapter->hw;
+       struct ixgbe_adapter *adapter;
+       struct ixgbe_ipsec *ipsec;
+       struct ixgbe_hw *hw;
        u32 zerobuf[4] = {0, 0, 0, 0};
        u16 sa_idx;
 
+       if (xs->xso.slave_dev)
+               dev = xs->xso.slave_dev;
+
+       adapter = netdev_priv(dev);
+       ipsec = adapter->ipsec;
+       hw = &adapter->hw;
+
        if (xs->xso.flags & XFRM_OFFLOAD_INBOUND) {
                struct rx_sa *rsa;
                u8 ipi;