Commit b5998e6a authored by Vladimir Kondratiev's avatar Vladimir Kondratiev Committed by John W. Linville

wil6210: use GRO

GRO is easy to enable when already using NAPI framework,
and it improves CPU utilisation. Enable it by default.
Signed-off-by: default avatarVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 9c3bde56
...@@ -128,7 +128,7 @@ void *wil_if_alloc(struct device *dev, void __iomem *csr) ...@@ -128,7 +128,7 @@ void *wil_if_alloc(struct device *dev, void __iomem *csr)
ndev->netdev_ops = &wil_netdev_ops; ndev->netdev_ops = &wil_netdev_ops;
ndev->ieee80211_ptr = wdev; ndev->ieee80211_ptr = wdev;
ndev->hw_features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM | ndev->hw_features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM |
NETIF_F_SG; NETIF_F_SG | NETIF_F_GRO;
ndev->features |= ndev->hw_features; ndev->features |= ndev->hw_features;
SET_NETDEV_DEV(ndev, wiphy_dev(wdev->wiphy)); SET_NETDEV_DEV(ndev, wiphy_dev(wdev->wiphy));
wdev->netdev = ndev; wdev->netdev = ndev;
......
...@@ -488,7 +488,7 @@ static int wil_rx_refill(struct wil6210_priv *wil, int count) ...@@ -488,7 +488,7 @@ static int wil_rx_refill(struct wil6210_priv *wil, int count)
*/ */
void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev) void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev)
{ {
int rc; gro_result_t rc;
struct wil6210_priv *wil = ndev_to_wil(ndev); struct wil6210_priv *wil = ndev_to_wil(ndev);
unsigned int len = skb->len; unsigned int len = skb->len;
struct vring_rx_desc *d = wil_skb_rxdesc(skb); struct vring_rx_desc *d = wil_skb_rxdesc(skb);
...@@ -497,17 +497,17 @@ void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev) ...@@ -497,17 +497,17 @@ void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev)
skb_orphan(skb); skb_orphan(skb);
rc = netif_receive_skb(skb); rc = napi_gro_receive(&wil->napi_rx, skb);
if (likely(rc == NET_RX_SUCCESS)) { if (unlikely(rc == GRO_DROP)) {
ndev->stats.rx_dropped++;
stats->rx_dropped++;
wil_dbg_txrx(wil, "Rx drop %d bytes\n", len);
} else {
ndev->stats.rx_packets++; ndev->stats.rx_packets++;
stats->rx_packets++; stats->rx_packets++;
ndev->stats.rx_bytes += len; ndev->stats.rx_bytes += len;
stats->rx_bytes += len; stats->rx_bytes += len;
} else {
ndev->stats.rx_dropped++;
stats->rx_dropped++;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment