#define BOND_ENC_FEATURES      (NETIF_F_HW_CSUM | NETIF_F_SG | \
                                 NETIF_F_RXCSUM | NETIF_F_ALL_TSO)
 
+#define BOND_MPLS_FEATURES     (NETIF_F_HW_CSUM | NETIF_F_SG | \
+                                NETIF_F_ALL_TSO)
+
 static void bond_compute_features(struct bonding *bond)
 {
        unsigned int dst_release_flag = IFF_XMIT_DST_RELEASE |
                                        IFF_XMIT_DST_RELEASE_PERM;
        netdev_features_t vlan_features = BOND_VLAN_FEATURES;
        netdev_features_t enc_features  = BOND_ENC_FEATURES;
+       netdev_features_t mpls_features  = BOND_MPLS_FEATURES;
        struct net_device *bond_dev = bond->dev;
        struct list_head *iter;
        struct slave *slave;
        if (!bond_has_slaves(bond))
                goto done;
        vlan_features &= NETIF_F_ALL_FOR_ALL;
+       mpls_features &= NETIF_F_ALL_FOR_ALL;
 
        bond_for_each_slave(bond, slave, iter) {
                vlan_features = netdev_increment_features(vlan_features,
                enc_features = netdev_increment_features(enc_features,
                                                         slave->dev->hw_enc_features,
                                                         BOND_ENC_FEATURES);
+
+               mpls_features = netdev_increment_features(mpls_features,
+                                                         slave->dev->mpls_features,
+                                                         BOND_MPLS_FEATURES);
+
                dst_release_flag &= slave->dev->priv_flags;
                if (slave->dev->hard_header_len > max_hard_header_len)
                        max_hard_header_len = slave->dev->hard_header_len;
        bond_dev->vlan_features = vlan_features;
        bond_dev->hw_enc_features = enc_features | NETIF_F_GSO_ENCAP_ALL |
                                    NETIF_F_GSO_UDP_L4;
+       bond_dev->mpls_features = mpls_features;
        bond_dev->gso_max_segs = gso_max_segs;
        netif_set_gso_max_size(bond_dev, gso_max_size);