Lines Matching refs:cache

73 static int wfx_tx_policy_find(struct wfx_tx_policy_cache *cache, struct wfx_tx_policy *wanted)  in wfx_tx_policy_find()  argument
77 list_for_each_entry(it, &cache->used, link) in wfx_tx_policy_find()
79 return it - cache->cache; in wfx_tx_policy_find()
80 list_for_each_entry(it, &cache->free, link) in wfx_tx_policy_find()
82 return it - cache->cache; in wfx_tx_policy_find()
86 static void wfx_tx_policy_use(struct wfx_tx_policy_cache *cache, struct wfx_tx_policy *entry) in wfx_tx_policy_use() argument
89 list_move(&entry->link, &cache->used); in wfx_tx_policy_use()
92 static int wfx_tx_policy_release(struct wfx_tx_policy_cache *cache, struct wfx_tx_policy *entry) in wfx_tx_policy_release() argument
97 list_move(&entry->link, &cache->free); in wfx_tx_policy_release()
104 struct wfx_tx_policy_cache *cache = &wvif->tx_policy_cache; in wfx_tx_policy_get() local
110 spin_lock_bh(&cache->lock); in wfx_tx_policy_get()
111 if (list_empty(&cache->free)) { in wfx_tx_policy_get()
113 spin_unlock_bh(&cache->lock); in wfx_tx_policy_get()
116 idx = wfx_tx_policy_find(cache, &wanted); in wfx_tx_policy_get()
122 entry = list_entry(cache->free.prev, struct wfx_tx_policy, link); in wfx_tx_policy_get()
126 idx = entry - cache->cache; in wfx_tx_policy_get()
128 wfx_tx_policy_use(cache, &cache->cache[idx]); in wfx_tx_policy_get()
129 if (list_empty(&cache->free)) in wfx_tx_policy_get()
131 spin_unlock_bh(&cache->lock); in wfx_tx_policy_get()
138 struct wfx_tx_policy_cache *cache = &wvif->tx_policy_cache; in wfx_tx_policy_put() local
142 spin_lock_bh(&cache->lock); in wfx_tx_policy_put()
143 locked = list_empty(&cache->free); in wfx_tx_policy_put()
144 usage = wfx_tx_policy_release(cache, &cache->cache[idx]); in wfx_tx_policy_put()
147 spin_unlock_bh(&cache->lock); in wfx_tx_policy_put()
152 struct wfx_tx_policy *policies = wvif->tx_policy_cache.cache; in wfx_tx_policy_upload()
158 for (i = 0; i < ARRAY_SIZE(wvif->tx_policy_cache.cache); ++i) { in wfx_tx_policy_upload()
163 if (i < ARRAY_SIZE(wvif->tx_policy_cache.cache)) { in wfx_tx_policy_upload()
171 } while (i < ARRAY_SIZE(wvif->tx_policy_cache.cache)); in wfx_tx_policy_upload()
185 struct wfx_tx_policy_cache *cache = &wvif->tx_policy_cache; in wfx_tx_policy_init() local
188 memset(cache, 0, sizeof(*cache)); in wfx_tx_policy_init()
190 spin_lock_init(&cache->lock); in wfx_tx_policy_init()
191 INIT_LIST_HEAD(&cache->used); in wfx_tx_policy_init()
192 INIT_LIST_HEAD(&cache->free); in wfx_tx_policy_init()
194 for (i = 0; i < ARRAY_SIZE(cache->cache); ++i) in wfx_tx_policy_init()
195 list_add(&cache->cache[i].link, &cache->free); in wfx_tx_policy_init()