default: ccid3_pr_debug("%s, sk=%p, not DATA/DATAACK/ACK packet(%s)\n", dccp_role(sk), sk, dccp_packet_name(DCCP_SKB_CB(skb)->dccpd_type)); 
default: /* We're not interested in other packet types, move along */ 
static void ccid3_hc_rx_packet_recv(struct sock *sk, struct sk_buff *skb){	struct ccid3_hc_rx_sock *hcrx = ccid3_hc_rx_sk(sk);	const struct dccp_options_received *opt_recv;	struct dccp_rx_hist_entry *packet;	struct timeval now;	u8 win_count;	u32 p_prev, r_sample, t_elapsed;	int ins;	if (hcrx == NULL)		return;	BUG_ON(!(hcrx->ccid3hcrx_state == TFRC_RSTATE_NO_DATA ||		 hcrx->ccid3hcrx_state == TFRC_RSTATE_DATA));	opt_recv = &dccp_sk(sk)->dccps_options_received;	switch (DCCP_SKB_CB(skb)->dccpd_type) {	case DCCP_PKT_ACK:		if (hcrx->ccid3hcrx_state == TFRC_RSTATE_NO_DATA)			return;	case DCCP_PKT_DATAACK:		if (opt_recv->dccpor_timestamp_echo == 0)			break;		p_prev = hcrx->ccid3hcrx_rtt;		dccp_timestamp(sk, &now);		timeval_sub_usecs(&now, opt_recv->dccpor_timestamp_echo * 10);		r_sample = timeval_usecs(&now);		t_elapsed = opt_recv->dccpor_elapsed_time * 10;		if (unlikely(r_sample <= t_elapsed))			LIMIT_NETDEBUG(KERN_WARNING				       "%s: r_sample=%uus, t_elapsed=%uus\n",				       __FUNCTION__, r_sample, t_elapsed);		else			r_sample -= t_elapsed;		if (hcrx->ccid3hcrx_state == TFRC_RSTATE_NO_DATA)			hcrx->ccid3hcrx_rtt = r_sample;		else			hcrx->ccid3hcrx_rtt = (hcrx->ccid3hcrx_rtt * 9) / 10 +					      r_sample / 10;		if (p_prev != hcrx->ccid3hcrx_rtt)			ccid3_pr_debug("%s, New RTT=%luus, elapsed time=%u\n",				       dccp_role(sk), hcrx->ccid3hcrx_rtt,				       opt_recv->dccpor_elapsed_time);		break;	case DCCP_PKT_DATA:		break;	default:		ccid3_pr_debug("%s, sk=%p, not DATA/DATAACK/ACK packet(%s)\n",			       dccp_role(sk), sk,			       dccp_packet_name(DCCP_SKB_CB(skb)->dccpd_type));		return;	}	packet = dccp_rx_hist_entry_new(ccid3_rx_hist, sk, opt_recv->dccpor_ndp,					skb, SLAB_ATOMIC);	if (packet == NULL) {		ccid3_pr_debug("%s, sk=%p, Not enough mem to add rx packet "			       "to history (consider it lost)!",			       dccp_role(sk), sk);		return;	}	win_count = packet->dccphrx_ccval;	ins = dccp_rx_hist_add_packet(ccid3_rx_hist, &hcrx->ccid3hcrx_hist,				      &hcrx->ccid3hcrx_li_hist, packet);	if (DCCP_SKB_CB(skb)->dccpd_type == DCCP_PKT_ACK)		return;	switch (hcrx->ccid3hcrx_state) {	case TFRC_RSTATE_NO_DATA:		ccid3_pr_debug("%s, sk=%p(%s), skb=%p, sending initial "			       "feedback\n",			       dccp_role(sk), sk,			       dccp_state_name(sk->sk_state), skb);		ccid3_hc_rx_send_feedback(sk);		ccid3_hc_rx_set_state(sk, TFRC_RSTATE_DATA);		return;	case TFRC_RSTATE_DATA:		hcrx->ccid3hcrx_bytes_recv += skb->len -					      dccp_hdr(skb)->dccph_doff * 4;		if (ins != 0)			break;		dccp_timestamp(sk, &now);		if (timeval_delta(&now, &hcrx->ccid3hcrx_tstamp_last_ack) >=		    hcrx->ccid3hcrx_rtt) {			hcrx->ccid3hcrx_tstamp_last_ack = now;			ccid3_hc_rx_send_feedback(sk);		}		return;	default:		printk(KERN_CRIT "%s: %s, sk=%p, Illegal state (%d)!\n",		       __FUNCTION__, dccp_role(sk), sk, hcrx->ccid3hcrx_state);		dump_stack();		return;	}	/* Dealing with packet loss */	ccid3_pr_debug("%s, sk=%p(%s), data loss! Reacting...\n",		       dccp_role(sk), sk, dccp_state_name(sk->sk_state));	ccid3_hc_rx_detect_loss(sk);	p_prev = hcrx->ccid3hcrx_p;		/* Calculate loss event rate */	if (!list_empty(&hcrx->ccid3hcrx_li_hist))		/* Scaling up by 1000000 as fixed decimal */		hcrx->ccid3hcrx_p = 1000000 / dccp_li_hist_calc_i_mean(&hcrx->ccid3hcrx_li_hist);	if (hcrx->ccid3hcrx_p > p_prev) {		ccid3_hc_rx_send_feedback(sk);		return;	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/59d203f9e989c81defc2cb1c559d678e16dbe684/ccid3.c/clean/net/dccp/ccids/ccid3.c