linux/drivers/net
Jacob Keller 5b64347930 i40e: add helper conversion function for link_speed
We introduced the virtchnl interface in order to have an interface for
talking to a virtual device driver which was host-driver agnostic. This
interface has its own definitions, including one for link speed.

The host driver has to talk to the virtchnl interface using these new
definitions in order to remain compatible. Today, the i40e link_speed
enumerations are value-exact matches for the virtchnl interface, so it
was originally decided to simply use a typecast.

However, this is unsafe, and makes it easier for future drivers to
continue this unsafe practice. There is nothing guaranteeing these
values are exact, and the type-cast would hide any compiler warning
which indicates the problem.

Rather than rely on this type cast, introduce a helper function which
can convert the AdminQ link speed definition into a virtchnl
definition. This can then be used by host driver implementations in
order to safely convert to the interface recognized by the virtual
functions.

If the link speed is not able to be represented by the virtchnl
definitions we'll report UNKNOWN which is the safest result.

This will ensure that should the driver specific link_speeds actual bit
definitions change, we do not report them incorrectly according to the
VF.

Additionally, this provides a better pattern for future drivers to copy,
as it is more likely a future device may not use the exact same bit-wise
definition as the current virtchnl interface.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2018-01-10 12:41:21 -08:00
..
appletalk
arcnet
bonding net: bonding: Replace mac address parsing 2017-12-20 12:47:29 -05:00
caif
can Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-09 10:37:00 -05:00
cris
dsa Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-09 10:37:00 -05:00
ethernet i40e: add helper conversion function for link_speed 2018-01-10 12:41:21 -08:00
fddi
fjes
hamradio
hippi hippi: Fix a Fix a possible sleep-in-atomic bug in rr_close 2017-12-13 14:52:57 -05:00
hyperv hv_netvsc: empty current transmit aggregation if flow blocked 2017-12-13 15:57:39 -05:00
ieee802154 net: ieee802154: adf7242: Rework IRQ and packet handling 2017-11-29 16:49:41 +01:00
ipvlan ipvlan: remove excessive packet scrubbing 2017-12-15 11:36:53 -05:00
netdevsim bpf: offload: allow netdev to disappear while verifier is running 2017-12-31 16:12:23 +01:00
phy net: phy: marvell: mv88e6390 temperature sensor reading 2018-01-10 15:35:05 -05:00
plip
ppp
slip slip: sl_alloc(): remove unused parameter "dev_t line" 2017-12-08 14:41:02 -05:00
team
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-09 10:37:00 -05:00
vmxnet3 vmxnet3: increase default rx ring sizes 2017-11-30 14:06:58 -05:00
wan Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-29 13:10:25 -08:00
wimax
wireless We have things all over the place, no point listing them. 2018-01-04 14:33:29 -05:00
xen-netback xen-netback: Fix logging message with spurious period after newline 2017-12-06 15:10:32 -05:00
dummy.c net: dummy: remove fake SR-IOV functionality 2017-12-03 00:27:58 +01:00
eql.c
geneve.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-09 10:37:00 -05:00
gtp.c
ifb.c
Kconfig netdevsim: add software driver for testing offloads 2017-12-03 00:27:57 +01:00
LICENSE.SRC
loopback.c
macsec.c macsec: Add support for GCM-AES-256 cipher suite 2018-01-09 11:34:18 -05:00
macvlan.c macvlan: Fix one possible double free 2018-01-02 13:30:14 -05:00
macvtap.c
Makefile netdevsim: add software driver for testing offloads 2017-12-03 00:27:57 +01:00
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c tun/tap: use ptr_ring instead of skb_array 2018-01-09 10:56:10 -05:00
thunderbolt.c
tun.c tuntap: XDP transmission 2018-01-09 10:57:08 -05:00
veth.c veth: set peer GSO values 2017-12-08 14:22:59 -05:00
virtio_net.c virtio_net: propagate linkspeed/duplex settings from the hypervisor 2018-01-09 11:37:56 -05:00
vrf.c
vsockmon.c
vxlan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-12-22 11:16:31 -05:00
xen-netfront.c xen-netfront: enable device after manual module load 2018-01-08 14:17:03 -05:00