Lines Matching refs:dev

63 static int find_mgm(struct mthca_dev *dev,
72 mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL);
79 err = mthca_MGID_HASH(dev, mailbox, hash);
81 mthca_err(dev, "MGID_HASH failed (%d)\n", err);
86 mthca_dbg(dev, "Hash for %pI6 is %04x\n", gid, *hash);
92 err = mthca_READ_MGM(dev, *index, mgm_mailbox);
94 mthca_err(dev, "READ_MGM failed (%d)\n", err);
100 mthca_err(dev, "Found zero MGID in AMGM.\n");
116 mthca_free_mailbox(dev, mailbox);
122 struct mthca_dev *dev = to_mdev(ibqp->device);
131 mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL);
136 mutex_lock(&dev->mcg_table.mutex);
138 err = find_mgm(dev, gid->raw, mailbox, &hash, &prev, &index);
148 index = mthca_alloc(&dev->mcg_table.alloc);
150 mthca_err(dev, "No AMGM entries left\n");
155 err = mthca_READ_MGM(dev, index, mailbox);
157 mthca_err(dev, "READ_MGM failed (%d)\n", err);
166 mthca_dbg(dev, "QP %06x already a member of MGM\n",
176 mthca_err(dev, "MGM at index %x is full.\n", index);
181 err = mthca_WRITE_MGM(dev, index, mailbox);
183 mthca_err(dev, "WRITE_MGM failed %d\n", err);
191 err = mthca_READ_MGM(dev, prev, mailbox);
193 mthca_err(dev, "READ_MGM failed %d\n", err);
199 err = mthca_WRITE_MGM(dev, prev, mailbox);
201 mthca_err(dev, "WRITE_MGM returned %d\n", err);
205 BUG_ON(index < dev->limits.num_mgms);
206 mthca_free(&dev->mcg_table.alloc, index);
208 mutex_unlock(&dev->mcg_table.mutex);
210 mthca_free_mailbox(dev, mailbox);
216 struct mthca_dev *dev = to_mdev(ibqp->device);
224 mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL);
229 mutex_lock(&dev->mcg_table.mutex);
231 err = find_mgm(dev, gid->raw, mailbox, &hash, &prev, &index);
236 mthca_err(dev, "MGID %pI6 not found\n", gid->raw);
249 mthca_err(dev, "QP %06x not found in MGM\n", ibqp->qp_num);
257 err = mthca_WRITE_MGM(dev, index, mailbox);
259 mthca_err(dev, "WRITE_MGM returned %d\n", err);
270 err = mthca_READ_MGM(dev, amgm_index_to_free,
273 mthca_err(dev, "READ_MGM returned %d\n", err);
279 err = mthca_WRITE_MGM(dev, index, mailbox);
281 mthca_err(dev, "WRITE_MGM returned %d\n", err);
285 BUG_ON(amgm_index_to_free < dev->limits.num_mgms);
286 mthca_free(&dev->mcg_table.alloc, amgm_index_to_free);
291 err = mthca_READ_MGM(dev, prev, mailbox);
293 mthca_err(dev, "READ_MGM returned %d\n", err);
299 err = mthca_WRITE_MGM(dev, prev, mailbox);
301 mthca_err(dev, "WRITE_MGM returned %d\n", err);
304 BUG_ON(index < dev->limits.num_mgms);
305 mthca_free(&dev->mcg_table.alloc, index);
309 mutex_unlock(&dev->mcg_table.mutex);
311 mthca_free_mailbox(dev, mailbox);
315 int mthca_init_mcg_table(struct mthca_dev *dev)
318 int table_size = dev->limits.num_mgms + dev->limits.num_amgms;
320 err = mthca_alloc_init(&dev->mcg_table.alloc,
323 dev->limits.num_mgms);
327 mutex_init(&dev->mcg_table.mutex);
332 void mthca_cleanup_mcg_table(struct mthca_dev *dev)
334 mthca_alloc_cleanup(&dev->mcg_table.alloc);