be2net: Patch to determine if function is VF while running in guest OS.
Subsystems (2)
PATCH 1/1 be2net: Patch to determine if function is VF while running in guest OS.
When driver is loaded in guest OS, the pci variables is_virtfn and is_physfn are both set to 0. This change uses registers in controller to determine the same.
Signed-off-by Sarveshwar Bandi <[email protected]>
--- drivers/net/benet/be.h | 12 +++++++++++- drivers/net/benet/be_main.c | 1 + 2 files changed, 12 insertions(+), 1 deletions(-)
drivers/net/benet/be.h +11 -1
@@ -291,9 +291,10 @@ struct be_adapter {u32 vf_if_handle[BE_MAX_VF ];u32 vf_pmac_id[BE_MAX_VF ];u8 base_eq_id; +u8 is_virtfn; }; -#define be_physfn (adapter) (!adapter->pdev->is_virtfn) +#define be_physfn (adapter) (!adapter->is_virtfn)/* BladeEngine Generation numbers */ #define BE_GEN2 2
@@ -393,6 +394,15 @@ static inline u8 is_udp_pkt(struct sk_bureturn val; } +static inline void be_check_sriov_fn_type (struct be_adapter *adapter) +{ +u8 data; + +pci_write_config_byte (adapter->pdev,0xFE ,0xAA ); +pci_read_config_byte (adapter->pdev,0xFE , &data); + adapter->is_virtfn = (data !=0xAA ); +} +extern void be_cq_notify (struct be_adapter *adapter,u16 qid,bool arm,u16 num_popped);extern void be_link_status_update (struct be_adapter *adapter,bool link_up);
drivers/net/benet/be_main.c +1 -0
@@ -1631,6 +1631,7 @@ static void be_sriov_enable(struct be_ad {#ifdef CONFIG_PCI_IOV int status; +be_check_sriov_fn_type (adapter);if (be_physfn (adapter) && num_vfs) { status =pci_enable_sriov (adapter->pdev, num_vfs); adapter->sriov_enabled = status ? false : true;
Signature · 1 line
1.4.0
From: Sarveshwar Bandi <[email protected]>
Date: Fri, 9 Jul 2010 17:13:55 +0530
Quoted 4 lines
When driver is loaded in guest OS, the pci variables
is_virtfnandis_physfnare both set to 0. This change uses registers in controller to determine the same.Signed-off-by Sarveshwar Bandi <[email protected]>
Applied.