[an error occurred while processing this directive]
|
Напр статискика, кот ведет i82559 чип:
static void e100_update_stats(struct nic *nic)
{
struct net_device_stats *ns = &nic->net_stats;
struct stats *s = &nic->mem->stats;
u32 *complete = (nic->mac < mac_82558_D101_A4) ? &s->fc_xmt_pause :
(nic->mac < mac_82559_D101M) ? (u32 *)&s->xmt_tco_frames :
&s->complete;/* Device's stats reporting may take several microseconds to
* complete, so where always waiting for results of the
* previous command. */if(*complete == le32_to_cpu(cuc_dump_reset_complete))
{*complete = 0;
nic->tx_frames = le32_to_cpu(s->tx_good_frames);
nic->tx_collisions = le32_to_cpu(s->tx_total_collisions);
ns->tx_aborted_errors += le32_to_cpu(s->tx_max_collisions);
ns->tx_window_errors += le32_to_cpu(s->tx_late_collisions);
ns->tx_carrier_errors += le32_to_cpu(s->tx_lost_crs);
ns->tx_fifo_errors += le32_to_cpu(s->tx_underruns);
ns->collisions += nic->tx_collisions;
ns->tx_errors += le32_to_cpu(s->tx_max_collisions) +le32_to_cpu(s->tx_lost_crs);
ns->rx_length_errors += le32_to_cpu(s->rx_short_frame_errors) +
nic->rx_over_length_errors;
ns->rx_crc_errors += le32_to_cpu(s->rx_crc_errors);
ns->rx_frame_errors += le32_to_cpu(s->rx_alignment_errors);
ns->rx_over_errors += le32_to_cpu(s->rx_overrun_errors);
ns->rx_fifo_errors += le32_to_cpu(s->rx_overrun_errors);
ns->rx_missed_errors += le32_to_cpu(s->rx_resource_errors);
ns->rx_errors += le32_to_cpu(s->rx_crc_errors) +le32_to_cpu(s->rx_alignment_errors) + le32_to_cpu(s->rx_short_frame_errors) + le32_to_cpu(s->rx_cdt_errors);
nic->tx_deferred += le32_to_cpu(s->tx_deferred);
nic->tx_single_collisions +=le32_to_cpu(s->tx_single_collisions);
nic->tx_multiple_collisions += le32_to_cpu(s->tx_multiple_collisions);
if(nic->mac >= mac_82558_D101_A4)
{nic->tx_fc_pause += le32_to_cpu(s->fc_xmt_pause);
nic->rx_fc_pause += le32_to_cpu(s->fc_rcv_pause);
nic->rx_fc_unsupported +=le32_to_cpu(s->fc_rcv_unsupported);
if(nic->mac >= mac_82559_D101M)
{nic->tx_tco_frames += le16_to_cpu(s->xmt_tco_frames);
nic->rx_tco_frames += le16_to_cpu(s->rcv_tco_frames);
}
}
}
if(e100_exec_cmd(nic, cuc_dump_reset, 0))DPRINTK( "exec cuc_dump_reset failed\n");
}
E-mail: info@telesys.ru