1*b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 2c40616c5SGerrit Renker /* 3129fa447SGerrit Renker * TFRC library initialisation 4c40616c5SGerrit Renker * 5c40616c5SGerrit Renker * Copyright (c) 2007 The University of Aberdeen, Scotland, UK 6c40616c5SGerrit Renker * Copyright (c) 2007 Arnaldo Carvalho de Melo <acme@redhat.com> 7c40616c5SGerrit Renker */ 8d9b93842SPaul Gortmaker #include <linux/moduleparam.h> 9c40616c5SGerrit Renker #include "tfrc.h" 10c40616c5SGerrit Renker 11c40616c5SGerrit Renker #ifdef CONFIG_IP_DCCP_TFRC_DEBUG 1209db3080SGerrit Renker bool tfrc_debug; 13157439faSGerrit Renker module_param(tfrc_debug, bool, 0644); 14129fa447SGerrit Renker MODULE_PARM_DESC(tfrc_debug, "Enable TFRC debug messages"); 15c40616c5SGerrit Renker #endif 16c40616c5SGerrit Renker tfrc_lib_init(void)17129fa447SGerrit Renkerint __init tfrc_lib_init(void) 18c40616c5SGerrit Renker { 19954c2db8SGerrit Renker int rc = tfrc_li_init(); 20c40616c5SGerrit Renker 21df8f83fdSGerrit Renker if (rc) 22df8f83fdSGerrit Renker goto out; 23c40616c5SGerrit Renker 24df8f83fdSGerrit Renker rc = tfrc_tx_packet_history_init(); 25df8f83fdSGerrit Renker if (rc) 26df8f83fdSGerrit Renker goto out_free_loss_intervals; 27df8f83fdSGerrit Renker 28df8f83fdSGerrit Renker rc = tfrc_rx_packet_history_init(); 29df8f83fdSGerrit Renker if (rc) 30df8f83fdSGerrit Renker goto out_free_tx_history; 31df8f83fdSGerrit Renker return 0; 32df8f83fdSGerrit Renker 33df8f83fdSGerrit Renker out_free_tx_history: 34df8f83fdSGerrit Renker tfrc_tx_packet_history_exit(); 35df8f83fdSGerrit Renker out_free_loss_intervals: 36954c2db8SGerrit Renker tfrc_li_exit(); 37df8f83fdSGerrit Renker out: 38c40616c5SGerrit Renker return rc; 39c40616c5SGerrit Renker } 40c40616c5SGerrit Renker tfrc_lib_exit(void)411b6725deSLeonardo Potenzavoid tfrc_lib_exit(void) 42c40616c5SGerrit Renker { 43df8f83fdSGerrit Renker tfrc_rx_packet_history_exit(); 44df8f83fdSGerrit Renker tfrc_tx_packet_history_exit(); 45954c2db8SGerrit Renker tfrc_li_exit(); 46c40616c5SGerrit Renker } 47