Lines Matching refs:ibp
101 static u16 hfi1_lookup_pkey_value(struct hfi1_ibport *ibp, int pkey_idx) in hfi1_lookup_pkey_value() argument
103 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in hfi1_lookup_pkey_value()
125 static void cleanup_traps(struct hfi1_ibport *ibp, struct trap_node *trap) in cleanup_traps() argument
133 spin_lock_irqsave(&ibp->rvp.lock, flags); in cleanup_traps()
134 list_replace_init(&ibp->rvp.trap_lists[i].list, &trap_list); in cleanup_traps()
135 ibp->rvp.trap_lists[i].list_len = 0; in cleanup_traps()
136 spin_unlock_irqrestore(&ibp->rvp.lock, flags); in cleanup_traps()
156 static struct trap_node *check_and_add_trap(struct hfi1_ibport *ibp, in check_and_add_trap() argument
180 spin_lock_irqsave(&ibp->rvp.lock, flags); in check_and_add_trap()
181 trap_list = &ibp->rvp.trap_lists[queue_id]; in check_and_add_trap()
208 if (!timer_pending(&ibp->rvp.trap_timer)) { in check_and_add_trap()
216 (1UL << ibp->rvp.subnet_timeout)) / 1000; in check_and_add_trap()
217 mod_timer(&ibp->rvp.trap_timer, in check_and_add_trap()
223 spin_unlock_irqrestore(&ibp->rvp.lock, flags); in check_and_add_trap()
228 static void subn_handle_opa_trap_repress(struct hfi1_ibport *ibp, in subn_handle_opa_trap_repress() argument
239 spin_lock_irqsave(&ibp->rvp.lock, flags); in subn_handle_opa_trap_repress()
241 trap_list = &ibp->rvp.trap_lists[i]; in subn_handle_opa_trap_repress()
255 spin_unlock_irqrestore(&ibp->rvp.lock, flags); in subn_handle_opa_trap_repress()
258 static void hfi1_update_sm_ah_attr(struct hfi1_ibport *ibp, in hfi1_update_sm_ah_attr() argument
262 rdma_ah_set_port_num(attr, ppd_from_ibp(ibp)->port); in hfi1_update_sm_ah_attr()
270 ibp->rvp.gid_prefix; in hfi1_update_sm_ah_attr()
275 static int hfi1_modify_qp0_ah(struct hfi1_ibport *ibp, in hfi1_modify_qp0_ah() argument
284 hfi1_update_sm_ah_attr(ibp, &attr, dlid); in hfi1_modify_qp0_ah()
286 qp0 = rcu_dereference(ibp->rvp.qp[0]); in hfi1_modify_qp0_ah()
293 static struct ib_ah *hfi1_create_qp0_ah(struct hfi1_ibport *ibp, u32 dlid) in hfi1_create_qp0_ah() argument
298 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in hfi1_create_qp0_ah()
304 hfi1_update_sm_ah_attr(ibp, &attr, dlid); in hfi1_create_qp0_ah()
306 qp0 = rcu_dereference(ibp->rvp.qp[0]); in hfi1_create_qp0_ah()
313 static void send_trap(struct hfi1_ibport *ibp, struct trap_node *trap) in send_trap() argument
320 u32 qpn = ppd_from_ibp(ibp)->sm_trap_qp; in send_trap()
322 agent = ibp->rvp.send_agent; in send_trap()
324 cleanup_traps(ibp, trap); in send_trap()
329 if (driver_lstate(ppd_from_ibp(ibp)) != IB_PORT_ACTIVE) { in send_trap()
330 cleanup_traps(ibp, trap); in send_trap()
335 trap = check_and_add_trap(ibp, trap); in send_trap()
339 pkey_idx = hfi1_lookup_pkey_idx(ibp, LIM_MGMT_P_KEY); in send_trap()
342 __func__, hfi1_get_pkey(ibp, 1)); in send_trap()
360 ibp->rvp.tid++; in send_trap()
362 if (ibp->rvp.tid == 0) in send_trap()
363 ibp->rvp.tid++; in send_trap()
364 trap->tid = cpu_to_be64(ibp->rvp.tid); in send_trap()
373 spin_lock_irqsave(&ibp->rvp.lock, flags); in send_trap()
374 if (!ibp->rvp.sm_ah) { in send_trap()
375 if (ibp->rvp.sm_lid != be16_to_cpu(IB_LID_PERMISSIVE)) { in send_trap()
378 ah = hfi1_create_qp0_ah(ibp, ibp->rvp.sm_lid); in send_trap()
380 spin_unlock_irqrestore(&ibp->rvp.lock, flags); in send_trap()
384 ibp->rvp.sm_ah = ibah_to_rvtah(ah); in send_trap()
386 spin_unlock_irqrestore(&ibp->rvp.lock, flags); in send_trap()
390 send_buf->ah = &ibp->rvp.sm_ah->ibah; in send_trap()
399 spin_unlock_irqrestore(&ibp->rvp.lock, flags); in send_trap()
406 spin_unlock_irqrestore(&ibp->rvp.lock, flags); in send_trap()
414 struct hfi1_ibport *ibp = from_timer(ibp, t, rvp.trap_timer); in hfi1_handle_trap_timer() local
420 spin_lock_irqsave(&ibp->rvp.lock, flags); in hfi1_handle_trap_timer()
422 trap = list_first_entry_or_null(&ibp->rvp.trap_lists[i].list, in hfi1_handle_trap_timer()
425 spin_unlock_irqrestore(&ibp->rvp.lock, flags); in hfi1_handle_trap_timer()
428 send_trap(ibp, trap); in hfi1_handle_trap_timer()
451 void hfi1_bad_pkey(struct hfi1_ibport *ibp, u32 key, u32 sl, in hfi1_bad_pkey() argument
455 u32 lid = ppd_from_ibp(ibp)->lid; in hfi1_bad_pkey()
457 ibp->rvp.n_pkt_drops++; in hfi1_bad_pkey()
458 ibp->rvp.pkey_violations++; in hfi1_bad_pkey()
474 send_trap(ibp, trap); in hfi1_bad_pkey()
480 static void bad_mkey(struct hfi1_ibport *ibp, struct ib_mad_hdr *mad, in bad_mkey() argument
484 u32 lid = ppd_from_ibp(ibp)->lid; in bad_mkey()
512 send_trap(ibp, trap); in bad_mkey()
523 struct hfi1_ibport *ibp = &dd->pport[port_num - 1].ibport_data; in hfi1_cap_mask_chg() local
524 u32 lid = ppd_from_ibp(ibp)->lid; in hfi1_cap_mask_chg()
533 trap->data.ntc_144.new_cap_mask = cpu_to_be32(ibp->rvp.port_cap_flags); in hfi1_cap_mask_chg()
534 trap->data.ntc_144.cap_mask3 = cpu_to_be16(ibp->rvp.port_cap3_flags); in hfi1_cap_mask_chg()
537 send_trap(ibp, trap); in hfi1_cap_mask_chg()
543 void hfi1_sys_guid_chg(struct hfi1_ibport *ibp) in hfi1_sys_guid_chg() argument
546 u32 lid = ppd_from_ibp(ibp)->lid; in hfi1_sys_guid_chg()
557 send_trap(ibp, trap); in hfi1_sys_guid_chg()
563 void hfi1_node_desc_chg(struct hfi1_ibport *ibp) in hfi1_node_desc_chg() argument
566 u32 lid = ppd_from_ibp(ibp)->lid; in hfi1_node_desc_chg()
579 send_trap(ibp, trap); in hfi1_node_desc_chg()
692 static int check_mkey(struct hfi1_ibport *ibp, struct ib_mad_hdr *mad, in check_mkey() argument
700 if (ibp->rvp.mkey_lease_timeout && in check_mkey()
701 time_after_eq(jiffies, ibp->rvp.mkey_lease_timeout)) { in check_mkey()
703 ibp->rvp.mkey_lease_timeout = 0; in check_mkey()
704 ibp->rvp.mkeyprot = 0; in check_mkey()
707 if ((mad_flags & IB_MAD_IGNORE_MKEY) || ibp->rvp.mkey == 0 || in check_mkey()
708 ibp->rvp.mkey == mkey) in check_mkey()
712 if (valid_mkey && ibp->rvp.mkey_lease_timeout && in check_mkey()
716 ibp->rvp.mkey_lease_timeout = 0; in check_mkey()
722 if (ibp->rvp.mkeyprot < 2) in check_mkey()
727 if (ibp->rvp.mkey_violations != 0xFFFF) in check_mkey()
728 ++ibp->rvp.mkey_violations; in check_mkey()
729 if (!ibp->rvp.mkey_lease_timeout && in check_mkey()
730 ibp->rvp.mkey_lease_period) in check_mkey()
731 ibp->rvp.mkey_lease_timeout = jiffies + in check_mkey()
732 ibp->rvp.mkey_lease_period * HZ; in check_mkey()
734 bad_mkey(ibp, mad, mkey, dr_slid, return_path, in check_mkey()
803 struct hfi1_ibport *ibp; in __subn_get_opa_portinfo() local
822 ibp = &ppd->ibport_data; in __subn_get_opa_portinfo()
834 ibp->rvp.mkey != smp->mkey && in __subn_get_opa_portinfo()
835 ibp->rvp.mkeyprot == 1)) in __subn_get_opa_portinfo()
836 pi->mkey = ibp->rvp.mkey; in __subn_get_opa_portinfo()
838 pi->subnet_prefix = ibp->rvp.gid_prefix; in __subn_get_opa_portinfo()
839 pi->sm_lid = cpu_to_be32(ibp->rvp.sm_lid); in __subn_get_opa_portinfo()
840 pi->ib_cap_mask = cpu_to_be32(ibp->rvp.port_cap_flags); in __subn_get_opa_portinfo()
841 pi->mkey_lease_period = cpu_to_be16(ibp->rvp.mkey_lease_period); in __subn_get_opa_portinfo()
886 pi->mkeyprotect_lmc = (ibp->rvp.mkeyprot << 6) | ppd->lmc; in __subn_get_opa_portinfo()
899 pi->smsl = ibp->rvp.sm_sl & OPA_PI_MASK_SMSL; in __subn_get_opa_portinfo()
907 pi->mkey_violations = cpu_to_be16(ibp->rvp.mkey_violations); in __subn_get_opa_portinfo()
909 pi->pkey_violations = cpu_to_be16(ibp->rvp.pkey_violations); in __subn_get_opa_portinfo()
910 pi->qkey_violations = cpu_to_be16(ibp->rvp.qkey_violations); in __subn_get_opa_portinfo()
913 pi->vl.high_limit = cpu_to_be16(ibp->rvp.vl_high_limit); in __subn_get_opa_portinfo()
917 pi->clientrereg_subnettimeout = ibp->rvp.subnet_timeout; in __subn_get_opa_portinfo()
983 pi->opa_cap_mask = cpu_to_be16(ibp->rvp.port_cap3_flags); in __subn_get_opa_portinfo()
1359 struct hfi1_ibport *ibp; in __subn_set_opa_portinfo() local
1401 ibp = &ppd->ibport_data; in __subn_set_opa_portinfo()
1407 ibp->rvp.mkey = pi->mkey; in __subn_set_opa_portinfo()
1408 if (ibp->rvp.gid_prefix != pi->subnet_prefix) { in __subn_set_opa_portinfo()
1409 ibp->rvp.gid_prefix = pi->subnet_prefix; in __subn_set_opa_portinfo()
1413 ibp->rvp.mkey_lease_period = be16_to_cpu(pi->mkey_lease_period); in __subn_set_opa_portinfo()
1453 } else if (smlid != ibp->rvp.sm_lid || msl != ibp->rvp.sm_sl) { in __subn_set_opa_portinfo()
1455 spin_lock_irqsave(&ibp->rvp.lock, flags); in __subn_set_opa_portinfo()
1456 if (ibp->rvp.sm_ah) { in __subn_set_opa_portinfo()
1457 if (smlid != ibp->rvp.sm_lid) in __subn_set_opa_portinfo()
1458 hfi1_modify_qp0_ah(ibp, ibp->rvp.sm_ah, smlid); in __subn_set_opa_portinfo()
1459 if (msl != ibp->rvp.sm_sl) in __subn_set_opa_portinfo()
1460 rdma_ah_set_sl(&ibp->rvp.sm_ah->attr, msl); in __subn_set_opa_portinfo()
1462 spin_unlock_irqrestore(&ibp->rvp.lock, flags); in __subn_set_opa_portinfo()
1463 if (smlid != ibp->rvp.sm_lid) in __subn_set_opa_portinfo()
1464 ibp->rvp.sm_lid = smlid; in __subn_set_opa_portinfo()
1465 if (msl != ibp->rvp.sm_sl) in __subn_set_opa_portinfo()
1466 ibp->rvp.sm_sl = msl; in __subn_set_opa_portinfo()
1520 ibp->rvp.mkeyprot = in __subn_set_opa_portinfo()
1522 ibp->rvp.vl_high_limit = be16_to_cpu(pi->vl.high_limit) & 0xFF; in __subn_set_opa_portinfo()
1524 ibp->rvp.vl_high_limit); in __subn_set_opa_portinfo()
1584 ibp->rvp.mkey_violations = 0; in __subn_set_opa_portinfo()
1587 ibp->rvp.pkey_violations = 0; in __subn_set_opa_portinfo()
1590 ibp->rvp.qkey_violations = 0; in __subn_set_opa_portinfo()
1592 ibp->rvp.subnet_timeout = in __subn_set_opa_portinfo()
1831 struct hfi1_ibport *ibp = to_iport(ibdev, port); in __subn_get_opa_sl_to_sc() local
1833 size_t size = ARRAY_SIZE(ibp->sl_to_sc); /* == 32 */ in __subn_get_opa_sl_to_sc()
1841 for (i = 0; i < ARRAY_SIZE(ibp->sl_to_sc); i++) in __subn_get_opa_sl_to_sc()
1842 *p++ = ibp->sl_to_sc[i]; in __subn_get_opa_sl_to_sc()
1854 struct hfi1_ibport *ibp = to_iport(ibdev, port); in __subn_set_opa_sl_to_sc() local
1856 size_t size = ARRAY_SIZE(ibp->sl_to_sc); in __subn_set_opa_sl_to_sc()
1865 for (i = 0; i < ARRAY_SIZE(ibp->sl_to_sc); i++) { in __subn_set_opa_sl_to_sc()
1867 if (ibp->sl_to_sc[i] != sc) { in __subn_set_opa_sl_to_sc()
1868 ibp->sl_to_sc[i] = sc; in __subn_set_opa_sl_to_sc()
1871 hfi1_error_port_qps(ibp, i); in __subn_set_opa_sl_to_sc()
1883 struct hfi1_ibport *ibp = to_iport(ibdev, port); in __subn_get_opa_sc_to_sl() local
1885 size_t size = ARRAY_SIZE(ibp->sc_to_sl); /* == 32 */ in __subn_get_opa_sc_to_sl()
1893 for (i = 0; i < ARRAY_SIZE(ibp->sc_to_sl); i++) in __subn_get_opa_sc_to_sl()
1894 *p++ = ibp->sc_to_sl[i]; in __subn_get_opa_sc_to_sl()
1906 struct hfi1_ibport *ibp = to_iport(ibdev, port); in __subn_set_opa_sc_to_sl() local
1907 size_t size = ARRAY_SIZE(ibp->sc_to_sl); in __subn_set_opa_sc_to_sl()
1916 for (i = 0; i < ARRAY_SIZE(ibp->sc_to_sl); i++) in __subn_set_opa_sc_to_sl()
1917 ibp->sc_to_sl[i] = *p++; in __subn_set_opa_sc_to_sl()
2051 struct hfi1_ibport *ibp; in __subn_get_opa_psi() local
2060 ibp = to_iport(ibdev, port); in __subn_get_opa_psi()
2061 ppd = ppd_from_ibp(ibp); in __subn_get_opa_psi()
2094 struct hfi1_ibport *ibp; in __subn_set_opa_psi() local
2104 ibp = to_iport(ibdev, port); in __subn_set_opa_psi()
2105 ppd = ppd_from_ibp(ibp); in __subn_set_opa_psi()
2738 struct hfi1_ibport *ibp = to_iport(ibdev, port); in pma_get_opa_portstatus() local
2739 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in pma_get_opa_portstatus()
2895 struct hfi1_ibport *ibp = to_iport(ibdev, port); in get_error_counter_summary() local
2896 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in get_error_counter_summary()
2981 struct hfi1_ibport *ibp = to_iport(ibdev, port); in pma_get_opa_datacounters() local
2982 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in pma_get_opa_datacounters()
3158 struct hfi1_ibport *ibp = to_iport(ibdev, port); in pma_get_opa_port_ectrs() local
3159 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in pma_get_opa_port_ectrs()
3207 struct hfi1_ibport *ibp; in pma_get_opa_porterrors() local
3248 ibp = to_iport(ibdev, port_num); in pma_get_opa_porterrors()
3249 ppd = ppd_from_ibp(ibp); in pma_get_opa_porterrors()
3476 struct hfi1_ibport *ibp = to_iport(ibdev, port); in pma_set_opa_portstatus() local
3477 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in pma_set_opa_portstatus()
3710 struct hfi1_ibport *ibp = to_iport(ibdev, port); in __subn_get_opa_cong_info() local
3711 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in __subn_get_opa_cong_info()
3735 struct hfi1_ibport *ibp = to_iport(ibdev, port); in __subn_get_opa_cong_setting() local
3736 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in __subn_get_opa_cong_setting()
3827 struct hfi1_ibport *ibp = to_iport(ibdev, port); in __subn_set_opa_cong_setting() local
3828 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in __subn_set_opa_cong_setting()
3865 struct hfi1_ibport *ibp = to_iport(ibdev, port); in __subn_get_opa_hfi1_cong_log() local
3866 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in __subn_get_opa_hfi1_cong_log()
3933 struct hfi1_ibport *ibp = to_iport(ibdev, port); in __subn_get_opa_cc_table() local
3934 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in __subn_get_opa_cc_table()
3984 struct hfi1_ibport *ibp = to_iport(ibdev, port); in __subn_set_opa_cc_table() local
3985 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in __subn_set_opa_cc_table()
4096 struct hfi1_ibport *ibp = to_iport(ibdev, port); in subn_get_opa_sma() local
4168 if (ibp->rvp.port_cap_flags & IB_PORT_SM_DISABLED) in subn_get_opa_sma()
4170 if (ibp->rvp.port_cap_flags & IB_PORT_SM) in subn_get_opa_sma()
4186 struct hfi1_ibport *ibp = to_iport(ibdev, port); in subn_set_opa_sma() local
4238 if (ibp->rvp.port_cap_flags & IB_PORT_SM_DISABLED) in subn_set_opa_sma()
4240 if (ibp->rvp.port_cap_flags & IB_PORT_SM) in subn_set_opa_sma()
4379 static int is_full_mgmt_pkey_in_table(struct hfi1_ibport *ibp) in is_full_mgmt_pkey_in_table() argument
4382 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in is_full_mgmt_pkey_in_table()
4395 static int is_local_mad(struct hfi1_ibport *ibp, const struct opa_mad *mad, in is_local_mad() argument
4398 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in is_local_mad()
4420 static int opa_local_smp_check(struct hfi1_ibport *ibp, in opa_local_smp_check() argument
4423 struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); in opa_local_smp_check()
4491 static int hfi1_pkey_validation_pma(struct hfi1_ibport *ibp, in hfi1_pkey_validation_pma() argument
4495 u16 pkey_value = hfi1_lookup_pkey_value(ibp, in_wc->pkey_index); in hfi1_pkey_validation_pma()
4498 if (!is_local_mad(ibp, in_mad, in_wc) && in hfi1_pkey_validation_pma()
4505 is_full_mgmt_pkey_in_table(ibp)) in hfi1_pkey_validation_pma()
4517 struct hfi1_ibport *ibp = to_iport(ibdev, port); in process_subn_opa() local
4534 ret = check_mkey(ibp, (struct ib_mad_hdr *)smp, mad_flags, smp->mkey, in process_subn_opa()
4603 subn_handle_opa_trap_repress(ibp, smp); in process_subn_opa()
4621 struct hfi1_ibport *ibp = to_iport(ibdev, port); in process_subn() local
4631 ret = check_mkey(ibp, (struct ib_mad_hdr *)smp, mad_flags, in process_subn()
4829 struct hfi1_ibport *ibp = to_iport(ibdev, port); in hfi1_process_opa_mad() local
4831 pkey_idx = hfi1_lookup_pkey_idx(ibp, LIM_MGMT_P_KEY); in hfi1_process_opa_mad()
4834 hfi1_get_pkey(ibp, 1)); in hfi1_process_opa_mad()
4842 local_mad = is_local_mad(ibp, in_mad, in_wc); in hfi1_process_opa_mad()
4844 ret = opa_local_smp_check(ibp, in_wc); in hfi1_process_opa_mad()
4852 ret = hfi1_pkey_validation_pma(ibp, in_mad, in_wc); in hfi1_process_opa_mad()