summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/soc/aspeed/aspeed-mctp.c22
-rw-r--r--include/linux/aspeed-mctp.h14
2 files changed, 36 insertions, 0 deletions
diff --git a/drivers/soc/aspeed/aspeed-mctp.c b/drivers/soc/aspeed/aspeed-mctp.c
index 2fa1dcfc37e3..5073f0e14dc3 100644
--- a/drivers/soc/aspeed/aspeed-mctp.c
+++ b/drivers/soc/aspeed/aspeed-mctp.c
@@ -1083,6 +1083,28 @@ int aspeed_mctp_get_eid_bdf(struct mctp_client *client, u8 eid, u16 *bdf)
}
EXPORT_SYMBOL_GPL(aspeed_mctp_get_eid_bdf);
+int aspeed_mctp_get_eid(struct mctp_client *client, u16 bdf,
+ u8 domain_id, u8 *eid)
+{
+ struct aspeed_mctp_endpoint *endpoint;
+ int ret = -ENOENT;
+
+ mutex_lock(&client->priv->endpoints_lock);
+
+ list_for_each_entry(endpoint, &client->priv->endpoints, link) {
+ if (endpoint->data.eid_ext_info.domain_id == domain_id &&
+ endpoint->data.eid_ext_info.bdf == bdf) {
+ *eid = endpoint->data.eid_ext_info.eid;
+ ret = 0;
+ break;
+ }
+ }
+
+ mutex_unlock(&client->priv->endpoints_lock);
+ return ret;
+}
+EXPORT_SYMBOL_GPL(aspeed_mctp_get_eid);
+
static int
aspeed_mctp_get_eid_info(struct aspeed_mctp *priv, void __user *userbuf,
enum mctp_address_type addr_format)
diff --git a/include/linux/aspeed-mctp.h b/include/linux/aspeed-mctp.h
index d56dceaf146d..d286060a79ee 100644
--- a/include/linux/aspeed-mctp.h
+++ b/include/linux/aspeed-mctp.h
@@ -129,6 +129,20 @@ void aspeed_mctp_flush_rx_queue(struct mctp_client *client);
*/
int aspeed_mctp_get_eid_bdf(struct mctp_client *client, u8 eid, u16 *bdf);
+/**
+ * aspeed_mctp_get_eid() - return EID for requested BDF and domainId.
+ * @client: pointer to existing mctp_client context
+ * @bdf: requested BDF value
+ * @domain_id: requested domainId
+ * @eid: pointer to store EID value
+ *
+ * Return:
+ * * 0 - success,
+ * * -ENOENT - there is no record for requested bdf/domainId.
+ */
+int aspeed_mctp_get_eid(struct mctp_client *client, u16 bdf,
+ u8 domain_id, u8 *eid);
+
void *aspeed_mctp_packet_alloc(gfp_t flags);
void aspeed_mctp_packet_free(void *packet);