From db5ead6553cb1c9e528664d71928c3629e1f2055 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Thu, 31 May 2007 21:26:23 -0700 Subject: [PATCH] --- yaml --- r: 57326 b: refs/heads/master c: b206a65d671d359d0947f0b6da9d418c49a9b28a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/atm/firestream.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index e1cc3323c55d..6fb6cb7a82d5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3f196eb519a419bf83ecc22753943fd0a0de4f8f +refs/heads/master: b206a65d671d359d0947f0b6da9d418c49a9b28a diff --git a/trunk/drivers/atm/firestream.c b/trunk/drivers/atm/firestream.c index 9c67df5ccfa4..7f6d02ce1b5f 100644 --- a/trunk/drivers/atm/firestream.c +++ b/trunk/drivers/atm/firestream.c @@ -1475,6 +1475,7 @@ static void top_off_fp (struct fs_dev *dev, struct freepool *fp, struct FS_BPENTRY *qe, *ne; struct sk_buff *skb; int n = 0; + u32 qe_tmp; fs_dprintk (FS_DEBUG_QUEUE, "Topping off queue at %x (%d-%d/%d)\n", fp->offset, read_fs (dev, FP_CNT (fp->offset)), fp->n, @@ -1502,10 +1503,16 @@ static void top_off_fp (struct fs_dev *dev, struct freepool *fp, ne->skb = skb; ne->fp = fp; - qe = (struct FS_BPENTRY *) (read_fs (dev, FP_EA(fp->offset))); - fs_dprintk (FS_DEBUG_QUEUE, "link at %p\n", qe); - if (qe) { - qe = bus_to_virt ((long) qe); + /* + * FIXME: following code encodes and decodes + * machine pointers (could be 64-bit) into a + * 32-bit register. + */ + + qe_tmp = read_fs (dev, FP_EA(fp->offset)); + fs_dprintk (FS_DEBUG_QUEUE, "link at %x\n", qe_tmp); + if (qe_tmp) { + qe = bus_to_virt ((long) qe_tmp); qe->next = virt_to_bus(ne); qe->flags &= ~FP_FLAGS_EPI; } else