Skip to content

Commit 3a8055b

Browse files
committed
Rewrite vnet_preprocess as an inline function
1 parent 64d74c0 commit 3a8055b

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

virtio-net.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@
2626
#define VNET_QUEUE_NUM_MAX 1024
2727
#define VNET_QUEUE (vnet->queues[vnet->QueueSel])
2828

29-
#define VNET_PREPROCESS_ADDR(addr) \
30-
((addr) < RAM_SIZE && !((addr) &0b11) ? ((addr) >> 2) \
31-
: (virtio_net_set_fail(vnet), 0))
32-
3329
#define PRIV(x) ((struct virtio_net_config *) x->priv)
3430

3531
enum { VNET_QUEUE_RX = 0, VNET_QUEUE_TX = 1 };
@@ -51,6 +47,14 @@ static void virtio_net_set_fail(virtio_net_state_t *vnet)
5147
vnet->InterruptStatus |= VIRTIO_INT__CONF_CHANGE;
5248
}
5349

50+
static inline uint32_t vnet_preprocess(virtio_net_state_t *vnet, uint32_t addr)
51+
{
52+
if ((addr >= RAM_SIZE) || (addr & 0b11))
53+
return virtio_net_set_fail(vnet), 0;
54+
55+
return addr >> 2;
56+
}
57+
5458
static void virtio_net_update_status(virtio_net_state_t *vnet, uint32_t status)
5559
{
5660
vnet->Status |= status;
@@ -327,21 +331,21 @@ static bool virtio_net_reg_write(virtio_net_state_t *vnet,
327331
1; /* set VIRTQ_AVAIL_F_NO_INTERRUPT */
328332
return true;
329333
case _(QueueDescLow):
330-
VNET_QUEUE.QueueDesc = VNET_PREPROCESS_ADDR(value);
334+
VNET_QUEUE.QueueDesc = vnet_preprocess(vnet, value);
331335
return true;
332336
case _(QueueDescHigh):
333337
if (value)
334338
virtio_net_set_fail(vnet);
335339
return true;
336340
case _(QueueDriverLow):
337-
VNET_QUEUE.QueueAvail = VNET_PREPROCESS_ADDR(value);
341+
VNET_QUEUE.QueueAvail = vnet_preprocess(vnet, value);
338342
return true;
339343
case _(QueueDriverHigh):
340344
if (value)
341345
virtio_net_set_fail(vnet);
342346
return true;
343347
case _(QueueDeviceLow):
344-
VNET_QUEUE.QueueUsed = VNET_PREPROCESS_ADDR(value);
348+
VNET_QUEUE.QueueUsed = vnet_preprocess(vnet, value);
345349
return true;
346350
case _(QueueDeviceHigh):
347351
if (value)

0 commit comments

Comments
 (0)