ehea: Fixing LRO configuration
In order to set LRO on ehea, the user must set a module parameter, which is not the standard way to do so. This patch adds a way to set LRO using the ethtool tool. Signed-off-by: Breno Leitao <leitao@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
67631510a3
commit
c7757fdb41
2 changed files with 14 additions and 2 deletions
|
@ -261,6 +261,13 @@ static void ehea_get_ethtool_stats(struct net_device *dev,
|
|||
|
||||
}
|
||||
|
||||
static int ehea_set_flags(struct net_device *dev, u32 data)
|
||||
{
|
||||
return ethtool_op_set_flags(dev, data, ETH_FLAG_LRO
|
||||
| ETH_FLAG_TXVLAN
|
||||
| ETH_FLAG_RXVLAN);
|
||||
}
|
||||
|
||||
const struct ethtool_ops ehea_ethtool_ops = {
|
||||
.get_settings = ehea_get_settings,
|
||||
.get_drvinfo = ehea_get_drvinfo,
|
||||
|
@ -273,6 +280,8 @@ const struct ethtool_ops ehea_ethtool_ops = {
|
|||
.get_ethtool_stats = ehea_get_ethtool_stats,
|
||||
.get_rx_csum = ehea_get_rx_csum,
|
||||
.set_settings = ehea_set_settings,
|
||||
.get_flags = ethtool_op_get_flags,
|
||||
.set_flags = ehea_set_flags,
|
||||
.nway_reset = ehea_nway_reset, /* Restart autonegotiation */
|
||||
};
|
||||
|
||||
|
|
|
@ -683,7 +683,7 @@ static void ehea_proc_skb(struct ehea_port_res *pr, struct ehea_cqe *cqe,
|
|||
int vlan_extracted = ((cqe->status & EHEA_CQE_VLAN_TAG_XTRACT) &&
|
||||
pr->port->vgrp);
|
||||
|
||||
if (use_lro) {
|
||||
if (skb->dev->features & NETIF_F_LRO) {
|
||||
if (vlan_extracted)
|
||||
lro_vlan_hwaccel_receive_skb(&pr->lro_mgr, skb,
|
||||
pr->port->vgrp,
|
||||
|
@ -787,7 +787,7 @@ static int ehea_proc_rwqes(struct net_device *dev,
|
|||
}
|
||||
cqe = ehea_poll_rq1(qp, &wqe_index);
|
||||
}
|
||||
if (use_lro)
|
||||
if (dev->features & NETIF_F_LRO)
|
||||
lro_flush_all(&pr->lro_mgr);
|
||||
|
||||
pr->rx_packets += processed;
|
||||
|
@ -3278,6 +3278,9 @@ struct ehea_port *ehea_setup_single_port(struct ehea_adapter *adapter,
|
|||
| NETIF_F_LLTX;
|
||||
dev->watchdog_timeo = EHEA_WATCH_DOG_TIMEOUT;
|
||||
|
||||
if (use_lro)
|
||||
dev->features |= NETIF_F_LRO;
|
||||
|
||||
INIT_WORK(&port->reset_task, ehea_reset_port);
|
||||
|
||||
ret = register_netdev(dev);
|
||||
|
|
Loading…
Reference in a new issue