1 // SPDX-License-Identifier: GPL-2.0-only
3 * QLogic iSCSI Offload Driver
4 * Copyright (c) 2016 Cavium Inc.
9 #include "qedi_iscsi.h"
12 static inline struct qedi_ctx
*qedi_dev_to_hba(struct device
*dev
)
14 struct Scsi_Host
*shost
= class_to_shost(dev
);
16 return iscsi_host_priv(shost
);
19 static ssize_t
port_state_show(struct device
*dev
,
20 struct device_attribute
*attr
,
23 struct qedi_ctx
*qedi
= qedi_dev_to_hba(dev
);
25 if (atomic_read(&qedi
->link_state
) == QEDI_LINK_UP
)
26 return sprintf(buf
, "Online\n");
28 return sprintf(buf
, "Linkdown\n");
31 static ssize_t
speed_show(struct device
*dev
,
32 struct device_attribute
*attr
, char *buf
)
34 struct qedi_ctx
*qedi
= qedi_dev_to_hba(dev
);
35 struct qed_link_output if_link
;
37 qedi_ops
->common
->get_link(qedi
->cdev
, &if_link
);
39 return sprintf(buf
, "%d Gbit\n", if_link
.speed
/ 1000);
42 static DEVICE_ATTR_RO(port_state
);
43 static DEVICE_ATTR_RO(speed
);
45 static struct attribute
*qedi_shost_attrs
[] = {
46 &dev_attr_port_state
.attr
,
51 static const struct attribute_group qedi_shost_attr_group
= {
52 .attrs
= qedi_shost_attrs
55 const struct attribute_group
*qedi_shost_groups
[] = {
56 &qedi_shost_attr_group
,