for (; p; p = p->next)
{
txdescs[txprod].segments[n].addr = v2p(p->payload);
txdescs[txprod].segments[n].len = p->len | (p->next ? 0 : (1 << 31));
len += p->len;
for (; p; p = p->next)
{
txdescs[txprod].segments[n].addr = v2p(p->payload);
txdescs[txprod].segments[n].len = p->len | (p->next ? 0 : (1 << 31));
len += p->len;