mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 15:18:19 +00:00
[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>
This commit is contained in:
parent
fd8fa9071e
commit
814740d5f6
3 changed files with 32 additions and 20 deletions
|
@ -2541,28 +2541,9 @@ static void fcoe_set_vport_symbolic_name(struct fc_vport *vport)
|
||||||
static void fcoe_get_lesb(struct fc_lport *lport,
|
static void fcoe_get_lesb(struct fc_lport *lport,
|
||||||
struct fc_els_lesb *fc_lesb)
|
struct fc_els_lesb *fc_lesb)
|
||||||
{
|
{
|
||||||
unsigned int cpu;
|
|
||||||
u32 lfc, vlfc, mdac;
|
|
||||||
struct fcoe_dev_stats *devst;
|
|
||||||
struct fcoe_fc_els_lesb *lesb;
|
|
||||||
struct rtnl_link_stats64 temp;
|
|
||||||
struct net_device *netdev = fcoe_netdev(lport);
|
struct net_device *netdev = fcoe_netdev(lport);
|
||||||
|
|
||||||
lfc = 0;
|
__fcoe_get_lesb(lport, fc_lesb, netdev);
|
||||||
vlfc = 0;
|
|
||||||
mdac = 0;
|
|
||||||
lesb = (struct fcoe_fc_els_lesb *)fc_lesb;
|
|
||||||
memset(lesb, 0, sizeof(*lesb));
|
|
||||||
for_each_possible_cpu(cpu) {
|
|
||||||
devst = per_cpu_ptr(lport->dev_stats, cpu);
|
|
||||||
lfc += devst->LinkFailureCount;
|
|
||||||
vlfc += devst->VLinkFailureCount;
|
|
||||||
mdac += devst->MissDiscAdvCount;
|
|
||||||
}
|
|
||||||
lesb->lesb_link_fail = htonl(lfc);
|
|
||||||
lesb->lesb_vlink_fail = htonl(vlfc);
|
|
||||||
lesb->lesb_miss_fka = htonl(mdac);
|
|
||||||
lesb->lesb_fcs_error = htonl(dev_get_stats(netdev, &temp)->rx_crc_errors);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -83,6 +83,35 @@ static struct notifier_block libfcoe_notifier = {
|
||||||
.notifier_call = libfcoe_device_notification,
|
.notifier_call = libfcoe_device_notification,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void __fcoe_get_lesb(struct fc_lport *lport,
|
||||||
|
struct fc_els_lesb *fc_lesb,
|
||||||
|
struct net_device *netdev)
|
||||||
|
{
|
||||||
|
unsigned int cpu;
|
||||||
|
u32 lfc, vlfc, mdac;
|
||||||
|
struct fcoe_dev_stats *devst;
|
||||||
|
struct fcoe_fc_els_lesb *lesb;
|
||||||
|
struct rtnl_link_stats64 temp;
|
||||||
|
|
||||||
|
lfc = 0;
|
||||||
|
vlfc = 0;
|
||||||
|
mdac = 0;
|
||||||
|
lesb = (struct fcoe_fc_els_lesb *)fc_lesb;
|
||||||
|
memset(lesb, 0, sizeof(*lesb));
|
||||||
|
for_each_possible_cpu(cpu) {
|
||||||
|
devst = per_cpu_ptr(lport->dev_stats, cpu);
|
||||||
|
lfc += devst->LinkFailureCount;
|
||||||
|
vlfc += devst->VLinkFailureCount;
|
||||||
|
mdac += devst->MissDiscAdvCount;
|
||||||
|
}
|
||||||
|
lesb->lesb_link_fail = htonl(lfc);
|
||||||
|
lesb->lesb_vlink_fail = htonl(vlfc);
|
||||||
|
lesb->lesb_miss_fka = htonl(mdac);
|
||||||
|
lesb->lesb_fcs_error =
|
||||||
|
htonl(dev_get_stats(netdev, &temp)->rx_crc_errors);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(__fcoe_get_lesb);
|
||||||
|
|
||||||
void fcoe_wwn_to_str(u64 wwn, char *buf, int len)
|
void fcoe_wwn_to_str(u64 wwn, char *buf, int len)
|
||||||
{
|
{
|
||||||
u8 wwpn[8];
|
u8 wwpn[8];
|
||||||
|
|
|
@ -230,6 +230,8 @@ int fcoe_libfc_config(struct fc_lport *, struct fcoe_ctlr *,
|
||||||
u32 fcoe_fc_crc(struct fc_frame *fp);
|
u32 fcoe_fc_crc(struct fc_frame *fp);
|
||||||
int fcoe_start_io(struct sk_buff *skb);
|
int fcoe_start_io(struct sk_buff *skb);
|
||||||
int fcoe_get_wwn(struct net_device *netdev, u64 *wwn, int type);
|
int fcoe_get_wwn(struct net_device *netdev, u64 *wwn, int type);
|
||||||
|
void __fcoe_get_lesb(struct fc_lport *lport, struct fc_els_lesb *fc_lesb,
|
||||||
|
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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue