Page MenuHomeFreeBSD

D2056.id4197.diff
No OneTemporary

D2056.id4197.diff

Index: sys/dev/virtio/network/if_vtnet.c
===================================================================
--- sys/dev/virtio/network/if_vtnet.c
+++ sys/dev/virtio/network/if_vtnet.c
@@ -938,6 +938,7 @@
ifmedia_init(&sc->vtnet_media, IFM_IMASK, vtnet_ifmedia_upd,
vtnet_ifmedia_sts);
ifmedia_add(&sc->vtnet_media, VTNET_MEDIATYPE, 0, NULL);
+ ifmedia_add(&sc->vtnet_media, IFM_ETHER_SUBTYPE_SET(IFM_VFAST), 0, NULL);
ifmedia_set(&sc->vtnet_media, VTNET_MEDIATYPE);
/* Read (or generate) the MAC address for the adapter. */
Index: sys/net/if_media.h
===================================================================
--- sys/net/if_media.h
+++ sys/net/if_media.h
@@ -129,6 +129,8 @@
* Ethernet
*/
#define IFM_ETHER 0x00000020
+#define IFM_ETHER_SUBTYPE_SET(x) (((x) & 0x1f) | (((x) & 0x3e0) << 6) | IFM_ETHER)
+#define IFM_ETHER_SUBTYPE_GET(x) (((x) & 0x1f) | (((x) & 0xf800) >> 6))
#define IFM_10_T 3 /* 10BaseT - RJ45 */
#define IFM_10_2 4 /* 10Base2 - Thinnet */
#define IFM_10_5 5 /* 10Base5 - AUI */
@@ -156,11 +158,32 @@
#define IFM_40G_CR4 27 /* 40GBase-CR4 */
#define IFM_40G_SR4 28 /* 40GBase-SR4 */
#define IFM_40G_LR4 29 /* 40GBase-LR4 */
+#define IFM_VFAST 30 /* test "V.fast" */
+#define IFM_1000_KX 31 /* 1000Base-KX backplane */
+#define IFM_10G_KX4 32 /* 10GBase-KX4 backplane */
+#define IFM_10G_KR 33 /* 10GBase-KR backplane */
+#define IFM_10G_CR1 34 /* 10GBase-CR1 Twinax splitter */
+#define IFM_20G_KR2 35 /* 20GBase-KR2 backplane */
+#define IFM_2500_KX 36 /* 2500Base-KX backplane */
+#define IFM_2500_T 37 /* 2500Base-T - RJ45 (NBaseT) */
+#define IFM_5000_T 38 /* 5000Base-T - RJ45 (NBaseT) */
+#define IFM_50G_PCIE 39 /* 50G Ethernet over PCIE */
+#define IFM_25G_PCIE 40 /* 25G Ethernet over PCIE */
+#define IFM_SGMII 41 /* 1G media interface */
+#define IFM_SFI 42 /* 10G media interface */
+#define IFM_XLPPI 43 /* 40G media interface */
+#define IFM_1000_CX_SGMII 44 /* 1000Base-CX-SGMII */
+#define IFM_40G_KR4 45 /* 40GBase-KR4 */
+#define IFM_10G_ER 46 /* 10GBase-ER */
+#define IFM_100G_CR4 47 /* 100GBase-CR4 */
+#define IFM_100G_SR4 48 /* 100GBase-SR4 */
+#define IFM_100G_KR4 49 /* 100GBase-KR4 */
+
/*
* Please update ieee8023ad_lacp.c:lacp_compose_key()
* after adding new Ethernet media types.
*/
-/* note 31 is the max! */
+/* Note 0x3ff is the max! */
#define IFM_ETH_MASTER 0x00000100 /* master mode (1000baseT) */
#define IFM_ETH_RXPAUSE 0x00000200 /* receive PAUSE frames */
@@ -307,7 +330,10 @@
* Macros to extract various bits of information from the media word.
*/
#define IFM_TYPE(x) ((x) & IFM_NMASK)
-#define IFM_SUBTYPE(x) ((x) & IFM_TMASK)
+#define IFM_SUBTYPE(x) \
+ (IFM_TYPE(x) == IFM_ETHER ? IFM_ETHER_SUBTYPE_GET(x) : ((x) & IFM_TMASK))
+#define IFM_TYPE_MATCH(x,y) \
+ (IFM_TYPE(x) == IFM_TYPE(y) && IFM_SUBTYPE(x) == IFM_SUBTYPE(y))
#define IFM_TYPE_OPTIONS(x) ((x) & IFM_OMASK)
#define IFM_INST(x) (((x) & IFM_IMASK) >> IFM_ISHIFT)
#define IFM_OPTIONS(x) ((x) & (IFM_OMASK | IFM_GMASK))
@@ -372,6 +398,26 @@
{ IFM_40G_CR4, "40Gbase-CR4" }, \
{ IFM_40G_SR4, "40Gbase-SR4" }, \
{ IFM_40G_LR4, "40Gbase-LR4" }, \
+ { IFM_VFAST, "V.fast" }, \
+ { IFM_1000_KX, "1000Base-KX" }, \
+ { IFM_10G_KX4, "10GBase-KX4" }, \
+ { IFM_10G_KR, "10GBase-KR" }, \
+ { IFM_10G_CR1, "10GBase-CR1" }, \
+ { IFM_20G_KR2, "20GBase-KR2" }, \
+ { IFM_2500_KX, "2500Base-KX" }, \
+ { IFM_2500_T, "2500Base-T" }, \
+ { IFM_5000_T, "5000Base-T" }, \
+ { IFM_50G_PCIE, "PCIExpress-50G" }, \
+ { IFM_25G_PCIE, "PCIExpress-25G" }, \
+ { IFM_SGMII, "SGMII" }, \
+ { IFM_SFI, "SFI" }, \
+ { IFM_XLPPI, "XLPPI" }, \
+ { IFM_1000_CX_SGMII, "1000Base-CX-SGMII" }, \
+ { IFM_40G_KR4, "40GBase-KR4" }, \
+ { IFM_10G_ER, "10GBase-ER" }, \
+ { IFM_100G_CR4, "100GBase-CR4" }, \
+ { IFM_100G_SR4, "100GBase-SR4" }, \
+ { IFM_100G_KR4, "100GBase-KR4" }, \
{ 0, NULL }, \
}
@@ -673,6 +719,26 @@
{ IFM_ETHER | IFM_40G_CR4, IF_Gbps(40ULL) }, \
{ IFM_ETHER | IFM_40G_SR4, IF_Gbps(40ULL) }, \
{ IFM_ETHER | IFM_40G_LR4, IF_Gbps(40ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_VFAST), IF_Gbps(40ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_1000_KX), IF_Mbps(1000) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_10G_KX4), IF_Gbps(10ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_10G_KR), IF_Gbps(10ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_10G_CR1), IF_Gbps(10ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_20G_KR2), IF_Gbps(20ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_2500_KX), IF_Mbps(2500) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_2500_T), IF_Mbps(2500) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_5000_T), IF_Mbps(5000) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_50G_PCIE), IF_Gbps(50ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_25G_PCIE), IF_Gbps(25ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_SGMII), IF_Mbps(1000) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_SFI), IF_Gbps(10ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_XLPPI), IF_Gbps(40ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_1000_CX_SGMII), IF_Mbps(1000) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_40G_KR4), IF_Gbps(40ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_10G_ER), IF_Gbps(10ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_100G_CR4), IF_Gbps(100ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_100G_SR4), IF_Gbps(100ULL) }, \
+ { IFM_ETHER_SUBTYPE_SET(IFM_100G_KR4), IF_Gbps(100ULL) }, \
\
{ IFM_TOKEN | IFM_TOK_STP4, IF_Mbps(4) }, \
{ IFM_TOKEN | IFM_TOK_STP16, IF_Mbps(16) }, \
Index: sys/net/if_media.c
===================================================================
--- sys/net/if_media.c
+++ sys/net/if_media.c
@@ -354,8 +354,7 @@
int i;
for (i = 0; ifmedia_baudrate_descriptions[i].ifmb_word != 0; i++) {
- if ((mword & (IFM_NMASK|IFM_TMASK)) ==
- ifmedia_baudrate_descriptions[i].ifmb_word)
+ if (IFM_TYPE_MATCH(mword, ifmedia_baudrate_descriptions[i].ifmb_word))
return (ifmedia_baudrate_descriptions[i].ifmb_baudrate);
}

File Metadata

Mime Type
text/plain
Expires
Fri, Aug 21, 1:39 AM (33 m, 5 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
37017196
Default Alt Text
D2056.id4197.diff (5 KB)

Event Timeline