Skip to content

Commit

Permalink
be2net: Patch to determine if function is VF while running in guest OS.
Browse files Browse the repository at this point in the history
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 <sarveshwarb@serverengines.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Sarveshwar Bandi authored and David S. Miller committed Jul 11, 2010
1 parent 1ebed71 commit 344dbf1
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
12 changes: 11 additions & 1 deletion drivers/net/benet/be.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -393,6 +394,15 @@ static inline u8 is_udp_pkt(struct sk_buff *skb)
return 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);
Expand Down
1 change: 1 addition & 0 deletions drivers/net/benet/be_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1631,6 +1631,7 @@ static void be_sriov_enable(struct be_adapter *adapter)
{
#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;
Expand Down

0 comments on commit 344dbf1

Please sign in to comment.