|
@@ -5503,14 +5503,18 @@ static void i40e_link_event(struct i40e_pf *pf)
|
|
{
|
|
{
|
|
bool new_link, old_link;
|
|
bool new_link, old_link;
|
|
struct i40e_vsi *vsi = pf->vsi[pf->lan_vsi];
|
|
struct i40e_vsi *vsi = pf->vsi[pf->lan_vsi];
|
|
|
|
+ u8 new_link_speed, old_link_speed;
|
|
|
|
|
|
/* set this to force the get_link_status call to refresh state */
|
|
/* set this to force the get_link_status call to refresh state */
|
|
pf->hw.phy.get_link_info = true;
|
|
pf->hw.phy.get_link_info = true;
|
|
|
|
|
|
old_link = (pf->hw.phy.link_info_old.link_info & I40E_AQ_LINK_UP);
|
|
old_link = (pf->hw.phy.link_info_old.link_info & I40E_AQ_LINK_UP);
|
|
new_link = i40e_get_link_status(&pf->hw);
|
|
new_link = i40e_get_link_status(&pf->hw);
|
|
|
|
+ old_link_speed = pf->hw.phy.link_info_old.link_speed;
|
|
|
|
+ new_link_speed = pf->hw.phy.link_info.link_speed;
|
|
|
|
|
|
if (new_link == old_link &&
|
|
if (new_link == old_link &&
|
|
|
|
+ new_link_speed == old_link_speed &&
|
|
(test_bit(__I40E_DOWN, &vsi->state) ||
|
|
(test_bit(__I40E_DOWN, &vsi->state) ||
|
|
new_link == netif_carrier_ok(vsi->netdev)))
|
|
new_link == netif_carrier_ok(vsi->netdev)))
|
|
return;
|
|
return;
|