Lines Matching refs:pdma_st
1275 IGBPacketRxDMAState *pdma_st, in igb_read_rx_descr() argument
1281 igb_read_lgcy_rx_descr(core, &desc->legacy, &pdma_st->ba[1]); in igb_read_rx_descr()
1282 pdma_st->ba[0] = 0; in igb_read_rx_descr()
1288 igb_read_adv_rx_split_buf_descr(core, &desc->adv, &pdma_st->ba[0]); in igb_read_rx_descr()
1299 igb_read_adv_rx_single_buf_descr(core, &desc->adv, &pdma_st->ba[1]); in igb_read_rx_descr()
1300 pdma_st->ba[0] = 0; in igb_read_rx_descr()
1547 IGBPacketRxDMAState *pdma_st) in igb_write_adv_ps_rx_descr() argument
1552 if (pdma_st->do_ps) { in igb_write_adv_ps_rx_descr()
1553 pkt_len = pdma_st->bastate.written[1]; in igb_write_adv_ps_rx_descr()
1555 pkt_len = pdma_st->bastate.written[0] + pdma_st->bastate.written[1]; in igb_write_adv_ps_rx_descr()
1560 hdr_info = (pdma_st->ps_desc_data.hdr_len << E1000_ADVRXD_HDR_LEN_OFFSET) & in igb_write_adv_ps_rx_descr()
1562 hdr_info |= pdma_st->ps_desc_data.sph ? E1000_ADVRXD_HDR_SPH : 0; in igb_write_adv_ps_rx_descr()
1566 pdma_st->ps_desc_data.hbo ? E1000_ADVRXD_ST_ERR_HBO_OFFSET : 0); in igb_write_adv_ps_rx_descr()
1576 IGBPacketRxDMAState *pdma_st, in igb_write_rx_descr() argument
1581 pdma_st->bastate.written[1]); in igb_write_rx_descr()
1584 pdma_st); in igb_write_rx_descr()
1587 etqf, ts, pdma_st->bastate.written[1]); in igb_write_rx_descr()
1652 IGBPacketRxDMAState *pdma_st) in igb_do_ps() argument
1669 pdma_st->ps_hdr_len = total_pkt_len; in igb_do_ps()
1670 pdma_st->ps_desc_data.hdr_len = total_pkt_len; in igb_do_ps()
1681 pdma_st->ps_desc_data.hdr_len = bheader_size; in igb_do_ps()
1686 pdma_st->ps_desc_data.hdr_len = bheader_size; in igb_do_ps()
1693 pdma_st->ps_hdr_len = net_rx_pkt_get_l5_hdr_offset(pkt); in igb_do_ps()
1695 pdma_st->ps_hdr_len = net_rx_pkt_get_l4_hdr_offset(pkt); in igb_do_ps()
1698 pdma_st->ps_desc_data.sph = true; in igb_do_ps()
1699 pdma_st->ps_desc_data.hdr_len = pdma_st->ps_hdr_len; in igb_do_ps()
1701 if (pdma_st->ps_hdr_len > bheader_size) { in igb_do_ps()
1702 pdma_st->ps_desc_data.hbo = true; in igb_do_ps()
1710 pdma_st->ps_hdr_len = bheader_size; in igb_do_ps()
1718 igb_truncate_to_descriptor_size(IGBPacketRxDMAState *pdma_st, size_t *size) in igb_truncate_to_descriptor_size() argument
1720 if (pdma_st->do_ps && pdma_st->is_first) { in igb_truncate_to_descriptor_size()
1721 if (*size > pdma_st->rx_desc_packet_buf_size + pdma_st->ps_hdr_len) { in igb_truncate_to_descriptor_size()
1722 *size = pdma_st->rx_desc_packet_buf_size + pdma_st->ps_hdr_len; in igb_truncate_to_descriptor_size()
1725 if (*size > pdma_st->rx_desc_packet_buf_size) { in igb_truncate_to_descriptor_size()
1726 *size = pdma_st->rx_desc_packet_buf_size; in igb_truncate_to_descriptor_size()
1734 IGBPacketRxDMAState *pdma_st, in igb_write_hdr_frag_to_rx_buffers() argument
1738 assert(data_len <= pdma_st->rx_desc_header_buf_size - in igb_write_hdr_frag_to_rx_buffers()
1739 pdma_st->bastate.written[0]); in igb_write_hdr_frag_to_rx_buffers()
1741 pdma_st->ba[0] + pdma_st->bastate.written[0], in igb_write_hdr_frag_to_rx_buffers()
1743 pdma_st->bastate.written[0] += data_len; in igb_write_hdr_frag_to_rx_buffers()
1744 pdma_st->bastate.cur_idx = 1; in igb_write_hdr_frag_to_rx_buffers()
1751 IGBPacketRxDMAState *pdma_st, in igb_write_header_to_rx_buffers() argument
1757 if (!pdma_st->is_first) { in igb_write_header_to_rx_buffers()
1760 pdma_st->bastate.cur_idx = 1; in igb_write_header_to_rx_buffers()
1765 iov_copy = MIN(pdma_st->ps_hdr_len - ps_hdr_copied, in igb_write_header_to_rx_buffers()
1766 pdma_st->iov->iov_len - pdma_st->iov_ofs); in igb_write_header_to_rx_buffers()
1768 igb_write_hdr_frag_to_rx_buffers(core, d, pdma_st, in igb_write_header_to_rx_buffers()
1769 pdma_st->iov->iov_base, in igb_write_header_to_rx_buffers()
1775 pdma_st->iov_ofs += iov_copy; in igb_write_header_to_rx_buffers()
1776 if (pdma_st->iov_ofs == pdma_st->iov->iov_len) { in igb_write_header_to_rx_buffers()
1777 pdma_st->iov++; in igb_write_header_to_rx_buffers()
1778 pdma_st->iov_ofs = 0; in igb_write_header_to_rx_buffers()
1780 } while (ps_hdr_copied < pdma_st->ps_hdr_len); in igb_write_header_to_rx_buffers()
1782 pdma_st->is_first = false; in igb_write_header_to_rx_buffers()
1788 IGBPacketRxDMAState *pdma_st, in igb_write_payload_frag_to_rx_buffers() argument
1793 assert(pdma_st->bastate.cur_idx < IGB_MAX_PS_BUFFERS); in igb_write_payload_frag_to_rx_buffers()
1796 pdma_st->rx_desc_packet_buf_size - in igb_write_payload_frag_to_rx_buffers()
1797 pdma_st->bastate.written[pdma_st->bastate.cur_idx]; in igb_write_payload_frag_to_rx_buffers()
1801 pdma_st->bastate.cur_idx, in igb_write_payload_frag_to_rx_buffers()
1802 pdma_st->ba[pdma_st->bastate.cur_idx], in igb_write_payload_frag_to_rx_buffers()
1803 pdma_st->bastate.written[pdma_st->bastate.cur_idx], in igb_write_payload_frag_to_rx_buffers()
1808 pdma_st->ba[pdma_st->bastate.cur_idx] + in igb_write_payload_frag_to_rx_buffers()
1809 pdma_st->bastate.written[pdma_st->bastate.cur_idx], in igb_write_payload_frag_to_rx_buffers()
1812 pdma_st->bastate.written[pdma_st->bastate.cur_idx] += bytes_to_write; in igb_write_payload_frag_to_rx_buffers()
1816 if (pdma_st->bastate.written[pdma_st->bastate.cur_idx] == in igb_write_payload_frag_to_rx_buffers()
1817 pdma_st->rx_desc_packet_buf_size) { in igb_write_payload_frag_to_rx_buffers()
1818 pdma_st->bastate.cur_idx++; in igb_write_payload_frag_to_rx_buffers()
1827 IGBPacketRxDMAState *pdma_st, in igb_write_payload_to_rx_buffers() argument
1835 iov_copy = MIN(*copy_size, pdma_st->iov->iov_len - pdma_st->iov_ofs); in igb_write_payload_to_rx_buffers()
1837 pdma_st, in igb_write_payload_to_rx_buffers()
1838 pdma_st->iov->iov_base + in igb_write_payload_to_rx_buffers()
1839 pdma_st->iov_ofs, in igb_write_payload_to_rx_buffers()
1843 pdma_st->iov_ofs += iov_copy; in igb_write_payload_to_rx_buffers()
1844 if (pdma_st->iov_ofs == pdma_st->iov->iov_len) { in igb_write_payload_to_rx_buffers()
1845 pdma_st->iov++; in igb_write_payload_to_rx_buffers()
1846 pdma_st->iov_ofs = 0; in igb_write_payload_to_rx_buffers()
1850 if (pdma_st->desc_offset + pdma_st->desc_size >= pdma_st->total_size) { in igb_write_payload_to_rx_buffers()
1853 pdma_st, in igb_write_payload_to_rx_buffers()
1863 IGBPacketRxDMAState *pdma_st) in igb_write_to_rx_buffers() argument
1867 if (!(pdma_st->ba)[1] || (pdma_st->do_ps && !(pdma_st->ba[0]))) { in igb_write_to_rx_buffers()
1873 if (pdma_st->desc_offset >= pdma_st->size) { in igb_write_to_rx_buffers()
1877 pdma_st->desc_size = pdma_st->total_size - pdma_st->desc_offset; in igb_write_to_rx_buffers()
1878 igb_truncate_to_descriptor_size(pdma_st, &pdma_st->desc_size); in igb_write_to_rx_buffers()
1879 copy_size = pdma_st->size - pdma_st->desc_offset; in igb_write_to_rx_buffers()
1880 igb_truncate_to_descriptor_size(pdma_st, ©_size); in igb_write_to_rx_buffers()
1883 if (pdma_st->do_ps) { in igb_write_to_rx_buffers()
1884 igb_write_header_to_rx_buffers(core, pkt, d, pdma_st, ©_size); in igb_write_to_rx_buffers()
1886 pdma_st->bastate.cur_idx = 1; in igb_write_to_rx_buffers()
1889 igb_write_payload_to_rx_buffers(core, pkt, d, pdma_st, ©_size); in igb_write_to_rx_buffers()
1904 IGBPacketRxDMAState pdma_st = {0}; in igb_write_packet_to_guest() local
1905 pdma_st.is_first = true; in igb_write_packet_to_guest()
1906 pdma_st.size = net_rx_pkt_get_total_len(pkt); in igb_write_packet_to_guest()
1907 pdma_st.total_size = pdma_st.size + e1000x_fcs_len(core->mac); in igb_write_packet_to_guest()
1911 pdma_st.rx_desc_packet_buf_size = igb_rxbufsize(core, rxi); in igb_write_packet_to_guest()
1912 pdma_st.rx_desc_header_buf_size = igb_rxhdrbufsize(core, rxi); in igb_write_packet_to_guest()
1913 pdma_st.iov = net_rx_pkt_get_iovec(pkt); in igb_write_packet_to_guest()
1919 pdma_st.do_ps = igb_do_ps(core, rxi, pkt, &pdma_st); in igb_write_packet_to_guest()
1922 memset(&pdma_st.bastate, 0, sizeof(IGBBAState)); in igb_write_packet_to_guest()
1933 igb_read_rx_descr(core, &desc, &pdma_st, rxi); in igb_write_packet_to_guest()
1935 igb_write_to_rx_buffers(core, pkt, d, &pdma_st); in igb_write_packet_to_guest()
1936 pdma_st.desc_offset += pdma_st.desc_size; in igb_write_packet_to_guest()
1937 if (pdma_st.desc_offset >= pdma_st.total_size) { in igb_write_packet_to_guest()
1945 &pdma_st, in igb_write_packet_to_guest()
1949 } while (pdma_st.desc_offset < pdma_st.total_size); in igb_write_packet_to_guest()
1951 igb_update_rx_stats(core, rxi, pdma_st.size, pdma_st.total_size); in igb_write_packet_to_guest()