nfp: document expected locking in the core

Document which fields of nfp_cpp are protected by which locks.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Jakub Kicinski 2017-03-21 17:59:11 -07:00 committed by David S. Miller
parent 8672103f41
commit 61e81abdce
1 changed files with 27 additions and 6 deletions

View File

@ -65,28 +65,49 @@ struct nfp_cpp_resource {
u64 end;
};
/**
* struct nfp_cpp - main nfpcore device structure
* Following fields are read-only after probe() exits or netdevs are spawned.
* @dev: embedded device structure
* @op: low-level implementation ops
* @priv: private data of the low-level implementation
* @model: chip model
* @interface: chip interface id we are using to reach it
* @serial: chip serial number
* @imb_cat_table: CPP Mapping Table
*
* Following fields can be used only in probe() or with rtnl held:
* @hwinfo: HWInfo database fetched from the device
* @rtsym: firmware run time symbols
*
* Following fields use explicit locking:
* @resource_list: NFP CPP resource list
* @resource_lock: protects @resource_list
*
* @area_cache_list: cached areas for cpp/xpb read/write speed up
* @area_cache_mutex: protects @area_cache_list
*
* @waitq: area wait queue
*/
struct nfp_cpp {
struct device dev;
void *priv; /* Private data of the low-level implementation */
void *priv;
u32 model;
u16 interface;
u8 serial[NFP_SERIAL_LEN];
const struct nfp_cpp_operations *op;
struct list_head resource_list; /* NFP CPP resource list */
struct list_head resource_list;
rwlock_t resource_lock;
wait_queue_head_t waitq;
/* NFP6000 CPP Mapping Table */
u32 imb_cat_table[16];
/* Cached areas for cpp/xpb readl/writel speedups */
struct mutex area_cache_mutex; /* Lock for the area cache */
struct mutex area_cache_mutex;
struct list_head area_cache_list;
/* Cached information */
void *hwinfo;
void *rtsym;
};