summaryrefslogtreecommitdiff
path: root/drivers/staging
diff options
context:
space:
mode:
authorAndrei Varvara <andrei.varvara@freescale.com>2013-05-20 13:13:36 (GMT)
committerFleming Andrew-AFLEMING <AFLEMING@freescale.com>2013-07-05 21:04:51 (GMT)
commit36fa661f531051e4bd5872ec325747bc54396f13 (patch)
tree8b744a03151c76e4b751e659c136efa6fcdb6793 /drivers/staging
parent450a75d908581fa15d474a5683b4ae7646980181 (diff)
downloadlinux-fsl-qoriq-36fa661f531051e4bd5872ec325747bc54396f13.tar.xz
dpa_offload: Add support for udev in DPA IPsec Wrapper
the device file for ipsec character device is now created by udev deamon. Change-Id: I3ec41cbe2347c6f2b1d5e9e30c45d77e76dc9a38 Signed-off-by: Andrei Varvara <andrei.varvara@freescale.com> Reviewed-on: http://git.am.freescale.net:8181/3016 Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/fsl_dpa_offload/wrp_dpa_ipsec.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/staging/fsl_dpa_offload/wrp_dpa_ipsec.c b/drivers/staging/fsl_dpa_offload/wrp_dpa_ipsec.c
index 3a16794..b9b60de 100644
--- a/drivers/staging/fsl_dpa_offload/wrp_dpa_ipsec.c
+++ b/drivers/staging/fsl_dpa_offload/wrp_dpa_ipsec.c
@@ -60,6 +60,9 @@ static const struct file_operations dpa_ipsec_fops = {
};
static int dpa_ipsec_cdev_major = -1;
+static struct class *ipsec_class;
+static struct device *ipsec_dev;
+
static long wrp_dpa_ipsec_do_ioctl(struct file *filp, unsigned int cmd,
unsigned long args);
@@ -1111,6 +1114,26 @@ int wrp_dpa_ipsec_init(void)
pr_err("Could not register Dpa IPSec character device\n");
return dpa_ipsec_cdev_major;
}
+
+ ipsec_class = class_create(THIS_MODULE, DPA_IPSEC_CDEV);
+ if (IS_ERR(ipsec_class)) {
+ pr_err("Cannot create DPA IPsec class device\n");
+ unregister_chrdev(dpa_ipsec_cdev_major, DPA_IPSEC_CDEV);
+ dpa_ipsec_cdev_major = -1;
+ return PTR_ERR(ipsec_class);
+ }
+
+ ipsec_dev = device_create(ipsec_class, NULL,
+ MKDEV(dpa_ipsec_cdev_major, 0), NULL,
+ DPA_IPSEC_CDEV);
+ if (IS_ERR(ipsec_dev)) {
+ pr_err("Cannot create DPA IPsec device\n");
+ class_destroy(ipsec_class);
+ unregister_chrdev(dpa_ipsec_cdev_major, DPA_IPSEC_CDEV);
+ dpa_ipsec_cdev_major = -1;
+ return PTR_ERR(ipsec_dev);
+ }
+
return 0;
}
@@ -1119,8 +1142,12 @@ int wrp_dpa_ipsec_exit(void)
{
if (dpa_ipsec_cdev_major < 0)
return 0;
+
+ device_destroy(ipsec_class, MKDEV(dpa_ipsec_cdev_major, 0));
+ class_destroy(ipsec_class);
unregister_chrdev(dpa_ipsec_cdev_major, DPA_IPSEC_CDEV);
dpa_ipsec_cdev_major = -1;
+
return 0;
}