X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fppc64%2Fkernel%2Fviopath.c;h=f0cb2d70a0191298c4bbd7036975e0dda155f3c0;hb=333b49614bac1801f614128fdcdb6346b383a0df;hp=50df8160f394e7935ee3a4c8284aa8a477d85233;hpb=86090fcac5e27b630656fe3d963a6b80e26dac44;p=linux-2.6.git diff --git a/arch/ppc64/kernel/viopath.c b/arch/ppc64/kernel/viopath.c index 50df8160f..f0cb2d70a 100644 --- a/arch/ppc64/kernel/viopath.c +++ b/arch/ppc64/kernel/viopath.c @@ -190,6 +190,8 @@ static unsigned char e2a(unsigned char x) static int proc_viopath_show(struct seq_file *m, void *v) { char *buf; + u16 vlanMap; + int vlanIndex; dma_addr_t handle; HvLpEvent_Rc hvrc; DECLARE_MUTEX_LOCKED(Semaphore); @@ -216,12 +218,18 @@ static int proc_viopath_show(struct seq_file *m, void *v) down(&Semaphore); - dma_unmap_single(iSeries_vio_dev, handle, PAGE_SIZE, DMA_FROM_DEVICE); - kfree(buf); + vlanMap = HvLpConfig_getVirtualLanIndexMap(); + vlanIndex = 0; + while (vlanMap != 0){ + if (vlanMap & 0x8000) + vlanIndex++;; + vlanMap = vlanMap << 1; + } - buf[PAGE_SIZE] = '\0'; + buf[PAGE_SIZE-1] = '\0'; seq_printf(m, "%s", buf); + seq_printf(m, "AVAILABLE_VETH=%d\n", vlanIndex ); seq_printf(m, "SRLNBR=%c%c%c%c%c%c%c\n", e2a(xItExtVpdPanel.mfgID[2]), e2a(xItExtVpdPanel.mfgID[3]), @@ -231,6 +239,9 @@ static int proc_viopath_show(struct seq_file *m, void *v) e2a(xItExtVpdPanel.systemSerial[4]), e2a(xItExtVpdPanel.systemSerial[5])); + dma_unmap_single(iSeries_vio_dev, handle, PAGE_SIZE, DMA_FROM_DEVICE); + kfree(buf); + return 0; }