Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F152516289
D27913.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D27913.diff
View Options
diff --git a/sys/dev/virtio/network/if_vtnet.c b/sys/dev/virtio/network/if_vtnet.c
--- a/sys/dev/virtio/network/if_vtnet.c
+++ b/sys/dev/virtio/network/if_vtnet.c
@@ -827,6 +827,7 @@
return (error);
}
+ vtnet_set_rx_process_limit(sc);
vtnet_setup_queue_sysctl(sc);
return (0);
@@ -996,6 +997,7 @@
ifp->if_softc = sc;
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST |
IFF_KNOWSEPOCH;
+ ifp->if_baudrate = IF_Gbps(10);
ifp->if_init = vtnet_init;
ifp->if_ioctl = vtnet_ioctl;
ifp->if_get_counter = vtnet_get_counter;
@@ -1010,29 +1012,15 @@
IFQ_SET_READY(&ifp->if_snd);
#endif
- if (virtio_with_feature(dev, VIRTIO_NET_F_SPEED_DUPLEX)) {
- uint32_t speed = virtio_read_dev_config_4(dev,
- offsetof(struct virtio_net_config, speed));
- if (speed != -1)
- ifp->if_baudrate = IF_Mbps(speed);
- else
- ifp->if_baudrate = IF_Gbps(10); /* Approx. */
- } else
- ifp->if_baudrate = IF_Gbps(10); /* Approx. */
-
- ifmedia_init(&sc->vtnet_media, 0, vtnet_ifmedia_upd, vtnet_ifmedia_sts);
- ifmedia_add(&sc->vtnet_media, IFM_ETHER | IFM_AUTO, 0, NULL);
- ifmedia_set(&sc->vtnet_media, IFM_ETHER | IFM_AUTO);
-
vtnet_get_macaddr(sc);
- ether_ifattach(ifp, sc->vtnet_hwaddr);
-
- /* Tell the upper layer(s) we support long frames. */
- ifp->if_hdrlen = sizeof(struct ether_vlan_header);
if (virtio_with_feature(dev, VIRTIO_NET_F_STATUS))
ifp->if_capabilities |= IFCAP_LINKSTATE;
+ ifmedia_init(&sc->vtnet_media, 0, vtnet_ifmedia_upd, vtnet_ifmedia_sts);
+ ifmedia_add(&sc->vtnet_media, IFM_ETHER | IFM_AUTO, 0, NULL);
+ ifmedia_set(&sc->vtnet_media, IFM_ETHER | IFM_AUTO);
+
if (virtio_with_feature(dev, VIRTIO_NET_F_CSUM)) {
int gso;
@@ -1063,7 +1051,7 @@
ifp->if_capabilities |= IFCAP_LRO;
}
- if (ifp->if_capabilities & IFCAP_HWCSUM) {
+ if (ifp->if_capabilities & (IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6)) {
/*
* VirtIO does not support VLAN tagging, but we can fake
* it by inserting and removing the 802.1Q header during
@@ -1078,11 +1066,11 @@
ifp->if_capabilities |= IFCAP_JUMBO_MTU;
ifp->if_capabilities |= IFCAP_VLAN_MTU;
- ifp->if_capenable = ifp->if_capabilities;
-
/*
* Capabilities after here are not enabled by default.
*/
+ ifp->if_capenable = ifp->if_capabilities;
+
if (sc->vtnet_flags & VTNET_FLAG_VLAN_FILTER) {
ifp->if_capabilities |= IFCAP_VLAN_HWFILTER;
@@ -1092,7 +1080,10 @@
vtnet_unregister_vlan, sc, EVENTHANDLER_PRI_FIRST);
}
- vtnet_set_rx_process_limit(sc);
+ ether_ifattach(ifp, sc->vtnet_hwaddr);
+
+ /* Tell the upper layer(s) we support long frames. */
+ ifp->if_hdrlen = sizeof(struct ether_vlan_header);
DEBUGNET_SET(ifp, vtnet);
@@ -3623,20 +3614,17 @@
static void
vtnet_update_speed_duplex(struct vtnet_softc *sc)
{
- device_t dev;
struct ifnet *ifp;
uint32_t speed;
- dev = sc->vtnet_dev;
ifp = sc->vtnet_ifp;
- /* BMV: Ignore duplex. */
if ((sc->vtnet_features & VIRTIO_NET_F_SPEED_DUPLEX) == 0)
- speed = -1;
- else
- speed = virtio_read_dev_config_4(dev,
- offsetof(struct virtio_net_config, speed));
+ return;
+ /* BMV: Ignore duplex. */
+ speed = virtio_read_dev_config_4(sc->vtnet_dev,
+ offsetof(struct virtio_net_config, speed));
if (speed != -1)
ifp->if_baudrate = IF_Mbps(speed);
}
@@ -3644,18 +3632,13 @@
static int
vtnet_is_link_up(struct vtnet_softc *sc)
{
- device_t dev;
- struct ifnet *ifp;
uint16_t status;
- dev = sc->vtnet_dev;
- ifp = sc->vtnet_ifp;
+ if ((sc->vtnet_features & VIRTIO_NET_F_STATUS) == 0)
+ return (1);
- if ((ifp->if_capabilities & IFCAP_LINKSTATE) == 0)
- status = VIRTIO_NET_S_LINK_UP;
- else
- status = virtio_read_dev_config_2(dev,
- offsetof(struct virtio_net_config, status));
+ status = virtio_read_dev_config_2(sc->vtnet_dev,
+ offsetof(struct virtio_net_config, status));
return ((status & VIRTIO_NET_S_LINK_UP) != 0);
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Apr 16, 11:03 AM (14 h, 3 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31597868
Default Alt Text
D27913.diff (3 KB)
Attached To
Mode
D27913: if_vtnet: cleanup the interface setup methods
Attached
Detach File
Event Timeline
Log In to Comment