|
@@ -557,9 +557,8 @@ static int prb_calc_retire_blk_tmo(struct packet_sock *po,
|
|
{
|
|
{
|
|
struct net_device *dev;
|
|
struct net_device *dev;
|
|
unsigned int mbits = 0, msec = 0, div = 0, tmo = 0;
|
|
unsigned int mbits = 0, msec = 0, div = 0, tmo = 0;
|
|
- struct ethtool_cmd ecmd;
|
|
|
|
|
|
+ struct ethtool_link_ksettings ecmd;
|
|
int err;
|
|
int err;
|
|
- u32 speed;
|
|
|
|
|
|
|
|
rtnl_lock();
|
|
rtnl_lock();
|
|
dev = __dev_get_by_index(sock_net(&po->sk), po->ifindex);
|
|
dev = __dev_get_by_index(sock_net(&po->sk), po->ifindex);
|
|
@@ -567,19 +566,19 @@ static int prb_calc_retire_blk_tmo(struct packet_sock *po,
|
|
rtnl_unlock();
|
|
rtnl_unlock();
|
|
return DEFAULT_PRB_RETIRE_TOV;
|
|
return DEFAULT_PRB_RETIRE_TOV;
|
|
}
|
|
}
|
|
- err = __ethtool_get_settings(dev, &ecmd);
|
|
|
|
- speed = ethtool_cmd_speed(&ecmd);
|
|
|
|
|
|
+ err = __ethtool_get_link_ksettings(dev, &ecmd);
|
|
rtnl_unlock();
|
|
rtnl_unlock();
|
|
if (!err) {
|
|
if (!err) {
|
|
/*
|
|
/*
|
|
* If the link speed is so slow you don't really
|
|
* If the link speed is so slow you don't really
|
|
* need to worry about perf anyways
|
|
* need to worry about perf anyways
|
|
*/
|
|
*/
|
|
- if (speed < SPEED_1000 || speed == SPEED_UNKNOWN) {
|
|
|
|
|
|
+ if (ecmd.base.speed < SPEED_1000 ||
|
|
|
|
+ ecmd.base.speed == SPEED_UNKNOWN) {
|
|
return DEFAULT_PRB_RETIRE_TOV;
|
|
return DEFAULT_PRB_RETIRE_TOV;
|
|
} else {
|
|
} else {
|
|
msec = 1;
|
|
msec = 1;
|
|
- div = speed / 1000;
|
|
|
|
|
|
+ div = ecmd.base.speed / 1000;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|