Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aaaca121 authored by Jack Wang's avatar Jack Wang Committed by Doug Ledford
Browse files

RDMA/core: add port state cache



We need a port state cache in ib_core, later we will use in rdma_cm.

Signed-off-by: default avatarJack Wang <jinpu.wang@profitbricks.com>
Reviewed-by: default avatarMichael Wang <yun.wang@profitbricks.com>
Acked-by: default avatarSean Hefty <sean.hefty@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 27d41d29
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -1105,6 +1105,8 @@ static void ib_cache_update(struct ib_device *device,
	}

	device->cache.lmc_cache[port - rdma_start_port(device)] = tprops->lmc;
	device->cache.port_state_cache[port - rdma_start_port(device)] =
		tprops->state;

	write_unlock_irq(&device->cache.lock);

@@ -1164,7 +1166,11 @@ int ib_cache_setup_one(struct ib_device *device)
					  (rdma_end_port(device) -
					   rdma_start_port(device) + 1),
					  GFP_KERNEL);
	if (!device->cache.pkey_cache ||
	device->cache.port_state_cache = kmalloc(sizeof *device->cache.port_state_cache *
					  (rdma_end_port(device) -
					   rdma_start_port(device) + 1),
					  GFP_KERNEL);
	if (!device->cache.pkey_cache || !device->cache.port_state_cache ||
	    !device->cache.lmc_cache) {
		err = -ENOMEM;
		goto free;
@@ -1190,6 +1196,7 @@ int ib_cache_setup_one(struct ib_device *device)
free:
	kfree(device->cache.pkey_cache);
	kfree(device->cache.lmc_cache);
	kfree(device->cache.port_state_cache);
	return err;
}

@@ -1211,6 +1218,7 @@ void ib_cache_release_one(struct ib_device *device)
	gid_table_release_one(device);
	kfree(device->cache.pkey_cache);
	kfree(device->cache.lmc_cache);
	kfree(device->cache.port_state_cache);
}

void ib_cache_cleanup_one(struct ib_device *device)
+1 −0
Original line number Diff line number Diff line
@@ -1781,6 +1781,7 @@ struct ib_cache {
	struct ib_pkey_cache  **pkey_cache;
	struct ib_gid_table   **gid_cache;
	u8                     *lmc_cache;
	enum ib_port_state     *port_state_cache;
};

struct ib_dma_mapping_ops {