mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-26 15:31:35 +00:00
dm: virtio-net: clean up assert
This patch is to clean up assert from virtio-net. Tracked-On: #3252 Signed-off-by: Jie Deng <jie.deng@intel.com> Reviewed-by: Shuo A Liu <shuo.a.liu@intel.com>
This commit is contained in:
parent
b0015963f5
commit
cdc5f120f1
@ -33,7 +33,6 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <assert.h>
|
|
||||||
#include <openssl/md5.h>
|
#include <openssl/md5.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
@ -345,11 +344,17 @@ rx_iov_trim(struct iovec *iov, int *niov, int tlen)
|
|||||||
struct iovec *riov;
|
struct iovec *riov;
|
||||||
|
|
||||||
/* XXX short-cut: assume first segment is >= tlen */
|
/* XXX short-cut: assume first segment is >= tlen */
|
||||||
assert(iov[0].iov_len >= tlen);
|
if (iov[0].iov_len < tlen) {
|
||||||
|
WPRINTF(("vtnet: rx_iov_trim: iov_len=%lu, tlen=%d\n", iov[0].iov_len, tlen));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
iov[0].iov_len -= tlen;
|
iov[0].iov_len -= tlen;
|
||||||
if (iov[0].iov_len == 0) {
|
if (iov[0].iov_len == 0) {
|
||||||
assert(*niov > 1);
|
if (*niov <= 1) {
|
||||||
|
WPRINTF(("vtnet: rx_iov_trim: *niov=%d\n", *niov));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
*niov -= 1;
|
*niov -= 1;
|
||||||
riov = &iov[1];
|
riov = &iov[1];
|
||||||
} else {
|
} else {
|
||||||
@ -373,7 +378,10 @@ virtio_net_tap_rx(struct virtio_net *net)
|
|||||||
/*
|
/*
|
||||||
* Should never be called without a valid tap fd
|
* Should never be called without a valid tap fd
|
||||||
*/
|
*/
|
||||||
assert(net->tapfd != -1);
|
if (net->tapfd == -1) {
|
||||||
|
WPRINTF(("vtnet: tapfd == -1\n"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* But, will be called when the rx ring hasn't yet
|
* But, will be called when the rx ring hasn't yet
|
||||||
@ -410,14 +418,18 @@ virtio_net_tap_rx(struct virtio_net *net)
|
|||||||
* Get descriptor chain.
|
* Get descriptor chain.
|
||||||
*/
|
*/
|
||||||
n = vq_getchain(vq, &idx, iov, VIRTIO_NET_MAXSEGS, NULL);
|
n = vq_getchain(vq, &idx, iov, VIRTIO_NET_MAXSEGS, NULL);
|
||||||
assert(n >= 1 && n <= VIRTIO_NET_MAXSEGS);
|
if (n < 1 || n > VIRTIO_NET_MAXSEGS) {
|
||||||
|
WPRINTF(("vtnet: virtio_net_tap_rx: vq_getchain = %d\n", n));
|
||||||
|
return;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* Get a pointer to the rx header, and use the
|
* Get a pointer to the rx header, and use the
|
||||||
* data immediately following it for the packet buffer.
|
* data immediately following it for the packet buffer.
|
||||||
*/
|
*/
|
||||||
vrx = iov[0].iov_base;
|
vrx = iov[0].iov_base;
|
||||||
riov = rx_iov_trim(iov, &n, net->rx_vhdrlen);
|
riov = rx_iov_trim(iov, &n, net->rx_vhdrlen);
|
||||||
|
if (riov == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
len = readv(net->tapfd, riov, n);
|
len = readv(net->tapfd, riov, n);
|
||||||
|
|
||||||
@ -495,7 +507,10 @@ virtio_net_proctx(struct virtio_net *net, struct virtio_vq_info *vq)
|
|||||||
* up two lengths: packet length and transfer length.
|
* up two lengths: packet length and transfer length.
|
||||||
*/
|
*/
|
||||||
n = vq_getchain(vq, &idx, iov, VIRTIO_NET_MAXSEGS, NULL);
|
n = vq_getchain(vq, &idx, iov, VIRTIO_NET_MAXSEGS, NULL);
|
||||||
assert(n >= 1 && n <= VIRTIO_NET_MAXSEGS);
|
if (n < 1 || n > VIRTIO_NET_MAXSEGS) {
|
||||||
|
WPRINTF(("vtnet: virtio_net_proctx: vq_getchain = %d\n", n));
|
||||||
|
return;
|
||||||
|
}
|
||||||
plen = 0;
|
plen = 0;
|
||||||
tlen = iov[0].iov_len;
|
tlen = iov[0].iov_len;
|
||||||
for (i = 1; i < n; i++) {
|
for (i = 1; i < n; i++) {
|
||||||
@ -537,7 +552,6 @@ virtio_net_tx_thread(void *param)
|
|||||||
{
|
{
|
||||||
struct virtio_net *net = param;
|
struct virtio_net *net = param;
|
||||||
struct virtio_vq_info *vq = &net->queues[VIRTIO_NET_TXQ];
|
struct virtio_vq_info *vq = &net->queues[VIRTIO_NET_TXQ];
|
||||||
int error;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Let us wait till the tx queue pointers get initialised &
|
* Let us wait till the tx queue pointers get initialised &
|
||||||
@ -545,10 +559,8 @@ virtio_net_tx_thread(void *param)
|
|||||||
*/
|
*/
|
||||||
pthread_mutex_lock(&net->tx_mtx);
|
pthread_mutex_lock(&net->tx_mtx);
|
||||||
|
|
||||||
while (!net->closing && !vq_ring_ready(vq)) {
|
while (!net->closing && !vq_ring_ready(vq))
|
||||||
error = pthread_cond_wait(&net->tx_cond, &net->tx_mtx);
|
pthread_cond_wait(&net->tx_cond, &net->tx_mtx);
|
||||||
assert(error == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (net->closing) {
|
if (net->closing) {
|
||||||
WPRINTF(("vtnet tx thread closing...\n"));
|
WPRINTF(("vtnet tx thread closing...\n"));
|
||||||
@ -572,8 +584,8 @@ virtio_net_tx_thread(void *param)
|
|||||||
if (!net->resetting && vq_has_descs(vq))
|
if (!net->resetting && vq_has_descs(vq))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
error = pthread_cond_wait(&net->tx_cond, &net->tx_mtx);
|
pthread_cond_wait(&net->tx_cond, &net->tx_mtx);
|
||||||
assert(error == 0);
|
|
||||||
if (net->closing) {
|
if (net->closing) {
|
||||||
WPRINTF(("vtnet tx thread closing...\n"));
|
WPRINTF(("vtnet tx thread closing...\n"));
|
||||||
pthread_mutex_unlock(&net->tx_mtx);
|
pthread_mutex_unlock(&net->tx_mtx);
|
||||||
@ -901,7 +913,10 @@ virtio_net_cfgwrite(void *vdev, int offset, int size, uint32_t value)
|
|||||||
void *ptr;
|
void *ptr;
|
||||||
|
|
||||||
if (offset < 6) {
|
if (offset < 6) {
|
||||||
assert(offset + size <= 6);
|
if (offset + size > 6) {
|
||||||
|
DPRINTF(("vtnet: wrong params offset=%d, size=%d, ignore write mac address\n\r", offset, size));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* The driver is allowed to change the MAC address
|
* The driver is allowed to change the MAC address
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user