lkml.org 
[lkml]   [2020]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.7 175/265] wil6210: account for napi_gro_receive never returning GRO_DROP
    Date
    From: "Jason A. Donenfeld" <Jason@zx2c4.com>

    [ Upstream commit 045790b7bc66a75070c112a61558c639cef2263e ]

    The napi_gro_receive function no longer returns GRO_DROP ever, making
    handling GRO_DROP dead code. This commit removes that dead code.
    Further, it's not even clear that device drivers have any business in
    taking action after passing off received packets; that's arguably out of
    their hands. In this case, too, the non-gro path didn't bother checking
    the return value. Plus, this had some clunky debugging functions that
    duplicated code from elsewhere and was generally pretty messy. So, this
    commit cleans that all up too.

    Fixes: 6570bc79c0df ("net: core: use listified Rx for GRO_NORMAL in napi_gro_receive()")
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/ath/wil6210/txrx.c | 39 +++++++------------------
    1 file changed, 11 insertions(+), 28 deletions(-)

    diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c
    index bc8c15fb609dc..080e5aa60bea4 100644
    --- a/drivers/net/wireless/ath/wil6210/txrx.c
    +++ b/drivers/net/wireless/ath/wil6210/txrx.c
    @@ -897,7 +897,6 @@ static void wil_rx_handle_eapol(struct wil6210_vif *vif, struct sk_buff *skb)
    void wil_netif_rx(struct sk_buff *skb, struct net_device *ndev, int cid,
    struct wil_net_stats *stats, bool gro)
    {
    - gro_result_t rc = GRO_NORMAL;
    struct wil6210_vif *vif = ndev_to_vif(ndev);
    struct wil6210_priv *wil = ndev_to_wil(ndev);
    struct wireless_dev *wdev = vif_to_wdev(vif);
    @@ -908,22 +907,16 @@ void wil_netif_rx(struct sk_buff *skb, struct net_device *ndev, int cid,
    */
    int mcast = is_multicast_ether_addr(da);
    struct sk_buff *xmit_skb = NULL;
    - static const char * const gro_res_str[] = {
    - [GRO_MERGED] = "GRO_MERGED",
    - [GRO_MERGED_FREE] = "GRO_MERGED_FREE",
    - [GRO_HELD] = "GRO_HELD",
    - [GRO_NORMAL] = "GRO_NORMAL",
    - [GRO_DROP] = "GRO_DROP",
    - [GRO_CONSUMED] = "GRO_CONSUMED",
    - };

    if (wdev->iftype == NL80211_IFTYPE_STATION) {
    sa = wil_skb_get_sa(skb);
    if (mcast && ether_addr_equal(sa, ndev->dev_addr)) {
    /* mcast packet looped back to us */
    - rc = GRO_DROP;
    dev_kfree_skb(skb);
    - goto stats;
    + ndev->stats.rx_dropped++;
    + stats->rx_dropped++;
    + wil_dbg_txrx(wil, "Rx drop %d bytes\n", len);
    + return;
    }
    } else if (wdev->iftype == NL80211_IFTYPE_AP && !vif->ap_isolate) {
    if (mcast) {
    @@ -967,26 +960,16 @@ void wil_netif_rx(struct sk_buff *skb, struct net_device *ndev, int cid,
    wil_rx_handle_eapol(vif, skb);

    if (gro)
    - rc = napi_gro_receive(&wil->napi_rx, skb);
    + napi_gro_receive(&wil->napi_rx, skb);
    else
    netif_rx_ni(skb);
    - wil_dbg_txrx(wil, "Rx complete %d bytes => %s\n",
    - len, gro_res_str[rc]);
    - }
    -stats:
    - /* statistics. rc set to GRO_NORMAL for AP bridging */
    - 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++;
    - stats->rx_packets++;
    - ndev->stats.rx_bytes += len;
    - stats->rx_bytes += len;
    - if (mcast)
    - ndev->stats.multicast++;
    }
    + ndev->stats.rx_packets++;
    + stats->rx_packets++;
    + ndev->stats.rx_bytes += len;
    + stats->rx_bytes += len;
    + if (mcast)
    + ndev->stats.multicast++;
    }

    void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev)
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-06-30 00:10    [W:4.189 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site