svn commit: r241616 - in head/sys: dev/ixgbe net
Maksim Yevmenkin
emax at FreeBSD.org
Tue Oct 16 20:18:16 UTC 2012
Author: emax
Date: Tue Oct 16 20:18:15 2012
New Revision: 241616
URL: http://svn.freebsd.org/changeset/base/241616
Log:
introduce concept of ifi_baudrate power factor. the idea is to work
around the problem where high speed interfaces (such as ixgbe(4))
are not able to report real ifi_baudrate. bascially, take a spare
byte from struct if_data and use it to store ifi_baudrate power
factor. in other words,
real ifi_baudrate = ifi_baudrate * 10 ^ ifi_baudrate power factor
this should be backwards compatible with old binaries. use ixgbe(4)
as an example on how drivers would set ifi_baudrate power factor
Discussed with: kib, scottl, glebius
MFC after: 1 week
Modified:
head/sys/dev/ixgbe/ixgbe.c
head/sys/net/if.h
head/sys/net/if_var.h
Modified: head/sys/dev/ixgbe/ixgbe.c
==============================================================================
--- head/sys/dev/ixgbe/ixgbe.c Tue Oct 16 19:59:13 2012 (r241615)
+++ head/sys/dev/ixgbe/ixgbe.c Tue Oct 16 20:18:15 2012 (r241616)
@@ -2597,7 +2597,8 @@ ixgbe_setup_interface(device_t dev, stru
return (-1);
}
if_initname(ifp, device_get_name(dev), device_get_unit(dev));
- ifp->if_baudrate = 1000000000;
+ ifp->if_baudrate = IF_Gbps(1);
+ ifp->if_baudrate_pf = 1; /* 1Gbps * 10^1 = 10Gbps */
ifp->if_init = ixgbe_init;
ifp->if_softc = adapter;
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
Modified: head/sys/net/if.h
==============================================================================
--- head/sys/net/if.h Tue Oct 16 19:59:13 2012 (r241615)
+++ head/sys/net/if.h Tue Oct 16 20:18:15 2012 (r241616)
@@ -86,7 +86,7 @@ struct if_data {
u_char ifi_hdrlen; /* media header length */
u_char ifi_link_state; /* current link state */
u_char ifi_vhid; /* carp vhid */
- u_char ifi_spare_char2; /* spare byte */
+ u_char ifi_baudrate_pf; /* baudrate power factor */
u_char ifi_datalen; /* length of this data struct */
u_long ifi_mtu; /* maximum transmission unit */
u_long ifi_metric; /* routing metric (external only) */
Modified: head/sys/net/if_var.h
==============================================================================
--- head/sys/net/if_var.h Tue Oct 16 19:59:13 2012 (r241615)
+++ head/sys/net/if_var.h Tue Oct 16 20:18:15 2012 (r241616)
@@ -228,6 +228,7 @@ typedef void if_init_f_t(void *);
#define if_metric if_data.ifi_metric
#define if_link_state if_data.ifi_link_state
#define if_baudrate if_data.ifi_baudrate
+#define if_baudrate_pf if_data.ifi_baudrate_pf
#define if_hwassist if_data.ifi_hwassist
#define if_ipackets if_data.ifi_ipackets
#define if_ierrors if_data.ifi_ierrors
More information about the svn-src-head
mailing list