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);
5664 static int igb_vf_configure(struct igb_adapter *adapter, int vf) in igb_vf_configure() argument
5669 igb_set_vf_mac(adapter, vf, mac_addr); in igb_vf_configure()
5672 adapter->vf_data[vf].spoofchk_enabled = true; in igb_vf_configure()
5692 static int igb_set_vf_promisc(struct igb_adapter *adapter, u32 *msgbuf, u32 vf) in igb_set_vf_promisc() argument
5695 u32 vmolr = rd32(E1000_VMOLR(vf)); in igb_set_vf_promisc()
5696 struct vf_data_storage *vf_data = &adapter->vf_data[vf]; in igb_set_vf_promisc()
5722 wr32(E1000_VMOLR(vf), vmolr); in igb_set_vf_promisc()
5732 u32 *msgbuf, u32 vf) in igb_set_vf_multicasts() argument
5736 struct vf_data_storage *vf_data = &adapter->vf_data[vf]; in igb_set_vf_multicasts()
5784 static void igb_clear_vf_vfta(struct igb_adapter *adapter, u32 vf) in igb_clear_vf_vfta() argument
5790 pool_mask = 1 << (E1000_VLVF_POOLSEL_SHIFT + vf); in igb_clear_vf_vfta()
5810 adapter->vf_data[vf].vlans_enabled = 0; in igb_clear_vf_vfta()
5813 static s32 igb_vlvf_set(struct igb_adapter *adapter, u32 vid, bool add, u32 vf) in igb_vlvf_set() argument
5848 reg |= 1 << (E1000_VLVF_POOLSEL_SHIFT + vf); in igb_vlvf_set()
5861 if (vf >= adapter->vfs_allocated_count) in igb_vlvf_set()
5864 if (!adapter->vf_data[vf].vlans_enabled) { in igb_vlvf_set()
5867 reg = rd32(E1000_VMOLR(vf)); in igb_vlvf_set()
5872 wr32(E1000_VMOLR(vf), reg); in igb_vlvf_set()
5875 adapter->vf_data[vf].vlans_enabled++; in igb_vlvf_set()
5880 reg &= ~(1 << (E1000_VLVF_POOLSEL_SHIFT + vf)); in igb_vlvf_set()
5889 if (vf >= adapter->vfs_allocated_count) in igb_vlvf_set()
5892 adapter->vf_data[vf].vlans_enabled--; in igb_vlvf_set()
5893 if (!adapter->vf_data[vf].vlans_enabled) { in igb_vlvf_set()
5896 reg = rd32(E1000_VMOLR(vf)); in igb_vlvf_set()
5901 wr32(E1000_VMOLR(vf), reg); in igb_vlvf_set()
5908 static void igb_set_vmvir(struct igb_adapter *adapter, u32 vid, u32 vf) in igb_set_vmvir() argument
5913 wr32(E1000_VMVIR(vf), (vid | E1000_VMVIR_VLANA_DEFAULT)); in igb_set_vmvir()
5915 wr32(E1000_VMVIR(vf), 0); in igb_set_vmvir()
5919 int vf, u16 vlan, u8 qos) in igb_ndo_set_vf_vlan() argument
5924 if ((vf >= adapter->vfs_allocated_count) || (vlan > 4095) || (qos > 7)) in igb_ndo_set_vf_vlan()
5927 err = igb_vlvf_set(adapter, vlan, !!vlan, vf); in igb_ndo_set_vf_vlan()
5930 igb_set_vmvir(adapter, vlan | (qos << VLAN_PRIO_SHIFT), vf); in igb_ndo_set_vf_vlan()
5931 igb_set_vmolr(adapter, vf, !vlan); in igb_ndo_set_vf_vlan()
5932 adapter->vf_data[vf].pf_vlan = vlan; in igb_ndo_set_vf_vlan()
5933 adapter->vf_data[vf].pf_qos = qos; in igb_ndo_set_vf_vlan()
5935 "Setting VLAN %d, QOS 0x%x on VF %d\n", vlan, qos, vf); in igb_ndo_set_vf_vlan()
5943 igb_vlvf_set(adapter, adapter->vf_data[vf].pf_vlan, in igb_ndo_set_vf_vlan()
5944 false, vf); in igb_ndo_set_vf_vlan()
5945 igb_set_vmvir(adapter, vlan, vf); in igb_ndo_set_vf_vlan()
5946 igb_set_vmolr(adapter, vf, true); in igb_ndo_set_vf_vlan()
5947 adapter->vf_data[vf].pf_vlan = 0; in igb_ndo_set_vf_vlan()
5948 adapter->vf_data[vf].pf_qos = 0; in igb_ndo_set_vf_vlan()
5974 static int igb_set_vf_vlan(struct igb_adapter *adapter, u32 *msgbuf, u32 vf) in igb_set_vf_vlan() argument
5990 err = igb_vlvf_set(adapter, vid, add, vf); in igb_set_vf_vlan()
6025 static inline void igb_vf_reset(struct igb_adapter *adapter, u32 vf) in igb_vf_reset() argument
6028 adapter->vf_data[vf].flags &= IGB_VF_FLAG_PF_SET_MAC; in igb_vf_reset()
6029 adapter->vf_data[vf].last_nack = jiffies; in igb_vf_reset()
6032 igb_set_vmolr(adapter, vf, true); in igb_vf_reset()
6035 igb_clear_vf_vfta(adapter, vf); in igb_vf_reset()
6036 if (adapter->vf_data[vf].pf_vlan) in igb_vf_reset()
6037 igb_ndo_set_vf_vlan(adapter->netdev, vf, in igb_vf_reset()
6038 adapter->vf_data[vf].pf_vlan, in igb_vf_reset()
6039 adapter->vf_data[vf].pf_qos); in igb_vf_reset()
6041 igb_clear_vf_vfta(adapter, vf); in igb_vf_reset()
6044 adapter->vf_data[vf].num_vf_mc_hashes = 0; in igb_vf_reset()
6050 static void igb_vf_reset_event(struct igb_adapter *adapter, u32 vf) in igb_vf_reset_event() argument
6052 unsigned char *vf_mac = adapter->vf_data[vf].vf_mac_addresses; in igb_vf_reset_event()
6055 if (!(adapter->vf_data[vf].flags & IGB_VF_FLAG_PF_SET_MAC)) in igb_vf_reset_event()
6059 igb_vf_reset(adapter, vf); in igb_vf_reset_event()
6062 static void igb_vf_reset_msg(struct igb_adapter *adapter, u32 vf) in igb_vf_reset_msg() argument
6065 unsigned char *vf_mac = adapter->vf_data[vf].vf_mac_addresses; in igb_vf_reset_msg()
6066 int rar_entry = hw->mac.rar_entry_count - (vf + 1); in igb_vf_reset_msg()
6071 igb_vf_reset(adapter, vf); in igb_vf_reset_msg()
6074 igb_rar_set_qsel(adapter, vf_mac, rar_entry, vf); in igb_vf_reset_msg()
6078 wr32(E1000_VFTE, reg | (1 << vf)); in igb_vf_reset_msg()
6080 wr32(E1000_VFRE, reg | (1 << vf)); in igb_vf_reset_msg()
6082 adapter->vf_data[vf].flags |= IGB_VF_FLAG_CTS; in igb_vf_reset_msg()
6091 igb_write_mbx(hw, msgbuf, 3, vf); in igb_vf_reset_msg()
6094 static int igb_set_vf_mac_addr(struct igb_adapter *adapter, u32 *msg, int vf) in igb_set_vf_mac_addr() argument
6103 err = igb_set_vf_mac(adapter, vf, addr); in igb_set_vf_mac_addr()
6108 static void igb_rcv_ack_from_vf(struct igb_adapter *adapter, u32 vf) in igb_rcv_ack_from_vf() argument
6111 struct vf_data_storage *vf_data = &adapter->vf_data[vf]; in igb_rcv_ack_from_vf()
6117 igb_write_mbx(hw, &msg, 1, vf); in igb_rcv_ack_from_vf()
6122 static void igb_rcv_msg_from_vf(struct igb_adapter *adapter, u32 vf) in igb_rcv_msg_from_vf() argument
6127 struct vf_data_storage *vf_data = &adapter->vf_data[vf]; in igb_rcv_msg_from_vf()
6130 retval = igb_read_mbx(hw, msgbuf, E1000_VFMAILBOX_SIZE, vf); in igb_rcv_msg_from_vf()
6149 igb_vf_reset_msg(adapter, vf); in igb_rcv_msg_from_vf()
6164 retval = igb_set_vf_mac_addr(adapter, msgbuf, vf); in igb_rcv_msg_from_vf()
6168 vf); in igb_rcv_msg_from_vf()
6171 retval = igb_set_vf_promisc(adapter, msgbuf, vf); in igb_rcv_msg_from_vf()
6174 retval = igb_set_vf_multicasts(adapter, msgbuf, vf); in igb_rcv_msg_from_vf()
6177 retval = igb_set_vf_rlpml(adapter, msgbuf[1], vf); in igb_rcv_msg_from_vf()
6184 vf); in igb_rcv_msg_from_vf()
6186 retval = igb_set_vf_vlan(adapter, msgbuf, vf); in igb_rcv_msg_from_vf()
6202 igb_write_mbx(hw, msgbuf, 1, vf); in igb_rcv_msg_from_vf()
6208 u32 vf; in igb_msg_task() local
6210 for (vf = 0; vf < adapter->vfs_allocated_count; vf++) { in igb_msg_task()
6212 if (!igb_check_for_rst(hw, vf)) in igb_msg_task()
6213 igb_vf_reset_event(adapter, vf); in igb_msg_task()
6216 if (!igb_check_for_msg(hw, vf)) in igb_msg_task()
6217 igb_rcv_msg_from_vf(adapter, vf); in igb_msg_task()
6220 if (!igb_check_for_ack(hw, vf)) in igb_msg_task()
6221 igb_rcv_ack_from_vf(adapter, vf); in igb_msg_task()
7724 int vf, unsigned char *mac_addr) in igb_set_vf_mac() argument
7730 int rar_entry = hw->mac.rar_entry_count - (vf + 1); in igb_set_vf_mac()
7732 memcpy(adapter->vf_data[vf].vf_mac_addresses, mac_addr, ETH_ALEN); in igb_set_vf_mac()
7734 igb_rar_set_qsel(adapter, mac_addr, rar_entry, vf); in igb_set_vf_mac()
7739 static int igb_ndo_set_vf_mac(struct net_device *netdev, int vf, u8 *mac) in igb_ndo_set_vf_mac() argument
7742 if (!is_valid_ether_addr(mac) || (vf >= adapter->vfs_allocated_count)) in igb_ndo_set_vf_mac()
7744 adapter->vf_data[vf].flags |= IGB_VF_FLAG_PF_SET_MAC; in igb_ndo_set_vf_mac()
7745 dev_info(&adapter->pdev->dev, "setting MAC %pM on VF %d\n", mac, vf); in igb_ndo_set_vf_mac()
7754 return igb_set_vf_mac(adapter, vf, mac); in igb_ndo_set_vf_mac()
7769 static void igb_set_vf_rate_limit(struct e1000_hw *hw, int vf, int tx_rate, in igb_set_vf_rate_limit() argument
7790 wr32(E1000_RTTDQSEL, vf); /* vf X uses queue X */ in igb_set_vf_rate_limit()
7826 static int igb_ndo_set_vf_bw(struct net_device *netdev, int vf, in igb_ndo_set_vf_bw() argument
7840 if ((vf >= adapter->vfs_allocated_count) || in igb_ndo_set_vf_bw()
7847 adapter->vf_data[vf].tx_rate = (u16)max_tx_rate; in igb_ndo_set_vf_bw()
7848 igb_set_vf_rate_limit(hw, vf, max_tx_rate, actual_link_speed); in igb_ndo_set_vf_bw()
7853 static int igb_ndo_set_vf_spoofchk(struct net_device *netdev, int vf, in igb_ndo_set_vf_spoofchk() argument
7863 if (vf >= adapter->vfs_allocated_count) in igb_ndo_set_vf_spoofchk()
7869 reg_val |= ((1 << vf) | in igb_ndo_set_vf_spoofchk()
7870 (1 << (vf + E1000_DTXSWC_VLAN_SPOOF_SHIFT))); in igb_ndo_set_vf_spoofchk()
7872 reg_val &= ~((1 << vf) | in igb_ndo_set_vf_spoofchk()
7873 (1 << (vf + E1000_DTXSWC_VLAN_SPOOF_SHIFT))); in igb_ndo_set_vf_spoofchk()
7876 adapter->vf_data[vf].spoofchk_enabled = setting; in igb_ndo_set_vf_spoofchk()
7881 int vf, struct ifla_vf_info *ivi) in igb_ndo_get_vf_config() argument
7884 if (vf >= adapter->vfs_allocated_count) in igb_ndo_get_vf_config()
7886 ivi->vf = vf; in igb_ndo_get_vf_config()
7887 memcpy(&ivi->mac, adapter->vf_data[vf].vf_mac_addresses, ETH_ALEN); in igb_ndo_get_vf_config()
7888 ivi->max_tx_rate = adapter->vf_data[vf].tx_rate; in igb_ndo_get_vf_config()
7890 ivi->vlan = adapter->vf_data[vf].pf_vlan; in igb_ndo_get_vf_config()
7891 ivi->qos = adapter->vf_data[vf].pf_qos; in igb_ndo_get_vf_config()
7892 ivi->spoofchk = adapter->vf_data[vf].spoofchk_enabled; in igb_ndo_get_vf_config()