mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 23:27:06 +00:00
i40e: report correct VF link speed when link state is set to enable
When the virtual link state was set to "enable" ethtool would report link speed as 40000Mb/s regardless of the underlying device. Report the correct link speed. Example from a XXV710 NIC. Before: $ ip link set ens3f0 vf 0 state auto $ ethtool enp8s2 | grep Speed Speed: 25000Mb/s $ ip link set ens3f0 vf 0 state enable $ ethtool enp8s2 | grep Speed Speed: 40000Mb/s After: $ ip link set ens3f0 vf 0 state auto $ ethtool enp8s2 | grep Speed Speed: 25000Mb/s $ ip link set ens3f0 vf 0 state enable $ ethtool enp8s2 | grep Speed Speed: 25000Mb/s Signed-off-by: Stefan Assmann <sassmann@kpanic.de> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
088d5360d0
commit
6ec12e1e94
1 changed files with 3 additions and 2 deletions
|
@ -63,7 +63,7 @@ static void i40e_vc_notify_vf_link_state(struct i40e_vf *vf)
|
|||
} else if (vf->link_forced) {
|
||||
pfe.event_data.link_event.link_status = vf->link_up;
|
||||
pfe.event_data.link_event.link_speed =
|
||||
(vf->link_up ? VIRTCHNL_LINK_SPEED_40GB : 0);
|
||||
(vf->link_up ? i40e_virtchnl_link_speed(ls->link_speed) : 0);
|
||||
} else {
|
||||
pfe.event_data.link_event.link_status =
|
||||
ls->link_info & I40E_AQ_LINK_UP;
|
||||
|
@ -4437,6 +4437,7 @@ int i40e_ndo_set_vf_link_state(struct net_device *netdev, int vf_id, int link)
|
|||
{
|
||||
struct i40e_netdev_priv *np = netdev_priv(netdev);
|
||||
struct i40e_pf *pf = np->vsi->back;
|
||||
struct i40e_link_status *ls = &pf->hw.phy.link_info;
|
||||
struct virtchnl_pf_event pfe;
|
||||
struct i40e_hw *hw = &pf->hw;
|
||||
struct i40e_vf *vf;
|
||||
|
@ -4474,7 +4475,7 @@ int i40e_ndo_set_vf_link_state(struct net_device *netdev, int vf_id, int link)
|
|||
vf->link_forced = true;
|
||||
vf->link_up = true;
|
||||
pfe.event_data.link_event.link_status = true;
|
||||
pfe.event_data.link_event.link_speed = VIRTCHNL_LINK_SPEED_40GB;
|
||||
pfe.event_data.link_event.link_speed = i40e_virtchnl_link_speed(ls->link_speed);
|
||||
break;
|
||||
case IFLA_VF_LINK_STATE_DISABLE:
|
||||
vf->link_forced = true;
|
||||
|
|
Loading…
Reference in a new issue