|
|
|
|
|
|
|
|
|
|
xen-devel
[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
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] GPLPV: Respecting SG capability,
Russ Blaine <=
|
|
|
|
|