+extern int __init dccp_li_init(void);
+extern void dccp_li_exit(void);
+
+static __init int packet_history_init(void)
+{
+ if (dccp_li_init() != 0)
+ goto out;
+
+ tfrc_tx_hist = kmem_cache_create("tfrc_tx_hist",
+ sizeof(struct tfrc_tx_hist_entry), 0,
+ SLAB_HWCACHE_ALIGN, NULL);
+ if (tfrc_tx_hist == NULL)
+ goto out_li_exit;
+
+ return 0;
+out_li_exit:
+ dccp_li_exit();
+out:
+ return -ENOBUFS;
+}
+module_init(packet_history_init);
+
+static __exit void packet_history_exit(void)
+{
+ if (tfrc_tx_hist != NULL) {
+ kmem_cache_destroy(tfrc_tx_hist);
+ tfrc_tx_hist = NULL;
+ }
+ dccp_li_exit();
+}
+module_exit(packet_history_exit);