|
@@ -77,18 +77,18 @@ static u16 vdata[QUEUE_NB][MAX_QUEUE_NUM];
|
77
|
77
|
*
|
78
|
78
|
*/
|
79
|
79
|
|
80
|
|
-static int vp_find_vq(struct nic *nic, int queue_index)
|
|
80
|
+static int vp_find_vq(unsigned int ioaddr, int queue_index)
|
81
|
81
|
{
|
82
|
82
|
struct vring * vr = &vring[queue_index];
|
83
|
83
|
u16 num;
|
84
|
84
|
|
85
|
85
|
/* select the queue */
|
86
|
86
|
|
87
|
|
- outw(queue_index, nic->ioaddr + VIRTIO_PCI_QUEUE_SEL);
|
|
87
|
+ outw(queue_index, ioaddr + VIRTIO_PCI_QUEUE_SEL);
|
88
|
88
|
|
89
|
89
|
/* check if the queue is available */
|
90
|
90
|
|
91
|
|
- num = inw(nic->ioaddr + VIRTIO_PCI_QUEUE_NUM);
|
|
91
|
+ num = inw(ioaddr + VIRTIO_PCI_QUEUE_NUM);
|
92
|
92
|
if (!num) {
|
93
|
93
|
printf("ERROR: queue size is 0\n");
|
94
|
94
|
return -1;
|
|
@@ -101,7 +101,7 @@ static int vp_find_vq(struct nic *nic, int queue_index)
|
101
|
101
|
|
102
|
102
|
/* check if the queue is already active */
|
103
|
103
|
|
104
|
|
- if (inl(nic->ioaddr + VIRTIO_PCI_QUEUE_PFN)) {
|
|
104
|
+ if (inl(ioaddr + VIRTIO_PCI_QUEUE_PFN)) {
|
105
|
105
|
printf("ERROR: queue already active\n");
|
106
|
106
|
return -1;
|
107
|
107
|
}
|
|
@@ -116,7 +116,7 @@ static int vp_find_vq(struct nic *nic, int queue_index)
|
116
|
116
|
*/
|
117
|
117
|
|
118
|
118
|
outl((unsigned long)virt_to_phys(vr->desc) >> PAGE_SHIFT,
|
119
|
|
- nic->ioaddr + VIRTIO_PCI_QUEUE_PFN);
|
|
119
|
+ ioaddr + VIRTIO_PCI_QUEUE_PFN);
|
120
|
120
|
|
121
|
121
|
return num;
|
122
|
122
|
}
|
|
@@ -253,7 +253,7 @@ static void vring_kick(struct nic *nic, int queue_index, int num_added)
|
253
|
253
|
|
254
|
254
|
mb();
|
255
|
255
|
if (!(vr->used->flags & VRING_USED_F_NO_NOTIFY))
|
256
|
|
- vp_notify(nic, queue_index);
|
|
256
|
+ vp_notify(nic->ioaddr, queue_index);
|
257
|
257
|
}
|
258
|
258
|
|
259
|
259
|
/*
|
|
@@ -269,9 +269,9 @@ static void virtnet_disable(struct nic *nic)
|
269
|
269
|
|
270
|
270
|
for (i = 0; i < QUEUE_NB; i++) {
|
271
|
271
|
vring_disable_cb(i);
|
272
|
|
- vp_del_vq(nic, i);
|
|
272
|
+ vp_del_vq(nic->ioaddr, i);
|
273
|
273
|
}
|
274
|
|
- vp_reset(nic);
|
|
274
|
+ vp_reset(nic->ioaddr);
|
275
|
275
|
}
|
276
|
276
|
|
277
|
277
|
/*
|
|
@@ -448,11 +448,11 @@ static int virtnet_probe(struct nic *nic, struct pci_device *pci)
|
448
|
448
|
|
449
|
449
|
adjust_pci_device(pci);
|
450
|
450
|
|
451
|
|
- vp_reset(nic);
|
|
451
|
+ vp_reset(nic->ioaddr);
|
452
|
452
|
|
453
|
|
- features = vp_get_features(nic);
|
|
453
|
+ features = vp_get_features(nic->ioaddr);
|
454
|
454
|
if (features & (1 << VIRTIO_NET_F_MAC)) {
|
455
|
|
- vp_get(nic, offsetof(struct virtio_net_config, mac),
|
|
455
|
+ vp_get(nic->ioaddr, offsetof(struct virtio_net_config, mac),
|
456
|
456
|
nic->node_addr, ETH_ALEN);
|
457
|
457
|
printf("MAC address ");
|
458
|
458
|
for (i = 0; i < ETH_ALEN; i++) {
|
|
@@ -467,7 +467,7 @@ static int virtnet_probe(struct nic *nic, struct pci_device *pci)
|
467
|
467
|
free_head[i] = 0;
|
468
|
468
|
last_used_idx[i] = 0;
|
469
|
469
|
memset((char*)&queue[i], 0, sizeof(queue[i]));
|
470
|
|
- if (vp_find_vq(nic, i) == -1)
|
|
470
|
+ if (vp_find_vq(nic->ioaddr, i) == -1)
|
471
|
471
|
printf("Cannot register queue #%d\n", i);
|
472
|
472
|
}
|
473
|
473
|
|
|
@@ -481,8 +481,8 @@ static int virtnet_probe(struct nic *nic, struct pci_device *pci)
|
481
|
481
|
|
482
|
482
|
/* driver is ready */
|
483
|
483
|
|
484
|
|
- vp_set_features(nic, features & (1 << VIRTIO_NET_F_MAC));
|
485
|
|
- vp_set_status(nic, VIRTIO_CONFIG_S_DRIVER | VIRTIO_CONFIG_S_DRIVER_OK);
|
|
484
|
+ vp_set_features(nic->ioaddr, features & (1 << VIRTIO_NET_F_MAC));
|
|
485
|
+ vp_set_status(nic->ioaddr, VIRTIO_CONFIG_S_DRIVER | VIRTIO_CONFIG_S_DRIVER_OK);
|
486
|
486
|
|
487
|
487
|
return 1;
|
488
|
488
|
}
|