Lines Matching refs:entry
793 void rt2800_write_tx_data(struct queue_entry *entry,
796 __le32 *txwi = rt2800_drv_get_txwi(entry);
836 rt2x00_set_field32(&word, TXWI_W1_PACKETID_QUEUE, entry->queue->qid);
837 rt2x00_set_field32(&word, TXWI_W1_PACKETID_ENTRY, (entry->entry_idx % 3) + 1);
845 * crypto entry in the registers should be used to encrypt the frame.
849 for (i = 2; i < entry->queue->winfo_size / sizeof(__le32); i++)
897 void rt2800_process_rxwi(struct queue_entry *entry,
900 __le32 *rxwi = (__le32 *) entry->skb->data;
934 rxdesc->rssi = rt2800_agc_to_rssi(entry->queue->rt2x00dev, word);
938 skb_pull(entry->skb, entry->queue->winfo_size);
975 static bool rt2800_txdone_entry_check(struct queue_entry *entry, u32 reg)
987 if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags))
997 * this entry by comparing the WCID/ACK/PID fields.
999 txwi = rt2800_drv_get_txwi(entry);
1007 rt2x00_dbg(entry->queue->rt2x00dev,
1008 "TX status report missed for queue %d entry %d\n",
1009 entry->queue->qid, entry->entry_idx);
1016 void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
1019 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
1021 struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
1057 * FIXME: if we do not find matching entry, we tell that frame was
1110 rt2x00lib_txdone_nomatch(entry, &txdesc);
1113 rt2x00lib_txdone(entry, &txdesc);
1121 struct queue_entry *entry;
1140 entry = rt2x00queue_get_entry(queue, Q_INDEX_DONE);
1142 if (unlikely(test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags) ||
1143 !test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))) {
1144 rt2x00_warn(rt2x00dev, "Data pending for entry %u in queue %u\n",
1145 entry->entry_idx, qid);
1149 match = rt2800_txdone_entry_check(entry, reg);
1150 rt2800_txdone_entry(entry, reg, rt2800_drv_get_txwi(entry), match);
1156 struct queue_entry *entry)
1161 if (!test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))
1169 ret = time_after(jiffies, entry->last_action + tout);
1171 rt2x00_dbg(entry->queue->rt2x00dev,
1172 "TX status timeout for entry %d in queue %d\n",
1173 entry->entry_idx, entry->queue->qid);
1180 struct queue_entry *entry;
1183 entry = rt2x00queue_get_entry(queue, Q_INDEX_DONE);
1184 if (rt2800_entry_txstatus_timeout(rt2x00dev, entry))
1193 * test if there is an entry in any TX queue for which DMA is done
1212 struct queue_entry *entry;
1216 * we loop until we find the first non-IO error entry. This
1218 * or has completed the upload but didn't have an entry
1223 entry = rt2x00queue_get_entry(queue, Q_INDEX_DONE);
1225 if (test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags) ||
1226 !test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))
1229 if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags) ||
1230 rt2800_entry_txstatus_timeout(rt2x00dev, entry))
1231 rt2x00lib_txdone_noinfo(entry, TXDONE_FAILURE);
1324 struct queue_entry *entry;
1333 entry = &queue->entries[i];
1334 if (!test_bit(ENTRY_BCN_ENABLED, &entry->flags))
1336 off = rt2800_get_beacon_offset(rt2x00dev, entry->entry_idx);
1353 void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc)
1355 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
1356 struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
1360 const int txwi_desc_size = entry->queue->winfo_size;
1374 memset(skb_push(entry->skb, txwi_desc_size), 0, txwi_desc_size);
1380 skbdesc->desc = entry->skb->data;
1386 rt2800_write_tx_data(entry, txdesc);
1391 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry);
1396 padding_len = roundup(entry->skb->len, 4) - entry->skb->len;
1397 if (padding_len && skb_pad(entry->skb, padding_len)) {
1400 entry->skb = NULL;
1405 beacon_base = rt2800_hw_beacon_base(rt2x00dev, entry->entry_idx);
1407 rt2800_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data,
1408 entry->skb->len + padding_len);
1409 __set_bit(ENTRY_BCN_ENABLED, &entry->flags);
1424 dev_kfree_skb_any(entry->skb);
1425 entry->skb = NULL;
1447 void rt2800_clear_beacon(struct queue_entry *entry)
1449 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
1464 rt2800_clear_beacon_register(rt2x00dev, entry->entry_idx);
1465 __clear_bit(ENTRY_BCN_ENABLED, &entry->flags);
1830 * Search for the first free WCID entry and return the corresponding
1878 * Remove WCID entry, no need to clean the attributes as they will
1893 struct queue_entry *entry;
1902 entry = &queue->entries[i];
1903 clear_bit(ENTRY_BCN_ASSIGNED, &entry->flags);
3444 /* Order of values on rf_channel entry: N, K, mod, R */