Lines Matching defs:pool
180 static void refill_pool(struct atm_dev *dev,int pool)
190 size = (64 << (pool <= ZATM_AAL5_POOL_BASE ? 0 :
191 pool-ZATM_AAL5_POOL_BASE))+sizeof(struct rx_buffer_head);
198 offset = zatm_dev->pool_info[pool].offset+
203 free = zpeekl(zatm_dev,zatm_dev->pool_base+2*pool) &
206 if (free >= zatm_dev->pool_info[pool].low_water) return;
208 zpeekl(zatm_dev,zatm_dev->pool_base+2*pool),
209 zpeekl(zatm_dev,zatm_dev->pool_base+2*pool+1));
213 while (free < zatm_dev->pool_info[pool].high_water) {
235 if (zatm_dev->last_free[pool])
236 ((struct rx_buffer_head *) (zatm_dev->last_free[pool]->
238 zatm_dev->last_free[pool] = skb;
239 skb_queue_tail(&zatm_dev->pool[pool],skb);
247 zout(uPD98401_ADD_BAT | (pool << uPD98401_POOL_SHIFT) | count,
251 zpeekl(zatm_dev,zatm_dev->pool_base+2*pool),
252 zpeekl(zatm_dev,zatm_dev->pool_base+2*pool+1));
258 static void drain_free(struct atm_dev *dev,int pool)
260 skb_queue_purge(&ZATM_DEV(dev)->pool[pool]);
280 static void use_pool(struct atm_dev *dev,int pool)
287 if (!(zatm_dev->pool_info[pool].ref_count++)) {
288 skb_queue_head_init(&zatm_dev->pool[pool]);
289 size = pool-ZATM_AAL5_POOL_BASE;
293 zpokel(zatm_dev,((zatm_dev->pool_info[pool].low_water/4) <<
297 zatm_dev->pool_base+pool*2);
299 pool*2+1);
301 zatm_dev->last_free[pool] = NULL;
302 refill_pool(dev,pool);
304 DPRINTK("pool %d: %d\n",pool,zatm_dev->pool_info[pool].ref_count);
308 static void unuse_pool(struct atm_dev *dev,int pool)
310 if (!(--ZATM_DEV(dev)->pool_info[pool].ref_count))
311 drain_free(dev,pool);
423 pos = ZATM_VCC(vcc)->pool;
426 skb_unlink(skb, zatm_dev->pool + pos);
478 refill_pool(dev,zatm_vcc->pool);
504 zatm_vcc->pool = pool_index(cells*ATM_CELL_PAYLOAD);
508 zatm_vcc->pool = ZATM_AAL0_POOL;
510 if (zatm_vcc->pool < 0) return -EMSGSIZE;
520 use_pool(vcc->dev,zatm_vcc->pool);
521 DPRINTK("pool %d\n",zatm_vcc->pool);
524 zpokel(zatm_dev,zatm_vcc->pool << uPD98401_RXVC_POOL_SHIFT,
596 unuse_pool(vcc->dev,zatm_vcc->pool);
1294 DPRINTK("RX pool 0x%08lx\n",curr);
1295 zpokel(zatm_dev,curr,uPD98401_PMA); /* receive pool */
1302 zpokel(zatm_dev,curr,uPD98401_TOS); /* free pool */
1454 int pool;
1456 if (get_user(pool,
1459 if (pool < 0 || pool > ZATM_LAST_POOL)
1461 pool = array_index_nospec(pool,
1464 info = zatm_dev->pool_info[pool];
1466 zatm_dev->pool_info[pool].rqa_count = 0;
1467 zatm_dev->pool_info[pool].rqu_count = 0;
1477 int pool;
1480 if (get_user(pool,
1483 if (pool < 0 || pool > ZATM_LAST_POOL)
1485 pool = array_index_nospec(pool,
1492 pool_info[pool].low_water;
1495 pool_info[pool].high_water;
1498 pool_info[pool].next_thres;
1503 zatm_dev->pool_info[pool].low_water =
1505 zatm_dev->pool_info[pool].high_water =
1507 zatm_dev->pool_info[pool].next_thres =