aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdward Cree <ecree@solarflare.com>2014-07-15 06:58:12 -0400
committerDavid S. Miller <davem@davemloft.net>2014-07-16 01:53:34 -0400
commite4d112e4f9502083fd27f9ac1a4cd690e3f01421 (patch)
tree1e6d9f30d787d9df8214378923ea621af2afb0be
parentd762d038497c9df51c19fcbe69b094b3bf8e5568 (diff)
sfc: add extra RX drop counters for nodesc_trunc and noskb_drop
Added a counter rx_noskb_drop for failure to allocate an skb. Summed the per-channel rx_nodesc_trunc counters earlier so that they can be included in rx_dropped. Signed-off-by: Edward Cree <ecree@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/sfc/ef10.c14
-rw-r--r--drivers/net/ethernet/sfc/efx.c11
-rw-r--r--drivers/net/ethernet/sfc/efx.h3
-rw-r--r--drivers/net/ethernet/sfc/ethtool.c1
-rw-r--r--drivers/net/ethernet/sfc/falcon.c9
-rw-r--r--drivers/net/ethernet/sfc/net_driver.h2
-rw-r--r--drivers/net/ethernet/sfc/nic.h13
-rw-r--r--drivers/net/ethernet/sfc/rx.c4
-rw-r--r--drivers/net/ethernet/sfc/siena.c9
9 files changed, 56 insertions, 10 deletions
diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
index b5ed30a39144..002d4cdc319f 100644
--- a/drivers/net/ethernet/sfc/ef10.c
+++ b/drivers/net/ethernet/sfc/ef10.c
@@ -755,6 +755,8 @@ static int efx_ef10_reset(struct efx_nic *efx, enum reset_type reset_type)
755 { NULL, 64, 8 * MC_CMD_MAC_ ## mcdi_name } 755 { NULL, 64, 8 * MC_CMD_MAC_ ## mcdi_name }
756#define EF10_OTHER_STAT(ext_name) \ 756#define EF10_OTHER_STAT(ext_name) \
757 [EF10_STAT_ ## ext_name] = { #ext_name, 0, 0 } 757 [EF10_STAT_ ## ext_name] = { #ext_name, 0, 0 }
758#define GENERIC_SW_STAT(ext_name) \
759 [GENERIC_STAT_ ## ext_name] = { #ext_name, 0, 0 }
758 760
759static const struct efx_hw_stat_desc efx_ef10_stat_desc[EF10_STAT_COUNT] = { 761static const struct efx_hw_stat_desc efx_ef10_stat_desc[EF10_STAT_COUNT] = {
760 EF10_DMA_STAT(tx_bytes, TX_BYTES), 762 EF10_DMA_STAT(tx_bytes, TX_BYTES),
@@ -798,6 +800,8 @@ static const struct efx_hw_stat_desc efx_ef10_stat_desc[EF10_STAT_COUNT] = {
798 EF10_DMA_STAT(rx_align_error, RX_ALIGN_ERROR_PKTS), 800 EF10_DMA_STAT(rx_align_error, RX_ALIGN_ERROR_PKTS),
799 EF10_DMA_STAT(rx_length_error, RX_LENGTH_ERROR_PKTS), 801 EF10_DMA_STAT(rx_length_error, RX_LENGTH_ERROR_PKTS),
800 EF10_DMA_STAT(rx_nodesc_drops, RX_NODESC_DROPS), 802 EF10_DMA_STAT(rx_nodesc_drops, RX_NODESC_DROPS),
803 GENERIC_SW_STAT(rx_nodesc_trunc),
804 GENERIC_SW_STAT(rx_noskb_drops),
801 EF10_DMA_STAT(rx_pm_trunc_bb_overflow, PM_TRUNC_BB_OVERFLOW), 805 EF10_DMA_STAT(rx_pm_trunc_bb_overflow, PM_TRUNC_BB_OVERFLOW),
802 EF10_DMA_STAT(rx_pm_discard_bb_overflow, PM_DISCARD_BB_OVERFLOW), 806 EF10_DMA_STAT(rx_pm_discard_bb_overflow, PM_DISCARD_BB_OVERFLOW),
803 EF10_DMA_STAT(rx_pm_trunc_vfifo_full, PM_TRUNC_VFIFO_FULL), 807 EF10_DMA_STAT(rx_pm_trunc_vfifo_full, PM_TRUNC_VFIFO_FULL),
@@ -841,7 +845,9 @@ static const struct efx_hw_stat_desc efx_ef10_stat_desc[EF10_STAT_COUNT] = {
841 (1ULL << EF10_STAT_rx_gtjumbo) | \ 845 (1ULL << EF10_STAT_rx_gtjumbo) | \
842 (1ULL << EF10_STAT_rx_bad_gtjumbo) | \ 846 (1ULL << EF10_STAT_rx_bad_gtjumbo) | \
843 (1ULL << EF10_STAT_rx_overflow) | \ 847 (1ULL << EF10_STAT_rx_overflow) | \
844 (1ULL << EF10_STAT_rx_nodesc_drops)) 848 (1ULL << EF10_STAT_rx_nodesc_drops) | \
849 (1ULL << GENERIC_STAT_rx_nodesc_trunc) | \
850 (1ULL << GENERIC_STAT_rx_noskb_drops))
845 851
846/* These statistics are only provided by the 10G MAC. For a 10G/40G 852/* These statistics are only provided by the 10G MAC. For a 10G/40G
847 * switchable port we do not expose these because they might not 853 * switchable port we do not expose these because they might not
@@ -951,7 +957,7 @@ static int efx_ef10_try_update_nic_stats(struct efx_nic *efx)
951 stats[EF10_STAT_rx_bytes_minus_good_bytes]; 957 stats[EF10_STAT_rx_bytes_minus_good_bytes];
952 efx_update_diff_stat(&stats[EF10_STAT_rx_bad_bytes], 958 efx_update_diff_stat(&stats[EF10_STAT_rx_bad_bytes],
953 stats[EF10_STAT_rx_bytes_minus_good_bytes]); 959 stats[EF10_STAT_rx_bytes_minus_good_bytes]);
954 960 efx_update_sw_stats(efx, stats);
955 return 0; 961 return 0;
956} 962}
957 963
@@ -990,7 +996,9 @@ static size_t efx_ef10_update_stats(struct efx_nic *efx, u64 *full_stats,
990 core_stats->tx_packets = stats[EF10_STAT_tx_packets]; 996 core_stats->tx_packets = stats[EF10_STAT_tx_packets];
991 core_stats->rx_bytes = stats[EF10_STAT_rx_bytes]; 997 core_stats->rx_bytes = stats[EF10_STAT_rx_bytes];
992 core_stats->tx_bytes = stats[EF10_STAT_tx_bytes]; 998 core_stats->tx_bytes = stats[EF10_STAT_tx_bytes];
993 core_stats->rx_dropped = stats[EF10_STAT_rx_nodesc_drops]; 999 core_stats->rx_dropped = stats[EF10_STAT_rx_nodesc_drops] +
1000 stats[GENERIC_STAT_rx_nodesc_trunc] +
1001 stats[GENERIC_STAT_rx_noskb_drops];
994 core_stats->multicast = stats[EF10_STAT_rx_multicast]; 1002 core_stats->multicast = stats[EF10_STAT_rx_multicast];
995 core_stats->rx_length_errors = 1003 core_stats->rx_length_errors =
996 stats[EF10_STAT_rx_gtjumbo] + 1004 stats[EF10_STAT_rx_gtjumbo] +
diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
index 2d8622430012..4b80c0be6e57 100644
--- a/drivers/net/ethernet/sfc/efx.c
+++ b/drivers/net/ethernet/sfc/efx.c
@@ -2724,6 +2724,17 @@ static void efx_fini_struct(struct efx_nic *efx)
2724 } 2724 }
2725} 2725}
2726 2726
2727void efx_update_sw_stats(struct efx_nic *efx, u64 *stats)
2728{
2729 u64 n_rx_nodesc_trunc = 0;
2730 struct efx_channel *channel;
2731
2732 efx_for_each_channel(channel, efx)
2733 n_rx_nodesc_trunc += channel->n_rx_nodesc_trunc;
2734 stats[GENERIC_STAT_rx_nodesc_trunc] = n_rx_nodesc_trunc;
2735 stats[GENERIC_STAT_rx_noskb_drops] = atomic_read(&efx->n_rx_noskb_drops);
2736}
2737
2727/************************************************************************** 2738/**************************************************************************
2728 * 2739 *
2729 * PCI interface 2740 * PCI interface
diff --git a/drivers/net/ethernet/sfc/efx.h b/drivers/net/ethernet/sfc/efx.h
index 99032581336f..b41601e052d6 100644
--- a/drivers/net/ethernet/sfc/efx.h
+++ b/drivers/net/ethernet/sfc/efx.h
@@ -199,6 +199,9 @@ void efx_get_irq_moderation(struct efx_nic *efx, unsigned int *tx_usecs,
199int efx_port_dummy_op_int(struct efx_nic *efx); 199int efx_port_dummy_op_int(struct efx_nic *efx);
200void efx_port_dummy_op_void(struct efx_nic *efx); 200void efx_port_dummy_op_void(struct efx_nic *efx);
201 201
202/* Update the generic software stats in the passed stats array */
203void efx_update_sw_stats(struct efx_nic *efx, u64 *stats);
204
202/* MTD */ 205/* MTD */
203#ifdef CONFIG_SFC_MTD 206#ifdef CONFIG_SFC_MTD
204int efx_mtd_add(struct efx_nic *efx, struct efx_mtd_partition *parts, 207int efx_mtd_add(struct efx_nic *efx, struct efx_mtd_partition *parts,
diff --git a/drivers/net/ethernet/sfc/ethtool.c b/drivers/net/ethernet/sfc/ethtool.c
index 74739c4b9997..03fe4e715024 100644
--- a/drivers/net/ethernet/sfc/ethtool.c
+++ b/drivers/net/ethernet/sfc/ethtool.c
@@ -77,7 +77,6 @@ static const struct efx_sw_stat_desc efx_sw_stat_desc[] = {
77 EFX_ETHTOOL_UINT_CHANNEL_STAT(rx_tcp_udp_chksum_err), 77 EFX_ETHTOOL_UINT_CHANNEL_STAT(rx_tcp_udp_chksum_err),
78 EFX_ETHTOOL_UINT_CHANNEL_STAT(rx_mcast_mismatch), 78 EFX_ETHTOOL_UINT_CHANNEL_STAT(rx_mcast_mismatch),
79 EFX_ETHTOOL_UINT_CHANNEL_STAT(rx_frm_trunc), 79 EFX_ETHTOOL_UINT_CHANNEL_STAT(rx_frm_trunc),
80 EFX_ETHTOOL_UINT_CHANNEL_STAT(rx_nodesc_trunc),
81 EFX_ETHTOOL_UINT_CHANNEL_STAT(rx_merge_events), 80 EFX_ETHTOOL_UINT_CHANNEL_STAT(rx_merge_events),
82 EFX_ETHTOOL_UINT_CHANNEL_STAT(rx_merge_packets), 81 EFX_ETHTOOL_UINT_CHANNEL_STAT(rx_merge_packets),
83}; 82};
diff --git a/drivers/net/ethernet/sfc/falcon.c b/drivers/net/ethernet/sfc/falcon.c
index fae25a418647..157037546d30 100644
--- a/drivers/net/ethernet/sfc/falcon.c
+++ b/drivers/net/ethernet/sfc/falcon.c
@@ -142,6 +142,8 @@
142 hw_name ## _ ## offset } 142 hw_name ## _ ## offset }
143#define FALCON_OTHER_STAT(ext_name) \ 143#define FALCON_OTHER_STAT(ext_name) \
144 [FALCON_STAT_ ## ext_name] = { #ext_name, 0, 0 } 144 [FALCON_STAT_ ## ext_name] = { #ext_name, 0, 0 }
145#define GENERIC_SW_STAT(ext_name) \
146 [GENERIC_STAT_ ## ext_name] = { #ext_name, 0, 0 }
145 147
146static const struct efx_hw_stat_desc falcon_stat_desc[FALCON_STAT_COUNT] = { 148static const struct efx_hw_stat_desc falcon_stat_desc[FALCON_STAT_COUNT] = {
147 FALCON_DMA_STAT(tx_bytes, XgTxOctets), 149 FALCON_DMA_STAT(tx_bytes, XgTxOctets),
@@ -191,6 +193,8 @@ static const struct efx_hw_stat_desc falcon_stat_desc[FALCON_STAT_COUNT] = {
191 FALCON_DMA_STAT(rx_length_error, XgRxLengthError), 193 FALCON_DMA_STAT(rx_length_error, XgRxLengthError),
192 FALCON_DMA_STAT(rx_internal_error, XgRxInternalMACError), 194 FALCON_DMA_STAT(rx_internal_error, XgRxInternalMACError),
193 FALCON_OTHER_STAT(rx_nodesc_drop_cnt), 195 FALCON_OTHER_STAT(rx_nodesc_drop_cnt),
196 GENERIC_SW_STAT(rx_nodesc_trunc),
197 GENERIC_SW_STAT(rx_noskb_drops),
194}; 198};
195static const unsigned long falcon_stat_mask[] = { 199static const unsigned long falcon_stat_mask[] = {
196 [0 ... BITS_TO_LONGS(FALCON_STAT_COUNT) - 1] = ~0UL, 200 [0 ... BITS_TO_LONGS(FALCON_STAT_COUNT) - 1] = ~0UL,
@@ -2574,6 +2578,7 @@ static size_t falcon_update_nic_stats(struct efx_nic *efx, u64 *full_stats,
2574 stats[FALCON_STAT_rx_bytes] - 2578 stats[FALCON_STAT_rx_bytes] -
2575 stats[FALCON_STAT_rx_good_bytes] - 2579 stats[FALCON_STAT_rx_good_bytes] -
2576 stats[FALCON_STAT_rx_control] * 64); 2580 stats[FALCON_STAT_rx_control] * 64);
2581 efx_update_sw_stats(efx, stats);
2577 } 2582 }
2578 2583
2579 if (full_stats) 2584 if (full_stats)
@@ -2584,7 +2589,9 @@ static size_t falcon_update_nic_stats(struct efx_nic *efx, u64 *full_stats,
2584 core_stats->tx_packets = stats[FALCON_STAT_tx_packets]; 2589 core_stats->tx_packets = stats[FALCON_STAT_tx_packets];
2585 core_stats->rx_bytes = stats[FALCON_STAT_rx_bytes]; 2590 core_stats->rx_bytes = stats[FALCON_STAT_rx_bytes];
2586 core_stats->tx_bytes = stats[FALCON_STAT_tx_bytes]; 2591 core_stats->tx_bytes = stats[FALCON_STAT_tx_bytes];
2587 core_stats->rx_dropped = stats[FALCON_STAT_rx_nodesc_drop_cnt]; 2592 core_stats->rx_dropped = stats[FALCON_STAT_rx_nodesc_drop_cnt] +
2593 stats[GENERIC_STAT_rx_nodesc_trunc] +
2594 stats[GENERIC_STAT_rx_noskb_drops];
2588 core_stats->multicast = stats[FALCON_STAT_rx_multicast]; 2595 core_stats->multicast = stats[FALCON_STAT_rx_multicast];
2589 core_stats->rx_length_errors = 2596 core_stats->rx_length_errors =
2590 stats[FALCON_STAT_rx_gtjumbo] + 2597 stats[FALCON_STAT_rx_gtjumbo] +
diff --git a/drivers/net/ethernet/sfc/net_driver.h b/drivers/net/ethernet/sfc/net_driver.h
index 5bdae8ed7c57..8a02d45ed667 100644
--- a/drivers/net/ethernet/sfc/net_driver.h
+++ b/drivers/net/ethernet/sfc/net_driver.h
@@ -777,6 +777,7 @@ struct vfdi_status;
777 * interrupt has occurred. 777 * interrupt has occurred.
778 * @stats_lock: Statistics update lock. Must be held when calling 778 * @stats_lock: Statistics update lock. Must be held when calling
779 * efx_nic_type::{update,start,stop}_stats. 779 * efx_nic_type::{update,start,stop}_stats.
780 * @n_rx_noskb_drops: Count of RX packets dropped due to failure to allocate an skb
780 * 781 *
781 * This is stored in the private area of the &struct net_device. 782 * This is stored in the private area of the &struct net_device.
782 */ 783 */
@@ -930,6 +931,7 @@ struct efx_nic {
930 spinlock_t biu_lock; 931 spinlock_t biu_lock;
931 int last_irq_cpu; 932 int last_irq_cpu;
932 spinlock_t stats_lock; 933 spinlock_t stats_lock;
934 atomic_t n_rx_noskb_drops;
933}; 935};
934 936
935static inline int efx_dev_registered(struct efx_nic *efx) 937static inline int efx_dev_registered(struct efx_nic *efx)
diff --git a/drivers/net/ethernet/sfc/nic.h b/drivers/net/ethernet/sfc/nic.h
index d3ad8ed8d901..60f85149fc4c 100644
--- a/drivers/net/ethernet/sfc/nic.h
+++ b/drivers/net/ethernet/sfc/nic.h
@@ -135,6 +135,13 @@ enum {
135/* Size and alignment of buffer table entries (same) */ 135/* Size and alignment of buffer table entries (same) */
136#define EFX_BUF_SIZE EFX_PAGE_SIZE 136#define EFX_BUF_SIZE EFX_PAGE_SIZE
137 137
138/* NIC-generic software stats */
139enum {
140 GENERIC_STAT_rx_noskb_drops,
141 GENERIC_STAT_rx_nodesc_trunc,
142 GENERIC_STAT_COUNT
143};
144
138/** 145/**
139 * struct falcon_board_type - board operations and type information 146 * struct falcon_board_type - board operations and type information
140 * @id: Board type id, as found in NVRAM 147 * @id: Board type id, as found in NVRAM
@@ -205,7 +212,7 @@ static inline bool falcon_spi_present(const struct falcon_spi_device *spi)
205} 212}
206 213
207enum { 214enum {
208 FALCON_STAT_tx_bytes, 215 FALCON_STAT_tx_bytes = GENERIC_STAT_COUNT,
209 FALCON_STAT_tx_packets, 216 FALCON_STAT_tx_packets,
210 FALCON_STAT_tx_pause, 217 FALCON_STAT_tx_pause,
211 FALCON_STAT_tx_control, 218 FALCON_STAT_tx_control,
@@ -290,7 +297,7 @@ static inline struct falcon_board *falcon_board(struct efx_nic *efx)
290} 297}
291 298
292enum { 299enum {
293 SIENA_STAT_tx_bytes, 300 SIENA_STAT_tx_bytes = GENERIC_STAT_COUNT,
294 SIENA_STAT_tx_good_bytes, 301 SIENA_STAT_tx_good_bytes,
295 SIENA_STAT_tx_bad_bytes, 302 SIENA_STAT_tx_bad_bytes,
296 SIENA_STAT_tx_packets, 303 SIENA_STAT_tx_packets,
@@ -361,7 +368,7 @@ struct siena_nic_data {
361}; 368};
362 369
363enum { 370enum {
364 EF10_STAT_tx_bytes, 371 EF10_STAT_tx_bytes = GENERIC_STAT_COUNT,
365 EF10_STAT_tx_packets, 372 EF10_STAT_tx_packets,
366 EF10_STAT_tx_pause, 373 EF10_STAT_tx_pause,
367 EF10_STAT_tx_control, 374 EF10_STAT_tx_control,
diff --git a/drivers/net/ethernet/sfc/rx.c b/drivers/net/ethernet/sfc/rx.c
index 48588ddf81b0..bf537a2a901f 100644
--- a/drivers/net/ethernet/sfc/rx.c
+++ b/drivers/net/ethernet/sfc/rx.c
@@ -480,8 +480,10 @@ static struct sk_buff *efx_rx_mk_skb(struct efx_channel *channel,
480 skb = netdev_alloc_skb(efx->net_dev, 480 skb = netdev_alloc_skb(efx->net_dev,
481 efx->rx_ip_align + efx->rx_prefix_size + 481 efx->rx_ip_align + efx->rx_prefix_size +
482 hdr_len); 482 hdr_len);
483 if (unlikely(skb == NULL)) 483 if (unlikely(skb == NULL)) {
484 atomic_inc(&efx->n_rx_noskb_drops);
484 return NULL; 485 return NULL;
486 }
485 487
486 EFX_BUG_ON_PARANOID(rx_buf->len < hdr_len); 488 EFX_BUG_ON_PARANOID(rx_buf->len < hdr_len);
487 489
diff --git a/drivers/net/ethernet/sfc/siena.c b/drivers/net/ethernet/sfc/siena.c
index 50ffefed492c..ae696855f21a 100644
--- a/drivers/net/ethernet/sfc/siena.c
+++ b/drivers/net/ethernet/sfc/siena.c
@@ -424,6 +424,8 @@ static void siena_remove_nic(struct efx_nic *efx)
424 { #ext_name, 64, 8 * MC_CMD_MAC_ ## mcdi_name } 424 { #ext_name, 64, 8 * MC_CMD_MAC_ ## mcdi_name }
425#define SIENA_OTHER_STAT(ext_name) \ 425#define SIENA_OTHER_STAT(ext_name) \
426 [SIENA_STAT_ ## ext_name] = { #ext_name, 0, 0 } 426 [SIENA_STAT_ ## ext_name] = { #ext_name, 0, 0 }
427#define GENERIC_SW_STAT(ext_name) \
428 [GENERIC_STAT_ ## ext_name] = { #ext_name, 0, 0 }
427 429
428static const struct efx_hw_stat_desc siena_stat_desc[SIENA_STAT_COUNT] = { 430static const struct efx_hw_stat_desc siena_stat_desc[SIENA_STAT_COUNT] = {
429 SIENA_DMA_STAT(tx_bytes, TX_BYTES), 431 SIENA_DMA_STAT(tx_bytes, TX_BYTES),
@@ -483,6 +485,8 @@ static const struct efx_hw_stat_desc siena_stat_desc[SIENA_STAT_COUNT] = {
483 SIENA_DMA_STAT(rx_length_error, RX_LENGTH_ERROR_PKTS), 485 SIENA_DMA_STAT(rx_length_error, RX_LENGTH_ERROR_PKTS),
484 SIENA_DMA_STAT(rx_internal_error, RX_INTERNAL_ERROR_PKTS), 486 SIENA_DMA_STAT(rx_internal_error, RX_INTERNAL_ERROR_PKTS),
485 SIENA_DMA_STAT(rx_nodesc_drop_cnt, RX_NODESC_DROPS), 487 SIENA_DMA_STAT(rx_nodesc_drop_cnt, RX_NODESC_DROPS),
488 GENERIC_SW_STAT(rx_nodesc_trunc),
489 GENERIC_SW_STAT(rx_noskb_drops),
486}; 490};
487static const unsigned long siena_stat_mask[] = { 491static const unsigned long siena_stat_mask[] = {
488 [0 ... BITS_TO_LONGS(SIENA_STAT_COUNT) - 1] = ~0UL, 492 [0 ... BITS_TO_LONGS(SIENA_STAT_COUNT) - 1] = ~0UL,
@@ -528,6 +532,7 @@ static int siena_try_update_nic_stats(struct efx_nic *efx)
528 efx_update_diff_stat(&stats[SIENA_STAT_rx_good_bytes], 532 efx_update_diff_stat(&stats[SIENA_STAT_rx_good_bytes],
529 stats[SIENA_STAT_rx_bytes] - 533 stats[SIENA_STAT_rx_bytes] -
530 stats[SIENA_STAT_rx_bad_bytes]); 534 stats[SIENA_STAT_rx_bad_bytes]);
535 efx_update_sw_stats(efx, stats);
531 return 0; 536 return 0;
532} 537}
533 538
@@ -554,7 +559,9 @@ static size_t siena_update_nic_stats(struct efx_nic *efx, u64 *full_stats,
554 core_stats->tx_packets = stats[SIENA_STAT_tx_packets]; 559 core_stats->tx_packets = stats[SIENA_STAT_tx_packets];
555 core_stats->rx_bytes = stats[SIENA_STAT_rx_bytes]; 560 core_stats->rx_bytes = stats[SIENA_STAT_rx_bytes];
556 core_stats->tx_bytes = stats[SIENA_STAT_tx_bytes]; 561 core_stats->tx_bytes = stats[SIENA_STAT_tx_bytes];
557 core_stats->rx_dropped = stats[SIENA_STAT_rx_nodesc_drop_cnt]; 562 core_stats->rx_dropped = stats[SIENA_STAT_rx_nodesc_drop_cnt] +
563 stats[GENERIC_STAT_rx_nodesc_trunc] +
564 stats[GENERIC_STAT_rx_noskb_drops];
558 core_stats->multicast = stats[SIENA_STAT_rx_multicast]; 565 core_stats->multicast = stats[SIENA_STAT_rx_multicast];
559 core_stats->collisions = stats[SIENA_STAT_tx_collision]; 566 core_stats->collisions = stats[SIENA_STAT_tx_collision];
560 core_stats->rx_length_errors = 567 core_stats->rx_length_errors =