--- orig/linux-2.6.16/kernel/vecalls.c 2006-04-09 03:45:26.000000000 +0200 +++ linux-2.6.16/kernel/vecalls.c 2006-04-09 03:38:32.000000000 +0200 @@ -2870,12 +2870,12 @@ #if BITS_PER_LONG == 32 #define VESTAT_LINE_WIDTH (6 * 11 + 6 * 21) -#define VESTAT_LINE_FMT "%10u %10lu %10lu %10lu %10lu %20Lu %20Lu %20Lu %20Lu %20Lu %20Lu %10lu\n" -#define VESTAT_HEAD_FMT "%10s %10s %10s %10s %10s %20s %20s %20s %20s %20s %20s %10s\n" +#define VESTAT_LINE_FMT "%10u %10lu %10lu %10lu %10lu %20Lu %20Lu %20Lu %20Lu %20Lu %20Lu %10lu %10lu %10lu\n" +#define VESTAT_HEAD_FMT "%10s %10s %10s %10s %10s %20s %20s %20s %20s %20s %20s %10s %10s %10s\n" #else #define VESTAT_LINE_WIDTH (12 * 21) -#define VESTAT_LINE_FMT "%20u %20lu %20lu %20lu %20lu %20Lu %20Lu %20Lu %20Lu %20Lu %20Lu %20lu\n" -#define VESTAT_HEAD_FMT "%20s %20s %20s %20s %20s %20s %20s %20s %20s %20s %20s %20s\n" +#define VESTAT_LINE_FMT "%20u %20lu %20lu %20lu %20lu %20Lu %20Lu %20Lu %20Lu %20Lu %20Lu %20lu %20lu %20lu\n" +#define VESTAT_HEAD_FMT "%20s %20s %20s %20s %20s %20s %20s %20s %20s %20s %20s %20s %20s %20s\n" #endif static int vestat_seq_show(struct seq_file *m, void *v) @@ -2883,7 +2883,7 @@ struct ve_struct *ve = (struct ve_struct *)v; struct ve_struct *curve; int cpu; - unsigned long user_ve, nice_ve, system_ve, uptime; + unsigned long user_ve, nice_ve, system_ve, uptime, rx_bytes, tx_bytes; cycles_t uptime_cycles, idle_time, strv_time, used; curve = get_exec_env(); @@ -2892,12 +2892,12 @@ /* print header */ seq_printf(m, "%-*s\n", VESTAT_LINE_WIDTH - 1, - "Version: 2.2"); + "Version: 2.2 with rx/tx patch"); seq_printf(m, VESTAT_HEAD_FMT, "VEID", "user", "nice", "system", "uptime", "idle", "strv", "uptime", "used", - "maxlat", "totlat", "numsched"); + "maxlat", "totlat", "numsched", "rxbytes", "txbytes"); } if (ve == get_ve0()) @@ -2917,7 +2917,19 @@ idle_time += ve_sched_get_idle_time(ve, cpu); } uptime_cycles = get_cycles() - ve->start_cycles; - uptime = jiffies - ve->start_jiffies; + uptime = jiffies - ve->start_jiffies; + + if (ve->_venet_dev != NULL && ve->_venet_dev->get_stats) + { + struct net_device_stats *stats = ve->_venet_dev->get_stats(ve->_venet_dev); + rx_bytes = stats->rx_bytes; + tx_bytes = stats->tx_bytes; + } + else + { + rx_bytes = 0; + tx_bytes = 0; + } seq_printf(m, VESTAT_LINE_FMT, ve->veid, user_ve, nice_ve, system_ve, @@ -2925,7 +2937,9 @@ strv_time, uptime_cycles, used, ve->sched_lat_ve.last.maxlat, ve->sched_lat_ve.last.totlat, - ve->sched_lat_ve.last.count); + ve->sched_lat_ve.last.count, + rx_bytes, + tx_bytes); return 0; }