in eni.c [2081:2198]
static int eni_proc_read(struct atm_dev *dev,loff_t *pos,char *page)
{
struct sock *s;
static const char *signal[] = { "LOST","unknown","okay" };
struct eni_dev *eni_dev = ENI_DEV(dev);
struct atm_vcc *vcc;
int left,i;
left = *pos;
if (!left)
return sprintf(page,DEV_LABEL "(itf %d) signal %s, %dkB, "
"%d cps remaining\n",dev->number,signal[(int) dev->signal],
eni_dev->mem >> 10,eni_dev->tx_bw);
if (!--left)
return sprintf(page,"%4sBursts: TX"
#if !defined(CONFIG_ATM_ENI_BURST_TX_16W) && \
!defined(CONFIG_ATM_ENI_BURST_TX_8W) && \
!defined(CONFIG_ATM_ENI_BURST_TX_4W) && \
!defined(CONFIG_ATM_ENI_BURST_TX_2W)
" none"
#endif
#ifdef CONFIG_ATM_ENI_BURST_TX_16W
" 16W"
#endif
#ifdef CONFIG_ATM_ENI_BURST_TX_8W
" 8W"
#endif
#ifdef CONFIG_ATM_ENI_BURST_TX_4W
" 4W"
#endif
#ifdef CONFIG_ATM_ENI_BURST_TX_2W
" 2W"
#endif
", RX"
#if !defined(CONFIG_ATM_ENI_BURST_RX_16W) && \
!defined(CONFIG_ATM_ENI_BURST_RX_8W) && \
!defined(CONFIG_ATM_ENI_BURST_RX_4W) && \
!defined(CONFIG_ATM_ENI_BURST_RX_2W)
" none"
#endif
#ifdef CONFIG_ATM_ENI_BURST_RX_16W
" 16W"
#endif
#ifdef CONFIG_ATM_ENI_BURST_RX_8W
" 8W"
#endif
#ifdef CONFIG_ATM_ENI_BURST_RX_4W
" 4W"
#endif
#ifdef CONFIG_ATM_ENI_BURST_RX_2W
" 2W"
#endif
#ifndef CONFIG_ATM_ENI_TUNE_BURST
" (default)"
#endif
"\n","");
if (!--left)
return sprintf(page,"%4sBuffer multipliers: tx %d%%, rx %d%%\n",
"",eni_dev->tx_mult,eni_dev->rx_mult);
for (i = 0; i < NR_CHAN; i++) {
struct eni_tx *tx = eni_dev->tx+i;
if (!tx->send) continue;
if (!--left) {
return sprintf(page, "tx[%d]: 0x%lx-0x%lx "
"(%6ld bytes), rsv %d cps, shp %d cps%s\n",i,
(unsigned long) (tx->send - eni_dev->ram),
tx->send-eni_dev->ram+tx->words*4-1,tx->words*4,
tx->reserved,tx->shaping,
tx == eni_dev->ubr ? " (UBR)" : "");
}
if (--left) continue;
return sprintf(page,"%10sbacklog %u packets\n","",
skb_queue_len(&tx->backlog));
}
read_lock(&vcc_sklist_lock);
for(i = 0; i < VCC_HTABLE_SIZE; ++i) {
struct hlist_head *head = &vcc_hash[i];
sk_for_each(s, head) {
struct eni_vcc *eni_vcc;
int length;
vcc = atm_sk(s);
if (vcc->dev != dev)
continue;
eni_vcc = ENI_VCC(vcc);
if (--left) continue;
length = sprintf(page,"vcc %4d: ",vcc->vci);
if (eni_vcc->rx) {
length += sprintf(page+length, "0x%lx-0x%lx "
"(%6ld bytes)",
(unsigned long) (eni_vcc->recv - eni_dev->ram),
eni_vcc->recv-eni_dev->ram+eni_vcc->words*4-1,
eni_vcc->words*4);
if (eni_vcc->tx) length += sprintf(page+length,", ");
}
if (eni_vcc->tx)
length += sprintf(page+length,"tx[%d], txing %d bytes",
eni_vcc->tx->index,eni_vcc->txing);
page[length] = '\n';
read_unlock(&vcc_sklist_lock);
return length+1;
}
}
read_unlock(&vcc_sklist_lock);
for (i = 0; i < eni_dev->free_len; i++) {
struct eni_free *fe = eni_dev->free_list+i;
unsigned long offset;
if (--left) continue;
offset = (unsigned long) eni_dev->ram+eni_dev->base_diff;
return sprintf(page,"free %p-%p (%6d bytes)\n",
fe->start-offset,fe->start-offset+(1 << fe->order)-1,
1 << fe->order);
}
return 0;
}