|
@@ -139,6 +139,18 @@ static u8 ixgbe_dcbnl_set_state(struct net_device *netdev, u8 state)
|
|
|
adapter->flags &= ~IXGBE_FLAG_FDIR_PERFECT_CAPABLE;
|
|
|
}
|
|
|
adapter->flags |= IXGBE_FLAG_DCB_ENABLED;
|
|
|
+#ifdef IXGBE_FCOE
|
|
|
+ /* Turn on FCoE offload */
|
|
|
+ if ((adapter->flags & IXGBE_FLAG_FCOE_CAPABLE) &&
|
|
|
+ (!(adapter->flags & IXGBE_FLAG_FCOE_ENABLED))) {
|
|
|
+ adapter->flags |= IXGBE_FLAG_FCOE_ENABLED;
|
|
|
+ adapter->ring_feature[RING_F_FCOE].indices =
|
|
|
+ IXGBE_FCRETA_SIZE;
|
|
|
+ netdev->features |= NETIF_F_FCOE_CRC;
|
|
|
+ netdev->features |= NETIF_F_FSO;
|
|
|
+ netdev->fcoe_ddp_xid = IXGBE_FCOE_DDP_MAX - 1;
|
|
|
+ }
|
|
|
+#endif /* IXGBE_FCOE */
|
|
|
ixgbe_init_interrupt_scheme(adapter);
|
|
|
if (netif_running(netdev))
|
|
|
netdev->netdev_ops->ndo_open(netdev);
|
|
@@ -156,6 +168,18 @@ static u8 ixgbe_dcbnl_set_state(struct net_device *netdev, u8 state)
|
|
|
adapter->flags |= IXGBE_FLAG_RSS_ENABLED;
|
|
|
if (adapter->hw.mac.type == ixgbe_mac_82599EB)
|
|
|
adapter->flags |= IXGBE_FLAG_FDIR_HASH_CAPABLE;
|
|
|
+
|
|
|
+#ifdef IXGBE_FCOE
|
|
|
+ /* Turn off FCoE offload */
|
|
|
+ if (adapter->flags & (IXGBE_FLAG_FCOE_CAPABLE |
|
|
|
+ IXGBE_FLAG_FCOE_ENABLED)) {
|
|
|
+ adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED;
|
|
|
+ adapter->ring_feature[RING_F_FCOE].indices = 0;
|
|
|
+ netdev->features &= ~NETIF_F_FCOE_CRC;
|
|
|
+ netdev->features &= ~NETIF_F_FSO;
|
|
|
+ netdev->fcoe_ddp_xid = 0;
|
|
|
+ }
|
|
|
+#endif /* IXGBE_FCOE */
|
|
|
ixgbe_init_interrupt_scheme(adapter);
|
|
|
if (netif_running(netdev))
|
|
|
netdev->netdev_ops->ndo_open(netdev);
|