Lines Matching defs:smcd

47 int smc_ism_cantalk(u64 peer_gid, unsigned short vlan_id, struct smcd_dev *smcd)
49 return smcd->ops->query_remote_gid(smcd, peer_gid, vlan_id ? 1 : 0,
61 u16 smc_ism_get_chid(struct smcd_dev *smcd)
63 return smcd->ops->get_chid(smcd);
77 spin_lock_irqsave(&conn->lgr->smcd->lock, flags);
78 conn->lgr->smcd->conn[conn->rmb_desc->sba_idx] = conn;
79 spin_unlock_irqrestore(&conn->lgr->smcd->lock, flags);
90 spin_lock_irqsave(&conn->lgr->smcd->lock, flags);
91 conn->lgr->smcd->conn[conn->rmb_desc->sba_idx] = NULL;
92 spin_unlock_irqrestore(&conn->lgr->smcd->lock, flags);
99 int smc_ism_get_vlan(struct smcd_dev *smcd, unsigned short vlanid)
116 spin_lock_irqsave(&smcd->lock, flags);
117 list_for_each_entry(vlan, &smcd->vlan, list) {
128 if (smcd->ops->add_vlan_id(smcd, vlanid)) {
133 list_add_tail(&new_vlan->list, &smcd->vlan);
135 spin_unlock_irqrestore(&smcd->lock, flags);
143 int smc_ism_put_vlan(struct smcd_dev *smcd, unsigned short vlanid)
153 spin_lock_irqsave(&smcd->lock, flags);
154 list_for_each_entry(vlan, &smcd->vlan, list) {
168 if (smcd->ops->del_vlan_id(smcd, vlanid))
173 spin_unlock_irqrestore(&smcd->lock, flags);
177 int smc_ism_unregister_dmb(struct smcd_dev *smcd, struct smc_buf_desc *dmb_desc)
191 rc = smcd->ops->unregister_dmb(smcd, &dmb);
212 rc = lgr->smcd->ops->register_dmb(lgr->smcd, &dmb, &smc_ism_client);
226 static int smc_nl_handle_smcd_dev(struct smcd_dev *smcd,
238 ism = smcd->priv;
247 use_cnt = atomic_read(&smcd->lgr_cnt);
268 if (nla_put_u8(skb, SMC_NLA_DEV_PORT_PNET_USR, smcd->pnetid_by_user))
270 memcpy(smc_pnet, smcd->pnetid, SMC_MAX_PNETID_LEN);
296 struct smcd_dev *smcd;
300 list_for_each_entry(smcd, &dev_list->list, list) {
303 if (smc_nl_handle_smcd_dev(smcd, skb, cb))
322 struct smcd_dev *smcd;
348 smc_smcd_terminate(wrk->smcd, wrk->event.tok, ev_info.vlan_id);
353 wrk->smcd->ops->signal_event(wrk->smcd,
371 smc_smcd_terminate(wrk->smcd, wrk->event.tok, VLAN_VID_MASK);
385 struct smcd_dev *smcd;
387 smcd = devm_kzalloc(parent, sizeof(*smcd), GFP_KERNEL);
388 if (!smcd)
390 smcd->conn = devm_kcalloc(parent, max_dmbs,
392 if (!smcd->conn)
395 smcd->event_wq = alloc_ordered_workqueue("ism_evt_wq-%s)",
397 if (!smcd->event_wq)
400 smcd->ops = ops;
402 spin_lock_init(&smcd->lock);
403 spin_lock_init(&smcd->lgr_lock);
404 INIT_LIST_HEAD(&smcd->vlan);
405 INIT_LIST_HEAD(&smcd->lgr_list);
406 init_waitqueue_head(&smcd->lgrs_deleted);
407 return smcd;
413 struct smcd_dev *smcd;
418 smcd = smcd_alloc_dev(&ism->pdev->dev, dev_name(&ism->pdev->dev), ops,
420 if (!smcd)
422 smcd->priv = ism;
423 ism_set_priv(ism, &smc_ism_client, smcd);
424 if (smc_pnetid_by_dev_port(&ism->pdev->dev, 0, smcd->pnetid))
425 smc_pnetid_by_table_smcd(smcd);
431 system_eid = smcd->ops->get_system_eid();
432 if (smcd->ops->supports_v2()) {
439 if (smcd->pnetid[0])
440 list_add_tail(&smcd->list, &smcd_dev_list.list);
442 list_add(&smcd->list, &smcd_dev_list.list);
445 pr_warn_ratelimited("smc: adding smcd device %s with pnetid %.16s%s\n",
446 dev_name(&ism->dev), smcd->pnetid,
447 smcd->pnetid_by_user ? " (user defined)" : "");
454 struct smcd_dev *smcd = ism_get_priv(ism, &smc_ism_client);
456 pr_warn_ratelimited("smc: removing smcd device %s\n",
458 smcd->going_away = 1;
459 smc_smcd_terminate_all(smcd);
461 list_del_init(&smcd->list);
463 destroy_workqueue(smcd->event_wq);
479 struct smcd_dev *smcd = ism_get_priv(ism, &smc_ism_client);
482 if (smcd->going_away)
489 wrk->smcd = smcd;
491 queue_work(smcd->event_wq, &wrk->work);
504 struct smcd_dev *smcd = ism_get_priv(ism, &smc_ism_client);
508 spin_lock_irqsave(&smcd->lock, flags);
509 conn = smcd->conn[dmbno];
512 spin_unlock_irqrestore(&smcd->lock, flags);
528 rc = lgr->smcd->ops->signal_event(lgr->smcd, lgr->peer_gid,