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>
This commit is contained in:
parent
66524ec9d0
commit
03702689fc
3 changed files with 36 additions and 35 deletions
|
@ -82,7 +82,6 @@ static int fcoe_rcv(struct sk_buff *, struct net_device *,
|
||||||
struct packet_type *, struct net_device *);
|
struct packet_type *, struct net_device *);
|
||||||
static int fcoe_percpu_receive_thread(void *);
|
static int fcoe_percpu_receive_thread(void *);
|
||||||
static void fcoe_percpu_clean(struct fc_lport *);
|
static void fcoe_percpu_clean(struct fc_lport *);
|
||||||
static int fcoe_link_speed_update(struct fc_lport *);
|
|
||||||
static int fcoe_link_ok(struct fc_lport *);
|
static int fcoe_link_ok(struct fc_lport *);
|
||||||
|
|
||||||
static struct fc_lport *fcoe_hostlist_lookup(const struct net_device *);
|
static struct fc_lport *fcoe_hostlist_lookup(const struct net_device *);
|
||||||
|
@ -2387,40 +2386,6 @@ static int fcoe_ctlr_alloc(struct net_device *netdev)
|
||||||
FCOE_CREATE_LINK_DOWN);
|
FCOE_CREATE_LINK_DOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* fcoe_link_speed_update() - Update the supported and actual link speeds
|
|
||||||
* @lport: The local port to update speeds for
|
|
||||||
*
|
|
||||||
* Returns: 0 if the ethtool query was successful
|
|
||||||
* -1 if the ethtool query failed
|
|
||||||
*/
|
|
||||||
static int fcoe_link_speed_update(struct fc_lport *lport)
|
|
||||||
{
|
|
||||||
struct net_device *netdev = fcoe_netdev(lport);
|
|
||||||
struct ethtool_cmd ecmd;
|
|
||||||
|
|
||||||
if (!__ethtool_get_settings(netdev, &ecmd)) {
|
|
||||||
lport->link_supported_speeds &=
|
|
||||||
~(FC_PORTSPEED_1GBIT | FC_PORTSPEED_10GBIT);
|
|
||||||
if (ecmd.supported & (SUPPORTED_1000baseT_Half |
|
|
||||||
SUPPORTED_1000baseT_Full))
|
|
||||||
lport->link_supported_speeds |= FC_PORTSPEED_1GBIT;
|
|
||||||
if (ecmd.supported & SUPPORTED_10000baseT_Full)
|
|
||||||
lport->link_supported_speeds |=
|
|
||||||
FC_PORTSPEED_10GBIT;
|
|
||||||
switch (ethtool_cmd_speed(&ecmd)) {
|
|
||||||
case SPEED_1000:
|
|
||||||
lport->link_speed = FC_PORTSPEED_1GBIT;
|
|
||||||
break;
|
|
||||||
case SPEED_10000:
|
|
||||||
lport->link_speed = FC_PORTSPEED_10GBIT;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fcoe_link_ok() - Check if the link is OK for a local port
|
* fcoe_link_ok() - Check if the link is OK for a local port
|
||||||
* @lport: The local port to check link on
|
* @lport: The local port to check link on
|
||||||
|
|
|
@ -83,6 +83,41 @@ static struct notifier_block libfcoe_notifier = {
|
||||||
.notifier_call = libfcoe_device_notification,
|
.notifier_call = libfcoe_device_notification,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fcoe_link_speed_update() - Update the supported and actual link speeds
|
||||||
|
* @lport: The local port to update speeds for
|
||||||
|
*
|
||||||
|
* Returns: 0 if the ethtool query was successful
|
||||||
|
* -1 if the ethtool query failed
|
||||||
|
*/
|
||||||
|
int fcoe_link_speed_update(struct fc_lport *lport)
|
||||||
|
{
|
||||||
|
struct net_device *netdev = fcoe_get_netdev(lport);
|
||||||
|
struct ethtool_cmd ecmd;
|
||||||
|
|
||||||
|
if (!__ethtool_get_settings(netdev, &ecmd)) {
|
||||||
|
lport->link_supported_speeds &=
|
||||||
|
~(FC_PORTSPEED_1GBIT | FC_PORTSPEED_10GBIT);
|
||||||
|
if (ecmd.supported & (SUPPORTED_1000baseT_Half |
|
||||||
|
SUPPORTED_1000baseT_Full))
|
||||||
|
lport->link_supported_speeds |= FC_PORTSPEED_1GBIT;
|
||||||
|
if (ecmd.supported & SUPPORTED_10000baseT_Full)
|
||||||
|
lport->link_supported_speeds |=
|
||||||
|
FC_PORTSPEED_10GBIT;
|
||||||
|
switch (ethtool_cmd_speed(&ecmd)) {
|
||||||
|
case SPEED_1000:
|
||||||
|
lport->link_speed = FC_PORTSPEED_1GBIT;
|
||||||
|
break;
|
||||||
|
case SPEED_10000:
|
||||||
|
lport->link_speed = FC_PORTSPEED_10GBIT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(fcoe_link_speed_update);
|
||||||
|
|
||||||
void __fcoe_get_lesb(struct fc_lport *lport,
|
void __fcoe_get_lesb(struct fc_lport *lport,
|
||||||
struct fc_els_lesb *fc_lesb,
|
struct fc_els_lesb *fc_lesb,
|
||||||
struct net_device *netdev)
|
struct net_device *netdev)
|
||||||
|
|
|
@ -260,6 +260,7 @@ void __fcoe_get_lesb(struct fc_lport *lport, struct fc_els_lesb *fc_lesb,
|
||||||
struct net_device *netdev);
|
struct net_device *netdev);
|
||||||
void fcoe_wwn_to_str(u64 wwn, char *buf, int len);
|
void fcoe_wwn_to_str(u64 wwn, char *buf, int len);
|
||||||
int fcoe_validate_vport_create(struct fc_vport *vport);
|
int fcoe_validate_vport_create(struct fc_vport *vport);
|
||||||
|
int fcoe_link_speed_update(struct fc_lport *);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* is_fip_mode() - returns true if FIP mode selected.
|
* is_fip_mode() - returns true if FIP mode selected.
|
||||||
|
|
Loading…
Add table
Reference in a new issue