drivers/crypto/intel/qat/qat_common/adf_sysfs_rl.c

Source file repositories/reference/linux-study-clean/drivers/crypto/intel/qat/qat_common/adf_sysfs_rl.c

File Facts

System
Linux kernel
Corpus path
drivers/crypto/intel/qat/qat_common/adf_sysfs_rl.c
Extension
.c
Size
8695 bytes
Lines
465
Domain
Driver Families
Bucket
drivers/crypto
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

// SPDX-License-Identifier: GPL-2.0-only
/* Copyright(c) 2023 Intel Corporation */

#define dev_fmt(fmt) "RateLimiting: " fmt

#include <linux/dev_printk.h>
#include <linux/pci.h>
#include <linux/sysfs.h>
#include <linux/types.h>

#include "adf_common_drv.h"
#include "adf_rl.h"
#include "adf_sysfs_rl.h"

#define GET_RL_STRUCT(accel_dev) ((accel_dev)->rate_limiting->user_input)

enum rl_ops {
	ADD,
	UPDATE,
	RM,
	RM_ALL,
	GET,
};

enum rl_params {
	RP_MASK,
	ID,
	CIR,
	PIR,
	SRV,
	CAP_REM_SRV,
};

static const char *const rl_services[] = {
	[SVC_ASYM] = "asym",
	[SVC_SYM] = "sym",
	[SVC_DC] = "dc",
	[SVC_DECOMP] = "decomp",
};

static const char *const rl_operations[] = {
	[ADD] = "add",
	[UPDATE] = "update",
	[RM] = "rm",
	[RM_ALL] = "rm_all",
	[GET] = "get",
};

static int set_param_u(struct device *dev, enum rl_params param, u64 set)
{
	struct adf_rl_interface_data *data;
	struct adf_accel_dev *accel_dev;
	int ret = 0;

	accel_dev = adf_devmgr_pci_to_accel_dev(to_pci_dev(dev));
	if (!accel_dev)
		return -EINVAL;

	data = &GET_RL_STRUCT(accel_dev);

	down_write(&data->lock);
	switch (param) {
	case RP_MASK:
		data->input.rp_mask = set;
		break;
	case CIR:
		data->input.cir = set;
		break;
	case PIR:
		data->input.pir = set;
		break;
	case SRV:
		data->input.srv = set;
		break;
	case CAP_REM_SRV:
		data->cap_rem_srv = set;
		break;
	default:
		ret = -EINVAL;
		break;
	}
	up_write(&data->lock);

	return ret;
}

static int set_param_s(struct device *dev, enum rl_params param, int set)
{
	struct adf_rl_interface_data *data;
	struct adf_accel_dev *accel_dev;

Annotation

Implementation Notes