Skip to content

Commit

Permalink
src/fi_tostr: add tostr functions for fid_nic
Browse files Browse the repository at this point in the history
Add default implementation for fid_nic::tostr() call.
Providers may override this call or call it internally
in order to display any provider specific data.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
  • Loading branch information
jsquyres authored and shefty committed Sep 27, 2018
1 parent 8609bec commit d61db6a
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 0 deletions.
1 change: 1 addition & 0 deletions include/ofi.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ int ofi_apply_filter(struct fi_filter *filter, const char *name);

int ofi_nic_close(struct fid *fid);
struct fid_nic *ofi_nic_dup(const struct fid_nic *nic);
int ofi_nic_tostr(const struct fid *fid_nic, char *buf, size_t len);

void fi_log_init(void);
void fi_log_fini(void);
Expand Down
1 change: 1 addition & 0 deletions src/fabric.c
Original file line number Diff line number Diff line change
Expand Up @@ -529,6 +529,7 @@ struct fi_ops default_nic_ops = {
.size = sizeof(struct fi_ops),
.close = ofi_nic_close,
.control = ofi_nic_control,
.tostr = ofi_nic_tostr,
};

static int ofi_dup_dev_attr(const struct fi_device_attr *attr,
Expand Down
96 changes: 96 additions & 0 deletions src/fi_tostr.c
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,102 @@ static void ofi_tostr_fabric_attr(char *buf, const struct fi_fabric_attr *attr,
FI_MAJOR(attr->api_version), FI_MINOR(attr->api_version));
}

static void ofi_tostr_device_attr(char *buf, const struct fi_device_attr *attr)
{
const char *prefix = TAB TAB;
ofi_strcatf(buf, "%sfi_device_attr:\n", prefix);

prefix = TAB TAB TAB;
ofi_strcatf(buf, "%sname: %s\n", prefix, attr->name);
ofi_strcatf(buf, "%sdevice_id: %s\n", prefix, attr->device_id);
ofi_strcatf(buf, "%sdevice_version: %s\n", prefix, attr->device_version);
ofi_strcatf(buf, "%svendor_id: %s\n", prefix, attr->vendor_id);
ofi_strcatf(buf, "%sdriver: %s\n", prefix, attr->driver);
ofi_strcatf(buf, "%sfirmware: %s\n", prefix, attr->firmware);
}

static void ofi_tostr_pci_attr(char *buf, const struct fi_pci_attr *attr)
{
const char *prefix = TAB TAB TAB;
ofi_strcatf(buf, "%sfi_pci_attr:\n", prefix);

prefix = TAB TAB TAB TAB;
ofi_strcatf(buf, "%sdomain_id: %u\n", prefix, attr->domain_id);
ofi_strcatf(buf, "%sbus_id: %u\n", prefix, attr->bus_id);
ofi_strcatf(buf, "%sdevice_id: %u\n", prefix, attr->device_id);
ofi_strcatf(buf, "%sfunction_id: %u\n", prefix, attr->function_id);
}

static void ofi_tostr_bus_type(char *buf, int type)
{
switch (type) {
CASEENUMSTR(FI_BUS_UNKNOWN);
CASEENUMSTR(FI_BUS_PCI);
default:
ofi_strcatf(buf, "Unknown");
break;
}
}

static void ofi_tostr_bus_attr(char *buf, const struct fi_bus_attr *attr)
{
const char *prefix = TAB TAB;
ofi_strcatf(buf, "%sfi_bus_attr:\n", prefix);

prefix = TAB TAB TAB;
ofi_strcatf(buf, "%sfi_bus_type: ", prefix);
ofi_tostr_bus_type(buf, attr->bus_type);
ofi_strcatf(buf, "\n");

switch (attr->bus_type) {
case FI_BUS_PCI:
ofi_tostr_pci_attr(buf, &attr->attr.pci);
break;
default:
break;
}
}

static void ofi_tostr_link_state(char *buf, int state)
{
switch (state) {
CASEENUMSTR(FI_LINK_UNKNOWN);
CASEENUMSTR(FI_LINK_DOWN);
CASEENUMSTR(FI_LINK_UP);
default:
ofi_strcatf(buf, "Unknown");
break;
}
}

static void ofi_tostr_link_attr(char *buf, const struct fi_link_attr *attr)
{
const char *prefix = TAB TAB;
ofi_strcatf(buf, "%sfi_link_attr:\n", prefix);

prefix = TAB TAB TAB;
ofi_strcatf(buf, "%saddress: %s\n", prefix, attr->address);
ofi_strcatf(buf, "%smtu: %zu\n", prefix, attr->mtu);
ofi_strcatf(buf, "%sspeed: %zu\n", prefix, attr->speed);
ofi_strcatf(buf, "%sstate: ", prefix);
ofi_tostr_link_state(buf, attr->state);
ofi_strcatf(buf, "\n");
ofi_strcatf(buf, "%snetwork_type: %s\n", prefix, attr->network_type);
}

int ofi_nic_tostr(const struct fid *fid_nic, char *buf, size_t len)
{
const struct fid_nic *nic = (const struct fid_nic*) fid_nic;

assert(fid_nic->fclass == FI_CLASS_NIC);
ofi_strcatf(buf, "%sfid_nic:\n", TAB);

ofi_tostr_device_attr(buf, nic->device_attr);
ofi_tostr_bus_attr(buf, nic->bus_attr);
ofi_tostr_link_attr(buf, nic->link_attr);
return 0;
}

static void ofi_tostr_info(char *buf, const struct fi_info *info)
{
ofi_strcatf(buf, "fi_info:\n");
Expand Down

0 comments on commit d61db6a

Please sign in to comment.