Exemplo n.º 1
0
static void
set_pri_req(int fd, u_int32_t pri_req)
{
    struct fw_devlstreq *data;
    struct fw_devinfo *devinfo;
    struct eui64 eui;
    char addr[EUI64_SIZ];
    u_int32_t max, reg, old;
    int i;

    data = (struct fw_devlstreq *)malloc(sizeof(struct fw_devlstreq));
    if (data == NULL)
        err(EX_SOFTWARE, "%s:data malloc", __func__);
    get_dev(fd, data);
#define BUGET_REG 0xf0000218
    for (i = 0; i < data->info_len; i++) {
        devinfo = &data->dev[i];
        if (!devinfo->status)
            continue;
        reg = read_write_quad(fd, devinfo->eui, BUGET_REG, 1, 0);
        fweui2eui64(&devinfo->eui, &eui);
        eui64_ntoa(&eui, addr, sizeof(addr));
        printf("%d %s, %08x",
               devinfo->dst, addr, reg);
        if (reg > 0) {
            old = (reg & 0x3f);
            max = (reg & 0x3f00) >> 8;
            if (pri_req > max)
                pri_req =  max;
            printf(" 0x%x -> 0x%x\n", old, pri_req);
            read_write_quad(fd, devinfo->eui, BUGET_REG, 0, pri_req);
        } else {
Exemplo n.º 2
0
static void
set_pri_req(int fd, int pri_req)
{
	struct fw_devlstreq *data;
	struct fw_devinfo *devinfo;
	u_int32_t max, reg, old;
	int i;

	data = get_dev(fd);
#define BUGET_REG 0xf0000218
	for (i = 0; i < data->info_len; i++) {
		devinfo = &data->dev[i];
		if (!devinfo->status)
			continue;
		reg = read_write_quad(fd, devinfo->eui, BUGET_REG, 1, 0);
		printf("%d %08x:%08x, %08x",
			devinfo->dst, devinfo->eui.hi, devinfo->eui.lo, reg);
		if (reg > 0 && pri_req >= 0) {
			old = (reg & 0x3f);
			max = (reg & 0x3f00) >> 8;
			if (pri_req > max)
				pri_req =  max;
			printf(" 0x%x -> 0x%x\n", old, pri_req);
			read_write_quad(fd, devinfo->eui, BUGET_REG, 0, pri_req);
		} else {