Commit e129f6b5 authored by Richard Laing's avatar Richard Laing Committed by David S. Miller
Browse files

net: mhi: Improve MBIM packet counting



Packets are aggregated over the MBIM link and currently the MHI net
device will count each aggregated packet rather then the actual
packets themselves.

If a protocol handler module is specified, use that to count the
packets rather than directly in the MHI net device. This is in line
with the behaviour of the USB net cdc_mbim driver.

Signed-off-by: default avatarRichard Laing <richard.laing@alliedtelesis.co.nz>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a0302ff5
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -205,11 +205,6 @@ static void mhi_net_dl_callback(struct mhi_device *mhi_dev,
			mhi_netdev->skbagg_head = NULL;
		}

		u64_stats_update_begin(&mhi_netdev->stats.rx_syncp);
		u64_stats_inc(&mhi_netdev->stats.rx_packets);
		u64_stats_add(&mhi_netdev->stats.rx_bytes, skb->len);
		u64_stats_update_end(&mhi_netdev->stats.rx_syncp);

		switch (skb->data[0] & 0xf0) {
		case 0x40:
			skb->protocol = htons(ETH_P_IP);
@@ -222,11 +217,16 @@ static void mhi_net_dl_callback(struct mhi_device *mhi_dev,
			break;
		}

		if (proto && proto->rx)
		if (proto && proto->rx) {
			proto->rx(mhi_netdev, skb);
		else
		} else {
			u64_stats_update_begin(&mhi_netdev->stats.rx_syncp);
			u64_stats_inc(&mhi_netdev->stats.rx_packets);
			u64_stats_add(&mhi_netdev->stats.rx_bytes, skb->len);
			u64_stats_update_end(&mhi_netdev->stats.rx_syncp);
			netif_rx(skb);
		}
	}

	/* Refill if RX buffers queue becomes low */
	if (free_desc_count >= mhi_netdev->rx_queue_sz / 2)
+4 −0
Original line number Diff line number Diff line
@@ -211,6 +211,10 @@ static void mbim_rx(struct mhi_net_dev *mhi_netdev, struct sk_buff *skb)
				continue;
			}

			u64_stats_update_begin(&mhi_netdev->stats.rx_syncp);
			u64_stats_inc(&mhi_netdev->stats.rx_packets);
			u64_stats_add(&mhi_netdev->stats.rx_bytes, skbn->len);
			u64_stats_update_end(&mhi_netdev->stats.rx_syncp);
			netif_rx(skbn);
		}
next_ndp: