Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03702689 authored by Yi Zou's avatar Yi Zou Committed by Robert Love
Browse files

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: default avatarYi Zou <yi.zou@intel.com>
Cc: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Tested-by: default avatarMarcus Dennis <marcusx.e.dennis@intel.com>
Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
parent 66524ec9
Loading
Loading
Loading
Loading
+0 −35
Original line number Original line Diff line number Diff line
@@ -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
+35 −0
Original line number Original line Diff line number Diff line
@@ -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)
+1 −0
Original line number Original line Diff line number Diff line
@@ -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.