summaryrefslogtreecommitdiffstats
path: root/include/linux/ntb.h
diff options
context:
space:
mode:
authorLeonid Ravich <lravich@gmail.com>2019-02-12 15:09:28 -0500
committerJon Mason <jdmason@kudzu.us>2019-02-13 11:03:18 -0500
commitebb09b33c60c46fd4f7ffa0af9e693eebe765d1b (patch)
treed41b706a6f27e5b4d9270cf3e62b6a4249037ab3 /include/linux/ntb.h
parentc59666bb32b91da84b1d3df0e88789de9e827f61 (diff)
NTB: add new parameter to peer_db_addr() db_bit and db_data
NTB door bell usage depends on NTB hardware. ex: intel NTB gen1 has one peer door bell register which can be controlled by the bitmap writen to it, while Intel NTB gen3 has a registers per door bell and the data trigering the each door bell is always 1. therefore exposing only peer door bell address forcing the user to be aware of such low level details Signed-off-by: Leonid Ravich <Leonid.Ravich@emc.com> Acked-by: Logan Gunthorpe <logang@deltatee.com> Acked-by: Dave Jiang <dave.jiang@intel.com> Acked-by: Allen Hubbe <allenbh@gmail.com> Signed-off-by: Jon Mason <jdmason@kudzu.us>
Diffstat (limited to 'include/linux/ntb.h')
-rw-r--r--include/linux/ntb.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/include/linux/ntb.h b/include/linux/ntb.h
index 181d16601dd9..56a92e3ae3ae 100644
--- a/include/linux/ntb.h
+++ b/include/linux/ntb.h
@@ -296,7 +296,8 @@ struct ntb_dev_ops {
296 int (*db_clear_mask)(struct ntb_dev *ntb, u64 db_bits); 296 int (*db_clear_mask)(struct ntb_dev *ntb, u64 db_bits);
297 297
298 int (*peer_db_addr)(struct ntb_dev *ntb, 298 int (*peer_db_addr)(struct ntb_dev *ntb,
299 phys_addr_t *db_addr, resource_size_t *db_size); 299 phys_addr_t *db_addr, resource_size_t *db_size,
300 u64 *db_data, int db_bit);
300 u64 (*peer_db_read)(struct ntb_dev *ntb); 301 u64 (*peer_db_read)(struct ntb_dev *ntb);
301 int (*peer_db_set)(struct ntb_dev *ntb, u64 db_bits); 302 int (*peer_db_set)(struct ntb_dev *ntb, u64 db_bits);
302 int (*peer_db_clear)(struct ntb_dev *ntb, u64 db_bits); 303 int (*peer_db_clear)(struct ntb_dev *ntb, u64 db_bits);
@@ -1078,6 +1079,8 @@ static inline int ntb_db_clear_mask(struct ntb_dev *ntb, u64 db_bits)
1078 * @ntb: NTB device context. 1079 * @ntb: NTB device context.
1079 * @db_addr: OUT - The address of the peer doorbell register. 1080 * @db_addr: OUT - The address of the peer doorbell register.
1080 * @db_size: OUT - The number of bytes to write the peer doorbell register. 1081 * @db_size: OUT - The number of bytes to write the peer doorbell register.
1082 * @db_data: OUT - The data of peer doorbell register
1083 * @db_bit: door bell bit number
1081 * 1084 *
1082 * Return the address of the peer doorbell register. This may be used, for 1085 * Return the address of the peer doorbell register. This may be used, for
1083 * example, by drivers that offload memory copy operations to a dma engine. 1086 * example, by drivers that offload memory copy operations to a dma engine.
@@ -1091,12 +1094,13 @@ static inline int ntb_db_clear_mask(struct ntb_dev *ntb, u64 db_bits)
1091 */ 1094 */
1092static inline int ntb_peer_db_addr(struct ntb_dev *ntb, 1095static inline int ntb_peer_db_addr(struct ntb_dev *ntb,
1093 phys_addr_t *db_addr, 1096 phys_addr_t *db_addr,
1094 resource_size_t *db_size) 1097 resource_size_t *db_size,
1098 u64 *db_data, int db_bit)
1095{ 1099{
1096 if (!ntb->ops->peer_db_addr) 1100 if (!ntb->ops->peer_db_addr)
1097 return -EINVAL; 1101 return -EINVAL;
1098 1102
1099 return ntb->ops->peer_db_addr(ntb, db_addr, db_size); 1103 return ntb->ops->peer_db_addr(ntb, db_addr, db_size, db_data, db_bit);
1100} 1104}
1101 1105
1102/** 1106/**