static ssize_t qeth_dev_if_name_show(struct device *dev, struct device_attribute *attr, char *buf) { struct qeth_card *card = dev_get_drvdata(dev); if (!card) return -EINVAL; return sprintf(buf, "%s\n", QETH_CARD_IFNAME(card)); }
static int qeth_procfile_seq_show(struct seq_file *s, void *it) { struct device *device; struct qeth_card *card; char tmp[12]; /* for qeth_get_prioq_str */ if (it == SEQ_START_TOKEN){ seq_printf(s, "devices CHPID interface " "cardtype port chksum prio-q'ing rtr4 " "rtr6 fsz cnt\n"); seq_printf(s, "-------------------------- ----- ---------- " "-------------- ---- ------ ---------- ---- " "---- ----- -----\n"); } else { device = (struct device *) it; card = device->driver_data; seq_printf(s, "%s/%s/%s x%02X %-10s %-14s %-4i ", CARD_RDEV_ID(card), CARD_WDEV_ID(card), CARD_DDEV_ID(card), card->info.chpid, QETH_CARD_IFNAME(card), qeth_get_cardname_short(card), card->info.portno); if (card->lan_online) seq_printf(s, "%-6s %-10s %-4s %-4s %-5s %-5i\n", qeth_get_checksum_str(card), qeth_get_prioq_str(card, tmp), qeth_get_router_str(card, 4), qeth_get_router_str(card, 6), qeth_get_bufsize_str(card), card->qdio.in_buf_pool.buf_count); else seq_printf(s, " +++ LAN OFFLINE +++\n"); put_device(device); } return 0; }
static int qeth_perf_procfile_seq_show(struct seq_file *s, void *it) { struct device *device; struct qeth_card *card; if (it == SEQ_START_TOKEN) return 0; device = (struct device *) it; card = device->driver_data; seq_printf(s, "For card with devnos %s/%s/%s (%s):\n", CARD_RDEV_ID(card), CARD_WDEV_ID(card), CARD_DDEV_ID(card), QETH_CARD_IFNAME(card) ); if (!card->options.performance_stats) seq_printf(s, "Performance statistics are deactivated.\n"); seq_printf(s, " Skb's/buffers received : %lu/%u\n" " Skb's/buffers sent : %lu/%u\n\n", card->stats.rx_packets - card->perf_stats.initial_rx_packets, card->perf_stats.bufs_rec, card->stats.tx_packets - card->perf_stats.initial_tx_packets, card->perf_stats.bufs_sent ); seq_printf(s, " Skb's/buffers sent without packing : %lu/%u\n" " Skb's/buffers sent with packing : %u/%u\n\n", card->stats.tx_packets - card->perf_stats.initial_tx_packets - card->perf_stats.skbs_sent_pack, card->perf_stats.bufs_sent - card->perf_stats.bufs_sent_pack, card->perf_stats.skbs_sent_pack, card->perf_stats.bufs_sent_pack ); seq_printf(s, " Skbs sent in SG mode : %u\n" " Skb fragments sent in SG mode : %u\n\n", card->perf_stats.sg_skbs_sent, card->perf_stats.sg_frags_sent); seq_printf(s, " large_send tx (in Kbytes) : %u\n" " large_send count : %u\n\n", card->perf_stats.large_send_bytes >> 10, card->perf_stats.large_send_cnt); seq_printf(s, " Packing state changes no pkg.->packing : %u/%u\n" " Watermarks L/H : %i/%i\n" " Current buffer usage (outbound q's) : " "%i/%i/%i/%i\n\n", card->perf_stats.sc_dp_p, card->perf_stats.sc_p_dp, QETH_LOW_WATERMARK_PACK, QETH_HIGH_WATERMARK_PACK, atomic_read(&card->qdio.out_qs[0]->used_buffers), (card->qdio.no_out_queues > 1)? atomic_read(&card->qdio.out_qs[1]->used_buffers) : 0, (card->qdio.no_out_queues > 2)? atomic_read(&card->qdio.out_qs[2]->used_buffers) : 0, (card->qdio.no_out_queues > 3)? atomic_read(&card->qdio.out_qs[3]->used_buffers) : 0 ); seq_printf(s, " Inbound handler time (in us) : %u\n" " Inbound handler count : %u\n" " Inbound do_QDIO time (in us) : %u\n" " Inbound do_QDIO count : %u\n\n" " Outbound handler time (in us) : %u\n" " Outbound handler count : %u\n\n" " Outbound time (in us, incl QDIO) : %u\n" " Outbound count : %u\n" " Outbound do_QDIO time (in us) : %u\n" " Outbound do_QDIO count : %u\n\n", card->perf_stats.inbound_time, card->perf_stats.inbound_cnt, card->perf_stats.inbound_do_qdio_time, card->perf_stats.inbound_do_qdio_cnt, card->perf_stats.outbound_handler_time, card->perf_stats.outbound_handler_cnt, card->perf_stats.outbound_time, card->perf_stats.outbound_cnt, card->perf_stats.outbound_do_qdio_time, card->perf_stats.outbound_do_qdio_cnt ); put_device(device); return 0; }