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
This commit is contained in:
parent
88bca58512
commit
0fef97fea3
@ -2597,7 +2597,8 @@ ixgbe_setup_interface(device_t dev, struct adapter *adapter)
|
||||
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;
|
||||
|
@ -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) */
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user