|
@@ -434,6 +434,21 @@ static s32 ixgbevf_check_mac_link_vf(struct ixgbe_hw *hw,
|
|
|
if (!(links_reg & IXGBE_LINKS_UP))
|
|
|
goto out;
|
|
|
|
|
|
+ /* for SFP+ modules and DA cables on 82599 it can take up to 500usecs
|
|
|
+ * before the link status is correct
|
|
|
+ */
|
|
|
+ if (mac->type == ixgbe_mac_82599_vf) {
|
|
|
+ int i;
|
|
|
+
|
|
|
+ for (i = 0; i < 5; i++) {
|
|
|
+ udelay(100);
|
|
|
+ links_reg = IXGBE_READ_REG(hw, IXGBE_VFLINKS);
|
|
|
+
|
|
|
+ if (!(links_reg & IXGBE_LINKS_UP))
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
switch (links_reg & IXGBE_LINKS_SPEED_82599) {
|
|
|
case IXGBE_LINKS_SPEED_10G_82599:
|
|
|
*speed = IXGBE_LINK_SPEED_10GB_FULL;
|