Lines Matching refs:ctrlr

45 static struct nvme_ctrlr *nvme_ctrlr_get(struct nvme_ctrlr *ctrlr,
53 if (c == ctrlr) {
60 ctrlr = NULL;
65 return ctrlr;
175 struct nvme_ctrlr *ctrlr;
197 LIST_FOREACH(ctrlr, &ctrlr_head, link) {
198 if (nvme_pci_dev_cmp(ctrlr->pci_dev, pdev) == 0) {
200 ctrlr = NULL;
206 ctrlr = nvme_ctrlr_attach(pdev, opts);
207 if (!ctrlr) {
213 LIST_INSERT_HEAD(&ctrlr_head, ctrlr, link);
218 return ctrlr;
225 int nvme_ctrlr_close(struct nvme_ctrlr *ctrlr)
232 ctrlr = nvme_ctrlr_get(ctrlr, true);
233 if (!ctrlr) {
238 nvme_ctrlr_detach(ctrlr);
246 int nvme_ctrlr_stat(struct nvme_ctrlr *ctrlr, struct nvme_ctrlr_stat *cstat)
248 struct pci_device *pdev = ctrlr->pci_dev;
252 ctrlr = nvme_ctrlr_get(ctrlr, false);
253 if (!ctrlr) {
258 pthread_mutex_lock(&ctrlr->lock);
263 strncpy(cstat->sn, (char *)ctrlr->cdata.sn,
265 strncpy(cstat->mn, (char *)ctrlr->cdata.mn,
287 cstat->max_xfer_size = ctrlr->max_xfer_size;
289 cstat->sgl_supported = (ctrlr->flags & NVME_CTRLR_SGL_SUPPORTED);
291 memcpy(&cstat->features, &ctrlr->feature_supported,
292 sizeof(ctrlr->feature_supported));
293 memcpy(&cstat->log_pages, &ctrlr->log_page_supported,
294 sizeof(ctrlr->log_page_supported));
296 cstat->nr_ns = ctrlr->nr_ns;
297 for (i = 0; i < ctrlr->nr_ns; i++) {
302 cstat->max_io_qpairs = ctrlr->max_io_queues;
305 cstat->io_qpairs = ctrlr->io_queues;
308 cstat->enabled_io_qpairs = ctrlr->enabled_io_qpairs;
311 cstat->max_qd = ctrlr->io_qpairs_max_entries;
313 pthread_mutex_unlock(&ctrlr->lock);
321 int nvme_ctrlr_data(struct nvme_ctrlr *ctrlr, struct nvme_ctrlr_data *cdata,
327 ctrlr = nvme_ctrlr_get(ctrlr, false);
328 if (!ctrlr) {
333 pthread_mutex_lock(&ctrlr->lock);
337 memcpy(cdata, &ctrlr->cdata, sizeof(struct nvme_ctrlr_data));
341 cap.raw = nvme_reg_mmio_read_8(ctrlr, cap.raw);
345 pthread_mutex_unlock(&ctrlr->lock);
355 struct nvme_ctrlr *ctrlr = qpair->ctrlr;
358 ctrlr = nvme_ctrlr_get(ctrlr, false);
359 if (!ctrlr) {
364 pthread_mutex_lock(&ctrlr->lock);
371 pthread_mutex_unlock(&ctrlr->lock);
381 struct nvme_ctrlr *ctrlr;
383 while ((ctrlr = LIST_FIRST(&ctrlr_head))) {
384 LIST_REMOVE(ctrlr, link);
385 nvme_ctrlr_detach(ctrlr);