Lines Matching refs:pool

178 static void refill_pool(struct atm_dev *dev,int pool)  in refill_pool()  argument
188 size = (64 << (pool <= ZATM_AAL5_POOL_BASE ? 0 : in refill_pool()
189 pool-ZATM_AAL5_POOL_BASE))+sizeof(struct rx_buffer_head); in refill_pool()
196 offset = zatm_dev->pool_info[pool].offset+ in refill_pool()
201 free = zpeekl(zatm_dev,zatm_dev->pool_base+2*pool) & in refill_pool()
204 if (free >= zatm_dev->pool_info[pool].low_water) return; in refill_pool()
206 zpeekl(zatm_dev,zatm_dev->pool_base+2*pool), in refill_pool()
207 zpeekl(zatm_dev,zatm_dev->pool_base+2*pool+1)); in refill_pool()
211 while (free < zatm_dev->pool_info[pool].high_water) { in refill_pool()
233 if (zatm_dev->last_free[pool]) in refill_pool()
234 ((struct rx_buffer_head *) (zatm_dev->last_free[pool]-> in refill_pool()
236 zatm_dev->last_free[pool] = skb; in refill_pool()
237 skb_queue_tail(&zatm_dev->pool[pool],skb); in refill_pool()
245 zout(uPD98401_ADD_BAT | (pool << uPD98401_POOL_SHIFT) | count, in refill_pool()
249 zpeekl(zatm_dev,zatm_dev->pool_base+2*pool), in refill_pool()
250 zpeekl(zatm_dev,zatm_dev->pool_base+2*pool+1)); in refill_pool()
256 static void drain_free(struct atm_dev *dev,int pool) in drain_free() argument
258 skb_queue_purge(&ZATM_DEV(dev)->pool[pool]); in drain_free()
278 static void use_pool(struct atm_dev *dev,int pool) in use_pool() argument
285 if (!(zatm_dev->pool_info[pool].ref_count++)) { in use_pool()
286 skb_queue_head_init(&zatm_dev->pool[pool]); in use_pool()
287 size = pool-ZATM_AAL5_POOL_BASE; in use_pool()
291 zpokel(zatm_dev,((zatm_dev->pool_info[pool].low_water/4) << in use_pool()
295 zatm_dev->pool_base+pool*2); in use_pool()
297 pool*2+1); in use_pool()
299 zatm_dev->last_free[pool] = NULL; in use_pool()
300 refill_pool(dev,pool); in use_pool()
302 DPRINTK("pool %d: %d\n",pool,zatm_dev->pool_info[pool].ref_count); in use_pool()
306 static void unuse_pool(struct atm_dev *dev,int pool) in unuse_pool() argument
308 if (!(--ZATM_DEV(dev)->pool_info[pool].ref_count)) in unuse_pool()
309 drain_free(dev,pool); in unuse_pool()
421 pos = ZATM_VCC(vcc)->pool; in poll_rx()
424 skb_unlink(skb, zatm_dev->pool + pos); in poll_rx()
476 refill_pool(dev,zatm_vcc->pool); in poll_rx()
502 zatm_vcc->pool = pool_index(cells*ATM_CELL_PAYLOAD); in open_rx_first()
506 zatm_vcc->pool = ZATM_AAL0_POOL; in open_rx_first()
508 if (zatm_vcc->pool < 0) return -EMSGSIZE; in open_rx_first()
518 use_pool(vcc->dev,zatm_vcc->pool); in open_rx_first()
519 DPRINTK("pool %d\n",zatm_vcc->pool); in open_rx_first()
522 zpokel(zatm_dev,zatm_vcc->pool << uPD98401_RXVC_POOL_SHIFT, in open_rx_first()
594 unuse_pool(vcc->dev,zatm_vcc->pool); in close_rx()
1452 int pool; in zatm_ioctl() local
1454 if (get_user(pool, in zatm_ioctl()
1457 if (pool < 0 || pool > ZATM_LAST_POOL) in zatm_ioctl()
1460 info = zatm_dev->pool_info[pool]; in zatm_ioctl()
1462 zatm_dev->pool_info[pool].rqa_count = 0; in zatm_ioctl()
1463 zatm_dev->pool_info[pool].rqu_count = 0; in zatm_ioctl()
1473 int pool; in zatm_ioctl() local
1476 if (get_user(pool, in zatm_ioctl()
1479 if (pool < 0 || pool > ZATM_LAST_POOL) in zatm_ioctl()
1486 pool_info[pool].low_water; in zatm_ioctl()
1489 pool_info[pool].high_water; in zatm_ioctl()
1492 pool_info[pool].next_thres; in zatm_ioctl()
1497 zatm_dev->pool_info[pool].low_water = in zatm_ioctl()
1499 zatm_dev->pool_info[pool].high_water = in zatm_ioctl()
1501 zatm_dev->pool_info[pool].next_thres = in zatm_ioctl()