mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-20 03:04:01 +08:00
r8152: support setting rx coalesce
Support setting the rx coalesce. Then someone could change the rx agg timeout value through ethtool. Signed-off-by: Hayes Wang <hayeswang@realtek.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
396e2e235a
commit
efb3dd88f4
@ -3713,6 +3713,61 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rtl8152_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
{
|
||||
struct r8152 *tp = netdev_priv(netdev);
|
||||
|
||||
switch (tp->version) {
|
||||
case RTL_VER_01:
|
||||
case RTL_VER_02:
|
||||
return -EOPNOTSUPP;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
coalesce->rx_coalesce_usecs = tp->coalesce;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rtl8152_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *coalesce)
|
||||
{
|
||||
struct r8152 *tp = netdev_priv(netdev);
|
||||
int ret;
|
||||
|
||||
switch (tp->version) {
|
||||
case RTL_VER_01:
|
||||
case RTL_VER_02:
|
||||
return -EOPNOTSUPP;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (coalesce->rx_coalesce_usecs > COALESCE_SLOW)
|
||||
return -EINVAL;
|
||||
|
||||
ret = usb_autopm_get_interface(tp->intf);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
mutex_lock(&tp->control);
|
||||
|
||||
if (tp->coalesce != coalesce->rx_coalesce_usecs) {
|
||||
tp->coalesce = coalesce->rx_coalesce_usecs;
|
||||
|
||||
if (netif_running(tp->netdev) && netif_carrier_ok(netdev))
|
||||
r8153_set_rx_early_timeout(tp);
|
||||
}
|
||||
|
||||
mutex_unlock(&tp->control);
|
||||
|
||||
usb_autopm_put_interface(tp->intf);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static struct ethtool_ops ops = {
|
||||
.get_drvinfo = rtl8152_get_drvinfo,
|
||||
.get_settings = rtl8152_get_settings,
|
||||
@ -3726,6 +3781,8 @@ static struct ethtool_ops ops = {
|
||||
.get_strings = rtl8152_get_strings,
|
||||
.get_sset_count = rtl8152_get_sset_count,
|
||||
.get_ethtool_stats = rtl8152_get_ethtool_stats,
|
||||
.get_coalesce = rtl8152_get_coalesce,
|
||||
.set_coalesce = rtl8152_set_coalesce,
|
||||
.get_eee = rtl_ethtool_get_eee,
|
||||
.set_eee = rtl_ethtool_set_eee,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user