aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBhanu Prakash Gollapudi <bprakash@broadcom.com>2011-10-03 19:45:01 -0400
committerJames Bottomley <JBottomley@Parallels.com>2011-10-16 11:38:01 -0400
commit814740d5f67ae5f205349019bfaae38bcd0c8732 (patch)
tree4c7de90af617916dc06d44a5b5504775f3ffb211
parentfd8fa9071e49a56cc91f739813ea88f16b7c1240 (diff)
[SCSI] fcoe,libfcoe: Move common code for fcoe_get_lesb to fcoe_transport
Except for obtaining the netdev from lport, fcoe_get_lesb is the common code for the LLDs. Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com> Acked-by: Yi Zou <yi.zou@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
-rw-r--r--drivers/scsi/fcoe/fcoe.c21
-rw-r--r--drivers/scsi/fcoe/fcoe_transport.c29
-rw-r--r--include/scsi/libfcoe.h2
3 files changed, 32 insertions, 20 deletions
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index 80f3c48a9be3..19aa154e727f 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -2541,28 +2541,9 @@ static void fcoe_set_vport_symbolic_name(struct fc_vport *vport)
2541static void fcoe_get_lesb(struct fc_lport *lport, 2541static void fcoe_get_lesb(struct fc_lport *lport,
2542 struct fc_els_lesb *fc_lesb) 2542 struct fc_els_lesb *fc_lesb)
2543{ 2543{
2544 unsigned int cpu;
2545 u32 lfc, vlfc, mdac;
2546 struct fcoe_dev_stats *devst;
2547 struct fcoe_fc_els_lesb *lesb;
2548 struct rtnl_link_stats64 temp;
2549 struct net_device *netdev = fcoe_netdev(lport); 2544 struct net_device *netdev = fcoe_netdev(lport);
2550 2545
2551 lfc = 0; 2546 __fcoe_get_lesb(lport, fc_lesb, netdev);
2552 vlfc = 0;
2553 mdac = 0;
2554 lesb = (struct fcoe_fc_els_lesb *)fc_lesb;
2555 memset(lesb, 0, sizeof(*lesb));
2556 for_each_possible_cpu(cpu) {
2557 devst = per_cpu_ptr(lport->dev_stats, cpu);
2558 lfc += devst->LinkFailureCount;
2559 vlfc += devst->VLinkFailureCount;
2560 mdac += devst->MissDiscAdvCount;
2561 }
2562 lesb->lesb_link_fail = htonl(lfc);
2563 lesb->lesb_vlink_fail = htonl(vlfc);
2564 lesb->lesb_miss_fka = htonl(mdac);
2565 lesb->lesb_fcs_error = htonl(dev_get_stats(netdev, &temp)->rx_crc_errors);
2566} 2547}
2567 2548
2568/** 2549/**
diff --git a/drivers/scsi/fcoe/fcoe_transport.c b/drivers/scsi/fcoe/fcoe_transport.c
index 50c8c4a530aa..7264d0d5d737 100644
--- a/drivers/scsi/fcoe/fcoe_transport.c
+++ b/drivers/scsi/fcoe/fcoe_transport.c
@@ -83,6 +83,35 @@ static struct notifier_block libfcoe_notifier = {
83 .notifier_call = libfcoe_device_notification, 83 .notifier_call = libfcoe_device_notification,
84}; 84};
85 85
86void __fcoe_get_lesb(struct fc_lport *lport,
87 struct fc_els_lesb *fc_lesb,
88 struct net_device *netdev)
89{
90 unsigned int cpu;
91 u32 lfc, vlfc, mdac;
92 struct fcoe_dev_stats *devst;
93 struct fcoe_fc_els_lesb *lesb;
94 struct rtnl_link_stats64 temp;
95
96 lfc = 0;
97 vlfc = 0;
98 mdac = 0;
99 lesb = (struct fcoe_fc_els_lesb *)fc_lesb;
100 memset(lesb, 0, sizeof(*lesb));
101 for_each_possible_cpu(cpu) {
102 devst = per_cpu_ptr(lport->dev_stats, cpu);
103 lfc += devst->LinkFailureCount;
104 vlfc += devst->VLinkFailureCount;
105 mdac += devst->MissDiscAdvCount;
106 }
107 lesb->lesb_link_fail = htonl(lfc);
108 lesb->lesb_vlink_fail = htonl(vlfc);
109 lesb->lesb_miss_fka = htonl(mdac);
110 lesb->lesb_fcs_error =
111 htonl(dev_get_stats(netdev, &temp)->rx_crc_errors);
112}
113EXPORT_SYMBOL_GPL(__fcoe_get_lesb);
114
86void fcoe_wwn_to_str(u64 wwn, char *buf, int len) 115void fcoe_wwn_to_str(u64 wwn, char *buf, int len)
87{ 116{
88 u8 wwpn[8]; 117 u8 wwpn[8];
diff --git a/include/scsi/libfcoe.h b/include/scsi/libfcoe.h
index 0b2f84304f34..d1e95c6ac776 100644
--- a/include/scsi/libfcoe.h
+++ b/include/scsi/libfcoe.h
@@ -230,6 +230,8 @@ int fcoe_libfc_config(struct fc_lport *, struct fcoe_ctlr *,
230u32 fcoe_fc_crc(struct fc_frame *fp); 230u32 fcoe_fc_crc(struct fc_frame *fp);
231int fcoe_start_io(struct sk_buff *skb); 231int fcoe_start_io(struct sk_buff *skb);
232int fcoe_get_wwn(struct net_device *netdev, u64 *wwn, int type); 232int fcoe_get_wwn(struct net_device *netdev, u64 *wwn, int type);
233void __fcoe_get_lesb(struct fc_lport *lport, struct fc_els_lesb *fc_lesb,
234 struct net_device *netdev);
233void fcoe_wwn_to_str(u64 wwn, char *buf, int len); 235void fcoe_wwn_to_str(u64 wwn, char *buf, int len);
234int fcoe_validate_vport_create(struct fc_vport *vport); 236int fcoe_validate_vport_create(struct fc_vport *vport);
235 237