Commit 8c498935 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by David S. Miller
Browse files

docs: networking: convert gen_stats.txt to ReST



- add SPDX header;
- mark code blocks and literals as such;
- mark tables as such;
- mark lists as such;
- adjust identation, whitespaces and blank lines;
- add to networking/index.rst.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 11066250
Loading
Loading
Loading
Loading
+54 −44
Original line number Diff line number Diff line
.. SPDX-License-Identifier: GPL-2.0

===============================================
Generic networking statistics for netlink users
======================================================================
===============================================

Statistic counters are grouped into structs:

==================== ===================== =====================
Struct               TLV type              Description
----------------------------------------------------------------------
==================== ===================== =====================
gnet_stats_basic     TCA_STATS_BASIC       Basic statistics
gnet_stats_rate_est  TCA_STATS_RATE_EST    Rate estimator
gnet_stats_queue     TCA_STATS_QUEUE       Queue statistics
none                 TCA_STATS_APP         Application specific
==================== ===================== =====================


Collecting:
-----------

Declare the statistic structs you need:
Declare the statistic structs you need::

	struct mystruct {
		struct gnet_stats_basic	bstats;
		struct gnet_stats_queue	qstats;
		...
	};

Update statistics, in dequeue() methods only, (while owning qdisc->running)
Update statistics, in dequeue() methods only, (while owning qdisc->running)::

	mystruct->tstats.packet++;
	mystruct->qstats.backlog += skb->pkt_len;

@@ -29,6 +36,8 @@ mystruct->qstats.backlog += skb->pkt_len;
Export to userspace (Dump):
---------------------------

::

    my_dumping_routine(struct sk_buff *skb, ...)
    {
	    struct gnet_dump dump;
@@ -52,7 +61,7 @@ TCA_STATS/TCA_XSTATS backward compatibility:

Prior users of struct tc_stats and xstats can maintain backward
compatibility by calling the compat wrappers to keep providing the
existing TLV types.
existing TLV types::

    my_dumping_routine(struct sk_buff *skb, ...)
    {
@@ -77,7 +86,7 @@ are responsible for making sure that the lock is initialized.


Rate Estimator:
--------------
---------------

0) Prepare an estimator attribute. Most likely this would be in user
   space. The value of this TLV should contain a tc_estimator structure.
@@ -92,10 +101,11 @@ Rate Estimator:
   TCA_RATE to your code in the kernel.

In the kernel when setting up:

1) make sure you have basic stats and rate stats setup first.
2) make sure you have initialized stats lock that is used to setup such
   stats.
3) Now initialize a new estimator:
3) Now initialize a new estimator::

    int ret = gen_new_estimator(my_basicstats,my_rate_est_stats,
	mystats_lock, attr_with_tcestimator_struct);
@@ -115,5 +125,5 @@ are still valid (i.e still exist) at the time of making this call.

Authors:
--------
Thomas Graf <tgraf@suug.ch>
Jamal Hadi Salim <hadi@cyberus.ca>
- Thomas Graf <tgraf@suug.ch>
- Jamal Hadi Salim <hadi@cyberus.ca>
+1 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ Contents:
   framerelay
   generic-hdlc
   generic_netlink
   gen_stats

.. only::  subproject and html

+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@
 *           Jamal Hadi Salim
 *           Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
 *
 * See Documentation/networking/gen_stats.txt
 * See Documentation/networking/gen_stats.rst
 */

#include <linux/types.h>