Lines Matching refs:adapter

17 static int iavf_send_pf_msg(struct iavf_adapter *adapter,  in iavf_send_pf_msg()  argument
20 struct iavf_hw *hw = &adapter->hw; in iavf_send_pf_msg()
23 if (adapter->flags & IAVF_FLAG_PF_COMMS_FAILED) in iavf_send_pf_msg()
28 dev_dbg(&adapter->pdev->dev, "Unable to send opcode %d to PF, status %s, aq_err %s\n", in iavf_send_pf_msg()
42 int iavf_send_api_ver(struct iavf_adapter *adapter) in iavf_send_api_ver() argument
49 return iavf_send_pf_msg(adapter, VIRTCHNL_OP_VERSION, (u8 *)&vvi, in iavf_send_api_ver()
97 int iavf_verify_api_ver(struct iavf_adapter *adapter) in iavf_verify_api_ver() argument
107 err = iavf_poll_virtchnl_msg(&adapter->hw, &event, VIRTCHNL_OP_VERSION); in iavf_verify_api_ver()
111 adapter->pf_version = *pf_vvi; in iavf_verify_api_ver()
132 int iavf_send_vf_config_msg(struct iavf_adapter *adapter) in iavf_send_vf_config_msg() argument
153 adapter->current_op = VIRTCHNL_OP_GET_VF_RESOURCES; in iavf_send_vf_config_msg()
154 adapter->aq_required &= ~IAVF_FLAG_AQ_GET_CONFIG; in iavf_send_vf_config_msg()
155 if (PF_IS_V11(adapter)) in iavf_send_vf_config_msg()
156 return iavf_send_pf_msg(adapter, VIRTCHNL_OP_GET_VF_RESOURCES, in iavf_send_vf_config_msg()
159 return iavf_send_pf_msg(adapter, VIRTCHNL_OP_GET_VF_RESOURCES, in iavf_send_vf_config_msg()
163 int iavf_send_vf_offload_vlan_v2_msg(struct iavf_adapter *adapter) in iavf_send_vf_offload_vlan_v2_msg() argument
165 adapter->aq_required &= ~IAVF_FLAG_AQ_GET_OFFLOAD_VLAN_V2_CAPS; in iavf_send_vf_offload_vlan_v2_msg()
167 if (!VLAN_V2_ALLOWED(adapter)) in iavf_send_vf_offload_vlan_v2_msg()
170 adapter->current_op = VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS; in iavf_send_vf_offload_vlan_v2_msg()
172 return iavf_send_pf_msg(adapter, VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS, in iavf_send_vf_offload_vlan_v2_msg()
183 static void iavf_validate_num_queues(struct iavf_adapter *adapter) in iavf_validate_num_queues() argument
185 if (adapter->vf_res->num_queue_pairs > IAVF_MAX_REQ_QUEUES) { in iavf_validate_num_queues()
189 dev_info(&adapter->pdev->dev, "Received %d queues, but can only have a max of %d\n", in iavf_validate_num_queues()
190 adapter->vf_res->num_queue_pairs, in iavf_validate_num_queues()
192 dev_info(&adapter->pdev->dev, "Fixing by reducing queues to %d\n", in iavf_validate_num_queues()
194 adapter->vf_res->num_queue_pairs = IAVF_MAX_REQ_QUEUES; in iavf_validate_num_queues()
195 for (i = 0; i < adapter->vf_res->num_vsis; i++) { in iavf_validate_num_queues()
196 vsi_res = &adapter->vf_res->vsi_res[i]; in iavf_validate_num_queues()
211 int iavf_get_vf_config(struct iavf_adapter *adapter) in iavf_get_vf_config() argument
213 struct iavf_hw *hw = &adapter->hw; in iavf_get_vf_config()
225 memcpy(adapter->vf_res, event.msg_buf, min(event.msg_len, len)); in iavf_get_vf_config()
231 iavf_validate_num_queues(adapter); in iavf_get_vf_config()
232 iavf_vf_parse_hw_config(hw, adapter->vf_res); in iavf_get_vf_config()
239 int iavf_get_vf_vlan_v2_caps(struct iavf_adapter *adapter) in iavf_get_vf_vlan_v2_caps() argument
251 err = iavf_poll_virtchnl_msg(&adapter->hw, &event, in iavf_get_vf_vlan_v2_caps()
254 memcpy(&adapter->vlan_v2_caps, event.msg_buf, in iavf_get_vf_vlan_v2_caps()
268 void iavf_configure_queues(struct iavf_adapter *adapter) in iavf_configure_queues() argument
271 int i, max_frame = adapter->vf_res->max_mtu; in iavf_configure_queues()
272 int pairs = adapter->num_active_queues; in iavf_configure_queues()
279 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_configure_queues()
281 dev_err(&adapter->pdev->dev, "Cannot configure queues, command %d pending\n", in iavf_configure_queues()
282 adapter->current_op); in iavf_configure_queues()
285 adapter->current_op = VIRTCHNL_OP_CONFIG_VSI_QUEUES; in iavf_configure_queues()
292 if (!(adapter->flags & IAVF_FLAG_LEGACY_RX) && in iavf_configure_queues()
293 (adapter->netdev->mtu <= ETH_DATA_LEN)) in iavf_configure_queues()
296 vqci->vsi_id = adapter->vsi_res->vsi_id; in iavf_configure_queues()
305 vqpi->txq.ring_len = adapter->tx_rings[i].count; in iavf_configure_queues()
306 vqpi->txq.dma_ring_addr = adapter->tx_rings[i].dma; in iavf_configure_queues()
309 vqpi->rxq.ring_len = adapter->rx_rings[i].count; in iavf_configure_queues()
310 vqpi->rxq.dma_ring_addr = adapter->rx_rings[i].dma; in iavf_configure_queues()
313 ALIGN(adapter->rx_rings[i].rx_buf_len, in iavf_configure_queues()
318 adapter->aq_required &= ~IAVF_FLAG_AQ_CONFIGURE_QUEUES; in iavf_configure_queues()
319 iavf_send_pf_msg(adapter, VIRTCHNL_OP_CONFIG_VSI_QUEUES, in iavf_configure_queues()
330 void iavf_enable_queues(struct iavf_adapter *adapter) in iavf_enable_queues() argument
334 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_enable_queues()
336 dev_err(&adapter->pdev->dev, "Cannot enable queues, command %d pending\n", in iavf_enable_queues()
337 adapter->current_op); in iavf_enable_queues()
340 adapter->current_op = VIRTCHNL_OP_ENABLE_QUEUES; in iavf_enable_queues()
341 vqs.vsi_id = adapter->vsi_res->vsi_id; in iavf_enable_queues()
342 vqs.tx_queues = BIT(adapter->num_active_queues) - 1; in iavf_enable_queues()
344 adapter->aq_required &= ~IAVF_FLAG_AQ_ENABLE_QUEUES; in iavf_enable_queues()
345 iavf_send_pf_msg(adapter, VIRTCHNL_OP_ENABLE_QUEUES, in iavf_enable_queues()
355 void iavf_disable_queues(struct iavf_adapter *adapter) in iavf_disable_queues() argument
359 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_disable_queues()
361 dev_err(&adapter->pdev->dev, "Cannot disable queues, command %d pending\n", in iavf_disable_queues()
362 adapter->current_op); in iavf_disable_queues()
365 adapter->current_op = VIRTCHNL_OP_DISABLE_QUEUES; in iavf_disable_queues()
366 vqs.vsi_id = adapter->vsi_res->vsi_id; in iavf_disable_queues()
367 vqs.tx_queues = BIT(adapter->num_active_queues) - 1; in iavf_disable_queues()
369 adapter->aq_required &= ~IAVF_FLAG_AQ_DISABLE_QUEUES; in iavf_disable_queues()
370 iavf_send_pf_msg(adapter, VIRTCHNL_OP_DISABLE_QUEUES, in iavf_disable_queues()
381 void iavf_map_queues(struct iavf_adapter *adapter) in iavf_map_queues() argument
389 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_map_queues()
391 dev_err(&adapter->pdev->dev, "Cannot map queues to vectors, command %d pending\n", in iavf_map_queues()
392 adapter->current_op); in iavf_map_queues()
395 adapter->current_op = VIRTCHNL_OP_CONFIG_IRQ_MAP; in iavf_map_queues()
397 q_vectors = adapter->num_msix_vectors - NONQ_VECS; in iavf_map_queues()
399 len = virtchnl_struct_size(vimi, vecmap, adapter->num_msix_vectors); in iavf_map_queues()
404 vimi->num_vectors = adapter->num_msix_vectors; in iavf_map_queues()
407 q_vector = &adapter->q_vectors[v_idx]; in iavf_map_queues()
410 vecmap->vsi_id = adapter->vsi_res->vsi_id; in iavf_map_queues()
419 vecmap->vsi_id = adapter->vsi_res->vsi_id; in iavf_map_queues()
424 adapter->aq_required &= ~IAVF_FLAG_AQ_MAP_VECTORS; in iavf_map_queues()
425 iavf_send_pf_msg(adapter, VIRTCHNL_OP_CONFIG_IRQ_MAP, in iavf_map_queues()
450 void iavf_add_ether_addrs(struct iavf_adapter *adapter) in iavf_add_ether_addrs() argument
458 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_add_ether_addrs()
460 dev_err(&adapter->pdev->dev, "Cannot add filters, command %d pending\n", in iavf_add_ether_addrs()
461 adapter->current_op); in iavf_add_ether_addrs()
465 spin_lock_bh(&adapter->mac_vlan_list_lock); in iavf_add_ether_addrs()
467 list_for_each_entry(f, &adapter->mac_filter_list, list) { in iavf_add_ether_addrs()
472 adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_MAC_FILTER; in iavf_add_ether_addrs()
473 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_add_ether_addrs()
476 adapter->current_op = VIRTCHNL_OP_ADD_ETH_ADDR; in iavf_add_ether_addrs()
480 dev_warn(&adapter->pdev->dev, "Too many add MAC changes in one request\n"); in iavf_add_ether_addrs()
488 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_add_ether_addrs()
492 veal->vsi_id = adapter->vsi_res->vsi_id; in iavf_add_ether_addrs()
494 list_for_each_entry(f, &adapter->mac_filter_list, list) { in iavf_add_ether_addrs()
505 adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_MAC_FILTER; in iavf_add_ether_addrs()
507 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_add_ether_addrs()
509 iavf_send_pf_msg(adapter, VIRTCHNL_OP_ADD_ETH_ADDR, (u8 *)veal, len); in iavf_add_ether_addrs()
519 void iavf_del_ether_addrs(struct iavf_adapter *adapter) in iavf_del_ether_addrs() argument
527 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_del_ether_addrs()
529 dev_err(&adapter->pdev->dev, "Cannot remove filters, command %d pending\n", in iavf_del_ether_addrs()
530 adapter->current_op); in iavf_del_ether_addrs()
534 spin_lock_bh(&adapter->mac_vlan_list_lock); in iavf_del_ether_addrs()
536 list_for_each_entry(f, &adapter->mac_filter_list, list) { in iavf_del_ether_addrs()
541 adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_MAC_FILTER; in iavf_del_ether_addrs()
542 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_del_ether_addrs()
545 adapter->current_op = VIRTCHNL_OP_DEL_ETH_ADDR; in iavf_del_ether_addrs()
549 dev_warn(&adapter->pdev->dev, "Too many delete MAC changes in one request\n"); in iavf_del_ether_addrs()
556 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_del_ether_addrs()
560 veal->vsi_id = adapter->vsi_res->vsi_id; in iavf_del_ether_addrs()
562 list_for_each_entry_safe(f, ftmp, &adapter->mac_filter_list, list) { in iavf_del_ether_addrs()
574 adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_MAC_FILTER; in iavf_del_ether_addrs()
576 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_del_ether_addrs()
578 iavf_send_pf_msg(adapter, VIRTCHNL_OP_DEL_ETH_ADDR, (u8 *)veal, len); in iavf_del_ether_addrs()
588 static void iavf_mac_add_ok(struct iavf_adapter *adapter) in iavf_mac_add_ok() argument
592 spin_lock_bh(&adapter->mac_vlan_list_lock); in iavf_mac_add_ok()
593 list_for_each_entry_safe(f, ftmp, &adapter->mac_filter_list, list) { in iavf_mac_add_ok()
598 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_mac_add_ok()
607 static void iavf_mac_add_reject(struct iavf_adapter *adapter) in iavf_mac_add_reject() argument
609 struct net_device *netdev = adapter->netdev; in iavf_mac_add_reject()
612 spin_lock_bh(&adapter->mac_vlan_list_lock); in iavf_mac_add_reject()
613 list_for_each_entry_safe(f, ftmp, &adapter->mac_filter_list, list) { in iavf_mac_add_reject()
625 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_mac_add_reject()
634 static void iavf_vlan_add_reject(struct iavf_adapter *adapter) in iavf_vlan_add_reject() argument
638 spin_lock_bh(&adapter->mac_vlan_list_lock); in iavf_vlan_add_reject()
639 list_for_each_entry_safe(f, ftmp, &adapter->vlan_filter_list, list) { in iavf_vlan_add_reject()
643 adapter->num_vlan_filters--; in iavf_vlan_add_reject()
646 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_vlan_add_reject()
655 void iavf_add_vlans(struct iavf_adapter *adapter) in iavf_add_vlans() argument
661 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_add_vlans()
663 dev_err(&adapter->pdev->dev, "Cannot add VLANs, command %d pending\n", in iavf_add_vlans()
664 adapter->current_op); in iavf_add_vlans()
668 spin_lock_bh(&adapter->mac_vlan_list_lock); in iavf_add_vlans()
670 list_for_each_entry(f, &adapter->vlan_filter_list, list) { in iavf_add_vlans()
674 if (!count || !VLAN_FILTERING_ALLOWED(adapter)) { in iavf_add_vlans()
675 adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_VLAN_FILTER; in iavf_add_vlans()
676 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_add_vlans()
680 if (VLAN_ALLOWED(adapter)) { in iavf_add_vlans()
683 adapter->current_op = VIRTCHNL_OP_ADD_VLAN; in iavf_add_vlans()
687 dev_warn(&adapter->pdev->dev, "Too many add VLAN changes in one request\n"); in iavf_add_vlans()
695 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_add_vlans()
699 vvfl->vsi_id = adapter->vsi_res->vsi_id; in iavf_add_vlans()
701 list_for_each_entry(f, &adapter->vlan_filter_list, list) { in iavf_add_vlans()
711 adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_VLAN_FILTER; in iavf_add_vlans()
713 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_add_vlans()
715 iavf_send_pf_msg(adapter, VIRTCHNL_OP_ADD_VLAN, (u8 *)vvfl, len); in iavf_add_vlans()
718 u16 max_vlans = adapter->vlan_v2_caps.filtering.max_filters; in iavf_add_vlans()
719 u16 current_vlans = iavf_get_num_vlans_added(adapter); in iavf_add_vlans()
722 adapter->current_op = VIRTCHNL_OP_ADD_VLAN_V2; in iavf_add_vlans()
726 count = max_vlans - iavf_get_num_vlans_added(adapter); in iavf_add_vlans()
732 dev_warn(&adapter->pdev->dev, "Too many add VLAN changes in one request\n"); in iavf_add_vlans()
741 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_add_vlans()
745 vvfl_v2->vport_id = adapter->vsi_res->vsi_id; in iavf_add_vlans()
747 list_for_each_entry(f, &adapter->vlan_filter_list, list) { in iavf_add_vlans()
750 &adapter->vlan_v2_caps.filtering.filtering_support; in iavf_add_vlans()
771 adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_VLAN_FILTER; in iavf_add_vlans()
773 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_add_vlans()
775 iavf_send_pf_msg(adapter, VIRTCHNL_OP_ADD_VLAN_V2, in iavf_add_vlans()
787 void iavf_del_vlans(struct iavf_adapter *adapter) in iavf_del_vlans() argument
793 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_del_vlans()
795 dev_err(&adapter->pdev->dev, "Cannot remove VLANs, command %d pending\n", in iavf_del_vlans()
796 adapter->current_op); in iavf_del_vlans()
800 spin_lock_bh(&adapter->mac_vlan_list_lock); in iavf_del_vlans()
802 list_for_each_entry_safe(f, ftmp, &adapter->vlan_filter_list, list) { in iavf_del_vlans()
810 !VLAN_FILTERING_ALLOWED(adapter)) { in iavf_del_vlans()
813 adapter->num_vlan_filters--; in iavf_del_vlans()
815 !VLAN_FILTERING_ALLOWED(adapter)) { in iavf_del_vlans()
822 if (!count || !VLAN_FILTERING_ALLOWED(adapter)) { in iavf_del_vlans()
823 adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_VLAN_FILTER; in iavf_del_vlans()
824 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_del_vlans()
828 if (VLAN_ALLOWED(adapter)) { in iavf_del_vlans()
831 adapter->current_op = VIRTCHNL_OP_DEL_VLAN; in iavf_del_vlans()
835 dev_warn(&adapter->pdev->dev, "Too many delete VLAN changes in one request\n"); in iavf_del_vlans()
843 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_del_vlans()
847 vvfl->vsi_id = adapter->vsi_res->vsi_id; in iavf_del_vlans()
849 list_for_each_entry_safe(f, ftmp, &adapter->vlan_filter_list, list) { in iavf_del_vlans()
860 adapter->num_vlan_filters--; in iavf_del_vlans()
868 adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_VLAN_FILTER; in iavf_del_vlans()
870 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_del_vlans()
872 iavf_send_pf_msg(adapter, VIRTCHNL_OP_DEL_VLAN, (u8 *)vvfl, len); in iavf_del_vlans()
877 adapter->current_op = VIRTCHNL_OP_DEL_VLAN_V2; in iavf_del_vlans()
881 dev_warn(&adapter->pdev->dev, "Too many add VLAN changes in one request\n"); in iavf_del_vlans()
890 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_del_vlans()
894 vvfl_v2->vport_id = adapter->vsi_res->vsi_id; in iavf_del_vlans()
896 list_for_each_entry_safe(f, ftmp, &adapter->vlan_filter_list, list) { in iavf_del_vlans()
900 &adapter->vlan_v2_caps.filtering.filtering_support; in iavf_del_vlans()
917 adapter->num_vlan_filters--; in iavf_del_vlans()
926 adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_VLAN_FILTER; in iavf_del_vlans()
928 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_del_vlans()
930 iavf_send_pf_msg(adapter, VIRTCHNL_OP_DEL_VLAN_V2, in iavf_del_vlans()
942 void iavf_set_promiscuous(struct iavf_adapter *adapter) in iavf_set_promiscuous() argument
944 struct net_device *netdev = adapter->netdev; in iavf_set_promiscuous()
948 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_set_promiscuous()
950 dev_err(&adapter->pdev->dev, "Cannot set promiscuous mode, command %d pending\n", in iavf_set_promiscuous()
951 adapter->current_op); in iavf_set_promiscuous()
956 spin_lock_bh(&adapter->current_netdev_promisc_flags_lock); in iavf_set_promiscuous()
959 if (!iavf_promiscuous_mode_changed(adapter)) { in iavf_set_promiscuous()
960 adapter->aq_required &= ~IAVF_FLAG_AQ_CONFIGURE_PROMISC_MODE; in iavf_set_promiscuous()
961 dev_dbg(&adapter->pdev->dev, "No change in promiscuous mode\n"); in iavf_set_promiscuous()
963 spin_unlock_bh(&adapter->current_netdev_promisc_flags_lock); in iavf_set_promiscuous()
974 adapter->current_netdev_promisc_flags |= IFF_ALLMULTI; in iavf_set_promiscuous()
975 adapter->current_netdev_promisc_flags &= ~IFF_PROMISC; in iavf_set_promiscuous()
976 dev_info(&adapter->pdev->dev, "Entering multicast promiscuous mode\n"); in iavf_set_promiscuous()
983 adapter->current_netdev_promisc_flags &= in iavf_set_promiscuous()
985 dev_info(&adapter->pdev->dev, "Leaving promiscuous mode\n"); in iavf_set_promiscuous()
992 adapter->current_netdev_promisc_flags |= IFF_PROMISC; in iavf_set_promiscuous()
994 adapter->current_netdev_promisc_flags |= IFF_ALLMULTI; in iavf_set_promiscuous()
996 adapter->current_netdev_promisc_flags &= ~IFF_ALLMULTI; in iavf_set_promiscuous()
998 dev_info(&adapter->pdev->dev, "Entering promiscuous mode\n"); in iavf_set_promiscuous()
1001 adapter->aq_required &= ~IAVF_FLAG_AQ_CONFIGURE_PROMISC_MODE; in iavf_set_promiscuous()
1004 spin_unlock_bh(&adapter->current_netdev_promisc_flags_lock); in iavf_set_promiscuous()
1006 adapter->current_op = VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE; in iavf_set_promiscuous()
1007 vpi.vsi_id = adapter->vsi_res->vsi_id; in iavf_set_promiscuous()
1009 iavf_send_pf_msg(adapter, VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE, in iavf_set_promiscuous()
1019 void iavf_request_stats(struct iavf_adapter *adapter) in iavf_request_stats() argument
1023 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_request_stats()
1028 adapter->aq_required &= ~IAVF_FLAG_AQ_REQUEST_STATS; in iavf_request_stats()
1029 adapter->current_op = VIRTCHNL_OP_GET_STATS; in iavf_request_stats()
1030 vqs.vsi_id = adapter->vsi_res->vsi_id; in iavf_request_stats()
1032 if (iavf_send_pf_msg(adapter, VIRTCHNL_OP_GET_STATS, (u8 *)&vqs, in iavf_request_stats()
1035 adapter->current_op = VIRTCHNL_OP_UNKNOWN; in iavf_request_stats()
1044 void iavf_get_hena(struct iavf_adapter *adapter) in iavf_get_hena() argument
1046 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_get_hena()
1048 dev_err(&adapter->pdev->dev, "Cannot get RSS hash capabilities, command %d pending\n", in iavf_get_hena()
1049 adapter->current_op); in iavf_get_hena()
1052 adapter->current_op = VIRTCHNL_OP_GET_RSS_HENA_CAPS; in iavf_get_hena()
1053 adapter->aq_required &= ~IAVF_FLAG_AQ_GET_HENA; in iavf_get_hena()
1054 iavf_send_pf_msg(adapter, VIRTCHNL_OP_GET_RSS_HENA_CAPS, NULL, 0); in iavf_get_hena()
1063 void iavf_set_hena(struct iavf_adapter *adapter) in iavf_set_hena() argument
1067 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_set_hena()
1069 dev_err(&adapter->pdev->dev, "Cannot set RSS hash enable, command %d pending\n", in iavf_set_hena()
1070 adapter->current_op); in iavf_set_hena()
1073 vrh.hena = adapter->hena; in iavf_set_hena()
1074 adapter->current_op = VIRTCHNL_OP_SET_RSS_HENA; in iavf_set_hena()
1075 adapter->aq_required &= ~IAVF_FLAG_AQ_SET_HENA; in iavf_set_hena()
1076 iavf_send_pf_msg(adapter, VIRTCHNL_OP_SET_RSS_HENA, (u8 *)&vrh, in iavf_set_hena()
1086 void iavf_set_rss_key(struct iavf_adapter *adapter) in iavf_set_rss_key() argument
1091 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_set_rss_key()
1093 dev_err(&adapter->pdev->dev, "Cannot set RSS key, command %d pending\n", in iavf_set_rss_key()
1094 adapter->current_op); in iavf_set_rss_key()
1097 len = virtchnl_struct_size(vrk, key, adapter->rss_key_size); in iavf_set_rss_key()
1101 vrk->vsi_id = adapter->vsi.id; in iavf_set_rss_key()
1102 vrk->key_len = adapter->rss_key_size; in iavf_set_rss_key()
1103 memcpy(vrk->key, adapter->rss_key, adapter->rss_key_size); in iavf_set_rss_key()
1105 adapter->current_op = VIRTCHNL_OP_CONFIG_RSS_KEY; in iavf_set_rss_key()
1106 adapter->aq_required &= ~IAVF_FLAG_AQ_SET_RSS_KEY; in iavf_set_rss_key()
1107 iavf_send_pf_msg(adapter, VIRTCHNL_OP_CONFIG_RSS_KEY, (u8 *)vrk, len); in iavf_set_rss_key()
1117 void iavf_set_rss_lut(struct iavf_adapter *adapter) in iavf_set_rss_lut() argument
1122 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_set_rss_lut()
1124 dev_err(&adapter->pdev->dev, "Cannot set RSS LUT, command %d pending\n", in iavf_set_rss_lut()
1125 adapter->current_op); in iavf_set_rss_lut()
1128 len = virtchnl_struct_size(vrl, lut, adapter->rss_lut_size); in iavf_set_rss_lut()
1132 vrl->vsi_id = adapter->vsi.id; in iavf_set_rss_lut()
1133 vrl->lut_entries = adapter->rss_lut_size; in iavf_set_rss_lut()
1134 memcpy(vrl->lut, adapter->rss_lut, adapter->rss_lut_size); in iavf_set_rss_lut()
1135 adapter->current_op = VIRTCHNL_OP_CONFIG_RSS_LUT; in iavf_set_rss_lut()
1136 adapter->aq_required &= ~IAVF_FLAG_AQ_SET_RSS_LUT; in iavf_set_rss_lut()
1137 iavf_send_pf_msg(adapter, VIRTCHNL_OP_CONFIG_RSS_LUT, (u8 *)vrl, len); in iavf_set_rss_lut()
1147 void iavf_enable_vlan_stripping(struct iavf_adapter *adapter) in iavf_enable_vlan_stripping() argument
1149 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_enable_vlan_stripping()
1151 dev_err(&adapter->pdev->dev, "Cannot enable stripping, command %d pending\n", in iavf_enable_vlan_stripping()
1152 adapter->current_op); in iavf_enable_vlan_stripping()
1155 adapter->current_op = VIRTCHNL_OP_ENABLE_VLAN_STRIPPING; in iavf_enable_vlan_stripping()
1156 adapter->aq_required &= ~IAVF_FLAG_AQ_ENABLE_VLAN_STRIPPING; in iavf_enable_vlan_stripping()
1157 iavf_send_pf_msg(adapter, VIRTCHNL_OP_ENABLE_VLAN_STRIPPING, NULL, 0); in iavf_enable_vlan_stripping()
1166 void iavf_disable_vlan_stripping(struct iavf_adapter *adapter) in iavf_disable_vlan_stripping() argument
1168 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_disable_vlan_stripping()
1170 dev_err(&adapter->pdev->dev, "Cannot disable stripping, command %d pending\n", in iavf_disable_vlan_stripping()
1171 adapter->current_op); in iavf_disable_vlan_stripping()
1174 adapter->current_op = VIRTCHNL_OP_DISABLE_VLAN_STRIPPING; in iavf_disable_vlan_stripping()
1175 adapter->aq_required &= ~IAVF_FLAG_AQ_DISABLE_VLAN_STRIPPING; in iavf_disable_vlan_stripping()
1176 iavf_send_pf_msg(adapter, VIRTCHNL_OP_DISABLE_VLAN_STRIPPING, NULL, 0); in iavf_disable_vlan_stripping()
1203 iavf_set_vc_offload_ethertype(struct iavf_adapter *adapter, in iavf_set_vc_offload_ethertype() argument
1215 &adapter->vlan_v2_caps.offloads.stripping_support; in iavf_set_vc_offload_ethertype()
1220 &adapter->vlan_v2_caps.offloads.insertion_support; in iavf_set_vc_offload_ethertype()
1223 …dev_err(&adapter->pdev->dev, "Invalid opcode %d for setting virtchnl ethertype to enable/disable V… in iavf_set_vc_offload_ethertype()
1236 dev_dbg(&adapter->pdev->dev, "opcode %d unsupported for VLAN TPID 0x%04x\n", in iavf_set_vc_offload_ethertype()
1251 iavf_clear_offload_v2_aq_required(struct iavf_adapter *adapter, u16 tpid, in iavf_clear_offload_v2_aq_required() argument
1257 adapter->aq_required &= in iavf_clear_offload_v2_aq_required()
1260 adapter->aq_required &= in iavf_clear_offload_v2_aq_required()
1265 adapter->aq_required &= in iavf_clear_offload_v2_aq_required()
1268 adapter->aq_required &= in iavf_clear_offload_v2_aq_required()
1273 adapter->aq_required &= in iavf_clear_offload_v2_aq_required()
1276 adapter->aq_required &= in iavf_clear_offload_v2_aq_required()
1281 adapter->aq_required &= in iavf_clear_offload_v2_aq_required()
1284 adapter->aq_required &= in iavf_clear_offload_v2_aq_required()
1288 …dev_err(&adapter->pdev->dev, "Unsupported opcode %d specified for clearing aq_required bits for VI… in iavf_clear_offload_v2_aq_required()
1300 iavf_send_vlan_offload_v2(struct iavf_adapter *adapter, u16 tpid, in iavf_send_vlan_offload_v2() argument
1306 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_send_vlan_offload_v2()
1308 dev_err(&adapter->pdev->dev, "Cannot send %d, command %d pending\n", in iavf_send_vlan_offload_v2()
1309 offload_op, adapter->current_op); in iavf_send_vlan_offload_v2()
1313 adapter->current_op = offload_op; in iavf_send_vlan_offload_v2()
1319 msg->vport_id = adapter->vsi_res->vsi_id; in iavf_send_vlan_offload_v2()
1322 iavf_clear_offload_v2_aq_required(adapter, tpid, offload_op); in iavf_send_vlan_offload_v2()
1325 if (!iavf_set_vc_offload_ethertype(adapter, msg, tpid, offload_op)) in iavf_send_vlan_offload_v2()
1326 iavf_send_pf_msg(adapter, offload_op, (u8 *)msg, len); in iavf_send_vlan_offload_v2()
1328 adapter->current_op = VIRTCHNL_OP_UNKNOWN; in iavf_send_vlan_offload_v2()
1338 void iavf_enable_vlan_stripping_v2(struct iavf_adapter *adapter, u16 tpid) in iavf_enable_vlan_stripping_v2() argument
1340 iavf_send_vlan_offload_v2(adapter, tpid, in iavf_enable_vlan_stripping_v2()
1349 void iavf_disable_vlan_stripping_v2(struct iavf_adapter *adapter, u16 tpid) in iavf_disable_vlan_stripping_v2() argument
1351 iavf_send_vlan_offload_v2(adapter, tpid, in iavf_disable_vlan_stripping_v2()
1360 void iavf_enable_vlan_insertion_v2(struct iavf_adapter *adapter, u16 tpid) in iavf_enable_vlan_insertion_v2() argument
1362 iavf_send_vlan_offload_v2(adapter, tpid, in iavf_enable_vlan_insertion_v2()
1371 void iavf_disable_vlan_insertion_v2(struct iavf_adapter *adapter, u16 tpid) in iavf_disable_vlan_insertion_v2() argument
1373 iavf_send_vlan_offload_v2(adapter, tpid, in iavf_disable_vlan_insertion_v2()
1385 static void iavf_print_link_message(struct iavf_adapter *adapter) in iavf_print_link_message() argument
1387 struct net_device *netdev = adapter->netdev; in iavf_print_link_message()
1391 if (!adapter->link_up) { in iavf_print_link_message()
1400 if (ADV_LINK_SUPPORT(adapter)) { in iavf_print_link_message()
1401 link_speed_mbps = adapter->link_speed_mbps; in iavf_print_link_message()
1405 switch (adapter->link_speed) { in iavf_print_link_message()
1462 iavf_get_vpe_link_status(struct iavf_adapter *adapter, in iavf_get_vpe_link_status() argument
1465 if (ADV_LINK_SUPPORT(adapter)) in iavf_get_vpe_link_status()
1479 iavf_set_adapter_link_speed_from_vpe(struct iavf_adapter *adapter, in iavf_set_adapter_link_speed_from_vpe() argument
1482 if (ADV_LINK_SUPPORT(adapter)) in iavf_set_adapter_link_speed_from_vpe()
1483 adapter->link_speed_mbps = in iavf_set_adapter_link_speed_from_vpe()
1486 adapter->link_speed = vpe->event_data.link_event.link_speed; in iavf_set_adapter_link_speed_from_vpe()
1496 void iavf_enable_channels(struct iavf_adapter *adapter) in iavf_enable_channels() argument
1502 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_enable_channels()
1504 dev_err(&adapter->pdev->dev, "Cannot configure mqprio, command %d pending\n", in iavf_enable_channels()
1505 adapter->current_op); in iavf_enable_channels()
1509 len = virtchnl_struct_size(vti, list, adapter->num_tc); in iavf_enable_channels()
1513 vti->num_tc = adapter->num_tc; in iavf_enable_channels()
1515 vti->list[i].count = adapter->ch_config.ch_info[i].count; in iavf_enable_channels()
1516 vti->list[i].offset = adapter->ch_config.ch_info[i].offset; in iavf_enable_channels()
1519 adapter->ch_config.ch_info[i].max_tx_rate; in iavf_enable_channels()
1522 adapter->ch_config.state = __IAVF_TC_RUNNING; in iavf_enable_channels()
1523 adapter->flags |= IAVF_FLAG_REINIT_ITR_NEEDED; in iavf_enable_channels()
1524 adapter->current_op = VIRTCHNL_OP_ENABLE_CHANNELS; in iavf_enable_channels()
1525 adapter->aq_required &= ~IAVF_FLAG_AQ_ENABLE_CHANNELS; in iavf_enable_channels()
1526 iavf_send_pf_msg(adapter, VIRTCHNL_OP_ENABLE_CHANNELS, (u8 *)vti, len); in iavf_enable_channels()
1536 void iavf_disable_channels(struct iavf_adapter *adapter) in iavf_disable_channels() argument
1538 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_disable_channels()
1540 dev_err(&adapter->pdev->dev, "Cannot configure mqprio, command %d pending\n", in iavf_disable_channels()
1541 adapter->current_op); in iavf_disable_channels()
1545 adapter->ch_config.state = __IAVF_TC_INVALID; in iavf_disable_channels()
1546 adapter->flags |= IAVF_FLAG_REINIT_ITR_NEEDED; in iavf_disable_channels()
1547 adapter->current_op = VIRTCHNL_OP_DISABLE_CHANNELS; in iavf_disable_channels()
1548 adapter->aq_required &= ~IAVF_FLAG_AQ_DISABLE_CHANNELS; in iavf_disable_channels()
1549 iavf_send_pf_msg(adapter, VIRTCHNL_OP_DISABLE_CHANNELS, NULL, 0); in iavf_disable_channels()
1559 static void iavf_print_cloud_filter(struct iavf_adapter *adapter, in iavf_print_cloud_filter() argument
1564 …dev_info(&adapter->pdev->dev, "dst_mac: %pM src_mac: %pM vlan_id: %hu dst_ip: %pI4 src_ip %pI4 dst… in iavf_print_cloud_filter()
1574 …dev_info(&adapter->pdev->dev, "dst_mac: %pM src_mac: %pM vlan_id: %hu dst_ip: %pI6 src_ip %pI6 dst… in iavf_print_cloud_filter()
1593 void iavf_add_cloud_filter(struct iavf_adapter *adapter) in iavf_add_cloud_filter() argument
1599 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_add_cloud_filter()
1601 dev_err(&adapter->pdev->dev, "Cannot add cloud filter, command %d pending\n", in iavf_add_cloud_filter()
1602 adapter->current_op); in iavf_add_cloud_filter()
1605 list_for_each_entry(cf, &adapter->cloud_filter_list, list) { in iavf_add_cloud_filter()
1612 adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_CLOUD_FILTER; in iavf_add_cloud_filter()
1615 adapter->current_op = VIRTCHNL_OP_ADD_CLOUD_FILTER; in iavf_add_cloud_filter()
1622 list_for_each_entry(cf, &adapter->cloud_filter_list, list) { in iavf_add_cloud_filter()
1627 iavf_send_pf_msg(adapter, VIRTCHNL_OP_ADD_CLOUD_FILTER, in iavf_add_cloud_filter()
1641 void iavf_del_cloud_filter(struct iavf_adapter *adapter) in iavf_del_cloud_filter() argument
1647 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_del_cloud_filter()
1649 dev_err(&adapter->pdev->dev, "Cannot remove cloud filter, command %d pending\n", in iavf_del_cloud_filter()
1650 adapter->current_op); in iavf_del_cloud_filter()
1653 list_for_each_entry(cf, &adapter->cloud_filter_list, list) { in iavf_del_cloud_filter()
1660 adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_CLOUD_FILTER; in iavf_del_cloud_filter()
1663 adapter->current_op = VIRTCHNL_OP_DEL_CLOUD_FILTER; in iavf_del_cloud_filter()
1670 list_for_each_entry_safe(cf, cftmp, &adapter->cloud_filter_list, list) { in iavf_del_cloud_filter()
1675 iavf_send_pf_msg(adapter, VIRTCHNL_OP_DEL_CLOUD_FILTER, in iavf_del_cloud_filter()
1689 void iavf_add_fdir_filter(struct iavf_adapter *adapter) in iavf_add_fdir_filter() argument
1696 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_add_fdir_filter()
1698 dev_err(&adapter->pdev->dev, "Cannot add Flow Director filter, command %d pending\n", in iavf_add_fdir_filter()
1699 adapter->current_op); in iavf_add_fdir_filter()
1708 spin_lock_bh(&adapter->fdir_fltr_lock); in iavf_add_fdir_filter()
1709 list_for_each_entry(fdir, &adapter->fdir_list_head, list) { in iavf_add_fdir_filter()
1717 spin_unlock_bh(&adapter->fdir_fltr_lock); in iavf_add_fdir_filter()
1723 adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_FDIR_FILTER; in iavf_add_fdir_filter()
1727 adapter->current_op = VIRTCHNL_OP_ADD_FDIR_FILTER; in iavf_add_fdir_filter()
1728 iavf_send_pf_msg(adapter, VIRTCHNL_OP_ADD_FDIR_FILTER, (u8 *)f, len); in iavf_add_fdir_filter()
1739 void iavf_del_fdir_filter(struct iavf_adapter *adapter) in iavf_del_fdir_filter() argument
1746 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_del_fdir_filter()
1748 dev_err(&adapter->pdev->dev, "Cannot remove Flow Director filter, command %d pending\n", in iavf_del_fdir_filter()
1749 adapter->current_op); in iavf_del_fdir_filter()
1755 spin_lock_bh(&adapter->fdir_fltr_lock); in iavf_del_fdir_filter()
1756 list_for_each_entry(fdir, &adapter->fdir_list_head, list) { in iavf_del_fdir_filter()
1771 spin_unlock_bh(&adapter->fdir_fltr_lock); in iavf_del_fdir_filter()
1774 adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_FDIR_FILTER; in iavf_del_fdir_filter()
1778 adapter->current_op = VIRTCHNL_OP_DEL_FDIR_FILTER; in iavf_del_fdir_filter()
1779 iavf_send_pf_msg(adapter, VIRTCHNL_OP_DEL_FDIR_FILTER, (u8 *)&f, len); in iavf_del_fdir_filter()
1789 void iavf_add_adv_rss_cfg(struct iavf_adapter *adapter) in iavf_add_adv_rss_cfg() argument
1796 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_add_adv_rss_cfg()
1798 dev_err(&adapter->pdev->dev, "Cannot add RSS configuration, command %d pending\n", in iavf_add_adv_rss_cfg()
1799 adapter->current_op); in iavf_add_adv_rss_cfg()
1808 spin_lock_bh(&adapter->adv_rss_lock); in iavf_add_adv_rss_cfg()
1809 list_for_each_entry(rss, &adapter->adv_rss_list_head, list) { in iavf_add_adv_rss_cfg()
1814 iavf_print_adv_rss_cfg(adapter, rss, in iavf_add_adv_rss_cfg()
1820 spin_unlock_bh(&adapter->adv_rss_lock); in iavf_add_adv_rss_cfg()
1823 adapter->current_op = VIRTCHNL_OP_ADD_RSS_CFG; in iavf_add_adv_rss_cfg()
1824 iavf_send_pf_msg(adapter, VIRTCHNL_OP_ADD_RSS_CFG, in iavf_add_adv_rss_cfg()
1827 adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_ADV_RSS_CFG; in iavf_add_adv_rss_cfg()
1840 void iavf_del_adv_rss_cfg(struct iavf_adapter *adapter) in iavf_del_adv_rss_cfg() argument
1847 if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) { in iavf_del_adv_rss_cfg()
1849 dev_err(&adapter->pdev->dev, "Cannot remove RSS configuration, command %d pending\n", in iavf_del_adv_rss_cfg()
1850 adapter->current_op); in iavf_del_adv_rss_cfg()
1859 spin_lock_bh(&adapter->adv_rss_lock); in iavf_del_adv_rss_cfg()
1860 list_for_each_entry(rss, &adapter->adv_rss_list_head, list) { in iavf_del_adv_rss_cfg()
1868 spin_unlock_bh(&adapter->adv_rss_lock); in iavf_del_adv_rss_cfg()
1871 adapter->current_op = VIRTCHNL_OP_DEL_RSS_CFG; in iavf_del_adv_rss_cfg()
1872 iavf_send_pf_msg(adapter, VIRTCHNL_OP_DEL_RSS_CFG, in iavf_del_adv_rss_cfg()
1875 adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_ADV_RSS_CFG; in iavf_del_adv_rss_cfg()
1887 int iavf_request_reset(struct iavf_adapter *adapter) in iavf_request_reset() argument
1891 err = iavf_send_pf_msg(adapter, VIRTCHNL_OP_RESET_VF, NULL, 0); in iavf_request_reset()
1892 adapter->current_op = VIRTCHNL_OP_UNKNOWN; in iavf_request_reset()
1919 static void iavf_activate_fdir_filters(struct iavf_adapter *adapter) in iavf_activate_fdir_filters() argument
1924 spin_lock_bh(&adapter->fdir_fltr_lock); in iavf_activate_fdir_filters()
1925 list_for_each_entry_safe(f, ftmp, &adapter->fdir_list_head, list) { in iavf_activate_fdir_filters()
1945 adapter->fdir_active_fltr--; in iavf_activate_fdir_filters()
1948 spin_unlock_bh(&adapter->fdir_fltr_lock); in iavf_activate_fdir_filters()
1951 adapter->aq_required |= IAVF_FLAG_AQ_ADD_FDIR_FILTER; in iavf_activate_fdir_filters()
1966 void iavf_virtchnl_completion(struct iavf_adapter *adapter, in iavf_virtchnl_completion() argument
1970 struct net_device *netdev = adapter->netdev; in iavf_virtchnl_completion()
1975 bool link_up = iavf_get_vpe_link_status(adapter, vpe); in iavf_virtchnl_completion()
1979 iavf_set_adapter_link_speed_from_vpe(adapter, vpe); in iavf_virtchnl_completion()
1982 if (adapter->link_up == link_up) in iavf_virtchnl_completion()
1993 if (adapter->state != __IAVF_RUNNING) in iavf_virtchnl_completion()
2000 if (adapter->flags & in iavf_virtchnl_completion()
2005 adapter->link_up = link_up; in iavf_virtchnl_completion()
2013 iavf_print_link_message(adapter); in iavf_virtchnl_completion()
2016 dev_info(&adapter->pdev->dev, "Reset indication received from the PF\n"); in iavf_virtchnl_completion()
2017 if (!(adapter->flags & IAVF_FLAG_RESET_PENDING)) { in iavf_virtchnl_completion()
2018 dev_info(&adapter->pdev->dev, "Scheduling reset task\n"); in iavf_virtchnl_completion()
2019 iavf_schedule_reset(adapter, IAVF_FLAG_RESET_PENDING); in iavf_virtchnl_completion()
2023 dev_err(&adapter->pdev->dev, "Unknown event %d from PF\n", in iavf_virtchnl_completion()
2032 dev_err(&adapter->pdev->dev, "Failed to add VLAN filter, error %s\n", in iavf_virtchnl_completion()
2033 iavf_stat_str(&adapter->hw, v_retval)); in iavf_virtchnl_completion()
2036 dev_err(&adapter->pdev->dev, "Failed to add MAC filter, error %s\n", in iavf_virtchnl_completion()
2037 iavf_stat_str(&adapter->hw, v_retval)); in iavf_virtchnl_completion()
2038 iavf_mac_add_reject(adapter); in iavf_virtchnl_completion()
2040 ether_addr_copy(adapter->hw.mac.addr, netdev->dev_addr); in iavf_virtchnl_completion()
2041 wake_up(&adapter->vc_waitqueue); in iavf_virtchnl_completion()
2044 dev_err(&adapter->pdev->dev, "Failed to delete VLAN filter, error %s\n", in iavf_virtchnl_completion()
2045 iavf_stat_str(&adapter->hw, v_retval)); in iavf_virtchnl_completion()
2048 dev_err(&adapter->pdev->dev, "Failed to delete MAC filter, error %s\n", in iavf_virtchnl_completion()
2049 iavf_stat_str(&adapter->hw, v_retval)); in iavf_virtchnl_completion()
2052 dev_err(&adapter->pdev->dev, "Failed to configure queue channels, error %s\n", in iavf_virtchnl_completion()
2053 iavf_stat_str(&adapter->hw, v_retval)); in iavf_virtchnl_completion()
2054 adapter->flags &= ~IAVF_FLAG_REINIT_ITR_NEEDED; in iavf_virtchnl_completion()
2055 adapter->ch_config.state = __IAVF_TC_INVALID; in iavf_virtchnl_completion()
2060 dev_err(&adapter->pdev->dev, "Failed to disable queue channels, error %s\n", in iavf_virtchnl_completion()
2061 iavf_stat_str(&adapter->hw, v_retval)); in iavf_virtchnl_completion()
2062 adapter->flags &= ~IAVF_FLAG_REINIT_ITR_NEEDED; in iavf_virtchnl_completion()
2063 adapter->ch_config.state = __IAVF_TC_RUNNING; in iavf_virtchnl_completion()
2070 &adapter->cloud_filter_list, in iavf_virtchnl_completion()
2074 dev_info(&adapter->pdev->dev, "Failed to add cloud filter, error %s\n", in iavf_virtchnl_completion()
2075 iavf_stat_str(&adapter->hw, in iavf_virtchnl_completion()
2077 iavf_print_cloud_filter(adapter, in iavf_virtchnl_completion()
2081 adapter->num_cloud_filters--; in iavf_virtchnl_completion()
2089 list_for_each_entry(cf, &adapter->cloud_filter_list, in iavf_virtchnl_completion()
2093 dev_info(&adapter->pdev->dev, "Failed to del cloud filter, error %s\n", in iavf_virtchnl_completion()
2094 iavf_stat_str(&adapter->hw, in iavf_virtchnl_completion()
2096 iavf_print_cloud_filter(adapter, in iavf_virtchnl_completion()
2105 spin_lock_bh(&adapter->fdir_fltr_lock); in iavf_virtchnl_completion()
2107 &adapter->fdir_list_head, in iavf_virtchnl_completion()
2110 dev_info(&adapter->pdev->dev, "Failed to add Flow Director filter, error %s\n", in iavf_virtchnl_completion()
2111 iavf_stat_str(&adapter->hw, in iavf_virtchnl_completion()
2113 iavf_print_fdir_fltr(adapter, fdir); in iavf_virtchnl_completion()
2115 dev_err(&adapter->pdev->dev, in iavf_virtchnl_completion()
2119 adapter->fdir_active_fltr--; in iavf_virtchnl_completion()
2122 spin_unlock_bh(&adapter->fdir_fltr_lock); in iavf_virtchnl_completion()
2128 spin_lock_bh(&adapter->fdir_fltr_lock); in iavf_virtchnl_completion()
2129 list_for_each_entry(fdir, &adapter->fdir_list_head, in iavf_virtchnl_completion()
2134 dev_info(&adapter->pdev->dev, "Failed to del Flow Director filter, error %s\n", in iavf_virtchnl_completion()
2135 iavf_stat_str(&adapter->hw, in iavf_virtchnl_completion()
2137 iavf_print_fdir_fltr(adapter, fdir); in iavf_virtchnl_completion()
2140 spin_unlock_bh(&adapter->fdir_fltr_lock); in iavf_virtchnl_completion()
2146 spin_lock_bh(&adapter->adv_rss_lock); in iavf_virtchnl_completion()
2148 &adapter->adv_rss_list_head, in iavf_virtchnl_completion()
2151 iavf_print_adv_rss_cfg(adapter, rss, in iavf_virtchnl_completion()
2158 spin_unlock_bh(&adapter->adv_rss_lock); in iavf_virtchnl_completion()
2164 spin_lock_bh(&adapter->adv_rss_lock); in iavf_virtchnl_completion()
2165 list_for_each_entry(rss, &adapter->adv_rss_list_head, in iavf_virtchnl_completion()
2169 dev_err(&adapter->pdev->dev, "Failed to delete RSS configuration, error %s\n", in iavf_virtchnl_completion()
2170 iavf_stat_str(&adapter->hw, in iavf_virtchnl_completion()
2174 spin_unlock_bh(&adapter->adv_rss_lock); in iavf_virtchnl_completion()
2178 …dev_warn(&adapter->pdev->dev, "Changing VLAN Stripping is not allowed when Port VLAN is configured… in iavf_virtchnl_completion()
2185 …dev_warn(&adapter->pdev->dev, "Changing VLAN Stripping is not allowed when Port VLAN is configured… in iavf_virtchnl_completion()
2192 iavf_vlan_add_reject(adapter); in iavf_virtchnl_completion()
2193 dev_warn(&adapter->pdev->dev, "Failed to add VLAN filter, error %s\n", in iavf_virtchnl_completion()
2194 iavf_stat_str(&adapter->hw, v_retval)); in iavf_virtchnl_completion()
2197 dev_err(&adapter->pdev->dev, "PF returned error %d (%s) to our request %d\n", in iavf_virtchnl_completion()
2198 v_retval, iavf_stat_str(&adapter->hw, v_retval), in iavf_virtchnl_completion()
2205 iavf_mac_add_ok(adapter); in iavf_virtchnl_completion()
2206 if (!ether_addr_equal(netdev->dev_addr, adapter->hw.mac.addr)) in iavf_virtchnl_completion()
2208 adapter->hw.mac.addr)) { in iavf_virtchnl_completion()
2210 eth_hw_addr_set(netdev, adapter->hw.mac.addr); in iavf_virtchnl_completion()
2213 wake_up(&adapter->vc_waitqueue); in iavf_virtchnl_completion()
2229 adapter->current_stats = *stats; in iavf_virtchnl_completion()
2235 memcpy(adapter->vf_res, msg, min(msglen, len)); in iavf_virtchnl_completion()
2236 iavf_validate_num_queues(adapter); in iavf_virtchnl_completion()
2237 iavf_vf_parse_hw_config(&adapter->hw, adapter->vf_res); in iavf_virtchnl_completion()
2238 if (is_zero_ether_addr(adapter->hw.mac.addr)) { in iavf_virtchnl_completion()
2240 ether_addr_copy(adapter->hw.mac.addr, netdev->dev_addr); in iavf_virtchnl_completion()
2245 adapter->hw.mac.addr); in iavf_virtchnl_completion()
2248 spin_lock_bh(&adapter->mac_vlan_list_lock); in iavf_virtchnl_completion()
2249 iavf_add_filter(adapter, adapter->hw.mac.addr); in iavf_virtchnl_completion()
2251 if (VLAN_ALLOWED(adapter)) { in iavf_virtchnl_completion()
2252 if (!list_empty(&adapter->vlan_filter_list)) { in iavf_virtchnl_completion()
2257 &adapter->vlan_filter_list, in iavf_virtchnl_completion()
2261 adapter->aq_required |= in iavf_virtchnl_completion()
2266 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_virtchnl_completion()
2268 iavf_activate_fdir_filters(adapter); in iavf_virtchnl_completion()
2270 iavf_parse_vf_resource_msg(adapter); in iavf_virtchnl_completion()
2276 if (VLAN_V2_ALLOWED(adapter)) in iavf_virtchnl_completion()
2289 memcpy(&adapter->vlan_v2_caps, msg, in iavf_virtchnl_completion()
2291 sizeof(adapter->vlan_v2_caps))); in iavf_virtchnl_completion()
2293 iavf_process_config(adapter); in iavf_virtchnl_completion()
2294 adapter->flags |= IAVF_FLAG_SETUP_NETDEV_FEATURES; in iavf_virtchnl_completion()
2295 iavf_schedule_finish_config(adapter); in iavf_virtchnl_completion()
2297 iavf_set_queue_vlan_tag_loc(adapter); in iavf_virtchnl_completion()
2300 adapter->hw.mac.addr); in iavf_virtchnl_completion()
2302 spin_lock_bh(&adapter->mac_vlan_list_lock); in iavf_virtchnl_completion()
2305 list_for_each_entry(f, &adapter->mac_filter_list, list) { in iavf_virtchnl_completion()
2309 adapter->hw.mac.addr); in iavf_virtchnl_completion()
2318 if (VLAN_FILTERING_ALLOWED(adapter)) { in iavf_virtchnl_completion()
2321 if (!list_empty(&adapter->vlan_filter_list)) { in iavf_virtchnl_completion()
2323 &adapter->vlan_filter_list, in iavf_virtchnl_completion()
2331 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_virtchnl_completion()
2334 eth_hw_addr_set(netdev, adapter->hw.mac.addr); in iavf_virtchnl_completion()
2337 adapter->aq_required |= IAVF_FLAG_AQ_ADD_MAC_FILTER | in iavf_virtchnl_completion()
2343 iavf_irq_enable(adapter, true); in iavf_virtchnl_completion()
2344 wake_up(&adapter->reset_waitqueue); in iavf_virtchnl_completion()
2345 adapter->flags &= ~IAVF_FLAG_QUEUES_DISABLED; in iavf_virtchnl_completion()
2348 iavf_free_all_tx_resources(adapter); in iavf_virtchnl_completion()
2349 iavf_free_all_rx_resources(adapter); in iavf_virtchnl_completion()
2350 if (adapter->state == __IAVF_DOWN_PENDING) { in iavf_virtchnl_completion()
2351 iavf_change_state(adapter, __IAVF_DOWN); in iavf_virtchnl_completion()
2352 wake_up(&adapter->down_waitqueue); in iavf_virtchnl_completion()
2361 if (v_opcode != adapter->current_op) in iavf_virtchnl_completion()
2369 if (msglen && CLIENT_ENABLED(adapter)) in iavf_virtchnl_completion()
2370 iavf_notify_client_message(&adapter->vsi, msg, msglen); in iavf_virtchnl_completion()
2374 adapter->client_pending &= in iavf_virtchnl_completion()
2381 adapter->hena = vrh->hena; in iavf_virtchnl_completion()
2383 dev_warn(&adapter->pdev->dev, in iavf_virtchnl_completion()
2391 if (vfres->num_queue_pairs != adapter->num_req_queues) { in iavf_virtchnl_completion()
2392 dev_info(&adapter->pdev->dev, in iavf_virtchnl_completion()
2394 adapter->num_req_queues, in iavf_virtchnl_completion()
2396 adapter->num_req_queues = 0; in iavf_virtchnl_completion()
2397 adapter->flags &= ~IAVF_FLAG_REINIT_ITR_NEEDED; in iavf_virtchnl_completion()
2404 list_for_each_entry(cf, &adapter->cloud_filter_list, list) { in iavf_virtchnl_completion()
2413 list_for_each_entry_safe(cf, cftmp, &adapter->cloud_filter_list, in iavf_virtchnl_completion()
2419 adapter->num_cloud_filters--; in iavf_virtchnl_completion()
2428 spin_lock_bh(&adapter->fdir_fltr_lock); in iavf_virtchnl_completion()
2430 &adapter->fdir_list_head, in iavf_virtchnl_completion()
2434 dev_info(&adapter->pdev->dev, "Flow Director filter with location %u is added\n", in iavf_virtchnl_completion()
2439 dev_info(&adapter->pdev->dev, "Failed to add Flow Director filter with status: %d\n", in iavf_virtchnl_completion()
2441 iavf_print_fdir_fltr(adapter, fdir); in iavf_virtchnl_completion()
2444 adapter->fdir_active_fltr--; in iavf_virtchnl_completion()
2448 spin_unlock_bh(&adapter->fdir_fltr_lock); in iavf_virtchnl_completion()
2455 spin_lock_bh(&adapter->fdir_fltr_lock); in iavf_virtchnl_completion()
2456 list_for_each_entry_safe(fdir, fdir_tmp, &adapter->fdir_list_head, in iavf_virtchnl_completion()
2462 dev_info(&adapter->pdev->dev, "Flow Director filter with location %u is deleted\n", in iavf_virtchnl_completion()
2466 adapter->fdir_active_fltr--; in iavf_virtchnl_completion()
2469 dev_info(&adapter->pdev->dev, "Failed to delete Flow Director filter with status: %d\n", in iavf_virtchnl_completion()
2471 iavf_print_fdir_fltr(adapter, fdir); in iavf_virtchnl_completion()
2480 dev_info(&adapter->pdev->dev, "Failed to disable Flow Director filter with status: %d\n", in iavf_virtchnl_completion()
2482 iavf_print_fdir_fltr(adapter, fdir); in iavf_virtchnl_completion()
2486 spin_unlock_bh(&adapter->fdir_fltr_lock); in iavf_virtchnl_completion()
2492 spin_lock_bh(&adapter->adv_rss_lock); in iavf_virtchnl_completion()
2493 list_for_each_entry(rss, &adapter->adv_rss_list_head, list) { in iavf_virtchnl_completion()
2495 iavf_print_adv_rss_cfg(adapter, rss, in iavf_virtchnl_completion()
2501 spin_unlock_bh(&adapter->adv_rss_lock); in iavf_virtchnl_completion()
2507 spin_lock_bh(&adapter->adv_rss_lock); in iavf_virtchnl_completion()
2509 &adapter->adv_rss_list_head, list) { in iavf_virtchnl_completion()
2515 spin_unlock_bh(&adapter->adv_rss_lock); in iavf_virtchnl_completion()
2521 spin_lock_bh(&adapter->mac_vlan_list_lock); in iavf_virtchnl_completion()
2522 list_for_each_entry(f, &adapter->vlan_filter_list, list) { in iavf_virtchnl_completion()
2526 spin_unlock_bh(&adapter->mac_vlan_list_lock); in iavf_virtchnl_completion()
2544 if (adapter->current_op && (v_opcode != adapter->current_op)) in iavf_virtchnl_completion()
2545 dev_warn(&adapter->pdev->dev, "Expected response %d from PF, received %d\n", in iavf_virtchnl_completion()
2546 adapter->current_op, v_opcode); in iavf_virtchnl_completion()
2549 adapter->current_op = VIRTCHNL_OP_UNKNOWN; in iavf_virtchnl_completion()