vmxnet3: Fix RX rings initialization

2nd ring of RX queue was filled with descriptors
and immediately cleared. This lead to inability of driver
to receive packets loger than 16K.

Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
vmxnet3: Fix long RX packets processing

Function vmxnet3::rxq_eof() may exit in the middle
of multi-descriptor RX packet processing. In this case
it is expected to resume processing of the same packet
on next invocation.

Fixed by making corresponding pointers vmxnet3_rxqueue class
members instead of stack variables.

Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
vmxnet3: Drop memory allocation error handling on RX path

Packet discard logic on RX path is incorrect because
it doesn't take into account that incoming packet may be spread
over a few rings.

At the same time discard logic is called in case of newbuf() failure
only and our newbuf() never fails since we have no memory allocation
errors, so discard logic may be safely dropped and this is an
excellent fix for the original problem.

Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
vmxnet3: Fix RX descriptor length field overflow

RX descriptor length is 14 bit field, we overflow it
by allocating 16K buffers and device treats RX descriptor
buffer length as zero.

Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>