1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * TFRC library initialisation 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (c) 2007 The University of Aberdeen, Scotland, UK 6*4882a593Smuzhiyun * Copyright (c) 2007 Arnaldo Carvalho de Melo <acme@redhat.com> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun #include <linux/moduleparam.h> 9*4882a593Smuzhiyun #include "tfrc.h" 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifdef CONFIG_IP_DCCP_TFRC_DEBUG 12*4882a593Smuzhiyun bool tfrc_debug; 13*4882a593Smuzhiyun module_param(tfrc_debug, bool, 0644); 14*4882a593Smuzhiyun MODULE_PARM_DESC(tfrc_debug, "Enable TFRC debug messages"); 15*4882a593Smuzhiyun #endif 16*4882a593Smuzhiyun tfrc_lib_init(void)17*4882a593Smuzhiyunint __init tfrc_lib_init(void) 18*4882a593Smuzhiyun { 19*4882a593Smuzhiyun int rc = tfrc_li_init(); 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun if (rc) 22*4882a593Smuzhiyun goto out; 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun rc = tfrc_tx_packet_history_init(); 25*4882a593Smuzhiyun if (rc) 26*4882a593Smuzhiyun goto out_free_loss_intervals; 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun rc = tfrc_rx_packet_history_init(); 29*4882a593Smuzhiyun if (rc) 30*4882a593Smuzhiyun goto out_free_tx_history; 31*4882a593Smuzhiyun return 0; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun out_free_tx_history: 34*4882a593Smuzhiyun tfrc_tx_packet_history_exit(); 35*4882a593Smuzhiyun out_free_loss_intervals: 36*4882a593Smuzhiyun tfrc_li_exit(); 37*4882a593Smuzhiyun out: 38*4882a593Smuzhiyun return rc; 39*4882a593Smuzhiyun } 40*4882a593Smuzhiyun tfrc_lib_exit(void)41*4882a593Smuzhiyunvoid tfrc_lib_exit(void) 42*4882a593Smuzhiyun { 43*4882a593Smuzhiyun tfrc_rx_packet_history_exit(); 44*4882a593Smuzhiyun tfrc_tx_packet_history_exit(); 45*4882a593Smuzhiyun tfrc_li_exit(); 46*4882a593Smuzhiyun } 47