Lines Matching refs:adapter
33 static int qlcnic_sriov_pf_set_vport_info(struct qlcnic_adapter *adapter, in qlcnic_sriov_pf_set_vport_info() argument
40 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO)) in qlcnic_sriov_pf_set_vport_info()
59 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_sriov_pf_set_vport_info()
61 dev_err(&adapter->pdev->dev, in qlcnic_sriov_pf_set_vport_info()
68 static int qlcnic_sriov_pf_cal_res_limit(struct qlcnic_adapter *adapter, in qlcnic_sriov_pf_cal_res_limit() argument
71 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_pf_cal_res_limit()
78 vpid = qlcnic_sriov_pf_get_vport_handle(adapter, func); in qlcnic_sriov_pf_cal_res_limit()
87 if (qlcnic_83xx_pf_check(adapter)) in qlcnic_sriov_pf_cal_res_limit()
92 if (adapter->ahw->pci_func == func) { in qlcnic_sriov_pf_cal_res_limit()
106 id = qlcnic_sriov_func_to_index(adapter, func); in qlcnic_sriov_pf_cal_res_limit()
130 ret = qlcnic_sriov_pf_set_vport_info(adapter, info, vpid); in qlcnic_sriov_pf_cal_res_limit()
137 static void qlcnic_sriov_pf_set_ff_max_res(struct qlcnic_adapter *adapter, in qlcnic_sriov_pf_set_ff_max_res() argument
140 struct qlcnic_resources *ff_max = &adapter->ahw->sriov->ff_max; in qlcnic_sriov_pf_set_ff_max_res()
156 static void qlcnic_sriov_set_vf_max_vlan(struct qlcnic_adapter *adapter, in qlcnic_sriov_set_vf_max_vlan() argument
159 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_set_vf_max_vlan()
168 if (qlcnic_83xx_pf_check(adapter)) in qlcnic_sriov_set_vf_max_vlan()
171 netdev_info(adapter->netdev, "Max Guest VLANs supported per VF = %d\n", in qlcnic_sriov_set_vf_max_vlan()
175 static int qlcnic_sriov_get_pf_info(struct qlcnic_adapter *adapter, in qlcnic_sriov_get_pf_info() argument
181 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_NIC_INFO)) in qlcnic_sriov_get_pf_info()
185 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_sriov_get_pf_info()
187 dev_err(&adapter->pdev->dev, in qlcnic_sriov_get_pf_info()
208 qlcnic_sriov_set_vf_max_vlan(adapter, npar_info); in qlcnic_sriov_get_pf_info()
209 qlcnic_sriov_pf_set_ff_max_res(adapter, npar_info); in qlcnic_sriov_get_pf_info()
210 dev_info(&adapter->pdev->dev, in qlcnic_sriov_get_pf_info()
233 static void qlcnic_sriov_pf_reset_vport_handle(struct qlcnic_adapter *adapter, in qlcnic_sriov_pf_reset_vport_handle() argument
236 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_pf_reset_vport_handle()
240 if (adapter->ahw->pci_func == func) { in qlcnic_sriov_pf_reset_vport_handle()
243 index = qlcnic_sriov_func_to_index(adapter, func); in qlcnic_sriov_pf_reset_vport_handle()
251 static void qlcnic_sriov_pf_set_vport_handle(struct qlcnic_adapter *adapter, in qlcnic_sriov_pf_set_vport_handle() argument
254 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_pf_set_vport_handle()
258 if (adapter->ahw->pci_func == func) { in qlcnic_sriov_pf_set_vport_handle()
261 index = qlcnic_sriov_func_to_index(adapter, func); in qlcnic_sriov_pf_set_vport_handle()
269 static int qlcnic_sriov_pf_get_vport_handle(struct qlcnic_adapter *adapter, in qlcnic_sriov_pf_get_vport_handle() argument
272 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_pf_get_vport_handle()
276 if (adapter->ahw->pci_func == func) { in qlcnic_sriov_pf_get_vport_handle()
279 index = qlcnic_sriov_func_to_index(adapter, func); in qlcnic_sriov_pf_get_vport_handle()
289 static int qlcnic_sriov_pf_config_vport(struct qlcnic_adapter *adapter, in qlcnic_sriov_pf_config_vport() argument
296 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_VPORT)) in qlcnic_sriov_pf_config_vport()
302 vpid = qlcnic_sriov_pf_get_vport_handle(adapter, func); in qlcnic_sriov_pf_config_vport()
310 ret = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_sriov_pf_config_vport()
312 dev_err(&adapter->pdev->dev, in qlcnic_sriov_pf_config_vport()
320 qlcnic_sriov_pf_set_vport_handle(adapter, vpid, func); in qlcnic_sriov_pf_config_vport()
322 qlcnic_sriov_pf_reset_vport_handle(adapter, func); in qlcnic_sriov_pf_config_vport()
330 static int qlcnic_sriov_pf_cfg_vlan_filtering(struct qlcnic_adapter *adapter, in qlcnic_sriov_pf_cfg_vlan_filtering() argument
336 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO); in qlcnic_sriov_pf_cfg_vlan_filtering()
342 adapter->flags |= QLCNIC_VLAN_FILTERING; in qlcnic_sriov_pf_cfg_vlan_filtering()
344 if (qlcnic_84xx_check(adapter)) in qlcnic_sriov_pf_cfg_vlan_filtering()
347 adapter->flags &= ~QLCNIC_VLAN_FILTERING; in qlcnic_sriov_pf_cfg_vlan_filtering()
350 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_sriov_pf_cfg_vlan_filtering()
352 dev_err(&adapter->pdev->dev, in qlcnic_sriov_pf_cfg_vlan_filtering()
360 static int qlcnic_sriov_pf_cfg_flood(struct qlcnic_adapter *adapter) in qlcnic_sriov_pf_cfg_flood() argument
365 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO); in qlcnic_sriov_pf_cfg_flood()
371 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_sriov_pf_cfg_flood()
373 dev_err(&adapter->pdev->dev, in qlcnic_sriov_pf_cfg_flood()
381 static int qlcnic_sriov_pf_cfg_eswitch(struct qlcnic_adapter *adapter, in qlcnic_sriov_pf_cfg_eswitch() argument
387 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_TOGGLE_ESWITCH)) in qlcnic_sriov_pf_cfg_eswitch()
395 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_sriov_pf_cfg_eswitch()
398 dev_err(&adapter->pdev->dev, in qlcnic_sriov_pf_cfg_eswitch()
407 static void qlcnic_sriov_pf_del_flr_queue(struct qlcnic_adapter *adapter) in qlcnic_sriov_pf_del_flr_queue() argument
409 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_pf_del_flr_queue()
419 static int qlcnic_sriov_pf_create_flr_queue(struct qlcnic_adapter *adapter) in qlcnic_sriov_pf_create_flr_queue() argument
421 struct qlcnic_back_channel *bc = &adapter->ahw->sriov->bc; in qlcnic_sriov_pf_create_flr_queue()
426 dev_err(&adapter->pdev->dev, "Cannot create FLR workqueue\n"); in qlcnic_sriov_pf_create_flr_queue()
434 void qlcnic_sriov_pf_cleanup(struct qlcnic_adapter *adapter) in qlcnic_sriov_pf_cleanup() argument
436 u8 func = adapter->ahw->pci_func; in qlcnic_sriov_pf_cleanup()
438 if (!qlcnic_sriov_enable_check(adapter)) in qlcnic_sriov_pf_cleanup()
441 qlcnic_sriov_pf_del_flr_queue(adapter); in qlcnic_sriov_pf_cleanup()
442 qlcnic_sriov_cfg_bc_intr(adapter, 0); in qlcnic_sriov_pf_cleanup()
443 qlcnic_sriov_pf_config_vport(adapter, 0, func); in qlcnic_sriov_pf_cleanup()
444 qlcnic_sriov_pf_cfg_eswitch(adapter, func, 0); in qlcnic_sriov_pf_cleanup()
445 qlcnic_sriov_pf_cfg_vlan_filtering(adapter, 0); in qlcnic_sriov_pf_cleanup()
446 __qlcnic_sriov_cleanup(adapter); in qlcnic_sriov_pf_cleanup()
447 adapter->ahw->op_mode = QLCNIC_MGMT_FUNC; in qlcnic_sriov_pf_cleanup()
448 clear_bit(__QLCNIC_SRIOV_ENABLE, &adapter->state); in qlcnic_sriov_pf_cleanup()
451 void qlcnic_sriov_pf_disable(struct qlcnic_adapter *adapter) in qlcnic_sriov_pf_disable() argument
453 if (!qlcnic_sriov_pf_check(adapter)) in qlcnic_sriov_pf_disable()
456 if (!qlcnic_sriov_enable_check(adapter)) in qlcnic_sriov_pf_disable()
459 pci_disable_sriov(adapter->pdev); in qlcnic_sriov_pf_disable()
460 netdev_info(adapter->netdev, in qlcnic_sriov_pf_disable()
462 adapter->portnum); in qlcnic_sriov_pf_disable()
465 static int qlcnic_pci_sriov_disable(struct qlcnic_adapter *adapter) in qlcnic_pci_sriov_disable() argument
467 struct net_device *netdev = adapter->netdev; in qlcnic_pci_sriov_disable()
469 if (pci_vfs_assigned(adapter->pdev)) { in qlcnic_pci_sriov_disable()
470 netdev_err(adapter->netdev, in qlcnic_pci_sriov_disable()
472 adapter->portnum); in qlcnic_pci_sriov_disable()
473 netdev_info(adapter->netdev, in qlcnic_pci_sriov_disable()
475 adapter->portnum); in qlcnic_pci_sriov_disable()
479 qlcnic_sriov_pf_disable(adapter); in qlcnic_pci_sriov_disable()
483 __qlcnic_down(adapter, netdev); in qlcnic_pci_sriov_disable()
485 qlcnic_sriov_free_vlans(adapter); in qlcnic_pci_sriov_disable()
487 qlcnic_sriov_pf_cleanup(adapter); in qlcnic_pci_sriov_disable()
492 if (qlcnic_83xx_configure_opmode(adapter)) { in qlcnic_pci_sriov_disable()
498 __qlcnic_up(adapter, netdev); in qlcnic_pci_sriov_disable()
504 static int qlcnic_sriov_pf_init(struct qlcnic_adapter *adapter) in qlcnic_sriov_pf_init() argument
506 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_sriov_pf_init()
511 if (!qlcnic_sriov_enable_check(adapter)) in qlcnic_sriov_pf_init()
514 err = qlcnic_sriov_pf_cfg_vlan_filtering(adapter, 1); in qlcnic_sriov_pf_init()
518 if (qlcnic_84xx_check(adapter)) { in qlcnic_sriov_pf_init()
519 err = qlcnic_sriov_pf_cfg_flood(adapter); in qlcnic_sriov_pf_init()
524 err = qlcnic_sriov_pf_cfg_eswitch(adapter, func, 1); in qlcnic_sriov_pf_init()
528 err = qlcnic_sriov_pf_config_vport(adapter, 1, func); in qlcnic_sriov_pf_init()
532 err = qlcnic_sriov_get_pf_info(adapter, &pf_info); in qlcnic_sriov_pf_init()
536 err = qlcnic_get_nic_info(adapter, &nic_info, func); in qlcnic_sriov_pf_init()
540 err = qlcnic_sriov_pf_cal_res_limit(adapter, &vp_info, func); in qlcnic_sriov_pf_init()
544 err = qlcnic_sriov_cfg_bc_intr(adapter, 1); in qlcnic_sriov_pf_init()
556 qlcnic_sriov_pf_config_vport(adapter, 0, func); in qlcnic_sriov_pf_init()
559 qlcnic_sriov_pf_cfg_eswitch(adapter, func, 0); in qlcnic_sriov_pf_init()
562 qlcnic_sriov_pf_cfg_vlan_filtering(adapter, 0); in qlcnic_sriov_pf_init()
567 static int qlcnic_sriov_pf_enable(struct qlcnic_adapter *adapter, int num_vfs) in qlcnic_sriov_pf_enable() argument
571 if (!qlcnic_sriov_enable_check(adapter)) in qlcnic_sriov_pf_enable()
574 err = pci_enable_sriov(adapter->pdev, num_vfs); in qlcnic_sriov_pf_enable()
576 qlcnic_sriov_pf_cleanup(adapter); in qlcnic_sriov_pf_enable()
581 static int __qlcnic_pci_sriov_enable(struct qlcnic_adapter *adapter, in __qlcnic_pci_sriov_enable() argument
586 set_bit(__QLCNIC_SRIOV_ENABLE, &adapter->state); in __qlcnic_pci_sriov_enable()
587 adapter->ahw->op_mode = QLCNIC_SRIOV_PF_FUNC; in __qlcnic_pci_sriov_enable()
589 err = qlcnic_sriov_init(adapter, num_vfs); in __qlcnic_pci_sriov_enable()
593 err = qlcnic_sriov_pf_create_flr_queue(adapter); in __qlcnic_pci_sriov_enable()
597 err = qlcnic_sriov_pf_init(adapter); in __qlcnic_pci_sriov_enable()
601 qlcnic_sriov_alloc_vlans(adapter); in __qlcnic_pci_sriov_enable()
606 qlcnic_sriov_pf_del_flr_queue(adapter); in __qlcnic_pci_sriov_enable()
609 __qlcnic_sriov_cleanup(adapter); in __qlcnic_pci_sriov_enable()
612 clear_bit(__QLCNIC_SRIOV_ENABLE, &adapter->state); in __qlcnic_pci_sriov_enable()
613 adapter->ahw->op_mode = QLCNIC_MGMT_FUNC; in __qlcnic_pci_sriov_enable()
617 static int qlcnic_pci_sriov_enable(struct qlcnic_adapter *adapter, int num_vfs) in qlcnic_pci_sriov_enable() argument
619 struct net_device *netdev = adapter->netdev; in qlcnic_pci_sriov_enable()
622 if (!(adapter->flags & QLCNIC_MSIX_ENABLED)) { in qlcnic_pci_sriov_enable()
630 __qlcnic_down(adapter, netdev); in qlcnic_pci_sriov_enable()
632 err = __qlcnic_pci_sriov_enable(adapter, num_vfs); in qlcnic_pci_sriov_enable()
637 __qlcnic_up(adapter, netdev); in qlcnic_pci_sriov_enable()
640 err = qlcnic_sriov_pf_enable(adapter, num_vfs); in qlcnic_pci_sriov_enable()
644 adapter->portnum); in qlcnic_pci_sriov_enable()
651 __qlcnic_down(adapter, netdev); in qlcnic_pci_sriov_enable()
654 if (!qlcnic_83xx_configure_opmode(adapter)) { in qlcnic_pci_sriov_enable()
656 __qlcnic_up(adapter, netdev); in qlcnic_pci_sriov_enable()
661 adapter->portnum); in qlcnic_pci_sriov_enable()
668 struct qlcnic_adapter *adapter = pci_get_drvdata(dev); in qlcnic_pci_sriov_configure() local
671 if (test_and_set_bit(__QLCNIC_RESETTING, &adapter->state)) in qlcnic_pci_sriov_configure()
675 err = qlcnic_pci_sriov_disable(adapter); in qlcnic_pci_sriov_configure()
677 err = qlcnic_pci_sriov_enable(adapter, num_vfs); in qlcnic_pci_sriov_configure()
679 clear_bit(__QLCNIC_RESETTING, &adapter->state); in qlcnic_pci_sriov_configure()
683 static int qlcnic_sriov_set_vf_acl(struct qlcnic_adapter *adapter, u8 func) in qlcnic_sriov_set_vf_acl() argument
690 id = qlcnic_sriov_func_to_index(adapter, func); in qlcnic_sriov_set_vf_acl()
694 vp = adapter->ahw->sriov->vf_info[id].vp; in qlcnic_sriov_set_vf_acl()
695 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO); in qlcnic_sriov_set_vf_acl()
713 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_sriov_set_vf_acl()
715 dev_err(&adapter->pdev->dev, "Failed to set ACL, err=%d\n", in qlcnic_sriov_set_vf_acl()
722 static int qlcnic_sriov_set_vf_vport_info(struct qlcnic_adapter *adapter, in qlcnic_sriov_set_vf_vport_info() argument
728 err = qlcnic_sriov_pf_cal_res_limit(adapter, &defvp_info, func); in qlcnic_sriov_set_vf_vport_info()
732 err = qlcnic_sriov_set_vf_acl(adapter, func); in qlcnic_sriov_set_vf_vport_info()
744 struct qlcnic_adapter *adapter; in qlcnic_sriov_pf_channel_cfg_cmd() local
750 adapter = vf->adapter; in qlcnic_sriov_pf_channel_cfg_cmd()
751 sriov = adapter->ahw->sriov; in qlcnic_sriov_pf_channel_cfg_cmd()
754 err = qlcnic_sriov_pf_config_vport(adapter, 1, func); in qlcnic_sriov_pf_channel_cfg_cmd()
756 err = qlcnic_sriov_set_vf_vport_info(adapter, func); in qlcnic_sriov_pf_channel_cfg_cmd()
758 qlcnic_sriov_pf_config_vport(adapter, 0, func); in qlcnic_sriov_pf_channel_cfg_cmd()
767 err = qlcnic_sriov_pf_config_vport(adapter, 0, func); in qlcnic_sriov_pf_channel_cfg_cmd()
787 static int qlcnic_sriov_cfg_vf_def_mac(struct qlcnic_adapter *adapter, in qlcnic_sriov_cfg_vf_def_mac() argument
805 err = qlcnic_alloc_mbx_args(cmd, adapter, QLCNIC_CMD_CONFIG_MAC_VLAN); in qlcnic_sriov_cfg_vf_def_mac()
810 vpid = qlcnic_sriov_pf_get_vport_handle(adapter, vf->pci_func); in qlcnic_sriov_cfg_vf_def_mac()
834 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_cfg_vf_def_mac()
854 static void qlcnic_83xx_cfg_default_mac_vlan(struct qlcnic_adapter *adapter, in qlcnic_83xx_cfg_default_mac_vlan() argument
862 sriov = adapter->ahw->sriov; in qlcnic_83xx_cfg_default_mac_vlan()
869 qlcnic_sriov_cfg_vf_def_mac(adapter, vf, vlan, in qlcnic_83xx_cfg_default_mac_vlan()
876 if (qlcnic_83xx_pf_check(adapter) && in qlcnic_83xx_cfg_default_mac_vlan()
879 qlcnic_sriov_cfg_vf_def_mac(adapter, vf, 0, opcode); in qlcnic_83xx_cfg_default_mac_vlan()
887 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_create_rx_ctx_cmd() local
898 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_create_rx_ctx_cmd()
903 qlcnic_83xx_cfg_default_mac_vlan(adapter, vf, QLCNIC_MAC_ADD); in qlcnic_sriov_pf_create_rx_ctx_cmd()
947 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_create_tx_ctx_cmd() local
958 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_create_tx_ctx_cmd()
985 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_del_rx_ctx_cmd() local
994 qlcnic_83xx_cfg_default_mac_vlan(adapter, vf, QLCNIC_MAC_DEL); in qlcnic_sriov_pf_del_rx_ctx_cmd()
996 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_del_rx_ctx_cmd()
1020 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_del_tx_ctx_cmd() local
1030 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_del_tx_ctx_cmd()
1051 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_cfg_lro_cmd() local
1060 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_cfg_lro_cmd()
1068 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_cfg_ip_cmd() local
1077 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_cfg_ip_cmd()
1100 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_cfg_intrpt_cmd() local
1107 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_cfg_intrpt_cmd()
1112 static int qlcnic_sriov_validate_mtu(struct qlcnic_adapter *adapter, in qlcnic_sriov_validate_mtu() argument
1119 if (cmd->req.arg[2] > adapter->ahw->max_mtu) in qlcnic_sriov_validate_mtu()
1129 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_set_mtu_cmd() local
1132 err = qlcnic_sriov_validate_mtu(adapter, vf, cmd); in qlcnic_sriov_pf_set_mtu_cmd()
1136 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_set_mtu_cmd()
1158 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_get_nic_info_cmd() local
1167 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_get_nic_info_cmd()
1184 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_cfg_rss_cmd() local
1191 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_cfg_rss_cmd()
1196 static int qlcnic_sriov_validate_cfg_intrcoal(struct qlcnic_adapter *adapter, in qlcnic_sriov_validate_cfg_intrcoal() argument
1200 struct qlcnic_nic_intr_coalesce *coal = &adapter->ahw->coal; in qlcnic_sriov_validate_cfg_intrcoal()
1222 netdev_err(adapter->netdev, "Invalid coalescing type 0x%x received\n", in qlcnic_sriov_validate_cfg_intrcoal()
1230 …netdev_err(adapter->netdev, "Expected: rx_ctx_id 0x%x rx_packets 0x%x rx_time_us 0x%x tx_ctx_id 0x… in qlcnic_sriov_validate_cfg_intrcoal()
1233 netdev_err(adapter->netdev, "Received: ctx_id 0x%x packets 0x%x time_us 0x%x type 0x%x\n", in qlcnic_sriov_validate_cfg_intrcoal()
1243 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_cfg_intrcoal_cmd() local
1246 err = qlcnic_sriov_validate_cfg_intrcoal(adapter, vf, cmd); in qlcnic_sriov_pf_cfg_intrcoal_cmd()
1252 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_cfg_intrcoal_cmd()
1256 static int qlcnic_sriov_validate_cfg_macvlan(struct qlcnic_adapter *adapter, in qlcnic_sriov_validate_cfg_macvlan() argument
1285 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_cfg_macvlan_cmd() local
1288 err = qlcnic_sriov_validate_cfg_macvlan(adapter, vf, cmd); in qlcnic_sriov_pf_cfg_macvlan_cmd()
1294 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_cfg_macvlan_cmd()
1311 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_linkevent_cmd() local
1320 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_linkevent_cmd()
1328 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_cfg_promisc_cmd() local
1333 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_cfg_promisc_cmd()
1343 struct qlcnic_adapter *adapter; in qlcnic_sriov_pf_get_acl_cmd() local
1346 adapter = vf->adapter; in qlcnic_sriov_pf_get_acl_cmd()
1347 sriov = adapter->ahw->sriov; in qlcnic_sriov_pf_get_acl_cmd()
1355 if (qlcnic_84xx_check(adapter) && mode == QLC_PVID_MODE) in qlcnic_sriov_pf_get_acl_cmd()
1371 static int qlcnic_sriov_pf_del_guest_vlan(struct qlcnic_adapter *adapter, in qlcnic_sriov_pf_del_guest_vlan() argument
1375 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_pf_del_guest_vlan()
1387 qlcnic_sriov_cfg_vf_def_mac(adapter, vf, vlan, QLCNIC_MAC_DEL); in qlcnic_sriov_pf_del_guest_vlan()
1390 if (qlcnic_83xx_pf_check(adapter)) in qlcnic_sriov_pf_del_guest_vlan()
1391 qlcnic_sriov_cfg_vf_def_mac(adapter, vf, in qlcnic_sriov_pf_del_guest_vlan()
1396 static int qlcnic_sriov_pf_add_guest_vlan(struct qlcnic_adapter *adapter, in qlcnic_sriov_pf_add_guest_vlan() argument
1400 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_pf_add_guest_vlan()
1404 if (qlcnic_83xx_pf_check(adapter) && qlcnic_sriov_check_any_vlan(vf)) in qlcnic_sriov_pf_add_guest_vlan()
1414 if (qlcnic_83xx_pf_check(adapter)) { in qlcnic_sriov_pf_add_guest_vlan()
1415 err = qlcnic_sriov_cfg_vf_def_mac(adapter, vf, 0, in qlcnic_sriov_pf_add_guest_vlan()
1421 err = qlcnic_sriov_cfg_vf_def_mac(adapter, vf, vlan, QLCNIC_MAC_ADD); in qlcnic_sriov_pf_add_guest_vlan()
1424 if (qlcnic_83xx_pf_check(adapter)) in qlcnic_sriov_pf_add_guest_vlan()
1425 qlcnic_sriov_cfg_vf_def_mac(adapter, vf, 0, in qlcnic_sriov_pf_add_guest_vlan()
1438 struct qlcnic_adapter *adapter = vf->adapter; in qlcnic_sriov_pf_cfg_guest_vlan_cmd() local
1451 err = qlcnic_sriov_pf_add_guest_vlan(adapter, vf, cmd); in qlcnic_sriov_pf_cfg_guest_vlan_cmd()
1453 err = qlcnic_sriov_pf_del_guest_vlan(adapter, vf, cmd); in qlcnic_sriov_pf_cfg_guest_vlan_cmd()
1492 void qlcnic_sriov_pf_process_bc_cmd(struct qlcnic_adapter *adapter, in qlcnic_sriov_pf_process_bc_cmd() argument
1519 qlcnic_issue_cmd(adapter, cmd); in qlcnic_sriov_pf_process_bc_cmd()
1528 void qlcnic_pf_set_interface_id_create_rx_ctx(struct qlcnic_adapter *adapter, in qlcnic_pf_set_interface_id_create_rx_ctx() argument
1533 vpid = qlcnic_sriov_pf_get_vport_handle(adapter, in qlcnic_pf_set_interface_id_create_rx_ctx()
1534 adapter->ahw->pci_func); in qlcnic_pf_set_interface_id_create_rx_ctx()
1538 void qlcnic_pf_set_interface_id_del_rx_ctx(struct qlcnic_adapter *adapter, in qlcnic_pf_set_interface_id_del_rx_ctx() argument
1543 vpid = qlcnic_sriov_pf_get_vport_handle(adapter, in qlcnic_pf_set_interface_id_del_rx_ctx()
1544 adapter->ahw->pci_func); in qlcnic_pf_set_interface_id_del_rx_ctx()
1548 void qlcnic_pf_set_interface_id_create_tx_ctx(struct qlcnic_adapter *adapter, in qlcnic_pf_set_interface_id_create_tx_ctx() argument
1553 vpid = qlcnic_sriov_pf_get_vport_handle(adapter, in qlcnic_pf_set_interface_id_create_tx_ctx()
1554 adapter->ahw->pci_func); in qlcnic_pf_set_interface_id_create_tx_ctx()
1558 void qlcnic_pf_set_interface_id_del_tx_ctx(struct qlcnic_adapter *adapter, in qlcnic_pf_set_interface_id_del_tx_ctx() argument
1563 vpid = qlcnic_sriov_pf_get_vport_handle(adapter, in qlcnic_pf_set_interface_id_del_tx_ctx()
1564 adapter->ahw->pci_func); in qlcnic_pf_set_interface_id_del_tx_ctx()
1568 void qlcnic_pf_set_interface_id_promisc(struct qlcnic_adapter *adapter, in qlcnic_pf_set_interface_id_promisc() argument
1573 vpid = qlcnic_sriov_pf_get_vport_handle(adapter, in qlcnic_pf_set_interface_id_promisc()
1574 adapter->ahw->pci_func); in qlcnic_pf_set_interface_id_promisc()
1578 void qlcnic_pf_set_interface_id_ipaddr(struct qlcnic_adapter *adapter, in qlcnic_pf_set_interface_id_ipaddr() argument
1583 vpid = qlcnic_sriov_pf_get_vport_handle(adapter, in qlcnic_pf_set_interface_id_ipaddr()
1584 adapter->ahw->pci_func); in qlcnic_pf_set_interface_id_ipaddr()
1588 void qlcnic_pf_set_interface_id_macaddr(struct qlcnic_adapter *adapter, in qlcnic_pf_set_interface_id_macaddr() argument
1593 vpid = qlcnic_sriov_pf_get_vport_handle(adapter, in qlcnic_pf_set_interface_id_macaddr()
1594 adapter->ahw->pci_func); in qlcnic_pf_set_interface_id_macaddr()
1598 static void qlcnic_sriov_del_rx_ctx(struct qlcnic_adapter *adapter, in qlcnic_sriov_del_rx_ctx() argument
1607 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_DESTROY_RX_CTX)) in qlcnic_sriov_del_rx_ctx()
1610 vpid = qlcnic_sriov_pf_get_vport_handle(adapter, vf->pci_func); in qlcnic_sriov_del_rx_ctx()
1613 if (qlcnic_issue_cmd(adapter, &cmd)) in qlcnic_sriov_del_rx_ctx()
1614 dev_err(&adapter->pdev->dev, in qlcnic_sriov_del_rx_ctx()
1624 static void qlcnic_sriov_del_tx_ctx(struct qlcnic_adapter *adapter, in qlcnic_sriov_del_tx_ctx() argument
1633 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_DESTROY_TX_CTX)) in qlcnic_sriov_del_tx_ctx()
1636 vpid = qlcnic_sriov_pf_get_vport_handle(adapter, vf->pci_func); in qlcnic_sriov_del_tx_ctx()
1639 if (qlcnic_issue_cmd(adapter, &cmd)) in qlcnic_sriov_del_tx_ctx()
1640 dev_err(&adapter->pdev->dev, in qlcnic_sriov_del_tx_ctx()
1667 struct qlcnic_adapter *adapter = vf->adapter; in __qlcnic_sriov_process_flr() local
1674 qlcnic_sriov_del_tx_ctx(adapter, vf); in __qlcnic_sriov_process_flr()
1675 qlcnic_sriov_del_rx_ctx(adapter, vf); in __qlcnic_sriov_process_flr()
1678 qlcnic_sriov_pf_config_vport(adapter, 0, vf->pci_func); in __qlcnic_sriov_process_flr()
1682 qlcnic_sriov_add_act_list_irqsave(adapter->ahw->sriov, vf, in __qlcnic_sriov_process_flr()
1702 if (test_bit(__QLCNIC_RESETTING, &vf->adapter->state)) in qlcnic_sriov_schedule_flr()
1709 static void qlcnic_sriov_handle_soft_flr(struct qlcnic_adapter *adapter, in qlcnic_sriov_handle_soft_flr() argument
1713 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_handle_soft_flr()
1720 netdev_info(adapter->netdev, "Software FLR for PCI func %d\n", in qlcnic_sriov_handle_soft_flr()
1724 bool qlcnic_sriov_soft_flr_check(struct qlcnic_adapter *adapter, in qlcnic_sriov_soft_flr_check() argument
1733 qlcnic_sriov_handle_soft_flr(adapter, trans, vf); in qlcnic_sriov_soft_flr_check()
1743 struct net_device *dev = vf->adapter->netdev; in qlcnic_sriov_pf_handle_flr()
1765 void qlcnic_sriov_pf_reset(struct qlcnic_adapter *adapter) in qlcnic_sriov_pf_reset() argument
1767 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_sriov_pf_reset()
1782 qlcnic_sriov_pf_reset_vport_handle(adapter, ahw->pci_func); in qlcnic_sriov_pf_reset()
1786 int qlcnic_sriov_pf_reinit(struct qlcnic_adapter *adapter) in qlcnic_sriov_pf_reinit() argument
1788 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_sriov_pf_reinit()
1791 if (!qlcnic_sriov_enable_check(adapter)) in qlcnic_sriov_pf_reinit()
1796 err = qlcnic_sriov_pf_init(adapter); in qlcnic_sriov_pf_reinit()
1800 dev_info(&adapter->pdev->dev, "%s: op_mode %d\n", in qlcnic_sriov_pf_reinit()
1807 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_sriov_set_vf_mac() local
1808 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_set_vf_mac()
1813 if (!qlcnic_sriov_pf_check(adapter)) in qlcnic_sriov_set_vf_mac()
1821 if (ether_addr_equal(adapter->mac_addr, mac)) { in qlcnic_sriov_set_vf_mac()
1855 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_sriov_set_vf_tx_rate() local
1856 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_set_vf_tx_rate()
1862 if (!qlcnic_sriov_pf_check(adapter)) in qlcnic_sriov_set_vf_tx_rate()
1895 if (qlcnic_sriov_get_vf_vport_info(adapter, &nic_info, vpid)) in qlcnic_sriov_set_vf_tx_rate()
1902 if (qlcnic_sriov_pf_set_vport_info(adapter, &nic_info, vpid)) in qlcnic_sriov_set_vf_tx_rate()
1920 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_sriov_set_vf_vlan() local
1921 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_set_vf_vlan()
1925 if (!qlcnic_sriov_pf_check(adapter)) in qlcnic_sriov_set_vf_vlan()
1970 static __u32 qlcnic_sriov_get_vf_vlan(struct qlcnic_adapter *adapter, in qlcnic_sriov_get_vf_vlan() argument
1986 netdev_info(adapter->netdev, "Invalid VLAN mode = %d for VF %d\n", in qlcnic_sriov_get_vf_vlan()
1996 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_sriov_get_vf_config() local
1997 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_get_vf_config()
2000 if (!qlcnic_sriov_pf_check(adapter)) in qlcnic_sriov_get_vf_config()
2008 ivi->vlan = qlcnic_sriov_get_vf_vlan(adapter, vp, vf); in qlcnic_sriov_get_vf_config()
2026 struct qlcnic_adapter *adapter = netdev_priv(netdev); in qlcnic_sriov_set_vf_spoofchk() local
2027 struct qlcnic_sriov *sriov = adapter->ahw->sriov; in qlcnic_sriov_set_vf_spoofchk()
2031 if (!qlcnic_sriov_pf_check(adapter)) in qlcnic_sriov_set_vf_spoofchk()