// SPDX-License-Identifier: GPL-2.0-or-later /* * Adaptec AAC series RAID controller driver * (c) Copyright 2001 Red Hat Inc. * * based on the old aacraid driver that is.. * Adaptec aacraid device driver for Linux. * * Copyright (c) 2000-2010 Adaptec, Inc. * 2010-2015 PMC-Sierra, Inc. ([email protected]) * 2016-2017 Microsemi Corp. ([email protected]) * * Module Name: * commctrl.c * * Abstract: Contains all routines for control of the AFA comm layer */ #include <linux/kernel.h> #include <linux/init.h> #include <linux/types.h> #include <linux/pci.h> #include <linux/spinlock.h> #include <linux/slab.h> #include <linux/completion.h> #include <linux/dma-mapping.h> #include <linux/blkdev.h> #include <linux/compat.h> #include <linux/delay.h> /* ssleep prototype */ #include <linux/kthread.h> #include <linux/uaccess.h> #include <scsi/scsi_host.h> #include "aacraid.h" #define AAC_DEBUG_PREAMBLE … #define AAC_DEBUG_POSTAMBLE /** * ioctl_send_fib - send a FIB from userspace * @dev: adapter is being processed * @arg: arguments to the ioctl call * * This routine sends a fib to the adapter on behalf of a user level * program. */ static int ioctl_send_fib(struct aac_dev * dev, void __user *arg) { … } /** * open_getadapter_fib - Get the next fib * @dev: adapter is being processed * @arg: arguments to the open call * * This routine will get the next Fib, if available, from the AdapterFibContext * passed in from the user. */ static int open_getadapter_fib(struct aac_dev * dev, void __user *arg) { … } struct compat_fib_ioctl { … }; /** * next_getadapter_fib - get the next fib * @dev: adapter to use * @arg: ioctl argument * * This routine will get the next Fib, if available, from the AdapterFibContext * passed in from the user. */ static int next_getadapter_fib(struct aac_dev * dev, void __user *arg) { … } int aac_close_fib_context(struct aac_dev * dev, struct aac_fib_context * fibctx) { … } /** * close_getadapter_fib - close down user fib context * @dev: adapter * @arg: ioctl arguments * * This routine will close down the fibctx passed in from the user. */ static int close_getadapter_fib(struct aac_dev * dev, void __user *arg) { … } /** * check_revision - close down user fib context * @dev: adapter * @arg: ioctl arguments * * This routine returns the driver version. * Under Linux, there have been no version incompatibilities, so this is * simple! */ static int check_revision(struct aac_dev *dev, void __user *arg) { … } /** * aac_send_raw_srb() * @dev: adapter is being processed * @arg: arguments to the send call */ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg) { … } struct aac_pci_info { … }; static int aac_get_pci_info(struct aac_dev* dev, void __user *arg) { … } static int aac_get_hba_info(struct aac_dev *dev, void __user *arg) { … } struct aac_reset_iop { … }; static int aac_send_reset_adapter(struct aac_dev *dev, void __user *arg) { … } int aac_do_ioctl(struct aac_dev *dev, unsigned int cmd, void __user *arg) { … }