Hi all,
I have created a patch for Open-Fcoe-Target which could compile against the
latest kernel test branch(linux-2.6.29-rc8). The same patch will also compile
against the latest stable version 2.6.28. I exposed the target and when I
triggered the initiator, I could see sequence of SCSI packets at the wireshark.
I did not understand the messages completely, I am decoding it. One problem
that I noticed during the testing is with the initiator. For initiator I
compiled the latest 2.6.29-rc8 in Fedora 10, and when I give the command "echo
"ethX" > /sys/module/fcoe/parameters/create", I am getting a kernel opps. There
is no trouble at the target end, wireshark was still printing SCSI packets.
Would attaching the wireshark trace from target end would be helpful to
identify what is the problem?
I have tested the patch with the scripts/checkpatch.pl, it gave one error
saying "ERROR: Missing Signed-off-by: line(s)" .
Thanks,
Siva
=================
fcoe/fcoe_dev.c | 4 ++--
fcoe/fcoe_if.c | 2 +-
fcoe/fcoeinit.c | 4 ++--
include/sa_hash.h | 1 +
openfctgt/openfc_scst.c | 6 +++---
5 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/fcoe/fcoe_dev.c b/fcoe/fcoe_dev.c
index 8f2dad1..5ba163f 100644
--- a/fcoe/fcoe_dev.c
+++ b/fcoe/fcoe_dev.c
@@ -284,14 +284,14 @@ int fcoe_xmit(struct fcdev *fc_dev, struct fc_frame *fp)
u_long off = sg->offset;
u_long len = sg->length;
- skb_fill_page_desc(skb, indx, sg->page, off, len);
+ skb_fill_page_desc(skb, indx, sg->page_link, off, len);
skb->len += len;
skb->data_len += len;
while (len > 0) {
u_long clen;
clen = min(len, PAGE_SIZE - (off & ~PAGE_MASK));
- data = kmap_atomic(sg->page + (off >> PAGE_SHIFT),
+ data = kmap_atomic(sg->page_link + (off >> PAGE_SHIFT),
KM_SKB_DATA_SOFTIRQ);
crc = crc32_sb8_64_bit(crc, data + (off & ~PAGE_MASK),
clen);
diff --git a/fcoe/fcoe_if.c b/fcoe/fcoe_if.c
index 8cf6c34..d87ede1 100644
--- a/fcoe/fcoe_if.c
+++ b/fcoe/fcoe_if.c
@@ -194,7 +194,7 @@ int fcoe_create_interface(struct fcoe_info *fci, void *ptr)
/*
* get the pointer the real eth device
*/
- fc->real_dev = (void *)dev_get_by_name(cfg->local_ifname);
+ fc->real_dev = (void *)dev_get_by_name(&init_net, cfg->local_ifname);
if (fc->real_dev == NULL) {
SA_LOG("could not get network device for %s",
cfg->local_ifname);
diff --git a/fcoe/fcoeinit.c b/fcoe/fcoeinit.c
index 182a9b1..77f16f6 100644
--- a/fcoe/fcoeinit.c
+++ b/fcoe/fcoeinit.c
@@ -287,7 +287,7 @@ static int __init fcoeinit(void)
rc = -ENODEV;
goto out_chrdev;
}
- class_device_create(fci->fcoe_class, NULL,
+ device_create(fci->fcoe_class, NULL,
MKDEV(fci->fcoe_major, 0), NULL, FCOE_CTL_DEV_NAME);
/*
@@ -362,7 +362,7 @@ static void __exit fcoe_exit(void)
#ifdef CONFIG_HOTPLUG_CPU
unregister_cpu_notifier(&fcoe_cpu_notifier);
#endif /* CONFIG_HOTPLUG_CPU */
- class_device_destroy(fci->fcoe_class, MKDEV(fci->fcoe_major, 0));
+ device_destroy(fci->fcoe_class, MKDEV(fci->fcoe_major, 0));
class_destroy(fci->fcoe_class);
fcoe_unreg_char_dev();
fcoe_dev_cleanup();
diff --git a/include/sa_hash.h b/include/sa_hash.h
index d4ee6be..cd64fa4 100644
--- a/include/sa_hash.h
+++ b/include/sa_hash.h
@@ -21,6 +21,7 @@
#define _LIBSA_HASH_H_
#include <linux/list.h>
+#include <linux/rculist.h>
/*
* Hash table facility.
diff --git a/openfctgt/openfc_scst.c b/openfctgt/openfc_scst.c
index d245ae9..b89537a 100644
--- a/openfctgt/openfc_scst.c
+++ b/openfctgt/openfc_scst.c
@@ -171,7 +171,7 @@ openfc_scsi_send_data(struct fc_scsi_pkt *fsp, struct
fc_seq *sp,
if (using_sg) {
ASSERT(fp->fr_sg_len < FC_FRAME_SG_LEN);
fsg = &fp->fr_sg[fp->fr_sg_len++];
- fsg->page = sg->page;
+ fsg->page_link = sg->page_link;
fsg->offset = sg->offset + offset;
fsg->length = sg_bytes;
fp->fr_len += sg_bytes;
@@ -185,7 +185,7 @@ openfc_scsi_send_data(struct fc_scsi_pkt *fsp, struct
fc_seq *sp,
*/
sg_bytes = min(sg_bytes, (size_t) (PAGE_SIZE -
(off & ~PAGE_MASK)));
- page_addr = kmap_atomic(sg->page +
+ page_addr = kmap_atomic(sg->page_link +
(off >> PAGE_SHIFT), KM_SOFTIRQ0);
__memcpy(data, (char *) page_addr +
(off & ~PAGE_MASK), sg_bytes);
@@ -247,7 +247,7 @@ int openfct_cp_to_user(struct fc_scsi_pkt *fsp, uint
offset, void *buf, int len)
off = offset + sg->offset;
sg_bytes = min(sg_bytes,
(u_int32_t) (PAGE_SIZE - (off & ~PAGE_MASK)));
- page_addr = kmap_atomic(sg->page + (off >> PAGE_SHIFT),
+ page_addr = kmap_atomic(sg->page_link + (off >> PAGE_SHIFT),
KM_SOFTIRQ0);
if (!page_addr) {
return -1;
_______________________________________________
devel mailing list
[email protected]
http://www.open-fcoe.org/mailman/listinfo/devel