Lines Matching +full:eth +full:- +full:mac

1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
3 * Copyright (c) 2015-2017 QLogic Corporation
4 * Copyright (c) 2019-2020 Marvell International Ltd.
11 #include <linux/dma-mapping.h>
63 return -ENOMEM; in qed_l2_alloc()
64 p_hwfn->p_l2_info = p_l2_info; in qed_l2_alloc()
66 if (IS_PF(p_hwfn->cdev)) { in qed_l2_alloc()
67 p_l2_info->queues = RESC_NUM(p_hwfn, QED_L2_QUEUE); in qed_l2_alloc()
74 p_l2_info->queues = max_t(u8, rx, tx); in qed_l2_alloc()
77 pp_qids = kcalloc(p_l2_info->queues, sizeof(unsigned long *), in qed_l2_alloc()
80 return -ENOMEM; in qed_l2_alloc()
81 p_l2_info->pp_qid_usage = pp_qids; in qed_l2_alloc()
83 for (i = 0; i < p_l2_info->queues; i++) { in qed_l2_alloc()
86 return -ENOMEM; in qed_l2_alloc()
97 mutex_init(&p_hwfn->p_l2_info->lock); in qed_l2_setup()
107 if (!p_hwfn->p_l2_info) in qed_l2_free()
110 if (!p_hwfn->p_l2_info->pp_qid_usage) in qed_l2_free()
114 for (i = 0; i < p_hwfn->p_l2_info->queues; i++) { in qed_l2_free()
115 if (!p_hwfn->p_l2_info->pp_qid_usage[i]) in qed_l2_free()
117 kfree(p_hwfn->p_l2_info->pp_qid_usage[i]); in qed_l2_free()
120 kfree(p_hwfn->p_l2_info->pp_qid_usage); in qed_l2_free()
123 kfree(p_hwfn->p_l2_info); in qed_l2_free()
124 p_hwfn->p_l2_info = NULL; in qed_l2_free()
130 struct qed_l2_info *p_l2_info = p_hwfn->p_l2_info; in qed_eth_queue_qid_usage_add()
131 u16 queue_id = p_cid->rel.queue_id; in qed_eth_queue_qid_usage_add()
135 mutex_lock(&p_l2_info->lock); in qed_eth_queue_qid_usage_add()
137 if (queue_id >= p_l2_info->queues) { in qed_eth_queue_qid_usage_add()
140 queue_id, p_l2_info->queues); in qed_eth_queue_qid_usage_add()
145 first = (u8)find_first_zero_bit(p_l2_info->pp_qid_usage[queue_id], in qed_eth_queue_qid_usage_add()
152 __set_bit(first, p_l2_info->pp_qid_usage[queue_id]); in qed_eth_queue_qid_usage_add()
153 p_cid->qid_usage_idx = first; in qed_eth_queue_qid_usage_add()
156 mutex_unlock(&p_l2_info->lock); in qed_eth_queue_qid_usage_add()
163 mutex_lock(&p_hwfn->p_l2_info->lock); in qed_eth_queue_qid_usage_del()
165 clear_bit(p_cid->qid_usage_idx, in qed_eth_queue_qid_usage_del()
166 p_hwfn->p_l2_info->pp_qid_usage[p_cid->rel.queue_id]); in qed_eth_queue_qid_usage_del()
168 mutex_unlock(&p_hwfn->p_l2_info->lock); in qed_eth_queue_qid_usage_del()
174 bool b_legacy_vf = !!(p_cid->vf_legacy & QED_QCID_LEGACY_VF_CID); in qed_eth_queue_cid_release()
176 if (IS_PF(p_hwfn->cdev) && !b_legacy_vf) in qed_eth_queue_cid_release()
177 _qed_cxt_release_cid(p_hwfn, p_cid->cid, p_cid->vfid); in qed_eth_queue_cid_release()
179 /* For PF's VFs we maintain the index inside queue-zone in IOV */ in qed_eth_queue_cid_release()
180 if (p_cid->vfid == QED_QUEUE_CID_SELF) in qed_eth_queue_cid_release()
204 p_cid->opaque_fid = opaque_fid; in _qed_eth_queue_to_cid()
205 p_cid->cid = cid; in _qed_eth_queue_to_cid()
206 p_cid->p_owner = p_hwfn; in _qed_eth_queue_to_cid()
209 p_cid->rel.vport_id = p_params->vport_id; in _qed_eth_queue_to_cid()
210 p_cid->rel.queue_id = p_params->queue_id; in _qed_eth_queue_to_cid()
211 p_cid->rel.stats_id = p_params->stats_id; in _qed_eth_queue_to_cid()
212 p_cid->sb_igu_id = p_params->p_sb->igu_sb_id; in _qed_eth_queue_to_cid()
213 p_cid->b_is_rx = b_is_rx; in _qed_eth_queue_to_cid()
214 p_cid->sb_idx = p_params->sb_idx; in _qed_eth_queue_to_cid()
216 /* Fill-in bits related to VFs' queues if information was provided */ in _qed_eth_queue_to_cid()
218 p_cid->vfid = p_vf_params->vfid; in _qed_eth_queue_to_cid()
219 p_cid->vf_qid = p_vf_params->vf_qid; in _qed_eth_queue_to_cid()
220 p_cid->vf_legacy = p_vf_params->vf_legacy; in _qed_eth_queue_to_cid()
222 p_cid->vfid = QED_QUEUE_CID_SELF; in _qed_eth_queue_to_cid()
226 if (IS_VF(p_hwfn->cdev)) { in _qed_eth_queue_to_cid()
227 p_cid->abs = p_cid->rel; in _qed_eth_queue_to_cid()
231 /* Calculate the engine-absolute indices of the resources. in _qed_eth_queue_to_cid()
235 rc = qed_fw_vport(p_hwfn, p_cid->rel.vport_id, &p_cid->abs.vport_id); in _qed_eth_queue_to_cid()
239 rc = qed_fw_l2_queue(p_hwfn, p_cid->rel.queue_id, &p_cid->abs.queue_id); in _qed_eth_queue_to_cid()
243 /* In case of a PF configuring its VF's queues, the stats-id is already in _qed_eth_queue_to_cid()
244 * absolute [since there's a single index that's suitable per-VF]. in _qed_eth_queue_to_cid()
246 if (p_cid->vfid == QED_QUEUE_CID_SELF) { in _qed_eth_queue_to_cid()
247 rc = qed_fw_vport(p_hwfn, p_cid->rel.stats_id, in _qed_eth_queue_to_cid()
248 &p_cid->abs.stats_id); in _qed_eth_queue_to_cid()
252 p_cid->abs.stats_id = p_cid->rel.stats_id; in _qed_eth_queue_to_cid()
256 /* VF-images have provided the qid_usage_idx on their own. in _qed_eth_queue_to_cid()
263 p_cid->qid_usage_idx = p_vf_params->qid_usage_idx; in _qed_eth_queue_to_cid()
269 p_cid->opaque_fid, in _qed_eth_queue_to_cid()
270 p_cid->cid, in _qed_eth_queue_to_cid()
271 p_cid->rel.vport_id, in _qed_eth_queue_to_cid()
272 p_cid->abs.vport_id, in _qed_eth_queue_to_cid()
273 p_cid->rel.queue_id, in _qed_eth_queue_to_cid()
274 p_cid->qid_usage_idx, in _qed_eth_queue_to_cid()
275 p_cid->abs.queue_id, in _qed_eth_queue_to_cid()
276 p_cid->rel.stats_id, in _qed_eth_queue_to_cid()
277 p_cid->abs.stats_id, p_cid->sb_igu_id, p_cid->sb_idx); in _qed_eth_queue_to_cid()
299 * VF parameters - the VF assumes queue X uses CID X, so we can simply in qed_eth_queue_to_cid()
303 vfid = p_vf_params->vfid; in qed_eth_queue_to_cid()
305 if (p_vf_params->vf_legacy & QED_QCID_LEGACY_VF_CID) { in qed_eth_queue_to_cid()
307 cid = p_vf_params->vf_qid; in qed_eth_queue_to_cid()
315 if (IS_PF(p_hwfn->cdev) && !b_legacy_vf) { in qed_eth_queue_to_cid()
325 if (!p_cid && IS_PF(p_hwfn->cdev) && !b_legacy_vf) in qed_eth_queue_to_cid()
352 rc = qed_fw_vport(p_hwfn, p_params->vport_id, &abs_vport_id); in qed_sp_eth_vport_start()
358 init_data.opaque_fid = p_params->opaque_fid; in qed_sp_eth_vport_start()
367 p_ramrod = &p_ent->ramrod.vport_start; in qed_sp_eth_vport_start()
368 p_ramrod->vport_id = abs_vport_id; in qed_sp_eth_vport_start()
370 p_ramrod->mtu = cpu_to_le16(p_params->mtu); in qed_sp_eth_vport_start()
371 p_ramrod->handle_ptp_pkts = p_params->handle_ptp_pkts; in qed_sp_eth_vport_start()
372 p_ramrod->inner_vlan_removal_en = p_params->remove_inner_vlan; in qed_sp_eth_vport_start()
373 p_ramrod->drop_ttl0_en = p_params->drop_ttl0; in qed_sp_eth_vport_start()
374 p_ramrod->untagged = p_params->only_untagged; in qed_sp_eth_vport_start()
379 p_ramrod->rx_mode.state = cpu_to_le16(rx_mode); in qed_sp_eth_vport_start()
382 tpa_param = &p_ramrod->tpa_param; in qed_sp_eth_vport_start()
385 tpa_param->max_buff_num = p_params->max_buffers_per_cqe; in qed_sp_eth_vport_start()
387 switch (p_params->tpa_mode) { in qed_sp_eth_vport_start()
389 min_size = p_params->mtu / 2; in qed_sp_eth_vport_start()
391 tpa_param->tpa_max_aggs_num = ETH_TPA_MAX_AGGS_NUM; in qed_sp_eth_vport_start()
392 tpa_param->tpa_max_size = cpu_to_le16(U16_MAX); in qed_sp_eth_vport_start()
393 tpa_param->tpa_min_size_to_cont = cpu_to_le16(min_size); in qed_sp_eth_vport_start()
394 tpa_param->tpa_min_size_to_start = cpu_to_le16(min_size); in qed_sp_eth_vport_start()
395 tpa_param->tpa_ipv4_en_flg = 1; in qed_sp_eth_vport_start()
396 tpa_param->tpa_ipv6_en_flg = 1; in qed_sp_eth_vport_start()
397 tpa_param->tpa_pkt_split_flg = 1; in qed_sp_eth_vport_start()
398 tpa_param->tpa_gro_consistent_flg = 1; in qed_sp_eth_vport_start()
404 p_ramrod->tx_switching_en = p_params->tx_switching; in qed_sp_eth_vport_start()
406 p_ramrod->ctl_frame_mac_check_en = !!p_params->check_mac; in qed_sp_eth_vport_start()
407 p_ramrod->ctl_frame_ethtype_check_en = !!p_params->check_ethtype; in qed_sp_eth_vport_start()
409 /* Software Function ID in hwfn (PFs are 0 - 15, VFs are 16 - 135) */ in qed_sp_eth_vport_start()
410 p_ramrod->sw_fid = qed_concrete_to_sw_fid(p_hwfn->cdev, in qed_sp_eth_vport_start()
411 p_params->concrete_fid); in qed_sp_eth_vport_start()
419 if (IS_VF(p_hwfn->cdev)) { in qed_sp_vport_start()
420 return qed_vf_pf_vport_start(p_hwfn, p_params->vport_id, in qed_sp_vport_start()
421 p_params->mtu, in qed_sp_vport_start()
422 p_params->remove_inner_vlan, in qed_sp_vport_start()
423 p_params->tpa_mode, in qed_sp_vport_start()
424 p_params->max_buffers_per_cqe, in qed_sp_vport_start()
425 p_params->only_untagged); in qed_sp_vport_start()
442 p_ramrod->common.update_rss_flg = 0; in qed_sp_vport_update_rss()
445 p_config = &p_ramrod->rss_config; in qed_sp_vport_update_rss()
449 rc = qed_fw_rss_eng(p_hwfn, p_rss->rss_eng_id, &p_config->rss_id); in qed_sp_vport_update_rss()
453 p_ramrod->common.update_rss_flg = p_rss->update_rss_config; in qed_sp_vport_update_rss()
454 p_config->update_rss_capabilities = p_rss->update_rss_capabilities; in qed_sp_vport_update_rss()
455 p_config->update_rss_ind_table = p_rss->update_rss_ind_table; in qed_sp_vport_update_rss()
456 p_config->update_rss_key = p_rss->update_rss_key; in qed_sp_vport_update_rss()
458 p_config->rss_mode = p_rss->rss_enable ? in qed_sp_vport_update_rss()
464 !!(p_rss->rss_caps & QED_RSS_IPV4)); in qed_sp_vport_update_rss()
467 !!(p_rss->rss_caps & QED_RSS_IPV6)); in qed_sp_vport_update_rss()
470 !!(p_rss->rss_caps & QED_RSS_IPV4_TCP)); in qed_sp_vport_update_rss()
473 !!(p_rss->rss_caps & QED_RSS_IPV6_TCP)); in qed_sp_vport_update_rss()
476 !!(p_rss->rss_caps & QED_RSS_IPV4_UDP)); in qed_sp_vport_update_rss()
479 !!(p_rss->rss_caps & QED_RSS_IPV6_UDP)); in qed_sp_vport_update_rss()
480 p_config->tbl_size = p_rss->rss_table_size_log; in qed_sp_vport_update_rss()
482 p_config->capabilities = cpu_to_le16(capabilities); in qed_sp_vport_update_rss()
486 p_ramrod->common.update_rss_flg, in qed_sp_vport_update_rss()
487 p_config->rss_mode, in qed_sp_vport_update_rss()
488 p_config->update_rss_capabilities, in qed_sp_vport_update_rss()
489 p_config->capabilities, in qed_sp_vport_update_rss()
490 p_config->update_rss_ind_table, p_config->update_rss_key); in qed_sp_vport_update_rss()
493 1 << p_config->tbl_size); in qed_sp_vport_update_rss()
495 struct qed_queue_cid *p_queue = p_rss->rss_ind_table[i]; in qed_sp_vport_update_rss()
498 return -EINVAL; in qed_sp_vport_update_rss()
500 p_config->indirection_table[i] = in qed_sp_vport_update_rss()
501 cpu_to_le16(p_queue->abs.queue_id); in qed_sp_vport_update_rss()
511 le16_to_cpu(p_config->indirection_table[i]), in qed_sp_vport_update_rss()
512 le16_to_cpu(p_config->indirection_table[i + 1]), in qed_sp_vport_update_rss()
513 le16_to_cpu(p_config->indirection_table[i + 2]), in qed_sp_vport_update_rss()
514 le16_to_cpu(p_config->indirection_table[i + 3]), in qed_sp_vport_update_rss()
515 le16_to_cpu(p_config->indirection_table[i + 4]), in qed_sp_vport_update_rss()
516 le16_to_cpu(p_config->indirection_table[i + 5]), in qed_sp_vport_update_rss()
517 le16_to_cpu(p_config->indirection_table[i + 6]), in qed_sp_vport_update_rss()
518 le16_to_cpu(p_config->indirection_table[i + 7]), in qed_sp_vport_update_rss()
519 le16_to_cpu(p_config->indirection_table[i + 8]), in qed_sp_vport_update_rss()
520 le16_to_cpu(p_config->indirection_table[i + 9]), in qed_sp_vport_update_rss()
521 le16_to_cpu(p_config->indirection_table[i + 10]), in qed_sp_vport_update_rss()
522 le16_to_cpu(p_config->indirection_table[i + 11]), in qed_sp_vport_update_rss()
523 le16_to_cpu(p_config->indirection_table[i + 12]), in qed_sp_vport_update_rss()
524 le16_to_cpu(p_config->indirection_table[i + 13]), in qed_sp_vport_update_rss()
525 le16_to_cpu(p_config->indirection_table[i + 14]), in qed_sp_vport_update_rss()
526 le16_to_cpu(p_config->indirection_table[i + 15])); in qed_sp_vport_update_rss()
530 p_config->rss_key[i] = cpu_to_le32(p_rss->rss_key[i]); in qed_sp_vport_update_rss()
540 p_ramrod->common.update_rx_mode_flg = in qed_sp_update_accept_mode()
543 p_ramrod->common.update_tx_mode_flg = in qed_sp_update_accept_mode()
547 if (p_ramrod->common.update_rx_mode_flg) { in qed_sp_update_accept_mode()
572 p_ramrod->rx_mode.state = cpu_to_le16(state); in qed_sp_update_accept_mode()
574 "p_ramrod->rx_mode.state = 0x%x\n", state); in qed_sp_update_accept_mode()
578 if (p_ramrod->common.update_tx_mode_flg) { in qed_sp_update_accept_mode()
599 p_ramrod->tx_mode.state = cpu_to_le16(state); in qed_sp_update_accept_mode()
601 "p_ramrod->tx_mode.state = 0x%x\n", state); in qed_sp_update_accept_mode()
613 p_ramrod->common.update_tpa_param_flg = 0; in qed_sp_vport_update_sge_tpa()
614 p_ramrod->common.update_tpa_en_flg = 0; in qed_sp_vport_update_sge_tpa()
615 p_ramrod->common.update_tpa_param_flg = 0; in qed_sp_vport_update_sge_tpa()
619 p_ramrod->common.update_tpa_en_flg = param->update_tpa_en_flg; in qed_sp_vport_update_sge_tpa()
620 tpa = &p_ramrod->tpa_param; in qed_sp_vport_update_sge_tpa()
621 tpa->tpa_ipv4_en_flg = param->tpa_ipv4_en_flg; in qed_sp_vport_update_sge_tpa()
622 tpa->tpa_ipv6_en_flg = param->tpa_ipv6_en_flg; in qed_sp_vport_update_sge_tpa()
623 tpa->tpa_ipv4_tunn_en_flg = param->tpa_ipv4_tunn_en_flg; in qed_sp_vport_update_sge_tpa()
624 tpa->tpa_ipv6_tunn_en_flg = param->tpa_ipv6_tunn_en_flg; in qed_sp_vport_update_sge_tpa()
626 p_ramrod->common.update_tpa_param_flg = param->update_tpa_param_flg; in qed_sp_vport_update_sge_tpa()
627 tpa->max_buff_num = param->max_buffers_per_cqe; in qed_sp_vport_update_sge_tpa()
628 tpa->tpa_pkt_split_flg = param->tpa_pkt_split_flg; in qed_sp_vport_update_sge_tpa()
629 tpa->tpa_hdr_data_split_flg = param->tpa_hdr_data_split_flg; in qed_sp_vport_update_sge_tpa()
630 tpa->tpa_gro_consistent_flg = param->tpa_gro_consistent_flg; in qed_sp_vport_update_sge_tpa()
631 tpa->tpa_max_aggs_num = param->tpa_max_aggs_num; in qed_sp_vport_update_sge_tpa()
632 tpa->tpa_max_size = cpu_to_le16(param->tpa_max_size); in qed_sp_vport_update_sge_tpa()
633 tpa->tpa_min_size_to_start = cpu_to_le16(param->tpa_min_size_to_start); in qed_sp_vport_update_sge_tpa()
634 tpa->tpa_min_size_to_cont = cpu_to_le16(param->tpa_min_size_to_cont); in qed_sp_vport_update_sge_tpa()
644 memset(&p_ramrod->approx_mcast.bins, 0, in qed_sp_update_mcast_bin()
645 sizeof(p_ramrod->approx_mcast.bins)); in qed_sp_update_mcast_bin()
647 if (!p_params->update_approx_mcast_flg) in qed_sp_update_mcast_bin()
650 p_ramrod->common.update_approx_mcast_flg = 1; in qed_sp_update_mcast_bin()
652 u32 *p_bins = p_params->bins; in qed_sp_update_mcast_bin()
654 p_ramrod->approx_mcast.bins[i] = cpu_to_le32(p_bins[i]); in qed_sp_update_mcast_bin()
663 struct qed_rss_params *p_rss_params = p_params->rss_params; in qed_sp_vport_update()
669 int rc = -EINVAL; in qed_sp_vport_update()
671 if (IS_VF(p_hwfn->cdev)) { in qed_sp_vport_update()
676 rc = qed_fw_vport(p_hwfn, p_params->vport_id, &abs_vport_id); in qed_sp_vport_update()
682 init_data.opaque_fid = p_params->opaque_fid; in qed_sp_vport_update()
693 p_ramrod = &p_ent->ramrod.vport_update; in qed_sp_vport_update()
694 p_cmn = &p_ramrod->common; in qed_sp_vport_update()
696 p_cmn->vport_id = abs_vport_id; in qed_sp_vport_update()
697 p_cmn->rx_active_flg = p_params->vport_active_rx_flg; in qed_sp_vport_update()
698 p_cmn->update_rx_active_flg = p_params->update_vport_active_rx_flg; in qed_sp_vport_update()
699 p_cmn->tx_active_flg = p_params->vport_active_tx_flg; in qed_sp_vport_update()
700 p_cmn->update_tx_active_flg = p_params->update_vport_active_tx_flg; in qed_sp_vport_update()
701 p_cmn->accept_any_vlan = p_params->accept_any_vlan; in qed_sp_vport_update()
702 val = p_params->update_accept_any_vlan_flg; in qed_sp_vport_update()
703 p_cmn->update_accept_any_vlan_flg = val; in qed_sp_vport_update()
705 p_cmn->inner_vlan_removal_en = p_params->inner_vlan_removal_flg; in qed_sp_vport_update()
706 val = p_params->update_inner_vlan_removal_flg; in qed_sp_vport_update()
707 p_cmn->update_inner_vlan_removal_en_flg = val; in qed_sp_vport_update()
709 p_cmn->default_vlan_en = p_params->default_vlan_enable_flg; in qed_sp_vport_update()
710 val = p_params->update_default_vlan_enable_flg; in qed_sp_vport_update()
711 p_cmn->update_default_vlan_en_flg = val; in qed_sp_vport_update()
713 p_cmn->default_vlan = cpu_to_le16(p_params->default_vlan); in qed_sp_vport_update()
714 p_cmn->update_default_vlan_flg = p_params->update_default_vlan_flg; in qed_sp_vport_update()
716 p_cmn->silent_vlan_removal_en = p_params->silent_vlan_removal_flg; in qed_sp_vport_update()
718 p_ramrod->common.tx_switching_en = p_params->tx_switching_flg; in qed_sp_vport_update()
719 p_cmn->update_tx_switching_en_flg = p_params->update_tx_switching_flg; in qed_sp_vport_update()
721 p_cmn->anti_spoofing_en = p_params->anti_spoofing_en; in qed_sp_vport_update()
722 val = p_params->update_anti_spoofing_en_flg; in qed_sp_vport_update()
723 p_ramrod->common.update_anti_spoofing_en_flg = val; in qed_sp_vport_update()
731 if (p_params->update_ctl_frame_check) { in qed_sp_vport_update()
732 p_cmn->ctl_frame_mac_check_en = p_params->mac_chk_en; in qed_sp_vport_update()
733 p_cmn->ctl_frame_ethtype_check_en = p_params->ethtype_chk_en; in qed_sp_vport_update()
739 qed_sp_update_accept_mode(p_hwfn, p_ramrod, p_params->accept_flags); in qed_sp_vport_update()
740 qed_sp_vport_update_sge_tpa(p_hwfn, p_ramrod, p_params->sge_tpa_params); in qed_sp_vport_update()
752 if (IS_VF(p_hwfn->cdev)) in qed_sp_vport_stop()
770 p_ramrod = &p_ent->ramrod.vport_stop; in qed_sp_vport_stop()
771 p_ramrod->vport_id = abs_vport_id; in qed_sp_vport_stop()
808 struct qed_hwfn *p_hwfn = &cdev->hwfns[i]; in qed_filter_accept_cmd()
810 vport_update_params.opaque_fid = p_hwfn->hw_info.opaque_fid; in qed_filter_accept_cmd()
848 int rc = -EINVAL; in qed_eth_rxq_start_ramrod()
852 p_cid->opaque_fid, p_cid->cid, in qed_eth_rxq_start_ramrod()
853 p_cid->abs.queue_id, p_cid->abs.vport_id, p_cid->sb_igu_id); in qed_eth_rxq_start_ramrod()
857 init_data.cid = p_cid->cid; in qed_eth_rxq_start_ramrod()
858 init_data.opaque_fid = p_cid->opaque_fid; in qed_eth_rxq_start_ramrod()
867 p_ramrod = &p_ent->ramrod.rx_queue_start; in qed_eth_rxq_start_ramrod()
869 p_ramrod->sb_id = cpu_to_le16(p_cid->sb_igu_id); in qed_eth_rxq_start_ramrod()
870 p_ramrod->sb_index = p_cid->sb_idx; in qed_eth_rxq_start_ramrod()
871 p_ramrod->vport_id = p_cid->abs.vport_id; in qed_eth_rxq_start_ramrod()
872 p_ramrod->stats_counter_id = p_cid->abs.stats_id; in qed_eth_rxq_start_ramrod()
873 p_ramrod->rx_queue_id = cpu_to_le16(p_cid->abs.queue_id); in qed_eth_rxq_start_ramrod()
874 p_ramrod->complete_cqe_flg = 0; in qed_eth_rxq_start_ramrod()
875 p_ramrod->complete_event_flg = 1; in qed_eth_rxq_start_ramrod()
877 p_ramrod->bd_max_bytes = cpu_to_le16(bd_max_bytes); in qed_eth_rxq_start_ramrod()
878 DMA_REGPAIR_LE(p_ramrod->bd_base, bd_chain_phys_addr); in qed_eth_rxq_start_ramrod()
880 p_ramrod->num_of_pbl_pages = cpu_to_le16(cqe_pbl_size); in qed_eth_rxq_start_ramrod()
881 DMA_REGPAIR_LE(p_ramrod->cqe_pbl_addr, cqe_pbl_addr); in qed_eth_rxq_start_ramrod()
883 if (p_cid->vfid != QED_QUEUE_CID_SELF) { in qed_eth_rxq_start_ramrod()
884 bool b_legacy_vf = !!(p_cid->vf_legacy & in qed_eth_rxq_start_ramrod()
887 p_ramrod->vf_rx_prod_index = p_cid->vf_qid; in qed_eth_rxq_start_ramrod()
890 b_legacy_vf ? " [legacy]" : "", p_cid->vf_qid); in qed_eth_rxq_start_ramrod()
891 p_ramrod->vf_rx_prod_use_zone_a = b_legacy_vf; in qed_eth_rxq_start_ramrod()
908 p_hwfn->regview + in qed_eth_pf_rx_queue_start()
910 MSTORM_ETH_PF_PRODS, p_cid->abs.queue_id); in qed_eth_pf_rx_queue_start()
938 return -ENOMEM; in qed_eth_rx_queue_start()
940 if (IS_PF(p_hwfn->cdev)) { in qed_eth_rx_queue_start()
945 &p_ret_params->p_prod); in qed_eth_rx_queue_start()
951 cqe_pbl_size, &p_ret_params->p_prod); in qed_eth_rx_queue_start()
958 p_ret_params->p_handle = (void *)p_cid; in qed_eth_rx_queue_start()
975 int rc = -EINVAL; in qed_sp_eth_rx_queues_update()
986 init_data.cid = p_cid->cid; in qed_sp_eth_rx_queues_update()
987 init_data.opaque_fid = p_cid->opaque_fid; in qed_sp_eth_rx_queues_update()
995 p_ramrod = &p_ent->ramrod.rx_queue_update; in qed_sp_eth_rx_queues_update()
996 p_ramrod->vport_id = p_cid->abs.vport_id; in qed_sp_eth_rx_queues_update()
998 p_ramrod->rx_queue_id = cpu_to_le16(p_cid->abs.queue_id); in qed_sp_eth_rx_queues_update()
999 p_ramrod->complete_cqe_flg = complete_cqe_flg; in qed_sp_eth_rx_queues_update()
1000 p_ramrod->complete_event_flg = complete_event_flg; in qed_sp_eth_rx_queues_update()
1021 init_data.cid = p_cid->cid; in qed_eth_pf_rx_queue_stop()
1022 init_data.opaque_fid = p_cid->opaque_fid; in qed_eth_pf_rx_queue_stop()
1031 p_ramrod = &p_ent->ramrod.rx_queue_stop; in qed_eth_pf_rx_queue_stop()
1032 p_ramrod->vport_id = p_cid->abs.vport_id; in qed_eth_pf_rx_queue_stop()
1033 p_ramrod->rx_queue_id = cpu_to_le16(p_cid->abs.queue_id); in qed_eth_pf_rx_queue_stop()
1038 p_ramrod->complete_cqe_flg = ((p_cid->vfid == QED_QUEUE_CID_SELF) && in qed_eth_pf_rx_queue_stop()
1041 p_ramrod->complete_event_flg = (p_cid->vfid != QED_QUEUE_CID_SELF) || in qed_eth_pf_rx_queue_stop()
1052 int rc = -EINVAL; in qed_eth_rx_queue_stop()
1054 if (IS_PF(p_hwfn->cdev)) in qed_eth_rx_queue_stop()
1074 int rc = -EINVAL; in qed_eth_txq_start_ramrod()
1078 init_data.cid = p_cid->cid; in qed_eth_txq_start_ramrod()
1079 init_data.opaque_fid = p_cid->opaque_fid; in qed_eth_txq_start_ramrod()
1088 p_ramrod = &p_ent->ramrod.tx_queue_start; in qed_eth_txq_start_ramrod()
1089 p_ramrod->vport_id = p_cid->abs.vport_id; in qed_eth_txq_start_ramrod()
1091 p_ramrod->sb_id = cpu_to_le16(p_cid->sb_igu_id); in qed_eth_txq_start_ramrod()
1092 p_ramrod->sb_index = p_cid->sb_idx; in qed_eth_txq_start_ramrod()
1093 p_ramrod->stats_counter_id = p_cid->abs.stats_id; in qed_eth_txq_start_ramrod()
1095 p_ramrod->queue_zone_id = cpu_to_le16(p_cid->abs.queue_id); in qed_eth_txq_start_ramrod()
1096 p_ramrod->same_as_last_id = cpu_to_le16(p_cid->abs.queue_id); in qed_eth_txq_start_ramrod()
1098 p_ramrod->pbl_size = cpu_to_le16(pbl_size); in qed_eth_txq_start_ramrod()
1099 DMA_REGPAIR_LE(p_ramrod->pbl_base_addr, pbl_addr); in qed_eth_txq_start_ramrod()
1101 p_ramrod->qm_pq_id = cpu_to_le16(pq_id); in qed_eth_txq_start_ramrod()
1122 *pp_doorbell = p_hwfn->doorbells + in qed_eth_pf_tx_queue_start()
1123 qed_db_addr(p_cid->cid, DQ_DEMS_LEGACY); in qed_eth_pf_tx_queue_start()
1142 return -EINVAL; in qed_eth_tx_queue_start()
1144 if (IS_PF(p_hwfn->cdev)) in qed_eth_tx_queue_start()
1147 &p_ret_params->p_doorbell); in qed_eth_tx_queue_start()
1151 &p_ret_params->p_doorbell); in qed_eth_tx_queue_start()
1156 p_ret_params->p_handle = (void *)p_cid; in qed_eth_tx_queue_start()
1169 init_data.cid = p_cid->cid; in qed_eth_pf_tx_queue_stop()
1170 init_data.opaque_fid = p_cid->opaque_fid; in qed_eth_pf_tx_queue_stop()
1187 if (IS_PF(p_hwfn->cdev)) in qed_eth_tx_queue_stop()
1235 rc = qed_fw_vport(p_hwfn, p_filter_cmd->vport_to_remove_from, in qed_filter_ucast_common()
1240 rc = qed_fw_vport(p_hwfn, p_filter_cmd->vport_to_add_to, in qed_filter_ucast_common()
1258 *pp_ramrod = &(*pp_ent)->ramrod.vport_filter_update; in qed_filter_ucast_common()
1260 p_ramrod->filter_cmd_hdr.rx = p_filter_cmd->is_rx_filter ? 1 : 0; in qed_filter_ucast_common()
1261 p_ramrod->filter_cmd_hdr.tx = p_filter_cmd->is_tx_filter ? 1 : 0; in qed_filter_ucast_common()
1263 switch (p_filter_cmd->opcode) { in qed_filter_ucast_common()
1266 p_ramrod->filter_cmd_hdr.cmd_cnt = 2; break; in qed_filter_ucast_common()
1268 p_ramrod->filter_cmd_hdr.cmd_cnt = 1; break; in qed_filter_ucast_common()
1271 p_first_filter = &p_ramrod->filter_cmds[0]; in qed_filter_ucast_common()
1272 p_second_filter = &p_ramrod->filter_cmds[1]; in qed_filter_ucast_common()
1274 switch (p_filter_cmd->type) { in qed_filter_ucast_common()
1276 p_first_filter->type = ETH_FILTER_TYPE_MAC; break; in qed_filter_ucast_common()
1278 p_first_filter->type = ETH_FILTER_TYPE_VLAN; break; in qed_filter_ucast_common()
1280 p_first_filter->type = ETH_FILTER_TYPE_PAIR; break; in qed_filter_ucast_common()
1282 p_first_filter->type = ETH_FILTER_TYPE_INNER_MAC; break; in qed_filter_ucast_common()
1284 p_first_filter->type = ETH_FILTER_TYPE_INNER_VLAN; break; in qed_filter_ucast_common()
1286 p_first_filter->type = ETH_FILTER_TYPE_INNER_PAIR; break; in qed_filter_ucast_common()
1288 p_first_filter->type = ETH_FILTER_TYPE_INNER_MAC_VNI_PAIR; in qed_filter_ucast_common()
1291 p_first_filter->type = ETH_FILTER_TYPE_MAC_VNI_PAIR; break; in qed_filter_ucast_common()
1293 p_first_filter->type = ETH_FILTER_TYPE_VNI; break; in qed_filter_ucast_common()
1296 if ((p_first_filter->type == ETH_FILTER_TYPE_MAC) || in qed_filter_ucast_common()
1297 (p_first_filter->type == ETH_FILTER_TYPE_PAIR) || in qed_filter_ucast_common()
1298 (p_first_filter->type == ETH_FILTER_TYPE_INNER_MAC) || in qed_filter_ucast_common()
1299 (p_first_filter->type == ETH_FILTER_TYPE_INNER_PAIR) || in qed_filter_ucast_common()
1300 (p_first_filter->type == ETH_FILTER_TYPE_INNER_MAC_VNI_PAIR) || in qed_filter_ucast_common()
1301 (p_first_filter->type == ETH_FILTER_TYPE_MAC_VNI_PAIR)) { in qed_filter_ucast_common()
1302 qed_set_fw_mac_addr(&p_first_filter->mac_msb, in qed_filter_ucast_common()
1303 &p_first_filter->mac_mid, in qed_filter_ucast_common()
1304 &p_first_filter->mac_lsb, in qed_filter_ucast_common()
1305 (u8 *)p_filter_cmd->mac); in qed_filter_ucast_common()
1308 if ((p_first_filter->type == ETH_FILTER_TYPE_VLAN) || in qed_filter_ucast_common()
1309 (p_first_filter->type == ETH_FILTER_TYPE_PAIR) || in qed_filter_ucast_common()
1310 (p_first_filter->type == ETH_FILTER_TYPE_INNER_VLAN) || in qed_filter_ucast_common()
1311 (p_first_filter->type == ETH_FILTER_TYPE_INNER_PAIR)) in qed_filter_ucast_common()
1312 p_first_filter->vlan_id = cpu_to_le16(p_filter_cmd->vlan); in qed_filter_ucast_common()
1314 if ((p_first_filter->type == ETH_FILTER_TYPE_INNER_MAC_VNI_PAIR) || in qed_filter_ucast_common()
1315 (p_first_filter->type == ETH_FILTER_TYPE_MAC_VNI_PAIR) || in qed_filter_ucast_common()
1316 (p_first_filter->type == ETH_FILTER_TYPE_VNI)) in qed_filter_ucast_common()
1317 p_first_filter->vni = cpu_to_le32(p_filter_cmd->vni); in qed_filter_ucast_common()
1319 if (p_filter_cmd->opcode == QED_FILTER_MOVE) { in qed_filter_ucast_common()
1320 p_second_filter->type = p_first_filter->type; in qed_filter_ucast_common()
1321 p_second_filter->mac_msb = p_first_filter->mac_msb; in qed_filter_ucast_common()
1322 p_second_filter->mac_mid = p_first_filter->mac_mid; in qed_filter_ucast_common()
1323 p_second_filter->mac_lsb = p_first_filter->mac_lsb; in qed_filter_ucast_common()
1324 p_second_filter->vlan_id = p_first_filter->vlan_id; in qed_filter_ucast_common()
1325 p_second_filter->vni = p_first_filter->vni; in qed_filter_ucast_common()
1327 p_first_filter->action = ETH_FILTER_ACTION_REMOVE; in qed_filter_ucast_common()
1329 p_first_filter->vport_id = vport_to_remove_from; in qed_filter_ucast_common()
1331 p_second_filter->action = ETH_FILTER_ACTION_ADD; in qed_filter_ucast_common()
1332 p_second_filter->vport_id = vport_to_add_to; in qed_filter_ucast_common()
1333 } else if (p_filter_cmd->opcode == QED_FILTER_REPLACE) { in qed_filter_ucast_common()
1334 p_first_filter->vport_id = vport_to_add_to; in qed_filter_ucast_common()
1337 p_first_filter->action = ETH_FILTER_ACTION_REMOVE_ALL; in qed_filter_ucast_common()
1338 p_second_filter->action = ETH_FILTER_ACTION_ADD; in qed_filter_ucast_common()
1340 action = qed_filter_action(p_filter_cmd->opcode); in qed_filter_ucast_common()
1345 p_filter_cmd->opcode); in qed_filter_ucast_common()
1347 return -EINVAL; in qed_filter_ucast_common()
1350 p_first_filter->action = action; in qed_filter_ucast_common()
1351 p_first_filter->vport_id = (p_filter_cmd->opcode == in qed_filter_ucast_common()
1378 p_header = &p_ramrod->filter_cmd_hdr; in qed_sp_eth_filter_ucast()
1379 p_header->assert_on_error = p_filter_cmd->assert_on_error; in qed_sp_eth_filter_ucast()
1389 (p_filter_cmd->opcode == QED_FILTER_ADD) ? "ADD" : in qed_sp_eth_filter_ucast()
1390 ((p_filter_cmd->opcode == QED_FILTER_REMOVE) ? in qed_sp_eth_filter_ucast()
1392 ((p_filter_cmd->opcode == QED_FILTER_MOVE) ? in qed_sp_eth_filter_ucast()
1394 (p_filter_cmd->type == QED_FILTER_MAC) ? "MAC" : in qed_sp_eth_filter_ucast()
1395 ((p_filter_cmd->type == QED_FILTER_VLAN) ? in qed_sp_eth_filter_ucast()
1396 "VLAN" : "MAC & VLAN"), in qed_sp_eth_filter_ucast()
1397 p_ramrod->filter_cmd_hdr.cmd_cnt, in qed_sp_eth_filter_ucast()
1398 p_filter_cmd->is_rx_filter, in qed_sp_eth_filter_ucast()
1399 p_filter_cmd->is_tx_filter); in qed_sp_eth_filter_ucast()
1401 "vport_to_add_to = %d, vport_to_remove_from = %d, mac = %2x:%2x:%2x:%2x:%2x:%2x, vlan = %d\n", in qed_sp_eth_filter_ucast()
1402 p_filter_cmd->vport_to_add_to, in qed_sp_eth_filter_ucast()
1403 p_filter_cmd->vport_to_remove_from, in qed_sp_eth_filter_ucast()
1404 p_filter_cmd->mac[0], in qed_sp_eth_filter_ucast()
1405 p_filter_cmd->mac[1], in qed_sp_eth_filter_ucast()
1406 p_filter_cmd->mac[2], in qed_sp_eth_filter_ucast()
1407 p_filter_cmd->mac[3], in qed_sp_eth_filter_ucast()
1408 p_filter_cmd->mac[4], in qed_sp_eth_filter_ucast()
1409 p_filter_cmd->mac[5], in qed_sp_eth_filter_ucast()
1410 p_filter_cmd->vlan); in qed_sp_eth_filter_ucast()
1445 static u32 qed_crc32c_le(u32 seed, u8 *mac, u32 len) in qed_crc32c_le() argument
1449 memcpy((u8 *)(&packet_buf[0]), &mac[0], 6); in qed_crc32c_le()
1453 u8 qed_mcast_bin_from_mac(u8 *mac) in qed_mcast_bin_from_mac() argument
1456 mac, ETH_ALEN); in qed_mcast_bin_from_mac()
1475 if (p_filter_cmd->opcode == QED_FILTER_ADD) in qed_sp_eth_filter_mcast()
1476 rc = qed_fw_vport(p_hwfn, p_filter_cmd->vport_to_add_to, in qed_sp_eth_filter_mcast()
1479 rc = qed_fw_vport(p_hwfn, p_filter_cmd->vport_to_remove_from, in qed_sp_eth_filter_mcast()
1487 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid; in qed_sp_eth_filter_mcast()
1495 DP_ERR(p_hwfn, "Multi-cast command failed %d\n", rc); in qed_sp_eth_filter_mcast()
1499 p_ramrod = &p_ent->ramrod.vport_update; in qed_sp_eth_filter_mcast()
1500 p_ramrod->common.update_approx_mcast_flg = 1; in qed_sp_eth_filter_mcast()
1503 memset(&p_ramrod->approx_mcast.bins, 0, in qed_sp_eth_filter_mcast()
1504 sizeof(p_ramrod->approx_mcast.bins)); in qed_sp_eth_filter_mcast()
1509 if (p_filter_cmd->opcode == QED_FILTER_ADD) { in qed_sp_eth_filter_mcast()
1510 for (i = 0; i < p_filter_cmd->num_mc_addrs; i++) { in qed_sp_eth_filter_mcast()
1513 bit = qed_mcast_bin_from_mac(p_filter_cmd->mac[i]); in qed_sp_eth_filter_mcast()
1522 p_ramrod_bins = &p_ramrod->approx_mcast; in qed_sp_eth_filter_mcast()
1523 p_ramrod_bins->bins[i] = cpu_to_le32(bins[i]); in qed_sp_eth_filter_mcast()
1527 p_ramrod->common.vport_id = abs_vport_id; in qed_sp_eth_filter_mcast()
1540 /* only ADD and REMOVE operations are supported for multi-cast */ in qed_filter_mcast_cmd()
1541 if ((p_filter_cmd->opcode != QED_FILTER_ADD && in qed_filter_mcast_cmd()
1542 (p_filter_cmd->opcode != QED_FILTER_REMOVE)) || in qed_filter_mcast_cmd()
1543 (p_filter_cmd->num_mc_addrs > QED_MAX_MC_ADDRS)) in qed_filter_mcast_cmd()
1544 return -EINVAL; in qed_filter_mcast_cmd()
1547 struct qed_hwfn *p_hwfn = &cdev->hwfns[i]; in qed_filter_mcast_cmd()
1556 opaque_fid = p_hwfn->hw_info.opaque_fid; in qed_filter_mcast_cmd()
1575 struct qed_hwfn *p_hwfn = &cdev->hwfns[i]; in qed_filter_ucast_cmd()
1583 opaque_fid = p_hwfn->hw_info.opaque_fid; in qed_filter_ucast_cmd()
1601 if (IS_PF(p_hwfn->cdev)) { in __qed_get_vport_pstats_addrlen()
1606 struct qed_vf_iov *p_iov = p_hwfn->vf_iov_info; in __qed_get_vport_pstats_addrlen()
1607 struct pfvf_acquire_resp_tlv *p_resp = &p_iov->acquire_resp; in __qed_get_vport_pstats_addrlen()
1609 *p_addr = p_resp->pfdev_info.stats_info.pstats.address; in __qed_get_vport_pstats_addrlen()
1610 *p_len = p_resp->pfdev_info.stats_info.pstats.len; in __qed_get_vport_pstats_addrlen()
1627 p_stats->common.tx_ucast_bytes += in __qed_get_vport_pstats()
1629 p_stats->common.tx_mcast_bytes += in __qed_get_vport_pstats()
1631 p_stats->common.tx_bcast_bytes += in __qed_get_vport_pstats()
1633 p_stats->common.tx_ucast_pkts += in __qed_get_vport_pstats()
1635 p_stats->common.tx_mcast_pkts += in __qed_get_vport_pstats()
1637 p_stats->common.tx_bcast_pkts += in __qed_get_vport_pstats()
1639 p_stats->common.tx_err_drop_pkts += in __qed_get_vport_pstats()
1650 if (IS_PF(p_hwfn->cdev)) { in __qed_get_vport_tstats()
1655 struct qed_vf_iov *p_iov = p_hwfn->vf_iov_info; in __qed_get_vport_tstats()
1656 struct pfvf_acquire_resp_tlv *p_resp = &p_iov->acquire_resp; in __qed_get_vport_tstats()
1658 tstats_addr = p_resp->pfdev_info.stats_info.tstats.address; in __qed_get_vport_tstats()
1659 tstats_len = p_resp->pfdev_info.stats_info.tstats.len; in __qed_get_vport_tstats()
1665 p_stats->common.mftag_filter_discards += in __qed_get_vport_tstats()
1667 p_stats->common.mac_filter_discards += in __qed_get_vport_tstats()
1669 p_stats->common.gft_filter_drop += in __qed_get_vport_tstats()
1677 if (IS_PF(p_hwfn->cdev)) { in __qed_get_vport_ustats_addrlen()
1682 struct qed_vf_iov *p_iov = p_hwfn->vf_iov_info; in __qed_get_vport_ustats_addrlen()
1683 struct pfvf_acquire_resp_tlv *p_resp = &p_iov->acquire_resp; in __qed_get_vport_ustats_addrlen()
1685 *p_addr = p_resp->pfdev_info.stats_info.ustats.address; in __qed_get_vport_ustats_addrlen()
1686 *p_len = p_resp->pfdev_info.stats_info.ustats.len; in __qed_get_vport_ustats_addrlen()
1703 p_stats->common.rx_ucast_bytes += in __qed_get_vport_ustats()
1705 p_stats->common.rx_mcast_bytes += in __qed_get_vport_ustats()
1707 p_stats->common.rx_bcast_bytes += in __qed_get_vport_ustats()
1709 p_stats->common.rx_ucast_pkts += HILO_64_REGPAIR(ustats.rcv_ucast_pkts); in __qed_get_vport_ustats()
1710 p_stats->common.rx_mcast_pkts += HILO_64_REGPAIR(ustats.rcv_mcast_pkts); in __qed_get_vport_ustats()
1711 p_stats->common.rx_bcast_pkts += HILO_64_REGPAIR(ustats.rcv_bcast_pkts); in __qed_get_vport_ustats()
1718 if (IS_PF(p_hwfn->cdev)) { in __qed_get_vport_mstats_addrlen()
1723 struct qed_vf_iov *p_iov = p_hwfn->vf_iov_info; in __qed_get_vport_mstats_addrlen()
1724 struct pfvf_acquire_resp_tlv *p_resp = &p_iov->acquire_resp; in __qed_get_vport_mstats_addrlen()
1726 *p_addr = p_resp->pfdev_info.stats_info.mstats.address; in __qed_get_vport_mstats_addrlen()
1727 *p_len = p_resp->pfdev_info.stats_info.mstats.len; in __qed_get_vport_mstats_addrlen()
1744 p_stats->common.no_buff_discards += in __qed_get_vport_mstats()
1746 p_stats->common.packet_too_big_discard += in __qed_get_vport_mstats()
1748 p_stats->common.ttl0_discard += HILO_64_REGPAIR(mstats.ttl0_discard); in __qed_get_vport_mstats()
1749 p_stats->common.tpa_coalesced_pkts += in __qed_get_vport_mstats()
1751 p_stats->common.tpa_coalesced_events += in __qed_get_vport_mstats()
1753 p_stats->common.tpa_aborts_num += in __qed_get_vport_mstats()
1755 p_stats->common.tpa_coalesced_bytes += in __qed_get_vport_mstats()
1763 struct qed_eth_stats_common *p_common = &p_stats->common; in __qed_get_vport_port_stats()
1770 p_hwfn->mcp_info->port_addr + in __qed_get_vport_port_stats()
1774 p_common->rx_64_byte_packets += port_stats.eth.r64; in __qed_get_vport_port_stats()
1775 p_common->rx_65_to_127_byte_packets += port_stats.eth.r127; in __qed_get_vport_port_stats()
1776 p_common->rx_128_to_255_byte_packets += port_stats.eth.r255; in __qed_get_vport_port_stats()
1777 p_common->rx_256_to_511_byte_packets += port_stats.eth.r511; in __qed_get_vport_port_stats()
1778 p_common->rx_512_to_1023_byte_packets += port_stats.eth.r1023; in __qed_get_vport_port_stats()
1779 p_common->rx_1024_to_1518_byte_packets += port_stats.eth.r1518; in __qed_get_vport_port_stats()
1780 p_common->rx_crc_errors += port_stats.eth.rfcs; in __qed_get_vport_port_stats()
1781 p_common->rx_mac_crtl_frames += port_stats.eth.rxcf; in __qed_get_vport_port_stats()
1782 p_common->rx_pause_frames += port_stats.eth.rxpf; in __qed_get_vport_port_stats()
1783 p_common->rx_pfc_frames += port_stats.eth.rxpp; in __qed_get_vport_port_stats()
1784 p_common->rx_align_errors += port_stats.eth.raln; in __qed_get_vport_port_stats()
1785 p_common->rx_carrier_errors += port_stats.eth.rfcr; in __qed_get_vport_port_stats()
1786 p_common->rx_oversize_packets += port_stats.eth.rovr; in __qed_get_vport_port_stats()
1787 p_common->rx_jabbers += port_stats.eth.rjbr; in __qed_get_vport_port_stats()
1788 p_common->rx_undersize_packets += port_stats.eth.rund; in __qed_get_vport_port_stats()
1789 p_common->rx_fragments += port_stats.eth.rfrg; in __qed_get_vport_port_stats()
1790 p_common->tx_64_byte_packets += port_stats.eth.t64; in __qed_get_vport_port_stats()
1791 p_common->tx_65_to_127_byte_packets += port_stats.eth.t127; in __qed_get_vport_port_stats()
1792 p_common->tx_128_to_255_byte_packets += port_stats.eth.t255; in __qed_get_vport_port_stats()
1793 p_common->tx_256_to_511_byte_packets += port_stats.eth.t511; in __qed_get_vport_port_stats()
1794 p_common->tx_512_to_1023_byte_packets += port_stats.eth.t1023; in __qed_get_vport_port_stats()
1795 p_common->tx_1024_to_1518_byte_packets += port_stats.eth.t1518; in __qed_get_vport_port_stats()
1796 p_common->tx_pause_frames += port_stats.eth.txpf; in __qed_get_vport_port_stats()
1797 p_common->tx_pfc_frames += port_stats.eth.txpp; in __qed_get_vport_port_stats()
1798 p_common->rx_mac_bytes += port_stats.eth.rbyte; in __qed_get_vport_port_stats()
1799 p_common->rx_mac_uc_packets += port_stats.eth.rxuca; in __qed_get_vport_port_stats()
1800 p_common->rx_mac_mc_packets += port_stats.eth.rxmca; in __qed_get_vport_port_stats()
1801 p_common->rx_mac_bc_packets += port_stats.eth.rxbca; in __qed_get_vport_port_stats()
1802 p_common->rx_mac_frames_ok += port_stats.eth.rxpok; in __qed_get_vport_port_stats()
1803 p_common->tx_mac_bytes += port_stats.eth.tbyte; in __qed_get_vport_port_stats()
1804 p_common->tx_mac_uc_packets += port_stats.eth.txuca; in __qed_get_vport_port_stats()
1805 p_common->tx_mac_mc_packets += port_stats.eth.txmca; in __qed_get_vport_port_stats()
1806 p_common->tx_mac_bc_packets += port_stats.eth.txbca; in __qed_get_vport_port_stats()
1807 p_common->tx_mac_ctrl_frames += port_stats.eth.txcf; in __qed_get_vport_port_stats()
1809 p_common->brb_truncates += port_stats.brb.brb_truncate[j]; in __qed_get_vport_port_stats()
1810 p_common->brb_discards += port_stats.brb.brb_discard[j]; in __qed_get_vport_port_stats()
1813 if (QED_IS_BB(p_hwfn->cdev)) { in __qed_get_vport_port_stats()
1814 struct qed_eth_stats_bb *p_bb = &p_stats->bb; in __qed_get_vport_port_stats()
1816 p_bb->rx_1519_to_1522_byte_packets += in __qed_get_vport_port_stats()
1817 port_stats.eth.u0.bb0.r1522; in __qed_get_vport_port_stats()
1818 p_bb->rx_1519_to_2047_byte_packets += in __qed_get_vport_port_stats()
1819 port_stats.eth.u0.bb0.r2047; in __qed_get_vport_port_stats()
1820 p_bb->rx_2048_to_4095_byte_packets += in __qed_get_vport_port_stats()
1821 port_stats.eth.u0.bb0.r4095; in __qed_get_vport_port_stats()
1822 p_bb->rx_4096_to_9216_byte_packets += in __qed_get_vport_port_stats()
1823 port_stats.eth.u0.bb0.r9216; in __qed_get_vport_port_stats()
1824 p_bb->rx_9217_to_16383_byte_packets += in __qed_get_vport_port_stats()
1825 port_stats.eth.u0.bb0.r16383; in __qed_get_vport_port_stats()
1826 p_bb->tx_1519_to_2047_byte_packets += in __qed_get_vport_port_stats()
1827 port_stats.eth.u1.bb1.t2047; in __qed_get_vport_port_stats()
1828 p_bb->tx_2048_to_4095_byte_packets += in __qed_get_vport_port_stats()
1829 port_stats.eth.u1.bb1.t4095; in __qed_get_vport_port_stats()
1830 p_bb->tx_4096_to_9216_byte_packets += in __qed_get_vport_port_stats()
1831 port_stats.eth.u1.bb1.t9216; in __qed_get_vport_port_stats()
1832 p_bb->tx_9217_to_16383_byte_packets += in __qed_get_vport_port_stats()
1833 port_stats.eth.u1.bb1.t16383; in __qed_get_vport_port_stats()
1834 p_bb->tx_lpi_entry_count += port_stats.eth.u2.bb2.tlpiec; in __qed_get_vport_port_stats()
1835 p_bb->tx_total_collisions += port_stats.eth.u2.bb2.tncl; in __qed_get_vport_port_stats()
1837 struct qed_eth_stats_ah *p_ah = &p_stats->ah; in __qed_get_vport_port_stats()
1839 p_ah->rx_1519_to_max_byte_packets += in __qed_get_vport_port_stats()
1840 port_stats.eth.u0.ah0.r1519_to_max; in __qed_get_vport_port_stats()
1841 p_ah->tx_1519_to_max_byte_packets = in __qed_get_vport_port_stats()
1842 port_stats.eth.u1.ah1.t1519_to_max; in __qed_get_vport_port_stats()
1845 p_common->link_change_count = qed_rd(p_hwfn, p_ptt, in __qed_get_vport_port_stats()
1846 p_hwfn->mcp_info->port_addr + in __qed_get_vport_port_stats()
1861 if (b_get_port_stats && p_hwfn->mcp_info) in __qed_get_vport_stats()
1875 struct qed_hwfn *p_hwfn = &cdev->hwfns[i]; in _qed_get_vport_stats()
1915 if (!cdev || cdev->recov_in_prog) { in qed_get_vport_stats_context()
1922 if (!cdev->reset_stats) in qed_get_vport_stats_context()
1927 ((u64 *)stats)[i] -= ((u64 *)cdev->reset_stats)[i]; in qed_get_vport_stats_context()
1930 /* zeroes V-PORT specific portion of stats (Port stats remains untouched) */
1936 struct qed_hwfn *p_hwfn = &cdev->hwfns[i]; in qed_reset_vport_stats()
1969 if (!cdev->reset_stats) { in qed_reset_vport_stats()
1972 _qed_get_vport_stats(cdev, cdev->reset_stats, false); in qed_reset_vport_stats()
1973 cdev->reset_stats->common.link_change_count = 0; in qed_reset_vport_stats()
1993 if (test_bit(QED_MF_DISABLE_ARFS, &p_hwfn->cdev->mf_bits)) in qed_arfs_mode_configure()
1996 if (p_cfg_params->mode != QED_FILTER_CONFIG_MODE_DISABLE) { in qed_arfs_mode_configure()
1997 qed_gft_config(p_hwfn, p_ptt, p_hwfn->rel_pf_id, in qed_arfs_mode_configure()
1998 p_cfg_params->tcp, in qed_arfs_mode_configure()
1999 p_cfg_params->udp, in qed_arfs_mode_configure()
2000 p_cfg_params->ipv4, in qed_arfs_mode_configure()
2001 p_cfg_params->ipv6, in qed_arfs_mode_configure()
2002 qed_arfs_mode_to_hsi(p_cfg_params->mode)); in qed_arfs_mode_configure()
2006 p_cfg_params->tcp ? "Enable" : "Disable", in qed_arfs_mode_configure()
2007 p_cfg_params->udp ? "Enable" : "Disable", in qed_arfs_mode_configure()
2008 p_cfg_params->ipv4 ? "Enable" : "Disable", in qed_arfs_mode_configure()
2009 p_cfg_params->ipv6 ? "Enable" : "Disable", in qed_arfs_mode_configure()
2010 (u32)p_cfg_params->mode); in qed_arfs_mode_configure()
2013 qed_gft_disable(p_hwfn, p_ptt, p_hwfn->rel_pf_id); in qed_arfs_mode_configure()
2027 int rc = -EINVAL; in qed_configure_rfs_ntuple_filter()
2033 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid; in qed_configure_rfs_ntuple_filter()
2048 p_ramrod = &p_ent->ramrod.rx_update_gft; in qed_configure_rfs_ntuple_filter()
2050 DMA_REGPAIR_LE(p_ramrod->pkt_hdr_addr, p_params->addr); in qed_configure_rfs_ntuple_filter()
2051 p_ramrod->pkt_hdr_length = cpu_to_le16(p_params->length); in qed_configure_rfs_ntuple_filter()
2053 if (p_params->b_is_drop) { in qed_configure_rfs_ntuple_filter()
2054 p_ramrod->vport_id = cpu_to_le16(ETH_GFT_TRASHCAN_VPORT); in qed_configure_rfs_ntuple_filter()
2056 rc = qed_fw_vport(p_hwfn, p_params->vport_id, &abs_vport_id); in qed_configure_rfs_ntuple_filter()
2060 if (p_params->qid != QED_RFS_NTUPLE_QID_RSS) { in qed_configure_rfs_ntuple_filter()
2061 rc = qed_fw_l2_queue(p_hwfn, p_params->qid, in qed_configure_rfs_ntuple_filter()
2066 p_ramrod->rx_qid_valid = 1; in qed_configure_rfs_ntuple_filter()
2067 p_ramrod->rx_qid = cpu_to_le16(abs_rx_q_id); in qed_configure_rfs_ntuple_filter()
2070 p_ramrod->vport_id = cpu_to_le16((u16)abs_vport_id); in qed_configure_rfs_ntuple_filter()
2073 p_ramrod->flow_id_valid = 0; in qed_configure_rfs_ntuple_filter()
2074 p_ramrod->flow_id = 0; in qed_configure_rfs_ntuple_filter()
2075 p_ramrod->filter_action = p_params->b_is_add ? GFT_ADD_FILTER in qed_configure_rfs_ntuple_filter()
2079 "V[%0x], Q[%04x] - %s filter from 0x%llx [length %04xb]\n", in qed_configure_rfs_ntuple_filter()
2081 p_params->b_is_add ? "Adding" : "Removing", in qed_configure_rfs_ntuple_filter()
2082 (u64)p_params->addr, p_params->length); in qed_configure_rfs_ntuple_filter()
2101 p_cid->sb_igu_id * sizeof(u64), in qed_get_rxq_coalesce()
2112 USTORM_ETH_QUEUE_ZONE_GTT_OFFSET(p_cid->abs.queue_id); in qed_get_rxq_coalesce()
2117 return -EINVAL; in qed_get_rxq_coalesce()
2135 p_cid->sb_igu_id * sizeof(u64), in qed_get_txq_coalesce()
2146 XSTORM_ETH_QUEUE_ZONE_GTT_OFFSET(p_cid->abs.queue_id); in qed_get_txq_coalesce()
2151 return -EINVAL; in qed_get_txq_coalesce()
2165 if (IS_VF(p_hwfn->cdev)) { in qed_get_queue_coalesce()
2175 return -EAGAIN; in qed_get_queue_coalesce()
2177 if (p_cid->b_is_rx) { in qed_get_queue_coalesce()
2205 info->num_tc = p_hwfn->hw_info.num_hw_tc; in qed_fill_eth_dev_info()
2207 if (cdev->int_params.out.int_mode == QED_INT_MODE_MSIX) { in qed_fill_eth_dev_info()
2210 /* Since the feature controls only queue-zones, in qed_fill_eth_dev_info()
2215 struct qed_hwfn *hwfn = &cdev->hwfns[i]; in qed_fill_eth_dev_info()
2220 cids = hwfn->pf_params.eth_pf_params.num_cons; in qed_fill_eth_dev_info()
2221 cids /= (2 + info->num_tc); in qed_fill_eth_dev_info()
2226 * upper-limit guarantes that it would fit in a u8. in qed_fill_eth_dev_info()
2228 if (cdev->int_params.fp_msix_cnt) { in qed_fill_eth_dev_info()
2229 u8 irqs = cdev->int_params.fp_msix_cnt; in qed_fill_eth_dev_info()
2231 info->num_queues = (u8)min_t(u16, in qed_fill_eth_dev_info()
2235 info->num_queues = cdev->num_hwfns; in qed_fill_eth_dev_info()
2239 max_vf_vlan_filters = cdev->p_iov_info->total_vfs * in qed_fill_eth_dev_info()
2241 max_vf_mac_filters = cdev->p_iov_info->total_vfs * in qed_fill_eth_dev_info()
2244 info->num_vlan_filters = RESC_NUM(QED_LEADING_HWFN(cdev), in qed_fill_eth_dev_info()
2245 QED_VLAN) - in qed_fill_eth_dev_info()
2247 info->num_mac_filters = RESC_NUM(QED_LEADING_HWFN(cdev), in qed_fill_eth_dev_info()
2248 QED_MAC) - in qed_fill_eth_dev_info()
2251 ether_addr_copy(info->port_mac, in qed_fill_eth_dev_info()
2252 cdev->hwfns[0].hw_info.hw_mac_addr); in qed_fill_eth_dev_info()
2254 info->xdp_supported = true; in qed_fill_eth_dev_info()
2258 info->num_tc = 1; in qed_fill_eth_dev_info()
2262 struct qed_hwfn *p_hwfn = &cdev->hwfns[i]; in qed_fill_eth_dev_info()
2267 info->num_queues += queues; in qed_fill_eth_dev_info()
2272 if (total_cids >= info->num_queues * 3) in qed_fill_eth_dev_info()
2273 info->xdp_supported = true; in qed_fill_eth_dev_info()
2275 qed_vf_get_num_vlan_filters(&cdev->hwfns[0], in qed_fill_eth_dev_info()
2276 (u8 *)&info->num_vlan_filters); in qed_fill_eth_dev_info()
2277 qed_vf_get_num_mac_filters(&cdev->hwfns[0], in qed_fill_eth_dev_info()
2278 (u8 *)&info->num_mac_filters); in qed_fill_eth_dev_info()
2279 qed_vf_get_port_mac(&cdev->hwfns[0], info->port_mac); in qed_fill_eth_dev_info()
2281 info->is_legacy = !!cdev->hwfns[0].vf_iov_info->b_pre_fp_hsi; in qed_fill_eth_dev_info()
2284 qed_fill_dev_info(cdev, &info->common); in qed_fill_eth_dev_info()
2287 eth_zero_addr(info->common.hw_mac); in qed_fill_eth_dev_info()
2295 cdev->protocol_ops.eth = ops; in qed_register_eth_ops()
2296 cdev->ops_cookie = cookie; in qed_register_eth_ops()
2303 static bool qed_check_mac(struct qed_dev *cdev, u8 *mac) in qed_check_mac() argument
2308 return qed_vf_check_mac(&cdev->hwfns[0], mac); in qed_check_mac()
2318 struct qed_hwfn *p_hwfn = &cdev->hwfns[i]; in qed_start_vport()
2320 start.tpa_mode = params->gro_enable ? QED_TPA_MODE_GRO : in qed_start_vport()
2322 start.remove_inner_vlan = params->remove_inner_vlan; in qed_start_vport()
2324 start.drop_ttl0 = params->drop_ttl0; in qed_start_vport()
2325 start.opaque_fid = p_hwfn->hw_info.opaque_fid; in qed_start_vport()
2326 start.concrete_fid = p_hwfn->hw_info.concrete_fid; in qed_start_vport()
2327 start.handle_ptp_pkts = params->handle_ptp_pkts; in qed_start_vport()
2328 start.vport_id = params->vport_id; in qed_start_vport()
2330 start.mtu = params->mtu; in qed_start_vport()
2345 "Started V-PORT %d with MTU %d\n", in qed_start_vport()
2349 if (params->clear_stats) in qed_start_vport()
2360 struct qed_hwfn *p_hwfn = &cdev->hwfns[i]; in qed_stop_vport()
2363 p_hwfn->hw_info.opaque_fid, vport_id); in qed_stop_vport()
2380 rss->update_rss_config = 1; in qed_update_vport_rss()
2381 rss->rss_enable = 1; in qed_update_vport_rss()
2382 rss->update_rss_capabilities = 1; in qed_update_vport_rss()
2383 rss->update_rss_ind_table = 1; in qed_update_vport_rss()
2384 rss->update_rss_key = 1; in qed_update_vport_rss()
2385 rss->rss_caps = input->rss_caps; in qed_update_vport_rss()
2386 memcpy(rss->rss_key, input->rss_key, QED_RSS_KEY_SIZE * sizeof(u32)); in qed_update_vport_rss()
2391 * whether RSS is really required, since 2-queues on CMT doesn't in qed_update_vport_rss()
2394 if (cdev->num_hwfns == 1) { in qed_update_vport_rss()
2395 memcpy(rss->rss_ind_table, in qed_update_vport_rss()
2396 input->rss_ind_table, in qed_update_vport_rss()
2398 rss->rss_table_size_log = 7; in qed_update_vport_rss()
2402 /* Start by copying the non-spcific information to the 2nd copy */ in qed_update_vport_rss()
2405 /* CMT should be round-robin */ in qed_update_vport_rss()
2407 struct qed_queue_cid *cid = input->rss_ind_table[i]; in qed_update_vport_rss()
2410 if (cid->p_owner == QED_LEADING_HWFN(cdev)) in qed_update_vport_rss()
2415 t_rss->rss_ind_table[i / cdev->num_hwfns] = cid; in qed_update_vport_rss()
2420 for (i = 1; i < QED_RSS_IND_TABLE_SIZE / cdev->num_hwfns; i++) { in qed_update_vport_rss()
2425 if (i == QED_RSS_IND_TABLE_SIZE / cdev->num_hwfns) { in qed_update_vport_rss()
2427 "CMT - 1 queue per-hwfn; Disabling RSS\n"); in qed_update_vport_rss()
2428 return -EINVAL; in qed_update_vport_rss()
2444 return -ENODEV; in qed_update_vport()
2446 rss = vzalloc(array_size(sizeof(*rss), cdev->num_hwfns)); in qed_update_vport()
2448 return -ENOMEM; in qed_update_vport()
2453 sp_params.vport_id = params->vport_id; in qed_update_vport()
2454 sp_params.update_vport_active_rx_flg = params->update_vport_active_flg; in qed_update_vport()
2455 sp_params.update_vport_active_tx_flg = params->update_vport_active_flg; in qed_update_vport()
2456 sp_params.vport_active_rx_flg = params->vport_active_flg; in qed_update_vport()
2457 sp_params.vport_active_tx_flg = params->vport_active_flg; in qed_update_vport()
2458 sp_params.update_tx_switching_flg = params->update_tx_switching_flg; in qed_update_vport()
2459 sp_params.tx_switching_flg = params->tx_switching_flg; in qed_update_vport()
2460 sp_params.accept_any_vlan = params->accept_any_vlan; in qed_update_vport()
2462 params->update_accept_any_vlan_flg; in qed_update_vport()
2465 if (params->update_rss_flg) in qed_update_vport()
2466 if (qed_update_vport_rss(cdev, &params->rss_params, rss)) in qed_update_vport()
2467 params->update_rss_flg = 0; in qed_update_vport()
2470 struct qed_hwfn *p_hwfn = &cdev->hwfns[i]; in qed_update_vport()
2472 if (params->update_rss_flg) in qed_update_vport()
2475 sp_params.opaque_fid = p_hwfn->hw_info.opaque_fid; in qed_update_vport()
2485 "Updated V-PORT %d: active_flag %d [update %d]\n", in qed_update_vport()
2486 params->vport_id, params->vport_active_flg, in qed_update_vport()
2487 params->update_vport_active_flg); in qed_update_vport()
2507 hwfn_index = rss_num % cdev->num_hwfns; in qed_start_rxq()
2508 p_hwfn = &cdev->hwfns[hwfn_index]; in qed_start_rxq()
2510 p_params->queue_id = p_params->queue_id / cdev->num_hwfns; in qed_start_rxq()
2511 p_params->stats_id = p_params->vport_id; in qed_start_rxq()
2514 p_hwfn->hw_info.opaque_fid, in qed_start_rxq()
2520 DP_ERR(cdev, "Failed to start RXQ#%d\n", p_params->queue_id); in qed_start_rxq()
2525 "Started RX-Q %d [rss_num %d] on V-PORT %d and SB igu %d\n", in qed_start_rxq()
2526 p_params->queue_id, rss_num, p_params->vport_id, in qed_start_rxq()
2527 p_params->p_sb->igu_sb_id); in qed_start_rxq()
2537 hwfn_index = rss_id % cdev->num_hwfns; in qed_stop_rxq()
2538 p_hwfn = &cdev->hwfns[hwfn_index]; in qed_stop_rxq()
2559 hwfn_index = rss_num % cdev->num_hwfns; in qed_start_txq()
2560 p_hwfn = &cdev->hwfns[hwfn_index]; in qed_start_txq()
2561 p_params->queue_id = p_params->queue_id / cdev->num_hwfns; in qed_start_txq()
2562 p_params->stats_id = p_params->vport_id; in qed_start_txq()
2565 p_hwfn->hw_info.opaque_fid, in qed_start_txq()
2566 p_params, p_params->tc, in qed_start_txq()
2570 DP_ERR(cdev, "Failed to start TXQ#%d\n", p_params->queue_id); in qed_start_txq()
2575 "Started TX-Q %d [rss_num %d] on V-PORT %d and SB igu %d\n", in qed_start_txq()
2576 p_params->queue_id, rss_num, p_params->vport_id, in qed_start_txq()
2577 p_params->p_sb->igu_sb_id); in qed_start_txq()
2601 hwfn_index = rss_id % cdev->num_hwfns; in qed_stop_txq()
2602 p_hwfn = &cdev->hwfns[hwfn_index]; in qed_stop_txq()
2620 if (tunn_params->update_vxlan_port) { in qed_tunn_configure()
2622 tunn_info.vxlan_port.port = tunn_params->vxlan_port; in qed_tunn_configure()
2625 if (tunn_params->update_geneve_port) { in qed_tunn_configure()
2627 tunn_info.geneve_port.port = tunn_params->geneve_port; in qed_tunn_configure()
2631 struct qed_hwfn *hwfn = &cdev->hwfns[i]; in qed_tunn_configure()
2635 tun = &hwfn->cdev->tunnel; in qed_tunn_configure()
2639 return -EAGAIN; in qed_tunn_configure()
2656 vxlan_port = tun->vxlan_port.port; in qed_tunn_configure()
2657 geneve_port = tun->geneve_port.port; in qed_tunn_configure()
2709 if (!params->vlan_valid && !params->mac_valid) { in qed_configure_filter_ucast()
2711 "Tried configuring a unicast filter, but both MAC and VLAN are not set\n"); in qed_configure_filter_ucast()
2712 return -EINVAL; in qed_configure_filter_ucast()
2716 switch (params->type) { in qed_configure_filter_ucast()
2728 params->type); in qed_configure_filter_ucast()
2731 if (params->vlan_valid && params->mac_valid) { in qed_configure_filter_ucast()
2733 ether_addr_copy(ucast.mac, params->mac); in qed_configure_filter_ucast()
2734 ucast.vlan = params->vlan; in qed_configure_filter_ucast()
2735 } else if (params->mac_valid) { in qed_configure_filter_ucast()
2737 ether_addr_copy(ucast.mac, params->mac); in qed_configure_filter_ucast()
2740 ucast.vlan = params->vlan; in qed_configure_filter_ucast()
2756 switch (params->type) { in qed_configure_filter_mcast()
2765 params->type); in qed_configure_filter_mcast()
2768 mcast.num_mc_addrs = params->num; in qed_configure_filter_mcast()
2770 ether_addr_copy(mcast.mac[i], params->mac[i]); in qed_configure_filter_mcast()
2787 qed_arfs_mode_configure(p_hwfn, p_hwfn->p_arfs_ptt, in qed_configure_arfs_searcher()
2797 struct qed_common_cb_ops *op = p_hwfn->cdev->protocol_ops.common; in qed_arfs_sp_response_handler()
2798 void *dev = p_hwfn->cdev->ops_cookie; in qed_arfs_sp_response_handler()
2800 op->arfs_filter_op(dev, cookie, fw_return_code); in qed_arfs_sp_response_handler()
2810 int rc = -EINVAL; in qed_ntuple_arfs_filter_config()
2815 if (params->b_is_vf) { in qed_ntuple_arfs_filter_config()
2816 if (!qed_iov_is_valid_vfid(p_hwfn, params->vf_id, false, in qed_ntuple_arfs_filter_config()
2819 params->vf_id); in qed_ntuple_arfs_filter_config()
2823 params->vport_id = params->vf_id + 1; in qed_ntuple_arfs_filter_config()
2824 params->qid = QED_RFS_NTUPLE_QID_RSS; in qed_ntuple_arfs_filter_config()
2830 "Failed to issue a-RFS filter configuration\n"); in qed_ntuple_arfs_filter_config()
2833 "Successfully issued a-RFS filter configuration\n"); in qed_ntuple_arfs_filter_config()
2844 p_hwfn = p_cid->p_owner; in qed_get_coalesce()
2856 return qed_eth_cqe_completion(&dev->hwfns[rss_id % dev->num_hwfns], in qed_fp_cqe_completion()
2860 static int qed_req_bulletin_update_mac(struct qed_dev *cdev, const u8 *mac) in qed_req_bulletin_update_mac() argument
2868 struct qed_hwfn *p_hwfn = &cdev->hwfns[i]; in qed_req_bulletin_update_mac()
2870 ret = qed_vf_pf_bulletin_update_mac(p_hwfn, mac); in qed_req_bulletin_update_mac()
2918 /* TODO - reference count for module? */ in qed_put_eth_ops()