|
@@ -127,14 +127,48 @@ static void igb_restore_vlan(struct igb_adapter *);
|
|
static void igb_ping_all_vfs(struct igb_adapter *);
|
|
static void igb_ping_all_vfs(struct igb_adapter *);
|
|
static void igb_msg_task(struct igb_adapter *);
|
|
static void igb_msg_task(struct igb_adapter *);
|
|
static int igb_rcv_msg_from_vf(struct igb_adapter *, u32);
|
|
static int igb_rcv_msg_from_vf(struct igb_adapter *, u32);
|
|
-static inline void igb_set_rah_pool(struct e1000_hw *, int , int);
|
|
|
|
static void igb_set_mc_list_pools(struct igb_adapter *, int, u16);
|
|
static void igb_set_mc_list_pools(struct igb_adapter *, int, u16);
|
|
static void igb_vmm_control(struct igb_adapter *);
|
|
static void igb_vmm_control(struct igb_adapter *);
|
|
-static inline void igb_set_vmolr(struct e1000_hw *, int);
|
|
|
|
-static inline int igb_set_vf_rlpml(struct igb_adapter *, int, int);
|
|
|
|
static int igb_set_vf_mac(struct igb_adapter *adapter, int, unsigned char *);
|
|
static int igb_set_vf_mac(struct igb_adapter *adapter, int, unsigned char *);
|
|
static void igb_restore_vf_multicasts(struct igb_adapter *adapter);
|
|
static void igb_restore_vf_multicasts(struct igb_adapter *adapter);
|
|
|
|
|
|
|
|
+static inline void igb_set_vmolr(struct e1000_hw *hw, int vfn)
|
|
|
|
+{
|
|
|
|
+ u32 reg_data;
|
|
|
|
+
|
|
|
|
+ reg_data = rd32(E1000_VMOLR(vfn));
|
|
|
|
+ reg_data |= E1000_VMOLR_BAM | /* Accept broadcast */
|
|
|
|
+ E1000_VMOLR_ROPE | /* Accept packets matched in UTA */
|
|
|
|
+ E1000_VMOLR_ROMPE | /* Accept packets matched in MTA */
|
|
|
|
+ E1000_VMOLR_AUPE | /* Accept untagged packets */
|
|
|
|
+ E1000_VMOLR_STRVLAN; /* Strip vlan tags */
|
|
|
|
+ wr32(E1000_VMOLR(vfn), reg_data);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static inline int igb_set_vf_rlpml(struct igb_adapter *adapter, int size,
|
|
|
|
+ int vfn)
|
|
|
|
+{
|
|
|
|
+ struct e1000_hw *hw = &adapter->hw;
|
|
|
|
+ u32 vmolr;
|
|
|
|
+
|
|
|
|
+ vmolr = rd32(E1000_VMOLR(vfn));
|
|
|
|
+ vmolr &= ~E1000_VMOLR_RLPML_MASK;
|
|
|
|
+ vmolr |= size | E1000_VMOLR_LPE;
|
|
|
|
+ wr32(E1000_VMOLR(vfn), vmolr);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static inline void igb_set_rah_pool(struct e1000_hw *hw, int pool, int entry)
|
|
|
|
+{
|
|
|
|
+ u32 reg_data;
|
|
|
|
+
|
|
|
|
+ reg_data = rd32(E1000_RAH(entry));
|
|
|
|
+ reg_data &= ~E1000_RAH_POOL_MASK;
|
|
|
|
+ reg_data |= E1000_RAH_POOL_1 << pool;;
|
|
|
|
+ wr32(E1000_RAH(entry), reg_data);
|
|
|
|
+}
|
|
|
|
+
|
|
#ifdef CONFIG_PM
|
|
#ifdef CONFIG_PM
|
|
static int igb_suspend(struct pci_dev *, pm_message_t);
|
|
static int igb_suspend(struct pci_dev *, pm_message_t);
|
|
static int igb_resume(struct pci_dev *);
|
|
static int igb_resume(struct pci_dev *);
|
|
@@ -5418,43 +5452,6 @@ static void igb_io_resume(struct pci_dev *pdev)
|
|
igb_get_hw_control(adapter);
|
|
igb_get_hw_control(adapter);
|
|
}
|
|
}
|
|
|
|
|
|
-static inline void igb_set_vmolr(struct e1000_hw *hw, int vfn)
|
|
|
|
-{
|
|
|
|
- u32 reg_data;
|
|
|
|
-
|
|
|
|
- reg_data = rd32(E1000_VMOLR(vfn));
|
|
|
|
- reg_data |= E1000_VMOLR_BAM | /* Accept broadcast */
|
|
|
|
- E1000_VMOLR_ROPE | /* Accept packets matched in UTA */
|
|
|
|
- E1000_VMOLR_ROMPE | /* Accept packets matched in MTA */
|
|
|
|
- E1000_VMOLR_AUPE | /* Accept untagged packets */
|
|
|
|
- E1000_VMOLR_STRVLAN; /* Strip vlan tags */
|
|
|
|
- wr32(E1000_VMOLR(vfn), reg_data);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static inline int igb_set_vf_rlpml(struct igb_adapter *adapter, int size,
|
|
|
|
- int vfn)
|
|
|
|
-{
|
|
|
|
- struct e1000_hw *hw = &adapter->hw;
|
|
|
|
- u32 vmolr;
|
|
|
|
-
|
|
|
|
- vmolr = rd32(E1000_VMOLR(vfn));
|
|
|
|
- vmolr &= ~E1000_VMOLR_RLPML_MASK;
|
|
|
|
- vmolr |= size | E1000_VMOLR_LPE;
|
|
|
|
- wr32(E1000_VMOLR(vfn), vmolr);
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static inline void igb_set_rah_pool(struct e1000_hw *hw, int pool, int entry)
|
|
|
|
-{
|
|
|
|
- u32 reg_data;
|
|
|
|
-
|
|
|
|
- reg_data = rd32(E1000_RAH(entry));
|
|
|
|
- reg_data &= ~E1000_RAH_POOL_MASK;
|
|
|
|
- reg_data |= E1000_RAH_POOL_1 << pool;;
|
|
|
|
- wr32(E1000_RAH(entry), reg_data);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static void igb_set_mc_list_pools(struct igb_adapter *adapter,
|
|
static void igb_set_mc_list_pools(struct igb_adapter *adapter,
|
|
int entry_count, u16 total_rar_filters)
|
|
int entry_count, u16 total_rar_filters)
|
|
{
|
|
{
|