Skip to content

Commit 3c9e154

Browse files
committed
Merge branch 'Enhance-current-features-in-ena-driver'
Sameeh Jubran says: ==================== Enhance current features in ena driver This series adds the following: * Exposes new device stats using ethtool. * Adds and exposes the stats of xdp TX queues through ethtool. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents e548465 + 4cd28b2 commit 3c9e154

File tree

6 files changed

+232
-51
lines changed

6 files changed

+232
-51
lines changed

drivers/net/ethernet/amazon/ena/ena_admin_defs.h

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ enum ena_admin_completion_policy_type {
117117
enum ena_admin_get_stats_type {
118118
ENA_ADMIN_GET_STATS_TYPE_BASIC = 0,
119119
ENA_ADMIN_GET_STATS_TYPE_EXTENDED = 1,
120+
/* extra HW stats for specific network interface */
121+
ENA_ADMIN_GET_STATS_TYPE_ENI = 2,
120122
};
121123

122124
enum ena_admin_get_stats_scope {
@@ -410,10 +412,43 @@ struct ena_admin_basic_stats {
410412
u32 tx_drops_high;
411413
};
412414

415+
/* ENI Statistics Command. */
416+
struct ena_admin_eni_stats {
417+
/* The number of packets shaped due to inbound aggregate BW
418+
* allowance being exceeded
419+
*/
420+
u64 bw_in_allowance_exceeded;
421+
422+
/* The number of packets shaped due to outbound aggregate BW
423+
* allowance being exceeded
424+
*/
425+
u64 bw_out_allowance_exceeded;
426+
427+
/* The number of packets shaped due to PPS allowance being exceeded */
428+
u64 pps_allowance_exceeded;
429+
430+
/* The number of packets shaped due to connection tracking
431+
* allowance being exceeded and leading to failure in establishment
432+
* of new connections
433+
*/
434+
u64 conntrack_allowance_exceeded;
435+
436+
/* The number of packets shaped due to linklocal packet rate
437+
* allowance being exceeded
438+
*/
439+
u64 linklocal_allowance_exceeded;
440+
};
441+
413442
struct ena_admin_acq_get_stats_resp {
414443
struct ena_admin_acq_common_desc acq_common_desc;
415444

416-
struct ena_admin_basic_stats basic_stats;
445+
union {
446+
u64 raw[7];
447+
448+
struct ena_admin_basic_stats basic_stats;
449+
450+
struct ena_admin_eni_stats eni_stats;
451+
} u;
417452
};
418453

419454
struct ena_admin_get_set_feature_common_desc {

drivers/net/ethernet/amazon/ena/ena_com.c

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2167,6 +2167,21 @@ static int ena_get_dev_stats(struct ena_com_dev *ena_dev,
21672167
return ret;
21682168
}
21692169

2170+
int ena_com_get_eni_stats(struct ena_com_dev *ena_dev,
2171+
struct ena_admin_eni_stats *stats)
2172+
{
2173+
struct ena_com_stats_ctx ctx;
2174+
int ret;
2175+
2176+
memset(&ctx, 0x0, sizeof(ctx));
2177+
ret = ena_get_dev_stats(ena_dev, &ctx, ENA_ADMIN_GET_STATS_TYPE_ENI);
2178+
if (likely(ret == 0))
2179+
memcpy(stats, &ctx.get_resp.u.eni_stats,
2180+
sizeof(ctx.get_resp.u.eni_stats));
2181+
2182+
return ret;
2183+
}
2184+
21702185
int ena_com_get_dev_basic_stats(struct ena_com_dev *ena_dev,
21712186
struct ena_admin_basic_stats *stats)
21722187
{
@@ -2176,8 +2191,8 @@ int ena_com_get_dev_basic_stats(struct ena_com_dev *ena_dev,
21762191
memset(&ctx, 0x0, sizeof(ctx));
21772192
ret = ena_get_dev_stats(ena_dev, &ctx, ENA_ADMIN_GET_STATS_TYPE_BASIC);
21782193
if (likely(ret == 0))
2179-
memcpy(stats, &ctx.get_resp.basic_stats,
2180-
sizeof(ctx.get_resp.basic_stats));
2194+
memcpy(stats, &ctx.get_resp.u.basic_stats,
2195+
sizeof(ctx.get_resp.u.basic_stats));
21812196

21822197
return ret;
21832198
}

drivers/net/ethernet/amazon/ena/ena_com.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,15 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev,
616616
int ena_com_get_dev_basic_stats(struct ena_com_dev *ena_dev,
617617
struct ena_admin_basic_stats *stats);
618618

619+
/* ena_com_get_eni_stats - Get extended network interface statistics
620+
* @ena_dev: ENA communication layer struct
621+
* @stats: stats return value
622+
*
623+
* @return: 0 on Success and negative value otherwise.
624+
*/
625+
int ena_com_get_eni_stats(struct ena_com_dev *ena_dev,
626+
struct ena_admin_eni_stats *stats);
627+
619628
/* ena_com_set_dev_mtu - Configure the device mtu.
620629
* @ena_dev: ENA communication layer struct
621630
* @mtu: mtu value

0 commit comments

Comments
 (0)