1 // SPDX-License-Identifier: GPL-2.0
9 #include "ethtool-user.h"
11 int main(int argc
, char **argv
)
13 struct ethtool_channels_get_req_dump creq
= {};
14 struct ethtool_rings_get_req_dump rreq
= {};
15 struct ethtool_channels_get_list
*channels
;
16 struct ethtool_rings_get_list
*rings
;
19 ys
= ynl_sock_create(&ynl_ethtool_family
, NULL
);
23 creq
._present
.header
= 1; /* ethtool needs an empty nest, sigh */
24 channels
= ethtool_channels_get_dump(ys
, &creq
);
28 printf("Channels:\n");
29 ynl_dump_foreach(channels
, dev
) {
30 printf(" %8s: ", dev
->header
.dev_name
);
31 if (dev
->_present
.rx_count
)
32 printf("rx %d ", dev
->rx_count
);
33 if (dev
->_present
.tx_count
)
34 printf("tx %d ", dev
->tx_count
);
35 if (dev
->_present
.combined_count
)
36 printf("combined %d ", dev
->combined_count
);
39 ethtool_channels_get_list_free(channels
);
41 rreq
._present
.header
= 1; /* ethtool needs an empty nest.. */
42 rings
= ethtool_rings_get_dump(ys
, &rreq
);
47 ynl_dump_foreach(rings
, dev
) {
48 printf(" %8s: ", dev
->header
.dev_name
);
50 printf("rx %d ", dev
->rx
);
52 printf("tx %d ", dev
->tx
);
55 ethtool_rings_get_list_free(rings
);
62 fprintf(stderr
, "YNL (%d): %s\n", ys
->err
.code
, ys
->err
.msg
);