Lines Matching refs:lro

698 __hal_lro_check_for_session_match(lro_t *lro, tcplro_t *tcp, iplro_t *ip)
702 if ((lro->ip_hdr->saddr != ip->saddr))
706 if ((lro->ip_hdr->daddr != ip->daddr))
710 if ((lro->tcp_hdr->source != tcp->source))
714 if ((lro->tcp_hdr->dest != tcp->dest))
738 * __hal_ip_lro_capable: Finds whether ip is lro capable.
774 * __hal_tcp_lro_capable: Finds whether tcp is lro capable.
779 __hal_tcp_lro_capable(iplro_t *ip, tcplro_t *tcp, lro_t *lro, int *ts_off)
809 if (lro == NULL)
825 if (lro == NULL)
832 if (lro == NULL)
840 if (lro->ts_off == -1) {
875 xge_os_memcpy(((char *)lro->tcp_hdr + lro->ts_off + 2),
888 * __hal_lro_capable: Finds whether frame is lro capable.
903 xge_debug_ring(XGE_ERR, "Cant do lro %d", ext_info->proto);
965 * @lro: lro pointer
974 __hal_open_lro_session (u8 *buffer, iplro_t *ip, tcplro_t *tcp, lro_t **lro,
997 *lro = ring_lro->lro_recent = lro_new;
1023 * @lro: lro pointer
1032 lro_t **lro,
1043 *lro = lro_match = NULL;
1045 * Compare the incoming frame with the lro session left from the
1047 * matches the lro session.
1083 *lro = lro_match;
1157 xge_debug_ring(XGE_TRACE, "Creating lro session.");
1166 __hal_open_lro_session (eth_hdr, ip, tcp, lro, hldev, ring_lro, free_slot,
1176 * @lro: lro pointer
1182 lro_t *lro,
1185 if (!lro) return XGE_HAL_FAIL;
1187 if ((lro->total_length + __hal_tcp_seg_len(ip, tcp) ) >
1195 if (lro->sg_num == hldev->config.lro_sg_size) {
1209 * @lro: lro pointer
1215 lro_t *lro,
1219 lro->total_length += __hal_tcp_seg_len(ip, tcp);
1231 * @lro: lro pointer
1237 lro_t *lro,
1240 lro->tcp_next_seq_num += __hal_tcp_seg_len(ip, tcp);
1250 * @lro: lro pointer
1257 lro_t *lro,
1260 (void) __hal_collapse_ip_hdr(ip, *tcp, lro, hldev);
1261 (void) __hal_collapse_tcp_hdr(ip, *tcp, lro, hldev);
1264 // lro will return to ll driver tcpdata pointer, and tcp payload length.
1265 // along with return code lro frame appended.
1267 lro->sg_num++;
1283 * @p_lro: lro pointer.
1301 lro_t *lro;
1303 xge_debug_ring(XGE_TRACE, "Entered accumu lro. ");
1316 lro = *p_lro;
1319 (tcplro_t *)*tcp, lro, hldev)) {
1321 lro, hldev);
1324 if (lro->sg_num >= hldev->config.lro_sg_size) {
1339 lro->ip_hdr->tot_len = xge_os_htons((*p_lro)->total_length);
1340 lro->ip_hdr->check = xge_os_htons(0);
1341 lro->ip_hdr->check = XGE_LL_IP_FAST_CSUM(((u8 *)(lro->ip_hdr)),
1342 (lro->ip_hdr->version_ihl & 0x0F));
1343 lro->tcp_hdr->ack_seq = lro->tcp_ack_num;
1355 * @p_lro: lro pointer.
1377 * @lro: LRO Session.
1381 xge_hal_lro_close_session (lro_t *lro)
1383 lro->in_use = 0;
1400 lro_t *lro = &ring_lro->lro_pool[i];
1402 if (!lro->in_use)
1405 lro->ip_hdr->tot_len = xge_os_htons(lro->total_length);
1406 lro->ip_hdr->check = xge_os_htons(0);
1407 lro->ip_hdr->check = XGE_LL_IP_FAST_CSUM(((u8 *)(lro->ip_hdr)),
1408 (lro->ip_hdr->version_ihl & 0x0F));
1410 return lro;