Lines Matching refs:vf

169 static int igb_ndo_set_vf_mac(struct net_device *netdev, int vf, u8 *mac);
171 int vf, u16 vlan, u8 qos);
173 static int igb_ndo_set_vf_spoofchk(struct net_device *netdev, int vf,
175 static int igb_ndo_get_vf_config(struct net_device *netdev, int vf,
180 static int igb_vf_configure(struct igb_adapter *adapter, int vf);
5672 static int igb_vf_configure(struct igb_adapter *adapter, int vf) in igb_vf_configure() argument
5677 igb_set_vf_mac(adapter, vf, mac_addr); in igb_vf_configure()
5680 adapter->vf_data[vf].spoofchk_enabled = true; in igb_vf_configure()
5700 static int igb_set_vf_promisc(struct igb_adapter *adapter, u32 *msgbuf, u32 vf) in igb_set_vf_promisc() argument
5703 u32 vmolr = rd32(E1000_VMOLR(vf)); in igb_set_vf_promisc()
5704 struct vf_data_storage *vf_data = &adapter->vf_data[vf]; in igb_set_vf_promisc()
5730 wr32(E1000_VMOLR(vf), vmolr); in igb_set_vf_promisc()
5740 u32 *msgbuf, u32 vf) in igb_set_vf_multicasts() argument
5744 struct vf_data_storage *vf_data = &adapter->vf_data[vf]; in igb_set_vf_multicasts()
5792 static void igb_clear_vf_vfta(struct igb_adapter *adapter, u32 vf) in igb_clear_vf_vfta() argument
5798 pool_mask = 1 << (E1000_VLVF_POOLSEL_SHIFT + vf); in igb_clear_vf_vfta()
5818 adapter->vf_data[vf].vlans_enabled = 0; in igb_clear_vf_vfta()
5821 static s32 igb_vlvf_set(struct igb_adapter *adapter, u32 vid, bool add, u32 vf) in igb_vlvf_set() argument
5856 reg |= 1 << (E1000_VLVF_POOLSEL_SHIFT + vf); in igb_vlvf_set()
5869 if (vf >= adapter->vfs_allocated_count) in igb_vlvf_set()
5872 if (!adapter->vf_data[vf].vlans_enabled) { in igb_vlvf_set()
5875 reg = rd32(E1000_VMOLR(vf)); in igb_vlvf_set()
5880 wr32(E1000_VMOLR(vf), reg); in igb_vlvf_set()
5883 adapter->vf_data[vf].vlans_enabled++; in igb_vlvf_set()
5888 reg &= ~(1 << (E1000_VLVF_POOLSEL_SHIFT + vf)); in igb_vlvf_set()
5897 if (vf >= adapter->vfs_allocated_count) in igb_vlvf_set()
5900 adapter->vf_data[vf].vlans_enabled--; in igb_vlvf_set()
5901 if (!adapter->vf_data[vf].vlans_enabled) { in igb_vlvf_set()
5904 reg = rd32(E1000_VMOLR(vf)); in igb_vlvf_set()
5909 wr32(E1000_VMOLR(vf), reg); in igb_vlvf_set()
5916 static void igb_set_vmvir(struct igb_adapter *adapter, u32 vid, u32 vf) in igb_set_vmvir() argument
5921 wr32(E1000_VMVIR(vf), (vid | E1000_VMVIR_VLANA_DEFAULT)); in igb_set_vmvir()
5923 wr32(E1000_VMVIR(vf), 0); in igb_set_vmvir()
5927 int vf, u16 vlan, u8 qos) in igb_ndo_set_vf_vlan() argument
5932 if ((vf >= adapter->vfs_allocated_count) || (vlan > 4095) || (qos > 7)) in igb_ndo_set_vf_vlan()
5935 err = igb_vlvf_set(adapter, vlan, !!vlan, vf); in igb_ndo_set_vf_vlan()
5938 igb_set_vmvir(adapter, vlan | (qos << VLAN_PRIO_SHIFT), vf); in igb_ndo_set_vf_vlan()
5939 igb_set_vmolr(adapter, vf, !vlan); in igb_ndo_set_vf_vlan()
5940 adapter->vf_data[vf].pf_vlan = vlan; in igb_ndo_set_vf_vlan()
5941 adapter->vf_data[vf].pf_qos = qos; in igb_ndo_set_vf_vlan()
5943 "Setting VLAN %d, QOS 0x%x on VF %d\n", vlan, qos, vf); in igb_ndo_set_vf_vlan()
5951 igb_vlvf_set(adapter, adapter->vf_data[vf].pf_vlan, in igb_ndo_set_vf_vlan()
5952 false, vf); in igb_ndo_set_vf_vlan()
5953 igb_set_vmvir(adapter, vlan, vf); in igb_ndo_set_vf_vlan()
5954 igb_set_vmolr(adapter, vf, true); in igb_ndo_set_vf_vlan()
5955 adapter->vf_data[vf].pf_vlan = 0; in igb_ndo_set_vf_vlan()
5956 adapter->vf_data[vf].pf_qos = 0; in igb_ndo_set_vf_vlan()
5982 static int igb_set_vf_vlan(struct igb_adapter *adapter, u32 *msgbuf, u32 vf) in igb_set_vf_vlan() argument
5998 err = igb_vlvf_set(adapter, vid, add, vf); in igb_set_vf_vlan()
6033 static inline void igb_vf_reset(struct igb_adapter *adapter, u32 vf) in igb_vf_reset() argument
6036 adapter->vf_data[vf].flags &= IGB_VF_FLAG_PF_SET_MAC; in igb_vf_reset()
6037 adapter->vf_data[vf].last_nack = jiffies; in igb_vf_reset()
6040 igb_set_vmolr(adapter, vf, true); in igb_vf_reset()
6043 igb_clear_vf_vfta(adapter, vf); in igb_vf_reset()
6044 if (adapter->vf_data[vf].pf_vlan) in igb_vf_reset()
6045 igb_ndo_set_vf_vlan(adapter->netdev, vf, in igb_vf_reset()
6046 adapter->vf_data[vf].pf_vlan, in igb_vf_reset()
6047 adapter->vf_data[vf].pf_qos); in igb_vf_reset()
6049 igb_clear_vf_vfta(adapter, vf); in igb_vf_reset()
6052 adapter->vf_data[vf].num_vf_mc_hashes = 0; in igb_vf_reset()
6058 static void igb_vf_reset_event(struct igb_adapter *adapter, u32 vf) in igb_vf_reset_event() argument
6060 unsigned char *vf_mac = adapter->vf_data[vf].vf_mac_addresses; in igb_vf_reset_event()
6063 if (!(adapter->vf_data[vf].flags & IGB_VF_FLAG_PF_SET_MAC)) in igb_vf_reset_event()
6067 igb_vf_reset(adapter, vf); in igb_vf_reset_event()
6070 static void igb_vf_reset_msg(struct igb_adapter *adapter, u32 vf) in igb_vf_reset_msg() argument
6073 unsigned char *vf_mac = adapter->vf_data[vf].vf_mac_addresses; in igb_vf_reset_msg()
6074 int rar_entry = hw->mac.rar_entry_count - (vf + 1); in igb_vf_reset_msg()
6079 igb_vf_reset(adapter, vf); in igb_vf_reset_msg()
6082 igb_rar_set_qsel(adapter, vf_mac, rar_entry, vf); in igb_vf_reset_msg()
6086 wr32(E1000_VFTE, reg | (1 << vf)); in igb_vf_reset_msg()
6088 wr32(E1000_VFRE, reg | (1 << vf)); in igb_vf_reset_msg()
6090 adapter->vf_data[vf].flags |= IGB_VF_FLAG_CTS; in igb_vf_reset_msg()
6099 igb_write_mbx(hw, msgbuf, 3, vf); in igb_vf_reset_msg()
6102 static int igb_set_vf_mac_addr(struct igb_adapter *adapter, u32 *msg, int vf) in igb_set_vf_mac_addr() argument
6111 err = igb_set_vf_mac(adapter, vf, addr); in igb_set_vf_mac_addr()
6116 static void igb_rcv_ack_from_vf(struct igb_adapter *adapter, u32 vf) in igb_rcv_ack_from_vf() argument
6119 struct vf_data_storage *vf_data = &adapter->vf_data[vf]; in igb_rcv_ack_from_vf()
6125 igb_write_mbx(hw, &msg, 1, vf); in igb_rcv_ack_from_vf()
6130 static void igb_rcv_msg_from_vf(struct igb_adapter *adapter, u32 vf) in igb_rcv_msg_from_vf() argument
6135 struct vf_data_storage *vf_data = &adapter->vf_data[vf]; in igb_rcv_msg_from_vf()
6138 retval = igb_read_mbx(hw, msgbuf, E1000_VFMAILBOX_SIZE, vf); in igb_rcv_msg_from_vf()
6157 igb_vf_reset_msg(adapter, vf); in igb_rcv_msg_from_vf()
6172 retval = igb_set_vf_mac_addr(adapter, msgbuf, vf); in igb_rcv_msg_from_vf()
6176 vf); in igb_rcv_msg_from_vf()
6179 retval = igb_set_vf_promisc(adapter, msgbuf, vf); in igb_rcv_msg_from_vf()
6182 retval = igb_set_vf_multicasts(adapter, msgbuf, vf); in igb_rcv_msg_from_vf()
6185 retval = igb_set_vf_rlpml(adapter, msgbuf[1], vf); in igb_rcv_msg_from_vf()
6192 vf); in igb_rcv_msg_from_vf()
6194 retval = igb_set_vf_vlan(adapter, msgbuf, vf); in igb_rcv_msg_from_vf()
6210 igb_write_mbx(hw, msgbuf, 1, vf); in igb_rcv_msg_from_vf()
6216 u32 vf; in igb_msg_task() local
6218 for (vf = 0; vf < adapter->vfs_allocated_count; vf++) { in igb_msg_task()
6220 if (!igb_check_for_rst(hw, vf)) in igb_msg_task()
6221 igb_vf_reset_event(adapter, vf); in igb_msg_task()
6224 if (!igb_check_for_msg(hw, vf)) in igb_msg_task()
6225 igb_rcv_msg_from_vf(adapter, vf); in igb_msg_task()
6228 if (!igb_check_for_ack(hw, vf)) in igb_msg_task()
6229 igb_rcv_ack_from_vf(adapter, vf); in igb_msg_task()
7769 int vf, unsigned char *mac_addr) in igb_set_vf_mac() argument
7775 int rar_entry = hw->mac.rar_entry_count - (vf + 1); in igb_set_vf_mac()
7777 memcpy(adapter->vf_data[vf].vf_mac_addresses, mac_addr, ETH_ALEN); in igb_set_vf_mac()
7779 igb_rar_set_qsel(adapter, mac_addr, rar_entry, vf); in igb_set_vf_mac()
7784 static int igb_ndo_set_vf_mac(struct net_device *netdev, int vf, u8 *mac) in igb_ndo_set_vf_mac() argument
7787 if (!is_valid_ether_addr(mac) || (vf >= adapter->vfs_allocated_count)) in igb_ndo_set_vf_mac()
7789 adapter->vf_data[vf].flags |= IGB_VF_FLAG_PF_SET_MAC; in igb_ndo_set_vf_mac()
7790 dev_info(&adapter->pdev->dev, "setting MAC %pM on VF %d\n", mac, vf); in igb_ndo_set_vf_mac()
7799 return igb_set_vf_mac(adapter, vf, mac); in igb_ndo_set_vf_mac()
7814 static void igb_set_vf_rate_limit(struct e1000_hw *hw, int vf, int tx_rate, in igb_set_vf_rate_limit() argument
7835 wr32(E1000_RTTDQSEL, vf); /* vf X uses queue X */ in igb_set_vf_rate_limit()
7871 static int igb_ndo_set_vf_bw(struct net_device *netdev, int vf, in igb_ndo_set_vf_bw() argument
7885 if ((vf >= adapter->vfs_allocated_count) || in igb_ndo_set_vf_bw()
7892 adapter->vf_data[vf].tx_rate = (u16)max_tx_rate; in igb_ndo_set_vf_bw()
7893 igb_set_vf_rate_limit(hw, vf, max_tx_rate, actual_link_speed); in igb_ndo_set_vf_bw()
7898 static int igb_ndo_set_vf_spoofchk(struct net_device *netdev, int vf, in igb_ndo_set_vf_spoofchk() argument
7908 if (vf >= adapter->vfs_allocated_count) in igb_ndo_set_vf_spoofchk()
7914 reg_val |= ((1 << vf) | in igb_ndo_set_vf_spoofchk()
7915 (1 << (vf + E1000_DTXSWC_VLAN_SPOOF_SHIFT))); in igb_ndo_set_vf_spoofchk()
7917 reg_val &= ~((1 << vf) | in igb_ndo_set_vf_spoofchk()
7918 (1 << (vf + E1000_DTXSWC_VLAN_SPOOF_SHIFT))); in igb_ndo_set_vf_spoofchk()
7921 adapter->vf_data[vf].spoofchk_enabled = setting; in igb_ndo_set_vf_spoofchk()
7926 int vf, struct ifla_vf_info *ivi) in igb_ndo_get_vf_config() argument
7929 if (vf >= adapter->vfs_allocated_count) in igb_ndo_get_vf_config()
7931 ivi->vf = vf; in igb_ndo_get_vf_config()
7932 memcpy(&ivi->mac, adapter->vf_data[vf].vf_mac_addresses, ETH_ALEN); in igb_ndo_get_vf_config()
7933 ivi->max_tx_rate = adapter->vf_data[vf].tx_rate; in igb_ndo_get_vf_config()
7935 ivi->vlan = adapter->vf_data[vf].pf_vlan; in igb_ndo_get_vf_config()
7936 ivi->qos = adapter->vf_data[vf].pf_qos; in igb_ndo_get_vf_config()
7937 ivi->spoofchk = adapter->vf_data[vf].spoofchk_enabled; in igb_ndo_get_vf_config()