Lines Matching defs:dev_cap

295 					      struct mlx4_dev_cap *dev_cap)
304 dev_cap->reserved_uars /
344 static int mlx4_query_func(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
355 dev_cap->max_eqs = func.max_eq;
356 dev_cap->reserved_eqs = func.rsvd_eqs;
357 dev_cap->reserved_uars = func.rsvd_uars;
365 struct mlx4_caps *dev_cap = &dev->caps;
368 if (!(dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_EQE_STRIDE) ||
369 !(dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_CQE_STRIDE))
375 if (!(dev_cap->flags & MLX4_DEV_CAP_FLAG_64B_EQE) ||
376 !(dev_cap->flags & MLX4_DEV_CAP_FLAG_64B_CQE)) {
377 dev_cap->flags2 &= ~MLX4_DEV_CAP_FLAG2_CQE_STRIDE;
378 dev_cap->flags2 &= ~MLX4_DEV_CAP_FLAG2_EQE_STRIDE;
385 dev_cap->flags &= ~MLX4_DEV_CAP_FLAG_64B_CQE;
386 dev_cap->flags &= ~MLX4_DEV_CAP_FLAG_64B_EQE;
389 dev_cap->function_caps |= MLX4_FUNC_CAP_EQE_CQE_STRIDE;
393 dev_cap->flags2 &= ~MLX4_DEV_CAP_FLAG2_CQE_STRIDE;
394 dev_cap->flags2 &= ~MLX4_DEV_CAP_FLAG2_EQE_STRIDE;
458 static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
463 err = mlx4_QUERY_DEV_CAP(dev, dev_cap);
468 mlx4_dev_cap_dump(dev, dev_cap);
470 if (dev_cap->min_page_sz > PAGE_SIZE) {
472 dev_cap->min_page_sz, PAGE_SIZE);
475 if (dev_cap->num_ports > MLX4_MAX_PORTS) {
477 dev_cap->num_ports, MLX4_MAX_PORTS);
481 if (dev_cap->uar_size > pci_resource_len(dev->persist->pdev, 2)) {
483 dev_cap->uar_size,
489 dev->caps.num_ports = dev_cap->num_ports;
490 dev->caps.num_sys_eqs = dev_cap->num_sys_eqs;
491 dev->phys_caps.num_phys_eqs = dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_SYS_EQS ?
495 err = _mlx4_dev_port(dev, i, dev_cap->port_cap + i);
502 dev->caps.map_clock_to_user = dev_cap->map_clock_to_user;
504 dev->caps.num_uars = dev_cap->uar_size / PAGE_SIZE;
505 dev->caps.local_ca_ack_delay = dev_cap->local_ca_ack_delay;
506 dev->caps.bf_reg_size = dev_cap->bf_reg_size;
507 dev->caps.bf_regs_per_page = dev_cap->bf_regs_per_page;
508 dev->caps.max_sq_sg = dev_cap->max_sq_sg;
509 dev->caps.max_rq_sg = dev_cap->max_rq_sg;
510 dev->caps.max_wqes = dev_cap->max_qp_sz;
511 dev->caps.max_qp_init_rdma = dev_cap->max_requester_per_qp;
512 dev->caps.max_srq_wqes = dev_cap->max_srq_sz;
513 dev->caps.max_srq_sge = dev_cap->max_rq_sg - 1;
514 dev->caps.reserved_srqs = dev_cap->reserved_srqs;
515 dev->caps.max_sq_desc_sz = dev_cap->max_sq_desc_sz;
516 dev->caps.max_rq_desc_sz = dev_cap->max_rq_desc_sz;
521 dev->caps.max_cqes = dev_cap->max_cq_sz - 1;
522 dev->caps.reserved_cqs = dev_cap->reserved_cqs;
523 dev->caps.reserved_eqs = dev_cap->reserved_eqs;
524 dev->caps.reserved_mtts = dev_cap->reserved_mtts;
525 dev->caps.reserved_mrws = dev_cap->reserved_mrws;
527 dev->caps.reserved_pds = dev_cap->reserved_pds;
529 dev_cap->reserved_xrcds : 0;
531 dev_cap->max_xrcds : 0;
532 dev->caps.mtt_entry_sz = dev_cap->mtt_entry_sz;
534 dev->caps.max_msg_sz = dev_cap->max_msg_sz;
535 dev->caps.page_size_cap = ~(u32) (dev_cap->min_page_sz - 1);
536 dev->caps.flags = dev_cap->flags;
537 dev->caps.flags2 = dev_cap->flags2;
538 dev->caps.bmme_flags = dev_cap->bmme_flags;
539 dev->caps.reserved_lkey = dev_cap->reserved_lkey;
540 dev->caps.stat_rate_support = dev_cap->stat_rate_support;
541 dev->caps.max_gso_sz = dev_cap->max_gso_sz;
542 dev->caps.max_rss_tbl_sz = dev_cap->max_rss_tbl_sz;
543 dev->caps.wol_port[1] = dev_cap->wol_port[1];
544 dev->caps.wol_port[2] = dev_cap->wol_port[2];
545 dev->caps.health_buffer_addrs = dev_cap->health_buffer_addrs;
557 mlx4_set_num_reserved_uars(dev, dev_cap);
637 if (dev->caps.log_num_macs > dev_cap->port_cap[i].log_max_macs) {
638 dev->caps.log_num_macs = dev_cap->port_cap[i].log_max_macs;
642 if (dev->caps.log_num_vlans > dev_cap->port_cap[i].log_max_vlans) {
643 dev->caps.log_num_vlans = dev_cap->port_cap[i].log_max_vlans;
657 dev->caps.max_counters = dev_cap->max_counters;
659 dev->caps.reserved_qps_cnt[MLX4_QP_REGION_FW] = dev_cap->reserved_qps;
667 if (dev_cap->dmfs_high_rate_qpn_base > 0 &&
669 dev->caps.dmfs_high_rate_qpn_base = dev_cap->dmfs_high_rate_qpn_base;
674 if (dev_cap->dmfs_high_rate_qpn_range > 0 &&
676 dev->caps.dmfs_high_rate_qpn_range = dev_cap->dmfs_high_rate_qpn_range;
686 dev->caps.rl_caps = dev_cap->rl_caps;
699 if (dev_cap->flags &
706 if (dev_cap->flags2 &
710 dev_cap->flags2 &= ~MLX4_DEV_CAP_FLAG2_CQE_STRIDE;
711 dev_cap->flags2 &= ~MLX4_DEV_CAP_FLAG2_EQE_STRIDE;
844 struct mlx4_dev_cap *dev_cap,
849 dev->caps.num_qp_per_mgm = dev_cap->fs_max_num_qp_per_entry;
851 dev_cap->fs_log_max_ucast_qp_range_size;
912 struct mlx4_dev_cap *dev_cap;
918 dev_cap = kzalloc(sizeof(*dev_cap), GFP_KERNEL);
919 if (!hca_param || !func_cap || !dev_cap) {
943 err = mlx4_dev_cap(dev, dev_cap);
974 mlx4_set_num_reserved_uars(dev, dev_cap);
1074 slave_adjust_steering_mode(dev, dev_cap, hca_param);
1091 kfree(dev_cap);
1669 static int mlx4_init_icm(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap,
1700 err = mlx4_init_cmpt_table(dev, init_hca->cmpt_base, dev_cap->cmpt_entry_sz);
1709 init_hca->eqc_base, dev_cap->eqc_entry_sz,
1739 dev_cap->dmpt_entry_sz,
1749 dev_cap->qpc_entry_sz,
1760 dev_cap->aux_entry_sz,
1771 dev_cap->altc_entry_sz,
1782 dev_cap->rdmarc_entry_sz << priv->qp_table.rdmarc_shift,
1793 dev_cap->cqc_entry_sz,
1803 dev_cap->srq_entry_sz,
2199 struct mlx4_dev_cap *dev_cap)
2213 dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_FS_EN &&
2215 (dev_cap->fs_max_num_qp_per_entry >=
2217 choose_log_fs_mgm_entry_size(dev_cap->fs_max_num_qp_per_entry) >=
2220 choose_log_fs_mgm_entry_size(dev_cap->fs_max_num_qp_per_entry);
2222 dev->caps.num_qp_per_mgm = dev_cap->fs_max_num_qp_per_entry;
2224 dev_cap->fs_log_max_ucast_qp_range_size;
2252 struct mlx4_dev_cap *dev_cap)
2255 dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_VXLAN_OFFLOADS)
2328 struct mlx4_dev_cap *dev_cap = NULL;
2336 dev_cap = kzalloc(sizeof(*dev_cap), GFP_KERNEL);
2339 if (!dev_cap || !init_hca) {
2344 err = mlx4_dev_cap(dev, dev_cap);
2350 choose_steering_mode(dev, dev_cap);
2351 choose_tunnel_offload_mode(dev, dev_cap);
2374 icm_size = mlx4_make_profile(dev, &profile, dev_cap,
2395 err = mlx4_init_icm(dev, dev_cap, init_hca, icm_size);
2405 if (dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_SYS_EQS) {
2406 err = mlx4_query_func(dev, dev_cap);
2411 dev->caps.num_eqs = dev_cap->max_eqs;
2412 dev->caps.reserved_eqs = dev_cap->reserved_eqs;
2413 dev->caps.reserved_uars = dev_cap->reserved_uars;
2525 kfree(dev_cap);
3350 static int mlx4_check_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap,
3355 if (!(dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_80_VFS) &&
3402 struct mlx4_dev_cap *dev_cap = NULL;
3505 /* when we hit the goto slave_start below, dev_cap already initialized */
3506 if (!dev_cap) {
3507 dev_cap = kzalloc(sizeof(*dev_cap), GFP_KERNEL);
3509 if (!dev_cap) {
3514 err = mlx4_QUERY_DEV_CAP(dev, dev_cap);
3520 if (mlx4_check_dev_cap(dev, dev_cap, nvfs))
3523 if (!(dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_SYS_EQS)) {
3548 memset(dev_cap, 0, sizeof(*dev_cap));
3549 err = mlx4_QUERY_DEV_CAP(dev, dev_cap);
3555 if (mlx4_check_dev_cap(dev, dev_cap, nvfs))
3583 if (mlx4_is_master(dev) && (dev_cap->flags2 & MLX4_DEV_CAP_FLAG2_SYS_EQS)) {
3719 kfree(dev_cap);
3787 kfree(dev_cap);