1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
--- pvmnet/if_pvmnet.c.orig 2014-02-14 14:09:06 UTC
+++ pvmnet/if_pvmnet.c
@@ -245,20 +245,21 @@ static driver_t pvmnet_driver = {
sizeof(struct pvmnet_softc)
};
+#if __FreeBSD_version >= 1400058
+DRIVER_MODULE(pvmnet, pci, pvmnet_driver, 0, 0);
+#else
static devclass_t pvmnet_devclass;
DRIVER_MODULE(pvmnet, pci, pvmnet_driver, pvmnet_devclass, 0, 0);
+#endif
static int
pvmnet_probe(device_t dev)
{
uint16_t devid, vendor;
- uint16_t revid, sdevid;
vendor = pci_get_vendor(dev);
devid = pci_get_device(dev);
- revid = pci_get_revid(dev);
- sdevid = pci_get_subdevice(dev);
if (vendor != 0x10ec || devid != 0x8029)
return (ENXIO);
@@ -364,12 +365,20 @@ pvmnetintr(void *arg)
for (offset = io_get_rcv_offset(sc);
(size = io_get_packet_size(sc, offset)); offset += FULL_PACKET_SIZE(size)) {
if (size > ETHER_MAX_LEN) {
+#if __FreeBSD_version >= 1100036
+ if_inc_counter(ifp, IFCOUNTER_IERRORS, 1);
+#else
ifp->if_ierrors++;
+#endif
continue;
}
m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);
if (m == NULL) {
+#if __FreeBSD_version >= 1100036
+ if_inc_counter(ifp, IFCOUNTER_IERRORS, 1);
+#else
ifp->if_ierrors++;
+#endif
continue;
}
m->m_pkthdr.rcvif = ifp;
@@ -379,7 +388,11 @@ pvmnetintr(void *arg)
m->m_pkthdr.len = m->m_len = size;
io_read_data(sc, offset, m);
+#if __FreeBSD_version >= 1100036
+ if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
+#else
ifp->if_ipackets++;
+#endif
PVMNET_UNLOCK(sc);
(*ifp->if_input)(ifp, m);
@@ -427,8 +440,8 @@ static int pvmnet_alloc_resources(device_t dev)
error = bus_setup_intr(dev, sc->irq_res, INTR_TYPE_NET | INTR_MPSAFE,
NULL, pvmnetintr, sc, &sc->irq_handle);
- if (!res)
- return ENXIO;
+ if (error)
+ return error;
return (0);
}
@@ -538,7 +551,11 @@ pvmnet_start_locked(struct ifnet *ifp)
io_notify_sndbuf_full(sc);
break;
}
+#if __FreeBSD_version >= 1100036
+ if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1);
+#else
ifp->if_opackets++;
+#endif
BPF_MTAP(ifp, m);
m_freem(m);
}
|