Lines Matching refs:lro

2980 	if (ring_data->lro) {  in rx_intr_handler()
2983 struct lro *lro = &ring_data->lro0_n[i]; in rx_intr_handler() local
2984 if (lro->in_use) { in rx_intr_handler()
2985 update_L3L4_header(ring_data->nic, lro); in rx_intr_handler()
2986 queue_rx_frame(lro->parent, lro->vlan_tag); in rx_intr_handler()
2987 clear_lro_session(lro); in rx_intr_handler()
7176 ring->lro = !!(dev->features & NETIF_F_LRO); in s2io_card_up()
7334 struct lro *uninitialized_var(lro); in rx_osm_handler()
7421 ((!ring_data->lro) || in rx_osm_handler()
7422 (ring_data->lro && (!(rxdp->Control_1 & RXD_FRAME_IP_FRAG)))) && in rx_osm_handler()
7433 if (ring_data->lro) { in rx_osm_handler()
7440 &tcp_len, &lro, in rx_osm_handler()
7444 lro->parent = skb; in rx_osm_handler()
7447 lro_append_pkt(sp, lro, skb, tcp_len); in rx_osm_handler()
7450 lro_append_pkt(sp, lro, skb, tcp_len); in rx_osm_handler()
7451 queue_rx_frame(lro->parent, in rx_osm_handler()
7452 lro->vlan_tag); in rx_osm_handler()
7453 clear_lro_session(lro); in rx_osm_handler()
7457 lro->parent->data_len = lro->frags_len; in rx_osm_handler()
7459 queue_rx_frame(lro->parent, in rx_osm_handler()
7460 lro->vlan_tag); in rx_osm_handler()
7461 clear_lro_session(lro); in rx_osm_handler()
8290 static int check_for_socket_match(struct lro *lro, struct iphdr *ip, in check_for_socket_match() argument
8294 if ((lro->iph->saddr != ip->saddr) || in check_for_socket_match()
8295 (lro->iph->daddr != ip->daddr) || in check_for_socket_match()
8296 (lro->tcph->source != tcp->source) || in check_for_socket_match()
8297 (lro->tcph->dest != tcp->dest)) in check_for_socket_match()
8307 static void initiate_new_session(struct lro *lro, u8 *l2h, in initiate_new_session() argument
8312 lro->l2h = l2h; in initiate_new_session()
8313 lro->iph = ip; in initiate_new_session()
8314 lro->tcph = tcp; in initiate_new_session()
8315 lro->tcp_next_seq = tcp_pyld_len + ntohl(tcp->seq); in initiate_new_session()
8316 lro->tcp_ack = tcp->ack_seq; in initiate_new_session()
8317 lro->sg_num = 1; in initiate_new_session()
8318 lro->total_len = ntohs(ip->tot_len); in initiate_new_session()
8319 lro->frags_len = 0; in initiate_new_session()
8320 lro->vlan_tag = vlan_tag; in initiate_new_session()
8328 lro->saw_ts = 1; in initiate_new_session()
8329 lro->cur_tsval = ntohl(*(ptr+1)); in initiate_new_session()
8330 lro->cur_tsecr = *(ptr+2); in initiate_new_session()
8332 lro->in_use = 1; in initiate_new_session()
8335 static void update_L3L4_header(struct s2io_nic *sp, struct lro *lro) in update_L3L4_header() argument
8337 struct iphdr *ip = lro->iph; in update_L3L4_header()
8338 struct tcphdr *tcp = lro->tcph; in update_L3L4_header()
8344 csum_replace2(&ip->check, ip->tot_len, htons(lro->total_len)); in update_L3L4_header()
8345 ip->tot_len = htons(lro->total_len); in update_L3L4_header()
8348 tcp->ack_seq = lro->tcp_ack; in update_L3L4_header()
8349 tcp->window = lro->window; in update_L3L4_header()
8352 if (lro->saw_ts) { in update_L3L4_header()
8354 *(ptr+2) = lro->cur_tsecr; in update_L3L4_header()
8360 swstats->sum_avg_pkts_aggregated += lro->sg_num; in update_L3L4_header()
8364 static void aggregate_new_rx(struct lro *lro, struct iphdr *ip, in aggregate_new_rx() argument
8368 lro->total_len += l4_pyld; in aggregate_new_rx()
8369 lro->frags_len += l4_pyld; in aggregate_new_rx()
8370 lro->tcp_next_seq += l4_pyld; in aggregate_new_rx()
8371 lro->sg_num++; in aggregate_new_rx()
8374 lro->tcp_ack = tcp->ack_seq; in aggregate_new_rx()
8375 lro->window = tcp->window; in aggregate_new_rx()
8377 if (lro->saw_ts) { in aggregate_new_rx()
8381 lro->cur_tsval = ntohl(*(ptr+1)); in aggregate_new_rx()
8382 lro->cur_tsecr = *(ptr + 2); in aggregate_new_rx()
8386 static int verify_l3_l4_lro_capable(struct lro *l_lro, struct iphdr *ip, in verify_l3_l4_lro_capable()
8445 u8 **tcp, u32 *tcp_len, struct lro **lro, in s2io_club_tcp_session() argument
8465 struct lro *l_lro = &ring_data->lro0_n[i]; in s2io_club_tcp_session()
8470 *lro = l_lro; in s2io_club_tcp_session()
8472 if ((*lro)->tcp_next_seq != ntohl(tcph->seq)) { in s2io_club_tcp_session()
8476 (*lro)->tcp_next_seq, in s2io_club_tcp_session()
8503 struct lro *l_lro = &ring_data->lro0_n[i]; in s2io_club_tcp_session()
8505 *lro = l_lro; in s2io_club_tcp_session()
8515 *lro = NULL; in s2io_club_tcp_session()
8521 initiate_new_session(*lro, buffer, ip, tcph, *tcp_len, in s2io_club_tcp_session()
8525 update_L3L4_header(sp, *lro); in s2io_club_tcp_session()
8528 aggregate_new_rx(*lro, ip, tcph, *tcp_len); in s2io_club_tcp_session()
8529 if ((*lro)->sg_num == sp->lro_max_aggr_per_sess) { in s2io_club_tcp_session()
8530 update_L3L4_header(sp, *lro); in s2io_club_tcp_session()
8542 static void clear_lro_session(struct lro *lro) in clear_lro_session() argument
8544 static u16 lro_struct_size = sizeof(struct lro); in clear_lro_session()
8546 memset(lro, 0, lro_struct_size); in clear_lro_session()
8563 static void lro_append_pkt(struct s2io_nic *sp, struct lro *lro, in lro_append_pkt() argument
8566 struct sk_buff *first = lro->parent; in lro_append_pkt()
8570 first->data_len = lro->frags_len; in lro_append_pkt()
8573 lro->last_frag->next = skb; in lro_append_pkt()
8577 lro->last_frag = skb; in lro_append_pkt()