Commit 63b41c72 authored by Jim Harris's avatar Jim Harris Committed by Tomasz Zawadzki
Browse files

vmd_led: use spdk_pci_for_each_device API



Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: I8046242f05e4ffb676570e65e2217cf593add2e6
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10657


Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
parent a70c03cc
Loading
Loading
Loading
Loading
+48 −42
Original line number Diff line number Diff line
@@ -37,6 +37,8 @@
#include "spdk/env.h"
#include "spdk/vmd.h"

int g_status;

enum app_action {
	APP_ACTION_SET,
	APP_ACTION_GET,
@@ -138,54 +140,27 @@ parse_args(int argc, char **argv)
	return 0;
}

int
main(int argc, char **argv)
static void
led_device_action(void *ctx, struct spdk_pci_device *pci_device)
{
	struct spdk_env_opts opts;
	struct spdk_pci_device *pci_device;
	enum spdk_vmd_led_state led_state;
	char addr_buf[128];
	int rc, status = 0;

	if (parse_args(argc, argv) != 0) {
		usage();
		return 1;
	}

	if (g_opts.action == APP_ACTION_NOP) {
		return 0;
	}

	spdk_env_opts_init(&opts);
	opts.name = "led";

	if (spdk_env_init(&opts) < 0) {
		fprintf(stderr, "Unable to initialize SPDK environment\n");
		return 1;
	}
	int rc;

	rc = spdk_vmd_init();
	if (rc) {
		fprintf(stderr, "Unable to initialize VMD subsystem\n");
		return 1;
	}

	for (pci_device = spdk_pci_get_first_device(); pci_device != NULL;
	     pci_device = spdk_pci_get_next_device(pci_device)) {
	if (strcmp(spdk_pci_device_get_type(pci_device), "vmd") != 0) {
			continue;
		return;
	}

	if (!g_opts.all_devices &&
	    spdk_pci_addr_compare(&g_opts.pci_addr, &pci_device->addr) != 0) {
			continue;
		return;
	}

	rc = spdk_pci_addr_fmt(addr_buf, sizeof(addr_buf), &pci_device->addr);
	if (rc != 0) {
		fprintf(stderr, "Failed to format VMD's PCI address\n");
			status = 1;
			break;
		g_status = 1;
		return;
	}

	if (g_opts.action == APP_ACTION_GET) {
@@ -193,8 +168,8 @@ main(int argc, char **argv)
		if (spdk_unlikely(rc != 0)) {
			fprintf(stderr, "Failed to retrieve the state of the LED on %s\n",
				addr_buf);
				status = 1;
				break;
			g_status = 1;
			return;
		}

		printf("%s: %s\n", addr_buf, g_led_states[led_state]);
@@ -202,13 +177,44 @@ main(int argc, char **argv)
		rc = spdk_vmd_set_led_state(pci_device, g_opts.led_state);
		if (spdk_unlikely(rc != 0)) {
			fprintf(stderr, "Failed to set LED state on %s\n", addr_buf);
				status = 1;
				break;
			g_status = 1;
			return;
		}
	}
}

int
main(int argc, char **argv)
{
	struct spdk_env_opts opts;
	int rc;

	if (parse_args(argc, argv) != 0) {
		usage();
		return 1;
	}

	if (g_opts.action == APP_ACTION_NOP) {
		return 0;
	}

	spdk_env_opts_init(&opts);
	opts.name = "led";

	if (spdk_env_init(&opts) < 0) {
		fprintf(stderr, "Unable to initialize SPDK environment\n");
		return 1;
	}

	rc = spdk_vmd_init();
	if (rc) {
		fprintf(stderr, "Unable to initialize VMD subsystem\n");
		return 1;
	}

	spdk_pci_for_each_device(NULL, led_device_action);

	spdk_vmd_fini();

	return status;
	return g_status;
}