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 && pci_is_dev_assigned(vf->pci_dev)) in efx_ef10_sriov_free_vf_vports()
128 if (vf->vport_assigned) { in efx_ef10_sriov_free_vf_vports()
130 vf->vport_assigned = 0; in efx_ef10_sriov_free_vf_vports()
133 if (!is_zero_ether_addr(vf->mac)) { in efx_ef10_sriov_free_vf_vports()
134 efx_ef10_vport_del_mac(efx, vf->vport_id, vf->mac); in efx_ef10_sriov_free_vf_vports()
135 eth_zero_addr(vf->mac); in efx_ef10_sriov_free_vf_vports()
138 if (vf->vport_id) { in efx_ef10_sriov_free_vf_vports()
139 efx_ef10_vport_free(efx, vf->vport_id); in efx_ef10_sriov_free_vf_vports()
140 vf->vport_id = 0; in efx_ef10_sriov_free_vf_vports()
143 vf->efx = NULL; in efx_ef10_sriov_free_vf_vports()
152 kfree(nic_data->vf); in efx_ef10_sriov_free_vf_vswitching()
153 nic_data->vf = NULL; in efx_ef10_sriov_free_vf_vswitching()
160 struct ef10_vf *vf = nic_data->vf + vf_i; in efx_ef10_sriov_assign_vf_vport() local
163 if (WARN_ON_ONCE(!nic_data->vf)) in efx_ef10_sriov_assign_vf_vport()
168 vf->vlan, &vf->vport_id); in efx_ef10_sriov_assign_vf_vport()
172 rc = efx_ef10_vport_add_mac(efx, vf->vport_id, vf->mac); in efx_ef10_sriov_assign_vf_vport()
174 eth_zero_addr(vf->mac); in efx_ef10_sriov_assign_vf_vport()
178 rc = efx_ef10_evb_port_assign(efx, vf->vport_id, vf_i); in efx_ef10_sriov_assign_vf_vport()
182 vf->vport_assigned = 1; in efx_ef10_sriov_assign_vf_vport()
192 nic_data->vf = kcalloc(efx->vf_count, sizeof(struct ef10_vf), in efx_ef10_sriov_alloc_vf_vswitching()
194 if (!nic_data->vf) in efx_ef10_sriov_alloc_vf_vswitching()
198 eth_random_addr(nic_data->vf[i].mac); in efx_ef10_sriov_alloc_vf_vswitching()
199 nic_data->vf[i].efx = NULL; in efx_ef10_sriov_alloc_vf_vswitching()
200 nic_data->vf[i].vlan = EFX_EF10_NO_VLAN; in efx_ef10_sriov_alloc_vf_vswitching()
448 if (!nic_data->vf) { in efx_ef10_sriov_fini()
486 struct ef10_vf *vf; in efx_ef10_sriov_set_vf_mac() local
489 if (!nic_data->vf) in efx_ef10_sriov_set_vf_mac()
494 vf = nic_data->vf + vf_i; in efx_ef10_sriov_set_vf_mac()
496 if (vf->efx) { in efx_ef10_sriov_set_vf_mac()
497 efx_device_detach_sync(vf->efx); in efx_ef10_sriov_set_vf_mac()
498 efx_net_stop(vf->efx->net_dev); in efx_ef10_sriov_set_vf_mac()
500 down_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_mac()
501 vf->efx->type->filter_table_remove(vf->efx); in efx_ef10_sriov_set_vf_mac()
503 rc = efx_ef10_vadaptor_free(vf->efx, EVB_PORT_ID_ASSIGNED); in efx_ef10_sriov_set_vf_mac()
505 up_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_mac()
514 if (!is_zero_ether_addr(vf->mac)) { in efx_ef10_sriov_set_vf_mac()
515 rc = efx_ef10_vport_del_vf_mac(efx, vf->vport_id, vf->mac); in efx_ef10_sriov_set_vf_mac()
521 rc = efx_ef10_vport_add_mac(efx, vf->vport_id, mac); in efx_ef10_sriov_set_vf_mac()
525 if (vf->efx) in efx_ef10_sriov_set_vf_mac()
526 eth_hw_addr_set(vf->efx->net_dev, mac); in efx_ef10_sriov_set_vf_mac()
529 ether_addr_copy(vf->mac, mac); in efx_ef10_sriov_set_vf_mac()
531 rc = efx_ef10_evb_port_assign(efx, vf->vport_id, vf_i); in efx_ef10_sriov_set_vf_mac()
535 if (vf->efx) { in efx_ef10_sriov_set_vf_mac()
537 rc = efx_ef10_vadaptor_alloc(vf->efx, EVB_PORT_ID_ASSIGNED); in efx_ef10_sriov_set_vf_mac()
539 up_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_mac()
542 vf->efx->type->filter_table_probe(vf->efx); in efx_ef10_sriov_set_vf_mac()
543 up_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_mac()
544 efx_net_open(vf->efx->net_dev); in efx_ef10_sriov_set_vf_mac()
545 efx_device_attach_if_not_resetting(vf->efx); in efx_ef10_sriov_set_vf_mac()
551 eth_zero_addr(vf->mac); in efx_ef10_sriov_set_vf_mac()
559 struct ef10_vf *vf; in efx_ef10_sriov_set_vf_vlan() local
568 vf = nic_data->vf + vf_i; in efx_ef10_sriov_set_vf_vlan()
571 if (new_vlan == vf->vlan) in efx_ef10_sriov_set_vf_vlan()
574 if (vf->efx) { in efx_ef10_sriov_set_vf_vlan()
575 efx_device_detach_sync(vf->efx); in efx_ef10_sriov_set_vf_vlan()
576 efx_net_stop(vf->efx->net_dev); in efx_ef10_sriov_set_vf_vlan()
578 mutex_lock(&vf->efx->mac_lock); in efx_ef10_sriov_set_vf_vlan()
579 down_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_vlan()
580 vf->efx->type->filter_table_remove(vf->efx); in efx_ef10_sriov_set_vf_vlan()
582 rc = efx_ef10_vadaptor_free(vf->efx, EVB_PORT_ID_ASSIGNED); in efx_ef10_sriov_set_vf_vlan()
587 if (vf->vport_assigned) { in efx_ef10_sriov_set_vf_vlan()
598 vf->vport_assigned = 0; in efx_ef10_sriov_set_vf_vlan()
601 if (!is_zero_ether_addr(vf->mac)) { in efx_ef10_sriov_set_vf_vlan()
602 rc = efx_ef10_vport_del_mac(efx, vf->vport_id, vf->mac); in efx_ef10_sriov_set_vf_vlan()
607 if (vf->vport_id) { in efx_ef10_sriov_set_vf_vlan()
608 rc = efx_ef10_vport_free(efx, vf->vport_id); in efx_ef10_sriov_set_vf_vlan()
611 vf->vport_id = 0; in efx_ef10_sriov_set_vf_vlan()
615 vf->vlan = new_vlan; in efx_ef10_sriov_set_vf_vlan()
620 vf->vlan, &vf->vport_id); in efx_ef10_sriov_set_vf_vlan()
625 if (!is_zero_ether_addr(vf->mac)) { in efx_ef10_sriov_set_vf_vlan()
626 rc2 = efx_ef10_vport_add_mac(efx, vf->vport_id, vf->mac); in efx_ef10_sriov_set_vf_vlan()
628 eth_zero_addr(vf->mac); in efx_ef10_sriov_set_vf_vlan()
634 rc2 = efx_ef10_evb_port_assign(efx, vf->vport_id, vf_i); in efx_ef10_sriov_set_vf_vlan()
638 vf->vport_assigned = 1; in efx_ef10_sriov_set_vf_vlan()
641 if (vf->efx) { in efx_ef10_sriov_set_vf_vlan()
642 rc2 = efx_ef10_vadaptor_alloc(vf->efx, EVB_PORT_ID_ASSIGNED); in efx_ef10_sriov_set_vf_vlan()
648 if (vf->efx) { in efx_ef10_sriov_set_vf_vlan()
649 rc2 = vf->efx->type->filter_table_probe(vf->efx); in efx_ef10_sriov_set_vf_vlan()
653 up_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_vlan()
654 mutex_unlock(&vf->efx->mac_lock); in efx_ef10_sriov_set_vf_vlan()
656 rc2 = efx_net_open(vf->efx->net_dev); in efx_ef10_sriov_set_vf_vlan()
660 efx_device_attach_if_not_resetting(vf->efx); in efx_ef10_sriov_set_vf_vlan()
665 if (vf->efx) { in efx_ef10_sriov_set_vf_vlan()
666 up_write(&vf->efx->filter_sem); in efx_ef10_sriov_set_vf_vlan()
667 mutex_unlock(&vf->efx->mac_lock); in efx_ef10_sriov_set_vf_vlan()
670 if (vf->efx) { in efx_ef10_sriov_set_vf_vlan()
673 efx_schedule_reset(vf->efx, RESET_TYPE_DATAPATH); in efx_ef10_sriov_set_vf_vlan()
779 struct ef10_vf *vf; in efx_ef10_sriov_get_vf_config() local
786 if (!nic_data->vf) in efx_ef10_sriov_get_vf_config()
789 vf = nic_data->vf + vf_i; in efx_ef10_sriov_get_vf_config()
791 ivf->vf = vf_i; in efx_ef10_sriov_get_vf_config()
794 ether_addr_copy(ivf->mac, vf->mac); in efx_ef10_sriov_get_vf_config()
795 ivf->vlan = (vf->vlan == EFX_EF10_NO_VLAN) ? 0 : vf->vlan; in efx_ef10_sriov_get_vf_config()