aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorYi Zou <yi.zou@intel.com>2012-12-06 01:23:58 -0500
committerRobert Love <robert.w.love@intel.com>2012-12-14 13:38:55 -0500
commit03702689fcc985e9cb45b57099ebd5066f674739 (patch)
tree10079124d57a604c30ccfbda79ac697e362391e2 /drivers/scsi
parent66524ec9d0aeaa8bc59077c7c5f78d09ec9eeb9d (diff)
libfcoe, fcoe: move fcoe_link_speed_update() to libfcoe and export it
With the previous patch, fcoe_link_speed_update() can be moved into libfcoe and exported to used by fcoe, bnx2fc, and etc. Signed-off-by: Yi Zou <yi.zou@intel.com> Cc: Bhanu Prakash Gollapudi <bprakash@broadcom.com> Tested-by: Marcus Dennis <marcusx.e.dennis@intel.com> Signed-off-by: Robert Love <robert.w.love@intel.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/fcoe/fcoe.c35
-rw-r--r--drivers/scsi/fcoe/fcoe_transport.c35
2 files changed, 35 insertions, 35 deletions
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index 4cec9ddc03ba..64bb53156af0 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -82,7 +82,6 @@ static int fcoe_rcv(struct sk_buff *, struct net_device *,
82 struct packet_type *, struct net_device *); 82 struct packet_type *, struct net_device *);
83static int fcoe_percpu_receive_thread(void *); 83static int fcoe_percpu_receive_thread(void *);
84static void fcoe_percpu_clean(struct fc_lport *); 84static void fcoe_percpu_clean(struct fc_lport *);
85static int fcoe_link_speed_update(struct fc_lport *);
86static int fcoe_link_ok(struct fc_lport *); 85static int fcoe_link_ok(struct fc_lport *);
87 86
88static struct fc_lport *fcoe_hostlist_lookup(const struct net_device *); 87static struct fc_lport *fcoe_hostlist_lookup(const struct net_device *);
@@ -2388,40 +2387,6 @@ static int fcoe_ctlr_alloc(struct net_device *netdev)
2388} 2387}
2389 2388
2390/** 2389/**
2391 * fcoe_link_speed_update() - Update the supported and actual link speeds
2392 * @lport: The local port to update speeds for
2393 *
2394 * Returns: 0 if the ethtool query was successful
2395 * -1 if the ethtool query failed
2396 */
2397static int fcoe_link_speed_update(struct fc_lport *lport)
2398{
2399 struct net_device *netdev = fcoe_netdev(lport);
2400 struct ethtool_cmd ecmd;
2401
2402 if (!__ethtool_get_settings(netdev, &ecmd)) {
2403 lport->link_supported_speeds &=
2404 ~(FC_PORTSPEED_1GBIT | FC_PORTSPEED_10GBIT);
2405 if (ecmd.supported & (SUPPORTED_1000baseT_Half |
2406 SUPPORTED_1000baseT_Full))
2407 lport->link_supported_speeds |= FC_PORTSPEED_1GBIT;
2408 if (ecmd.supported & SUPPORTED_10000baseT_Full)
2409 lport->link_supported_speeds |=
2410 FC_PORTSPEED_10GBIT;
2411 switch (ethtool_cmd_speed(&ecmd)) {
2412 case SPEED_1000:
2413 lport->link_speed = FC_PORTSPEED_1GBIT;
2414 break;
2415 case SPEED_10000:
2416 lport->link_speed = FC_PORTSPEED_10GBIT;
2417 break;
2418 }
2419 return 0;
2420 }
2421 return -1;
2422}
2423
2424/**
2425 * fcoe_link_ok() - Check if the link is OK for a local port 2390 * fcoe_link_ok() - Check if the link is OK for a local port
2426 * @lport: The local port to check link on 2391 * @lport: The local port to check link on
2427 * 2392 *
diff --git a/drivers/scsi/fcoe/fcoe_transport.c b/drivers/scsi/fcoe/fcoe_transport.c
index 83e78f922054..3c6846f1268b 100644
--- a/drivers/scsi/fcoe/fcoe_transport.c
+++ b/drivers/scsi/fcoe/fcoe_transport.c
@@ -83,6 +83,41 @@ static struct notifier_block libfcoe_notifier = {
83 .notifier_call = libfcoe_device_notification, 83 .notifier_call = libfcoe_device_notification,
84}; 84};
85 85
86/**
87 * fcoe_link_speed_update() - Update the supported and actual link speeds
88 * @lport: The local port to update speeds for
89 *
90 * Returns: 0 if the ethtool query was successful
91 * -1 if the ethtool query failed
92 */
93int fcoe_link_speed_update(struct fc_lport *lport)
94{
95 struct net_device *netdev = fcoe_get_netdev(lport);
96 struct ethtool_cmd ecmd;
97
98 if (!__ethtool_get_settings(netdev, &ecmd)) {
99 lport->link_supported_speeds &=
100 ~(FC_PORTSPEED_1GBIT | FC_PORTSPEED_10GBIT);
101 if (ecmd.supported & (SUPPORTED_1000baseT_Half |
102 SUPPORTED_1000baseT_Full))
103 lport->link_supported_speeds |= FC_PORTSPEED_1GBIT;
104 if (ecmd.supported & SUPPORTED_10000baseT_Full)
105 lport->link_supported_speeds |=
106 FC_PORTSPEED_10GBIT;
107 switch (ethtool_cmd_speed(&ecmd)) {
108 case SPEED_1000:
109 lport->link_speed = FC_PORTSPEED_1GBIT;
110 break;
111 case SPEED_10000:
112 lport->link_speed = FC_PORTSPEED_10GBIT;
113 break;
114 }
115 return 0;
116 }
117 return -1;
118}
119EXPORT_SYMBOL_GPL(fcoe_link_speed_update);
120
86void __fcoe_get_lesb(struct fc_lport *lport, 121void __fcoe_get_lesb(struct fc_lport *lport,
87 struct fc_els_lesb *fc_lesb, 122 struct fc_els_lesb *fc_lesb,
88 struct net_device *netdev) 123 struct net_device *netdev)