patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / arch / ppc64 / kernel / viopath.c
index 50df816..3fbdd00 100644 (file)
@@ -190,6 +190,7 @@ static unsigned char e2a(unsigned char x)
 static int proc_viopath_show(struct seq_file *m, void *v)
 {
        char *buf;
+       u16 vlanMap;
        dma_addr_t handle;
        HvLpEvent_Rc hvrc;
        DECLARE_MUTEX_LOCKED(Semaphore);
@@ -216,12 +217,11 @@ 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();
 
-       buf[PAGE_SIZE] = '\0';
+       buf[PAGE_SIZE-1] = '\0';
        seq_printf(m, "%s", buf);
-
+       seq_printf(m, "AVAILABLE_VETH=%x\n", vlanMap);
        seq_printf(m, "SRLNBR=%c%c%c%c%c%c%c\n",
                   e2a(xItExtVpdPanel.mfgID[2]),
                   e2a(xItExtVpdPanel.mfgID[3]),
@@ -231,6 +231,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;
 }