|
@@ -888,7 +888,6 @@ e1000_receive_iov(NetClientState *nc, const struct iovec *iov, int iovcnt)
|
|
uint16_t vlan_special = 0;
|
|
uint16_t vlan_special = 0;
|
|
uint8_t vlan_status = 0;
|
|
uint8_t vlan_status = 0;
|
|
uint8_t min_buf[ETH_ZLEN];
|
|
uint8_t min_buf[ETH_ZLEN];
|
|
- struct iovec min_iov;
|
|
|
|
uint8_t *filter_buf = iov->iov_base;
|
|
uint8_t *filter_buf = iov->iov_base;
|
|
size_t size = iov_size(iov, iovcnt);
|
|
size_t size = iov_size(iov, iovcnt);
|
|
size_t iov_ofs = 0;
|
|
size_t iov_ofs = 0;
|
|
@@ -905,15 +904,7 @@ e1000_receive_iov(NetClientState *nc, const struct iovec *iov, int iovcnt)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
- /* Pad to minimum Ethernet frame length */
|
|
|
|
- if (size < sizeof(min_buf)) {
|
|
|
|
- iov_to_buf(iov, iovcnt, 0, min_buf, size);
|
|
|
|
- memset(&min_buf[size], 0, sizeof(min_buf) - size);
|
|
|
|
- min_iov.iov_base = filter_buf = min_buf;
|
|
|
|
- min_iov.iov_len = size = sizeof(min_buf);
|
|
|
|
- iovcnt = 1;
|
|
|
|
- iov = &min_iov;
|
|
|
|
- } else if (iov->iov_len < MAXIMUM_ETHERNET_HDR_LEN) {
|
|
|
|
|
|
+ if (iov->iov_len < MAXIMUM_ETHERNET_HDR_LEN) {
|
|
/* This is very unlikely, but may happen. */
|
|
/* This is very unlikely, but may happen. */
|
|
iov_to_buf(iov, iovcnt, 0, min_buf, MAXIMUM_ETHERNET_HDR_LEN);
|
|
iov_to_buf(iov, iovcnt, 0, min_buf, MAXIMUM_ETHERNET_HDR_LEN);
|
|
filter_buf = min_buf;
|
|
filter_buf = min_buf;
|