|
@@ -664,6 +664,13 @@ static ssize_t gem_receive(NetClientState *nc, const uint8_t *buf, size_t size)
|
|
|
GEM_DMACFG_RBUFSZ_S) * GEM_DMACFG_RBUFSZ_MUL;
|
|
|
bytes_to_copy = size;
|
|
|
|
|
|
+ /* Hardware allows a zero value here but warns against it. To avoid QEMU
|
|
|
+ * indefinite loops we enforce a minimum value here
|
|
|
+ */
|
|
|
+ if (rxbufsize < GEM_DMACFG_RBUFSZ_MUL) {
|
|
|
+ rxbufsize = GEM_DMACFG_RBUFSZ_MUL;
|
|
|
+ }
|
|
|
+
|
|
|
/* Pad to minimum length. Assume FCS field is stripped, logic
|
|
|
* below will increment it to the real minimum of 64 when
|
|
|
* not FCS stripping
|