Page MenuHomeFreeBSD

D41261.diff
No OneTemporary

D41261.diff

diff --git a/sys/cam/mmc/mmc_xpt.c b/sys/cam/mmc/mmc_xpt.c
--- a/sys/cam/mmc/mmc_xpt.c
+++ b/sys/cam/mmc/mmc_xpt.c
@@ -74,6 +74,8 @@
static void mmc_action(union ccb *start_ccb);
static void mmc_dev_advinfo(union ccb *start_ccb);
static void mmc_announce_periph(struct cam_periph *periph);
+static void mmc_announce_periph_sbuf(struct cam_periph *periph,
+ struct sbuf *sb);
static void mmc_scan_lun(struct cam_periph *periph,
struct cam_path *path, cam_flags flags, union ccb *ccb);
@@ -84,7 +86,9 @@
static void mmcprobe_done(struct cam_periph *periph, union ccb *done_ccb);
static void mmc_proto_announce(struct cam_ed *device);
+static void mmc_proto_announce_sbuf(struct cam_ed *device, struct sbuf *sb);
static void mmc_proto_denounce(struct cam_ed *device);
+static void mmc_proto_denounce_sbuf(struct cam_ed *device, struct sbuf *sb);
static void mmc_proto_debug_out(union ccb *ccb);
typedef enum {
@@ -148,6 +152,7 @@
.action = mmc_action,
.async = mmc_dev_async,
.announce = mmc_announce_periph,
+ .announce_sbuf = mmc_announce_periph_sbuf,
};
#define MMC_XPT_XPORT(x, X) \
@@ -162,7 +167,9 @@
static struct xpt_proto_ops mmc_proto_ops = {
.announce = mmc_proto_announce,
+ .announce_sbuf = mmc_proto_announce_sbuf,
.denounce = mmc_proto_denounce,
+ .denounce_sbuf = mmc_proto_denounce_sbuf,
.debug_out = mmc_proto_debug_out,
};
@@ -399,6 +406,29 @@
("XPT info: CLK %04d, ...\n", cts.proto_specific.mmc.ios.clock));
}
+static void
+mmc_announce_periph_sbuf(struct cam_periph *periph, struct sbuf *sb)
+{
+ struct ccb_pathinq cpi;
+ struct ccb_trans_settings cts;
+ struct cam_path *path = periph->path;
+
+ cam_periph_assert(periph, MA_OWNED);
+
+ CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("mmc_announce_periph"));
+
+ memset(&cts, 0, sizeof(cts));
+ xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NORMAL);
+ cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS;
+ cts.type = CTS_TYPE_CURRENT_SETTINGS;
+ xpt_action((union ccb*)&cts);
+ if ((cts.ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP)
+ return;
+ xpt_path_inq(&cpi, periph->path);
+ CAM_DEBUG(path, CAM_DEBUG_INFO,
+ ("XPT info: CLK %04d, ...\n", cts.proto_specific.mmc.ios.clock));
+}
+
void
mmccam_start_discovery(struct cam_sim *sim)
{
@@ -480,6 +510,12 @@
sbuf_putbuf(&sb);
}
+static void
+mmc_proto_announce_sbuf(struct cam_ed *device, struct sbuf *sb)
+{
+ mmc_print_ident(&device->mmc_ident_data, sb);
+}
+
static void
mmc_proto_denounce(struct cam_ed *device)
{
@@ -487,6 +523,12 @@
mmc_proto_announce(device);
}
+static void
+mmc_proto_denounce_sbuf(struct cam_ed *device, struct sbuf *sb)
+{
+ mmc_proto_announce_sbuf(device, sb);
+}
+
static void
mmc_proto_debug_out(union ccb *ccb)
{
diff --git a/sys/cam/nvme/nvme_xpt.c b/sys/cam/nvme/nvme_xpt.c
--- a/sys/cam/nvme/nvme_xpt.c
+++ b/sys/cam/nvme/nvme_xpt.c
@@ -157,8 +157,14 @@
void *async_arg);
static void nvme_action(union ccb *start_ccb);
static void nvme_announce_periph(struct cam_periph *periph);
+static void nvme_announce_periph_sbuf(struct cam_periph *periph,
+ struct sbuf *sb);
static void nvme_proto_announce(struct cam_ed *device);
+static void nvme_proto_announce_sbuf(struct cam_ed *device,
+ struct sbuf *sb);
static void nvme_proto_denounce(struct cam_ed *device);
+static void nvme_proto_denounce_sbuf(struct cam_ed *device,
+ struct sbuf *sb);
static void nvme_proto_debug_out(union ccb *ccb);
static struct xpt_xport_ops nvme_xport_ops = {
@@ -166,6 +172,7 @@
.action = nvme_action,
.async = nvme_dev_async,
.announce = nvme_announce_periph,
+ .announce_sbuf = nvme_announce_periph_sbuf,
};
#define NVME_XPT_XPORT(x, X) \
static struct xpt_xport nvme_xport_ ## x = { \
@@ -181,7 +188,9 @@
static struct xpt_proto_ops nvme_proto_ops = {
.announce = nvme_proto_announce,
+ .announce_sbuf = nvme_proto_announce_sbuf,
.denounce = nvme_proto_denounce,
+ .denounce_sbuf = nvme_proto_denounce_sbuf,
.debug_out = nvme_proto_debug_out,
};
static struct xpt_proto nvme_proto = {
@@ -783,14 +792,12 @@
}
static void
-nvme_announce_periph(struct cam_periph *periph)
+nvme_announce_periph_sbuf(struct cam_periph *periph, struct sbuf *sb)
{
struct ccb_pathinq cpi;
struct ccb_trans_settings cts;
struct cam_path *path = periph->path;
struct ccb_trans_settings_nvme *nvmex;
- struct sbuf sb;
- char buffer[120];
cam_periph_assert(periph, MA_OWNED);
@@ -805,20 +812,29 @@
/* Ask the SIM for its base transfer speed */
xpt_path_inq(&cpi, periph->path);
- sbuf_new(&sb, buffer, sizeof(buffer), SBUF_FIXEDLEN);
- sbuf_printf(&sb, "%s%d: nvme version %d.%d",
+ sbuf_printf(sb, "%s%d: nvme version %d.%d",
periph->periph_name, periph->unit_number,
NVME_MAJOR(cts.protocol_version),
NVME_MINOR(cts.protocol_version));
if (cts.transport == XPORT_NVME) {
nvmex = &cts.proto_specific.nvme;
if (nvmex->valid & CTS_NVME_VALID_LINK)
- sbuf_printf(&sb,
+ sbuf_printf(sb,
" x%d (max x%d) lanes PCIe Gen%d (max Gen%d) link",
nvmex->lanes, nvmex->max_lanes,
nvmex->speed, nvmex->max_speed);
}
- sbuf_printf(&sb, "\n");
+ sbuf_printf(sb, "\n");
+}
+
+static void
+nvme_announce_periph(struct cam_periph *periph)
+{
+ struct sbuf sb;
+ char buffer[120];
+
+ sbuf_new(&sb, buffer, sizeof(buffer), SBUF_FIXEDLEN);
+ nvme_announce_periph_sbuf(periph, &sb);
sbuf_finish(&sb);
sbuf_putbuf(&sb);
}
@@ -835,6 +851,12 @@
sbuf_putbuf(&sb);
}
+static void
+nvme_proto_announce_sbuf(struct cam_ed *device, struct sbuf *sb)
+{
+ nvme_print_ident(device->nvme_cdata, device->nvme_data, sb);
+}
+
static void
nvme_proto_denounce(struct cam_ed *device)
{
@@ -847,6 +869,12 @@
sbuf_putbuf(&sb);
}
+static void
+nvme_proto_denounce_sbuf(struct cam_ed *device, struct sbuf *sb)
+{
+ nvme_print_ident_short(device->nvme_cdata, device->nvme_data, sb);
+}
+
static void
nvme_proto_debug_out(union ccb *ccb)
{

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 16, 3:57 AM (20 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14652812
Default Alt Text
D41261.diff (5 KB)

Event Timeline