[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] GPLPV: Respecting SG capability
Hi James,As you may have heard, the latest GPLPV release doesn't work on Opensolaris dom0. Our backend net driver doesn't support scatter/gather, but it seems that GPLPV now requires it. I have a fix for this in the frontend which coalesces all NDIS buffers into one ring transaction. With the fix, packets flow again. Once this is addressed I may go and implement SG in our backend anyway, but I wanted to get this fix into the GPLPV source first to enable networking on older and current dom0s. The fix as I have it now is around line 229 of xennet_tx.c (see below). I think a further and necessary improvement on this would be to avoid the construction of the header_buf() altogether in the no-sg case. There is also only one tx_sendbuf per driver instance (it just points to tx_hb[0]), and I suppose there should be several and that they should be managed in the same way you deal with the tx_hb[] instances. Actually, on second look, there is a per-driver-instance tx_lock which must act to serialize all transmits? In which case we only need a single tx_sendbuf anyhow. Would Windows benefit from having a reentrant send routine? Here is the prototype of the fix. if (xi->config_sg == 0) { int i; ULONG len; ULONG offset = 0; PNDIS_BUFFER buf; buf = pi.first_buffer; while (buf) { PUCHAR src_addr; NdisQueryBufferSafe(buf, &src_addr, &len, NormalPagePriority); memcpy((PUCHAR)xi->tx_sendbuf.virtual + offset, src_addr, len); offset += len; NdisGetNextBuffer(buf, &buf); }tx0->gref = (grant_ref_t)xi->tx_sendbuf.logical.QuadPart >> PAGE_SHIFT; tx0->offset = (USHORT)xi->tx_sendbuf.logical.LowPart & (PAGE_SIZE - 1); ASSERT(offset == pi.total_length); tx0->size = offset; tx0->flags &= ~NETTXF_more_data; sg_element = sg->NumberOfElements; } else if (header_buf) Cheers, - Russ ----------------------------------------------------- Russ Blaine | Solaris Kernel | russell.blaine@xxxxxxx _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |