Lines Matching refs:pmap
78 struct cxgbi_ports_map *pmap = &cdev->pmap;
80 pmap->port_csk = kvzalloc(array_size(max_conn,
83 if (!pmap->port_csk) {
88 pmap->max_connect = max_conn;
89 pmap->sport_base = base;
90 spin_lock_init(&pmap->lock);
97 struct cxgbi_ports_map *pmap = &cdev->pmap;
101 for (i = 0; i < pmap->max_connect; i++) {
102 if (pmap->port_csk[i]) {
103 csk = pmap->port_csk[i];
104 pmap->port_csk[i] = NULL;
126 if (cdev->pmap.max_connect)
127 kvfree(cdev->pmap.port_csk);
150 spin_lock_init(&cdev->pmap.lock);
414 struct cxgbi_ports_map *pmap = &cdev->pmap;
418 if (!pmap->max_connect || !pmap->used)
421 spin_lock_bh(&pmap->lock);
422 used = pmap->used;
423 for (i = 0; used && i < pmap->max_connect; i++) {
424 struct cxgbi_sock *csk = pmap->port_csk[i];
428 spin_unlock_bh(&pmap->lock);
434 spin_unlock_bh(&pmap->lock);
442 struct cxgbi_ports_map *pmap = &cdev->pmap;
447 if (!pmap->max_connect) {
464 spin_lock_bh(&pmap->lock);
465 if (pmap->used >= pmap->max_connect) {
466 spin_unlock_bh(&pmap->lock);
472 start = idx = pmap->next;
474 if (++idx >= pmap->max_connect)
476 if (!pmap->port_csk[idx]) {
477 pmap->used++;
478 *port = htons(pmap->sport_base + idx);
479 pmap->next = idx;
480 pmap->port_csk[idx] = csk;
481 spin_unlock_bh(&pmap->lock);
487 pmap->sport_base + idx, pmap->next);
491 spin_unlock_bh(&pmap->lock);
496 pmap->next);
503 struct cxgbi_ports_map *pmap = &cdev->pmap;
512 int idx = ntohs(*port) - pmap->sport_base;
515 if (idx < 0 || idx >= pmap->max_connect) {
523 spin_lock_bh(&pmap->lock);
524 pmap->port_csk[idx] = NULL;
525 pmap->used--;
526 spin_unlock_bh(&pmap->lock);
531 pmap->sport_base + idx);