Lines Matching refs:vf

160 static int igb_ndo_set_vf_mac(struct net_device *netdev, int vf, u8 *mac);
162 int vf, u16 vlan, u8 qos, __be16 vlan_proto);
164 static int igb_ndo_set_vf_spoofchk(struct net_device *netdev, int vf,
166 static int igb_ndo_set_vf_trust(struct net_device *netdev, int vf,
168 static int igb_ndo_get_vf_config(struct net_device *netdev, int vf,
175 static int igb_vf_configure(struct igb_adapter *adapter, int vf);
3778 mac_list->vf = -1;
3901 * igb_probe_vfs - Initialize vf data storage and add VFs to pci config space
3904 * This function initializes the vf specific data storage and then attempts to
7189 static int igb_vf_configure(struct igb_adapter *adapter, int vf)
7194 igb_set_vf_mac(adapter, vf, mac_addr);
7197 adapter->vf_data[vf].spoofchk_enabled = true;
7200 adapter->vf_data[vf].trusted = false;
7220 static int igb_set_vf_promisc(struct igb_adapter *adapter, u32 *msgbuf, u32 vf)
7223 u32 vmolr = rd32(E1000_VMOLR(vf));
7224 struct vf_data_storage *vf_data = &adapter->vf_data[vf];
7250 wr32(E1000_VMOLR(vf), vmolr);
7260 u32 *msgbuf, u32 vf)
7264 struct vf_data_storage *vf_data = &adapter->vf_data[vf];
7312 static void igb_clear_vf_vfta(struct igb_adapter *adapter, u32 vf)
7319 vlvf_mask = BIT(E1000_VLVF_POOLSEL_SHIFT + vf);
7330 /* remove the vf from the pool */
7410 bool add, u32 vf)
7427 err = igb_vfta_set(hw, vid, vf, add, false);
7443 static void igb_set_vmvir(struct igb_adapter *adapter, u32 vid, u32 vf)
7448 wr32(E1000_VMVIR(vf), (vid | E1000_VMVIR_VLANA_DEFAULT));
7450 wr32(E1000_VMVIR(vf), 0);
7453 static int igb_enable_port_vlan(struct igb_adapter *adapter, int vf,
7458 err = igb_set_vf_vlan(adapter, vlan, true, vf);
7462 igb_set_vmvir(adapter, vlan | (qos << VLAN_PRIO_SHIFT), vf);
7463 igb_set_vmolr(adapter, vf, !vlan);
7466 if (vlan != adapter->vf_data[vf].pf_vlan)
7467 igb_set_vf_vlan(adapter, adapter->vf_data[vf].pf_vlan,
7468 false, vf);
7470 adapter->vf_data[vf].pf_vlan = vlan;
7471 adapter->vf_data[vf].pf_qos = qos;
7472 igb_set_vf_vlan_strip(adapter, vf, true);
7474 "Setting VLAN %d, QOS 0x%x on VF %d\n", vlan, qos, vf);
7485 static int igb_disable_port_vlan(struct igb_adapter *adapter, int vf)
7488 igb_set_vf_vlan(adapter, 0, true, vf);
7490 igb_set_vmvir(adapter, 0, vf);
7491 igb_set_vmolr(adapter, vf, true);
7494 if (adapter->vf_data[vf].pf_vlan)
7495 igb_set_vf_vlan(adapter, adapter->vf_data[vf].pf_vlan,
7496 false, vf);
7498 adapter->vf_data[vf].pf_vlan = 0;
7499 adapter->vf_data[vf].pf_qos = 0;
7500 igb_set_vf_vlan_strip(adapter, vf, false);
7505 static int igb_ndo_set_vf_vlan(struct net_device *netdev, int vf,
7510 if ((vf >= adapter->vfs_allocated_count) || (vlan > 4095) || (qos > 7))
7516 return (vlan || qos) ? igb_enable_port_vlan(adapter, vf, vlan, qos) :
7517 igb_disable_port_vlan(adapter, vf);
7520 static int igb_set_vf_vlan_msg(struct igb_adapter *adapter, u32 *msgbuf, u32 vf)
7526 if (adapter->vf_data[vf].pf_vlan)
7533 ret = igb_set_vf_vlan(adapter, vid, !!add, vf);
7535 igb_set_vf_vlan_strip(adapter, vf, !!vid);
7539 static inline void igb_vf_reset(struct igb_adapter *adapter, u32 vf)
7541 struct vf_data_storage *vf_data = &adapter->vf_data[vf];
7548 igb_clear_vf_vfta(adapter, vf);
7549 igb_set_vf_vlan(adapter, vf_data->pf_vlan, true, vf);
7551 (vf_data->pf_qos << VLAN_PRIO_SHIFT), vf);
7552 igb_set_vmolr(adapter, vf, !vf_data->pf_vlan);
7553 igb_set_vf_vlan_strip(adapter, vf, !!(vf_data->pf_vlan));
7555 /* reset multicast table array for vf */
7556 adapter->vf_data[vf].num_vf_mc_hashes = 0;
7562 static void igb_vf_reset_event(struct igb_adapter *adapter, u32 vf)
7564 unsigned char *vf_mac = adapter->vf_data[vf].vf_mac_addresses;
7567 if (!(adapter->vf_data[vf].flags & IGB_VF_FLAG_PF_SET_MAC))
7571 igb_vf_reset(adapter, vf);
7574 static void igb_vf_reset_msg(struct igb_adapter *adapter, u32 vf)
7577 unsigned char *vf_mac = adapter->vf_data[vf].vf_mac_addresses;
7582 igb_vf_reset(adapter, vf);
7584 /* set vf mac address */
7585 igb_set_vf_mac(adapter, vf, vf_mac);
7587 /* enable transmit and receive for vf */
7589 wr32(E1000_VFTE, reg | BIT(vf));
7591 wr32(E1000_VFRE, reg | BIT(vf));
7593 adapter->vf_data[vf].flags |= IGB_VF_FLAG_CTS;
7595 /* reply to reset with ack and vf mac address */
7602 igb_write_mbx(hw, msgbuf, 3, vf);
7818 static int igb_set_vf_mac_filter(struct igb_adapter *adapter, const int vf,
7822 struct vf_data_storage *vf_data = &adapter->vf_data[vf];
7831 vf);
7837 vf);
7845 if (entry->vf == vf) {
7846 entry->vf = -1;
7848 igb_del_mac_filter(adapter, entry->vf_mac, vf);
7863 entry->vf = vf;
7866 ret = igb_add_mac_filter(adapter, addr, vf);
7875 vf);
7885 static int igb_set_vf_mac_addr(struct igb_adapter *adapter, u32 *msg, int vf)
7888 struct vf_data_storage *vf_data = &adapter->vf_data[vf];
7902 vf);
7909 vf);
7913 ret = igb_set_vf_mac(adapter, vf, addr);
7915 ret = igb_set_vf_mac_filter(adapter, vf, info, addr);
7921 static void igb_rcv_ack_from_vf(struct igb_adapter *adapter, u32 vf)
7924 struct vf_data_storage *vf_data = &adapter->vf_data[vf];
7930 igb_write_mbx(hw, &msg, 1, vf);
7935 static void igb_rcv_msg_from_vf(struct igb_adapter *adapter, u32 vf)
7940 struct vf_data_storage *vf_data = &adapter->vf_data[vf];
7943 retval = igb_read_mbx(hw, msgbuf, E1000_VFMAILBOX_SIZE, vf, false);
7958 /* until the vf completes a reset it should not be
7963 igb_vf_reset_msg(adapter, vf);
7976 retval = igb_set_vf_mac_addr(adapter, msgbuf, vf);
7979 retval = igb_set_vf_promisc(adapter, msgbuf, vf);
7982 retval = igb_set_vf_multicasts(adapter, msgbuf, vf);
7985 retval = igb_set_vf_rlpml(adapter, msgbuf[1], vf);
7992 vf);
7994 retval = igb_set_vf_vlan_msg(adapter, msgbuf, vf);
8011 igb_write_mbx(hw, msgbuf, 1, vf);
8015 igb_unlock_mbx(hw, vf);
8022 u32 vf;
8025 for (vf = 0; vf < adapter->vfs_allocated_count; vf++) {
8027 if (!igb_check_for_rst(hw, vf))
8028 igb_vf_reset_event(adapter, vf);
8031 if (!igb_check_for_msg(hw, vf))
8032 igb_rcv_msg_from_vf(adapter, vf);
8035 if (!igb_check_for_ack(hw, vf))
8036 igb_rcv_ack_from_vf(adapter, vf);
9696 int vf, unsigned char *mac_addr)
9702 int rar_entry = hw->mac.rar_entry_count - (vf + 1);
9703 unsigned char *vf_mac_addr = adapter->vf_data[vf].vf_mac_addresses;
9707 adapter->mac_table[rar_entry].queue = vf;
9714 static int igb_ndo_set_vf_mac(struct net_device *netdev, int vf, u8 *mac)
9718 if (vf >= adapter->vfs_allocated_count)
9728 adapter->vf_data[vf].flags &= ~IGB_VF_FLAG_PF_SET_MAC;
9731 vf);
9733 adapter->vf_data[vf].flags |= IGB_VF_FLAG_PF_SET_MAC;
9735 mac, vf);
9748 return igb_set_vf_mac(adapter, vf, mac);
9763 static void igb_set_vf_rate_limit(struct e1000_hw *hw, int vf, int tx_rate,
9783 wr32(E1000_RTTDQSEL, vf); /* vf X uses queue X */
9819 static int igb_ndo_set_vf_bw(struct net_device *netdev, int vf,
9833 if ((vf >= adapter->vfs_allocated_count) ||
9840 adapter->vf_data[vf].tx_rate = (u16)max_tx_rate;
9841 igb_set_vf_rate_limit(hw, vf, max_tx_rate, actual_link_speed);
9846 static int igb_ndo_set_vf_spoofchk(struct net_device *netdev, int vf,
9856 if (vf >= adapter->vfs_allocated_count)
9862 reg_val |= (BIT(vf) |
9863 BIT(vf + E1000_DTXSWC_VLAN_SPOOF_SHIFT));
9865 reg_val &= ~(BIT(vf) |
9866 BIT(vf + E1000_DTXSWC_VLAN_SPOOF_SHIFT));
9869 adapter->vf_data[vf].spoofchk_enabled = setting;
9873 static int igb_ndo_set_vf_trust(struct net_device *netdev, int vf, bool setting)
9877 if (vf >= adapter->vfs_allocated_count)
9879 if (adapter->vf_data[vf].trusted == setting)
9882 adapter->vf_data[vf].trusted = setting;
9885 vf, setting ? "" : "not ");
9890 int vf, struct ifla_vf_info *ivi)
9893 if (vf >= adapter->vfs_allocated_count)
9895 ivi->vf = vf;
9896 memcpy(&ivi->mac, adapter->vf_data[vf].vf_mac_addresses, ETH_ALEN);
9897 ivi->max_tx_rate = adapter->vf_data[vf].tx_rate;
9899 ivi->vlan = adapter->vf_data[vf].pf_vlan;
9900 ivi->qos = adapter->vf_data[vf].pf_qos;
9901 ivi->spoofchk = adapter->vf_data[vf].spoofchk_enabled;
9902 ivi->trusted = adapter->vf_data[vf].trusted;