diff options
Diffstat (limited to 'drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c index a5d9cc5bb257..c5ffe1dd3fcd 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | |||
@@ -1334,6 +1334,25 @@ static void ixgbevf_init_last_counter_stats(struct ixgbevf_adapter *adapter) | |||
1334 | adapter->stats.base_vfmprc = adapter->stats.last_vfmprc; | 1334 | adapter->stats.base_vfmprc = adapter->stats.last_vfmprc; |
1335 | } | 1335 | } |
1336 | 1336 | ||
1337 | static void ixgbevf_negotiate_api(struct ixgbevf_adapter *adapter) | ||
1338 | { | ||
1339 | struct ixgbe_hw *hw = &adapter->hw; | ||
1340 | int api[] = { ixgbe_mbox_api_10, | ||
1341 | ixgbe_mbox_api_unknown }; | ||
1342 | int err = 0, idx = 0; | ||
1343 | |||
1344 | spin_lock(&adapter->mbx_lock); | ||
1345 | |||
1346 | while (api[idx] != ixgbe_mbox_api_unknown) { | ||
1347 | err = ixgbevf_negotiate_api_version(hw, api[idx]); | ||
1348 | if (!err) | ||
1349 | break; | ||
1350 | idx++; | ||
1351 | } | ||
1352 | |||
1353 | spin_unlock(&adapter->mbx_lock); | ||
1354 | } | ||
1355 | |||
1337 | static void ixgbevf_up_complete(struct ixgbevf_adapter *adapter) | 1356 | static void ixgbevf_up_complete(struct ixgbevf_adapter *adapter) |
1338 | { | 1357 | { |
1339 | struct net_device *netdev = adapter->netdev; | 1358 | struct net_device *netdev = adapter->netdev; |
@@ -1399,6 +1418,8 @@ void ixgbevf_up(struct ixgbevf_adapter *adapter) | |||
1399 | { | 1418 | { |
1400 | struct ixgbe_hw *hw = &adapter->hw; | 1419 | struct ixgbe_hw *hw = &adapter->hw; |
1401 | 1420 | ||
1421 | ixgbevf_negotiate_api(adapter); | ||
1422 | |||
1402 | ixgbevf_configure(adapter); | 1423 | ixgbevf_configure(adapter); |
1403 | 1424 | ||
1404 | ixgbevf_up_complete(adapter); | 1425 | ixgbevf_up_complete(adapter); |
@@ -2388,6 +2409,8 @@ static int ixgbevf_open(struct net_device *netdev) | |||
2388 | } | 2409 | } |
2389 | } | 2410 | } |
2390 | 2411 | ||
2412 | ixgbevf_negotiate_api(adapter); | ||
2413 | |||
2391 | /* allocate transmit descriptors */ | 2414 | /* allocate transmit descriptors */ |
2392 | err = ixgbevf_setup_all_tx_resources(adapter); | 2415 | err = ixgbevf_setup_all_tx_resources(adapter); |
2393 | if (err) | 2416 | if (err) |