The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/module/os/linux/zfs/qat.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * CDDL HEADER START
    3  *
    4  * The contents of this file are subject to the terms of the
    5  * Common Development and Distribution License (the "License").
    6  * You may not use this file except in compliance with the License.
    7  *
    8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
    9  * or https://opensource.org/licenses/CDDL-1.0.
   10  * See the License for the specific language governing permissions
   11  * and limitations under the License.
   12  *
   13  * When distributing Covered Code, include this CDDL HEADER in each
   14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
   15  * If applicable, add the following below this CDDL HEADER, with the
   16  * fields enclosed by brackets "[]" replaced with your own identifying
   17  * information: Portions Copyright [yyyy] [name of copyright owner]
   18  *
   19  * CDDL HEADER END
   20  */
   21 
   22 #if defined(_KERNEL) && defined(HAVE_QAT)
   23 #include <sys/zfs_context.h>
   24 #include <sys/qat.h>
   25 
   26 qat_stats_t qat_stats = {
   27         { "comp_requests",                      KSTAT_DATA_UINT64 },
   28         { "comp_total_in_bytes",                KSTAT_DATA_UINT64 },
   29         { "comp_total_out_bytes",               KSTAT_DATA_UINT64 },
   30         { "decomp_requests",                    KSTAT_DATA_UINT64 },
   31         { "decomp_total_in_bytes",              KSTAT_DATA_UINT64 },
   32         { "decomp_total_out_bytes",             KSTAT_DATA_UINT64 },
   33         { "dc_fails",                           KSTAT_DATA_UINT64 },
   34         { "encrypt_requests",                   KSTAT_DATA_UINT64 },
   35         { "encrypt_total_in_bytes",             KSTAT_DATA_UINT64 },
   36         { "encrypt_total_out_bytes",            KSTAT_DATA_UINT64 },
   37         { "decrypt_requests",                   KSTAT_DATA_UINT64 },
   38         { "decrypt_total_in_bytes",             KSTAT_DATA_UINT64 },
   39         { "decrypt_total_out_bytes",            KSTAT_DATA_UINT64 },
   40         { "crypt_fails",                        KSTAT_DATA_UINT64 },
   41         { "cksum_requests",                     KSTAT_DATA_UINT64 },
   42         { "cksum_total_in_bytes",               KSTAT_DATA_UINT64 },
   43         { "cksum_fails",                        KSTAT_DATA_UINT64 },
   44 };
   45 
   46 static kstat_t *qat_ksp = NULL;
   47 
   48 CpaStatus
   49 qat_mem_alloc_contig(void **pp_mem_addr, Cpa32U size_bytes)
   50 {
   51         *pp_mem_addr = kmalloc(size_bytes, GFP_KERNEL);
   52         if (*pp_mem_addr == NULL)
   53                 return (CPA_STATUS_RESOURCE);
   54         return (CPA_STATUS_SUCCESS);
   55 }
   56 
   57 void
   58 qat_mem_free_contig(void **pp_mem_addr)
   59 {
   60         if (*pp_mem_addr != NULL) {
   61                 kfree(*pp_mem_addr);
   62                 *pp_mem_addr = NULL;
   63         }
   64 }
   65 
   66 int
   67 qat_init(void)
   68 {
   69         qat_ksp = kstat_create("zfs", 0, "qat", "misc",
   70             KSTAT_TYPE_NAMED, sizeof (qat_stats) / sizeof (kstat_named_t),
   71             KSTAT_FLAG_VIRTUAL);
   72         if (qat_ksp != NULL) {
   73                 qat_ksp->ks_data = &qat_stats;
   74                 kstat_install(qat_ksp);
   75         }
   76 
   77         /*
   78          * Just set the disable flag when qat init failed, qat can be
   79          * turned on again in post-process after zfs module is loaded, e.g.:
   80          * echo 0 > /sys/module/zfs/parameters/zfs_qat_compress_disable
   81          */
   82         if (qat_dc_init() != 0)
   83                 zfs_qat_compress_disable = 1;
   84 
   85         if (qat_cy_init() != 0) {
   86                 zfs_qat_checksum_disable = 1;
   87                 zfs_qat_encrypt_disable = 1;
   88         }
   89 
   90         return (0);
   91 }
   92 
   93 void
   94 qat_fini(void)
   95 {
   96         if (qat_ksp != NULL) {
   97                 kstat_delete(qat_ksp);
   98                 qat_ksp = NULL;
   99         }
  100 
  101         qat_cy_fini();
  102         qat_dc_fini();
  103 }
  104 
  105 #endif

Cache object: a3d2507a2ddcbd4b18ea1934dbddcf58


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.