void qib_qsfp_short_msg(struct qib_qsfp_data *qd) { char lenstr[6]; lenstr[0] = ' '; lenstr[1] = '\0'; if (QSFP_IS_CU(qd->cache.tech)) sprintf(lenstr, "%dM ", qd->cache.len); qib_cdbg(INIT, "IB%u:%u QSFP %.*s %.*s %.3s%s SN: %.*s\n", qd->ppd->dd->unit, qd->ppd->port, QSFP_VEND_LEN, qd->cache.vendor, QSFP_PN_LEN, qd->cache.partnum, lenstr, qib_qsfp_devtech[qd->cache.tech >> 4], QSFP_SN_LEN, qd->cache.serial); }
int qib_qsfp_dump(struct qib_pportdata *ppd, char *buf, int len) { struct qib_qsfp_cache cd; u8 bin_buff[QSFP_DUMP_CHUNK]; char lenstr[6]; int sofar, ret; int bidx = 0; sofar = 0; ret = qib_refresh_qsfp_cache(ppd, &cd); if (ret < 0) { qib_dbg("IB%u:%u QSFP cache-refresh failed\n", ppd->dd->unit, ppd->port); goto bail; } lenstr[0] = ' '; lenstr[1] = '\0'; if (QSFP_IS_CU(cd.tech)) sprintf(lenstr, "%dM ", cd.len); sofar += scnprintf(buf + sofar, len - sofar, "PWR:%.3sW\n", pwr_codes + (QSFP_PWR(cd.pwr) * 4)); sofar += scnprintf(buf + sofar, len - sofar, "TECH:%s%s\n", lenstr, qib_qsfp_devtech[cd.tech >> 4]); sofar += scnprintf(buf + sofar, len - sofar, "Vendor:%.*s\n", QSFP_VEND_LEN, cd.vendor); sofar += scnprintf(buf + sofar, len - sofar, "OUI:%06X\n", QSFP_OUI(cd.oui)); sofar += scnprintf(buf + sofar, len - sofar, "Part#:%.*s\n", QSFP_PN_LEN, cd.partnum); sofar += scnprintf(buf + sofar, len - sofar, "Rev:%.*s\n", QSFP_REV_LEN, cd.rev); if (QSFP_IS_CU(cd.tech)) sofar += scnprintf(buf + sofar, len - sofar, "Atten:%d, %d\n", QSFP_ATTEN_SDR(cd.atten), QSFP_ATTEN_DDR(cd.atten)); sofar += scnprintf(buf + sofar, len - sofar, "Serial:%.*s\n", QSFP_SN_LEN, cd.serial); sofar += scnprintf(buf + sofar, len - sofar, "Date:%.*s\n", QSFP_DATE_LEN, cd.date); sofar += scnprintf(buf + sofar, len - sofar, "Lot:%.*s\n", QSFP_LOT_LEN, cd.date); while (bidx < QSFP_DEFAULT_HDR_CNT) { int iidx; ret = qsfp_read(ppd, bidx, bin_buff, QSFP_DUMP_CHUNK); if (ret < 0) goto bail; for (iidx = 0; iidx < ret; ++iidx) { sofar += scnprintf(buf + sofar, len-sofar, " %02X", bin_buff[iidx]); } sofar += scnprintf(buf + sofar, len - sofar, "\n"); bidx += QSFP_DUMP_CHUNK; } ret = sofar; bail: return ret; }