• Home
  • Raw
  • Download

Lines Matching refs:vf

118 	if (!nic_data->vf)  in efx_ef10_sriov_free_vf_vports()
122 struct ef10_vf *vf = nic_data->vf + i; in efx_ef10_sriov_free_vf_vports() local
125 if (vf->pci_dev && in efx_ef10_sriov_free_vf_vports()
126 vf->pci_dev->dev_flags & PCI_DEV_FLAGS_ASSIGNED) in efx_ef10_sriov_free_vf_vports()
129 if (vf->vport_assigned) { in efx_ef10_sriov_free_vf_vports()
131 vf->vport_assigned = 0; in efx_ef10_sriov_free_vf_vports()
134 if (!is_zero_ether_addr(vf->mac)) { in efx_ef10_sriov_free_vf_vports()
135 efx_ef10_vport_del_mac(efx, vf->vport_id, vf->mac); in efx_ef10_sriov_free_vf_vports()
136 eth_zero_addr(vf->mac); in efx_ef10_sriov_free_vf_vports()
139 if (vf->vport_id) { in efx_ef10_sriov_free_vf_vports()
140 efx_ef10_vport_free(efx, vf->vport_id); in efx_ef10_sriov_free_vf_vports()
141 vf->vport_id = 0; in efx_ef10_sriov_free_vf_vports()
144 vf->efx = NULL; in efx_ef10_sriov_free_vf_vports()
153 kfree(nic_data->vf); in efx_ef10_sriov_free_vf_vswitching()
154 nic_data->vf = NULL; in efx_ef10_sriov_free_vf_vswitching()
161 struct ef10_vf *vf = nic_data->vf + vf_i; in efx_ef10_sriov_assign_vf_vport() local
164 if (WARN_ON_ONCE(!nic_data->vf)) in efx_ef10_sriov_assign_vf_vport()
169 vf->vlan, &vf->vport_id); in efx_ef10_sriov_assign_vf_vport()
173 rc = efx_ef10_vport_add_mac(efx, vf->vport_id, vf->mac); in efx_ef10_sriov_assign_vf_vport()
175 eth_zero_addr(vf->mac); in efx_ef10_sriov_assign_vf_vport()
179 rc = efx_ef10_evb_port_assign(efx, vf->vport_id, vf_i); in efx_ef10_sriov_assign_vf_vport()
183 vf->vport_assigned = 1; in efx_ef10_sriov_assign_vf_vport()
193 nic_data->vf = kcalloc(efx->vf_count, sizeof(struct ef10_vf), in efx_ef10_sriov_alloc_vf_vswitching()
195 if (!nic_data->vf) in efx_ef10_sriov_alloc_vf_vswitching()
199 eth_random_addr(nic_data->vf[i].mac); in efx_ef10_sriov_alloc_vf_vswitching()
200 nic_data->vf[i].efx = NULL; in efx_ef10_sriov_alloc_vf_vswitching()
201 nic_data->vf[i].vlan = EFX_EF10_NO_VLAN; in efx_ef10_sriov_alloc_vf_vswitching()
211 kfree(nic_data->vf); in efx_ef10_sriov_alloc_vf_vswitching()
212 nic_data->vf = NULL; in efx_ef10_sriov_alloc_vf_vswitching()
426 nic_data->vf[i].pci_dev = NULL; in efx_ef10_pci_sriov_disable()
455 if (!nic_data->vf) { in efx_ef10_sriov_fini()
491 struct ef10_vf *vf; in efx_ef10_sriov_set_vf_mac() local
494 if (!nic_data->vf) in efx_ef10_sriov_set_vf_mac()
499 vf = nic_data->vf + vf_i; in efx_ef10_sriov_set_vf_mac()
501 if (vf->efx) { in efx_ef10_sriov_set_vf_mac()
502 efx_device_detach_sync(vf->efx); in efx_ef10_sriov_set_vf_mac()
503 efx_net_stop(vf->efx->net_dev); in efx_ef10_sriov_set_vf_mac()
505 down_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_mac()
506 vf->efx->type->filter_table_remove(vf->efx); in efx_ef10_sriov_set_vf_mac()
508 rc = efx_ef10_vadaptor_free(vf->efx, EVB_PORT_ID_ASSIGNED); in efx_ef10_sriov_set_vf_mac()
510 up_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_mac()
519 if (!is_zero_ether_addr(vf->mac)) { in efx_ef10_sriov_set_vf_mac()
520 rc = efx_ef10_vport_del_vf_mac(efx, vf->vport_id, vf->mac); in efx_ef10_sriov_set_vf_mac()
526 rc = efx_ef10_vport_add_mac(efx, vf->vport_id, mac); in efx_ef10_sriov_set_vf_mac()
530 if (vf->efx) in efx_ef10_sriov_set_vf_mac()
531 ether_addr_copy(vf->efx->net_dev->dev_addr, mac); in efx_ef10_sriov_set_vf_mac()
534 ether_addr_copy(vf->mac, mac); in efx_ef10_sriov_set_vf_mac()
536 rc = efx_ef10_evb_port_assign(efx, vf->vport_id, vf_i); in efx_ef10_sriov_set_vf_mac()
540 if (vf->efx) { in efx_ef10_sriov_set_vf_mac()
542 rc = efx_ef10_vadaptor_alloc(vf->efx, EVB_PORT_ID_ASSIGNED); in efx_ef10_sriov_set_vf_mac()
544 up_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_mac()
547 vf->efx->type->filter_table_probe(vf->efx); in efx_ef10_sriov_set_vf_mac()
548 up_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_mac()
549 efx_net_open(vf->efx->net_dev); in efx_ef10_sriov_set_vf_mac()
550 efx_device_attach_if_not_resetting(vf->efx); in efx_ef10_sriov_set_vf_mac()
556 eth_zero_addr(vf->mac); in efx_ef10_sriov_set_vf_mac()
564 struct ef10_vf *vf; in efx_ef10_sriov_set_vf_vlan() local
573 vf = nic_data->vf + vf_i; in efx_ef10_sriov_set_vf_vlan()
576 if (new_vlan == vf->vlan) in efx_ef10_sriov_set_vf_vlan()
579 if (vf->efx) { in efx_ef10_sriov_set_vf_vlan()
580 efx_device_detach_sync(vf->efx); in efx_ef10_sriov_set_vf_vlan()
581 efx_net_stop(vf->efx->net_dev); in efx_ef10_sriov_set_vf_vlan()
583 mutex_lock(&vf->efx->mac_lock); in efx_ef10_sriov_set_vf_vlan()
584 down_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_vlan()
585 vf->efx->type->filter_table_remove(vf->efx); in efx_ef10_sriov_set_vf_vlan()
587 rc = efx_ef10_vadaptor_free(vf->efx, EVB_PORT_ID_ASSIGNED); in efx_ef10_sriov_set_vf_vlan()
592 if (vf->vport_assigned) { in efx_ef10_sriov_set_vf_vlan()
603 vf->vport_assigned = 0; in efx_ef10_sriov_set_vf_vlan()
606 if (!is_zero_ether_addr(vf->mac)) { in efx_ef10_sriov_set_vf_vlan()
607 rc = efx_ef10_vport_del_mac(efx, vf->vport_id, vf->mac); in efx_ef10_sriov_set_vf_vlan()
612 if (vf->vport_id) { in efx_ef10_sriov_set_vf_vlan()
613 rc = efx_ef10_vport_free(efx, vf->vport_id); in efx_ef10_sriov_set_vf_vlan()
616 vf->vport_id = 0; in efx_ef10_sriov_set_vf_vlan()
620 vf->vlan = new_vlan; in efx_ef10_sriov_set_vf_vlan()
625 vf->vlan, &vf->vport_id); in efx_ef10_sriov_set_vf_vlan()
630 if (!is_zero_ether_addr(vf->mac)) { in efx_ef10_sriov_set_vf_vlan()
631 rc2 = efx_ef10_vport_add_mac(efx, vf->vport_id, vf->mac); in efx_ef10_sriov_set_vf_vlan()
633 eth_zero_addr(vf->mac); in efx_ef10_sriov_set_vf_vlan()
639 rc2 = efx_ef10_evb_port_assign(efx, vf->vport_id, vf_i); in efx_ef10_sriov_set_vf_vlan()
643 vf->vport_assigned = 1; in efx_ef10_sriov_set_vf_vlan()
646 if (vf->efx) { in efx_ef10_sriov_set_vf_vlan()
647 rc2 = efx_ef10_vadaptor_alloc(vf->efx, EVB_PORT_ID_ASSIGNED); in efx_ef10_sriov_set_vf_vlan()
653 if (vf->efx) { in efx_ef10_sriov_set_vf_vlan()
654 rc2 = vf->efx->type->filter_table_probe(vf->efx); in efx_ef10_sriov_set_vf_vlan()
658 up_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_vlan()
659 mutex_unlock(&vf->efx->mac_lock); in efx_ef10_sriov_set_vf_vlan()
661 rc2 = efx_net_open(vf->efx->net_dev); in efx_ef10_sriov_set_vf_vlan()
665 efx_device_attach_if_not_resetting(vf->efx); in efx_ef10_sriov_set_vf_vlan()
670 if (vf->efx) { in efx_ef10_sriov_set_vf_vlan()
671 up_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_vlan()
672 mutex_unlock(&vf->efx->mac_lock); in efx_ef10_sriov_set_vf_vlan()
675 if (vf->efx) { in efx_ef10_sriov_set_vf_vlan()
678 efx_schedule_reset(vf->efx, RESET_TYPE_DATAPATH); in efx_ef10_sriov_set_vf_vlan()
784 struct ef10_vf *vf; in efx_ef10_sriov_get_vf_config() local
791 if (!nic_data->vf) in efx_ef10_sriov_get_vf_config()
794 vf = nic_data->vf + vf_i; in efx_ef10_sriov_get_vf_config()
796 ivf->vf = vf_i; in efx_ef10_sriov_get_vf_config()
799 ether_addr_copy(ivf->mac, vf->mac); in efx_ef10_sriov_get_vf_config()
800 ivf->vlan = (vf->vlan == EFX_EF10_NO_VLAN) ? 0 : vf->vlan; in efx_ef10_sriov_get_vf_config()