linux/drivers/net/ethernet/sfc
Edward Cree 267d9d7387 sfc: Cope with permissions enforcement added to firmware for SR-IOV
* Accept EPERM in some simple cases, the following cases are handled:
1) efx_mcdi_read_assertion()
Unprivileged PCI functions aren't allowed to GET_ASSERTS.
We return success as it's up to the primary PF to deal with asserts.
2) efx_mcdi_mon_probe() in efx_ef10_probe()
Unprivileged PCI functions aren't allowed to read sensor info, and
worrying about sensor data is the primary PF's job.
3) phy_op->reconfigure() in efx_init_port() and efx_reset_up()
Unprivileged functions aren't allowed to MC_CMD_SET_LINK, they just have
to accept the settings (including flow-control, which is what
efx_init_port() is worried about) they've been given.
4) Fallback to GET_WORKAROUNDS in efx_ef10_probe()
Unprivileged PCI functions aren't allowed to set workarounds. So if
efx_mcdi_set_workaround() fails EPERM, use efx_mcdi_get_workarounds()
to find out if workaround_35388 is enabled.
5) If DRV_ATTACH gets EPERM, try without specifying fw-variant
Unprivileged PCI functions have to use a FIRMWARE_ID of 0xffffffff
(MC_CMD_FW_DONT_CARE).
6) Don't try to exit_assertion unless one had fired
Previously we called efx_mcdi_exit_assertion even if
efx_mcdi_read_assertion had received MC_CMD_GET_ASSERTS_FLAGS_NO_FAILS.
This is unnecessary, and the resulting MC_CMD_REBOOT, even if the
AFTER_ASSERTION flag made it a no-op, would fail EPERM for unprivileged
PCI functions.
So make efx_mcdi_read_assertion return whether an assert happened, and only
call efx_mcdi_exit_assertion if it has.

Signed-off-by: Shradha Shah <sshah@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-05-09 16:16:48 -04:00
..
bitfield.h
ef10_regs.h sfc: Remove unused definitions of EF10 user-mode DMA descriptors 2014-02-12 17:53:34 -05:00
ef10_sriov.c sfc: manually allocate and free vadaptors 2015-05-09 16:16:48 -04:00
ef10_sriov.h sfc: manually allocate and free vadaptors 2015-05-09 16:16:48 -04:00
ef10.c sfc: Cope with permissions enforcement added to firmware for SR-IOV 2015-05-09 16:16:48 -04:00
efx.c sfc: Cope with permissions enforcement added to firmware for SR-IOV 2015-05-09 16:16:48 -04:00
efx.h sfc: Prepare to bind the sfc driver to the VF. 2015-05-09 16:16:47 -04:00
enum.h sfc:On MCDI timeout, issue an FLR (and mark MCDI to fail-fast) 2014-04-16 14:33:57 -04:00
ethtool.c ethtool: Support for configurable RSS hash function 2014-12-08 21:07:10 -05:00
falcon_boards.c
falcon.c sfc: Prepare to bind the sfc driver to the VF. 2015-05-09 16:16:47 -04:00
farch_regs.h
farch.c sfc: Own header for nic-specific sriov functions, single instance of netdev_ops and sriov removed from Falcon code 2015-05-09 16:16:46 -04:00
filter.h sfc: Use ether_addr_copy and eth_broadcast_addr 2014-03-10 13:53:37 -04:00
io.h sfc: PIO:Restrict to 64bit arch and use 64-bit writes. 2014-06-11 15:36:21 -07:00
Kconfig
Makefile sfc: Enable VF's via a write to the sysfs file sriov_numvfs 2015-05-09 16:16:46 -04:00
mcdi_mon.c sfc: Add new sensor names 2013-12-12 22:06:54 +00:00
mcdi_pcol.h sfc: Cope with permissions enforcement added to firmware for SR-IOV 2015-05-09 16:16:48 -04:00
mcdi_port.c sfc: Add 40G link capability decoding 2014-07-14 19:11:48 -07:00
mcdi.c sfc: Cope with permissions enforcement added to firmware for SR-IOV 2015-05-09 16:16:48 -04:00
mcdi.h sfc: Cope with permissions enforcement added to firmware for SR-IOV 2015-05-09 16:16:48 -04:00
mdio_10g.c
mdio_10g.h sfc: Remove extern from function prototypes 2013-09-24 12:52:53 -07:00
mtd.c
net_driver.h sfc: Prepare to bind the sfc driver to the VF. 2015-05-09 16:16:47 -04:00
nic.c sfc: fix calling of free_irq with already free vector 2014-05-12 14:56:45 -04:00
nic.h sfc: create vports for VFs and assign random MAC addresses 2015-05-09 16:16:48 -04:00
phy.h sfc: Remove extern from function prototypes 2013-09-24 12:52:53 -07:00
ptp.c ptp: sfc: convert to the 64 bit get/set time methods. 2015-03-31 12:01:18 -04:00
qt202x_phy.c
rx.c sfc: Add support for busy polling 2014-07-22 19:55:20 -07:00
selftest.c sfc: Fix memcpy() with const destination compiler warning. 2015-04-17 15:15:40 -04:00
selftest.h sfc: Add MC BISTs to ethtool offline self test on EF10 2013-12-12 22:05:48 +00:00
siena_sriov.c sfc: Enable VF's via a write to the sysfs file sriov_numvfs 2015-05-09 16:16:46 -04:00
siena_sriov.h sfc: Enable VF's via a write to the sysfs file sriov_numvfs 2015-05-09 16:16:46 -04:00
siena.c sfc: Prepare to bind the sfc driver to the VF. 2015-05-09 16:16:47 -04:00
sriov.c sfc: Own header for nic-specific sriov functions, single instance of netdev_ops and sriov removed from Falcon code 2015-05-09 16:16:46 -04:00
sriov.h sfc: Own header for nic-specific sriov functions, single instance of netdev_ops and sriov removed from Falcon code 2015-05-09 16:16:46 -04:00
tenxpress.c
tx.c sfc: remove incorrect EFX_BUG_ON_PARANOID check 2014-10-22 12:51:16 -04:00
txc43128_phy.c
vfdi.h ethernet: codespell comment spelling fixes 2015-03-08 22:54:22 -04:00
workarounds.h