rmnet_core: track coalescing usage per descriptor

Descriptors that came from coalesced frames will now carry usage info.
In order to prevent overcoutning, only the first segment from each frame
will report this information; the rest will report 0.

This allows a simple calculation of summing the coal_bytes and coal_bufsize
values reported and dividing to determine the total ratio over a given
period.

These values will be reported in the SKB via a new Control Block struct,
accessable via RMNET_SKB_CB(skb);

Change-Id: I8ea31921afa3afad4d2c570ec5728118bd635b86
Signed-off-by: Sean Tranchetti <stranche@codeaurora.org>
このコミットが含まれているのは:
Sean Tranchetti
2021-08-23 11:09:25 -07:00
committed by Subash Abhinov Kasiviswanathan
コミット 50a4832e09
4個のファイルの変更51行の追加14行の削除

ファイルの表示

@@ -1,4 +1,4 @@
/* Copyright (c) 2013-2014, 2016-2020 The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2014, 2016-2021 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -13,6 +13,8 @@
#ifndef _RMNET_PRIVATE_H_
#define _RMNET_PRIVATE_H_
#include <linux/types.h>
#define RMNET_MAX_PACKET_SIZE 16384
#define RMNET_DFLT_PACKET_SIZE 1500
#define RMNET_NEEDED_HEADROOM 16
@@ -45,4 +47,17 @@ RMNET_INGRESS_FORMAT_DL_MARKER_V2)
/* Pass the frame directly to another device with dev_queue_xmit() */
#define RMNET_EPMODE_BRIDGE (2)
/* Struct for skb control block use within rmnet driver */
struct rmnet_skb_cb {
/* MUST be the first entries because of legacy reasons */
char flush_shs;
char qmap_steer;
/* coalescing stats */
u32 coal_bytes;
u32 coal_bufsize;
};
#define RMNET_SKB_CB(skb) ((struct rmnet_skb_cb *)(skb)->cb)
#endif /* _RMNET_PRIVATE_H_ */