Lines Matching refs:ccid_ops

98 static int __init ccid_activate(struct ccid_operations *ccid_ops)
102 ccid_ops->ccid_hc_rx_slab =
103 ccid_kmem_cache_create(ccid_ops->ccid_hc_rx_obj_size,
104 ccid_ops->ccid_hc_rx_slab_name,
106 ccid_ops->ccid_id);
107 if (ccid_ops->ccid_hc_rx_slab == NULL)
110 ccid_ops->ccid_hc_tx_slab =
111 ccid_kmem_cache_create(ccid_ops->ccid_hc_tx_obj_size,
112 ccid_ops->ccid_hc_tx_slab_name,
114 ccid_ops->ccid_id);
115 if (ccid_ops->ccid_hc_tx_slab == NULL)
119 ccid_ops->ccid_id, ccid_ops->ccid_name);
124 ccid_kmem_cache_destroy(ccid_ops->ccid_hc_rx_slab);
125 ccid_ops->ccid_hc_rx_slab = NULL;
129 static void ccid_deactivate(struct ccid_operations *ccid_ops)
131 ccid_kmem_cache_destroy(ccid_ops->ccid_hc_tx_slab);
132 ccid_ops->ccid_hc_tx_slab = NULL;
133 ccid_kmem_cache_destroy(ccid_ops->ccid_hc_rx_slab);
134 ccid_ops->ccid_hc_rx_slab = NULL;
137 ccid_ops->ccid_id, ccid_ops->ccid_name);
142 struct ccid_operations *ccid_ops = ccid_by_number(id);
145 if (ccid_ops == NULL)
148 ccid = kmem_cache_alloc(rx ? ccid_ops->ccid_hc_rx_slab :
149 ccid_ops->ccid_hc_tx_slab, gfp_any());
152 ccid->ccid_ops = ccid_ops;
154 memset(ccid + 1, 0, ccid_ops->ccid_hc_rx_obj_size);
155 if (ccid->ccid_ops->ccid_hc_rx_init != NULL &&
156 ccid->ccid_ops->ccid_hc_rx_init(ccid, sk) != 0)
159 memset(ccid + 1, 0, ccid_ops->ccid_hc_tx_obj_size);
160 if (ccid->ccid_ops->ccid_hc_tx_init != NULL &&
161 ccid->ccid_ops->ccid_hc_tx_init(ccid, sk) != 0)
167 kmem_cache_free(rx ? ccid_ops->ccid_hc_rx_slab :
168 ccid_ops->ccid_hc_tx_slab, ccid);
176 if (ccid->ccid_ops->ccid_hc_rx_exit != NULL)
177 ccid->ccid_ops->ccid_hc_rx_exit(sk);
178 kmem_cache_free(ccid->ccid_ops->ccid_hc_rx_slab, ccid);
185 if (ccid->ccid_ops->ccid_hc_tx_exit != NULL)
186 ccid->ccid_ops->ccid_hc_tx_exit(sk);
187 kmem_cache_free(ccid->ccid_ops->ccid_hc_tx_slab, ccid);