be2net: avoid configuring VEPA mode on BE3
[cascardo/linux.git] / drivers / net / ethernet / emulex / benet / be_main.c
index b6ad029..2f76cbe 100644 (file)
@@ -2184,7 +2184,6 @@ static void be_rx_compl_process_gro(struct be_rx_obj *rxo,
                skb_set_hash(skb, rxcp->rss_hash, PKT_HASH_TYPE_L3);
 
        skb->csum_level = rxcp->tunneled;
-       skb_mark_napi_id(skb, napi);
 
        if (rxcp->vlanf)
                __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), rxcp->vlan_tag);
@@ -2631,7 +2630,6 @@ static int be_evt_queues_create(struct be_adapter *adapter)
                                eqo->affinity_mask);
                netif_napi_add(adapter->netdev, &eqo->napi, be_poll,
                               BE_NAPI_WEIGHT);
-               napi_hash_add(&eqo->napi);
        }
        return 0;
 }
@@ -5110,6 +5108,9 @@ static int be_ndo_bridge_setlink(struct net_device *dev, struct nlmsghdr *nlh,
                        return -EINVAL;
 
                mode = nla_get_u16(attr);
+               if (BE3_chip(adapter) && mode == BRIDGE_MODE_VEPA)
+                       return -EOPNOTSUPP;
+
                if (mode != BRIDGE_MODE_VEPA && mode != BRIDGE_MODE_VEB)
                        return -EINVAL;
 
@@ -5291,7 +5292,7 @@ static netdev_features_t be_features_check(struct sk_buff *skb,
            skb->inner_protocol != htons(ETH_P_TEB) ||
            skb_inner_mac_header(skb) - skb_transport_header(skb) !=
            sizeof(struct udphdr) + sizeof(struct vxlanhdr))
-               return features & ~(NETIF_F_ALL_CSUM | NETIF_F_GSO_MASK);
+               return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
 
        return features;
 }