diff options
author | Andrei Varvara <andrei.varvara@freescale.com> | 2013-05-20 13:13:36 (GMT) |
---|---|---|
committer | Fleming Andrew-AFLEMING <AFLEMING@freescale.com> | 2013-07-05 21:04:51 (GMT) |
commit | 36fa661f531051e4bd5872ec325747bc54396f13 (patch) | |
tree | 8b744a03151c76e4b751e659c136efa6fcdb6793 | |
parent | 450a75d908581fa15d474a5683b4ae7646980181 (diff) | |
download | linux-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>
-rw-r--r-- | drivers/staging/fsl_dpa_offload/wrp_dpa_ipsec.c | 27 |
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; } |