diff options
author | Yuval Mintz <Yuval.Mintz@qlogic.com> | 2014-06-26 14:31:06 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-07-01 15:52:30 -0700 |
commit | ebf457f931e363cd5f57e661e103386af5a21629 (patch) | |
tree | f687862474b84b2b6679e543a4e780914336e8e3 /drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.h | |
parent | 9927b51469494d50956978b533d848748b792cef (diff) | |
download | talos-obmc-linux-ebf457f931e363cd5f57e661e103386af5a21629.tar.gz talos-obmc-linux-ebf457f931e363cd5f57e661e103386af5a21629.zip |
bnx2x: Fail probe of VFs using an old incompatible driver
There are linux distributions where the inbox bnx2x driver contains SRIOV
support but doesn't contain the changes introduced in b9871bcf
"bnx2x: VF RSS support - PF side".
A VF in a VM running that distribution over a new hypervisor will access
incorrect addresses when trying to transmit packets, causing an attention
in the hypervisor and making that VF inactive until FLRed.
The driver in the VM has to ne upgraded [no real way to overcome this], but
due to the HW attention currently arising upgrading the driver in the VM
would not suffice [since the VF needs also be FLRed if the previous driver
was already loaded].
This patch causes the PF to fail the acquire message from a VF running an
old problematic driver; The VF will then gracefully fail it's probe preventing
the HW attention [and allow clean upgrade of driver in VM].
Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com>
Signed-off-by: Ariel Elior <Ariel.Elior@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.h')
-rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.h index ace4d7b0529f..15670c499a20 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.h @@ -118,6 +118,12 @@ struct vfpf_acquire_tlv { /* the following fields are for debug purposes */ u8 vf_id; /* ME register value */ u8 vf_os; /* e.g. Linux, W2K8 */ +#define VF_OS_SUBVERSION_MASK (0x1f) +#define VF_OS_MASK (0xe0) +#define VF_OS_SHIFT (5) +#define VF_OS_UNDEFINED (0 << VF_OS_SHIFT) +#define VF_OS_WINDOWS (1 << VF_OS_SHIFT) + u8 padding; u8 caps; #define VF_CAP_SUPPORT_EXT_BULLETIN (1 << 0) |