Commit be8691a5 authored by Yu Zhang's avatar Yu Zhang Committed by JiangShui
Browse files

hns3 udma: support import and unimport jfr

driver inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I85R2F


CVE: NA

---------------------------------------------------------------------

In the kernel mode import_jfr, UDMA driver only needs to create
the target jfr structure and returned it to the URMA.
In addition, unimport_jfr just free the target jfr.

Signed-off-by: default avatarYu Zhang <zhangyu709@huawei.com>
parent 563866c1
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -442,6 +442,26 @@ int udma_destroy_jfr(struct ubcore_jfr *jfr)
	return 0;
}

struct ubcore_tjetty *udma_import_jfr(struct ubcore_device *dev,
				 const struct ubcore_tjetty_cfg *cfg,
				 struct ubcore_udata *udata)
{
	struct ubcore_tjetty *tjfr;

	tjfr = kcalloc(1, sizeof(*tjfr), GFP_KERNEL);
	if (!tjfr)
		return NULL;

	return tjfr;
}

int udma_unimport_jfr(struct ubcore_tjetty *tjfr)
{
	kfree(tjfr);

	return 0;
}

static int udma_hw_modify_srq(struct udma_dev *dev, uint32_t jfrn,
			      uint16_t jfr_limit)
{
+4 −0
Original line number Diff line number Diff line
@@ -87,6 +87,10 @@ static inline struct udma_jfr *to_udma_jfr(struct ubcore_jfr *ubcore_jfr)
struct ubcore_jfr *udma_create_jfr(struct ubcore_device *dev, const struct ubcore_jfr_cfg *cfg,
			      struct ubcore_udata *udata);
int udma_destroy_jfr(struct ubcore_jfr *jfr);
struct ubcore_tjetty *udma_import_jfr(struct ubcore_device *dev,
				 const struct ubcore_tjetty_cfg *cfg,
				 struct ubcore_udata *udata);
int udma_unimport_jfr(struct ubcore_tjetty *tjfr);
int udma_modify_jfr(struct ubcore_jfr *jfr, const struct ubcore_jfr_attr *attr,
		    struct ubcore_udata *udata);
void udma_jfr_event(struct udma_dev *udma_dev, uint32_t jfrn, int event_type);
+2 −0
Original line number Diff line number Diff line
@@ -323,6 +323,8 @@ static struct ubcore_ops g_udma_dev_ops = {
	.create_jfr = udma_create_jfr,
	.modify_jfr = udma_modify_jfr,
	.destroy_jfr = udma_destroy_jfr,
	.import_jfr = udma_import_jfr,
	.unimport_jfr = udma_unimport_jfr,
};

static void udma_cleanup_uar_table(struct udma_dev *dev)