• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/

Lines Matching defs:descr

164 				       card->descr + GELIC_NET_TX_DESCRIPTORS);
174 * @descr: descriptor to look at
179 gelic_descr_get_status(struct gelic_descr *descr)
181 return be32_to_cpu(descr->dmac_cmd_status) & GELIC_DESCR_DMA_STAT_MASK;
186 * @descr: descriptor to change
192 static void gelic_descr_set_status(struct gelic_descr *descr,
195 descr->dmac_cmd_status = cpu_to_be32(status |
196 (be32_to_cpu(descr->dmac_cmd_status) &
215 struct gelic_descr *descr;
217 for (descr = descr_in; descr && descr->bus_addr; descr = descr->next) {
218 dma_unmap_single(ctodev(card), descr->bus_addr,
220 descr->bus_addr = 0;
242 struct gelic_descr *descr;
244 descr = start_descr;
245 memset(descr, 0, sizeof(*descr) * no);
248 for (i = 0; i < no; i++, descr++) {
249 gelic_descr_set_status(descr, GELIC_DESCR_DMA_NOT_IN_USE);
250 descr->bus_addr =
251 dma_map_single(ctodev(card), descr,
255 if (!descr->bus_addr)
258 descr->next = descr + 1;
259 descr->prev = descr - 1;
262 (descr - 1)->next = start_descr;
263 start_descr->prev = (descr - 1);
266 descr = start_descr;
267 for (i = 0; i < no; i++, descr++) {
268 descr->next_descr_addr = cpu_to_be32(descr->next->bus_addr);
275 (descr - 1)->next_descr_addr = 0;
280 for (i--, descr--; 0 <= i; i--, descr--)
281 if (descr->bus_addr)
282 dma_unmap_single(ctodev(card), descr->bus_addr,
301 struct gelic_descr *descr;
303 for (descr = start_descr; start_descr != descr->next; descr++) {
304 gelic_descr_set_status(descr, GELIC_DESCR_DMA_CARDOWNED);
305 descr->next_descr_addr = cpu_to_be32(descr->next->bus_addr);
309 chain->tail = (descr - 1);
311 (descr - 1)->next_descr_addr = 0;
316 * @descr: descriptor to re-init
324 struct gelic_descr *descr)
329 if (gelic_descr_get_status(descr) != GELIC_DESCR_DMA_NOT_IN_USE)
336 descr->skb = dev_alloc_skb(bufsize + GELIC_NET_RXBUF_ALIGN - 1);
337 if (!descr->skb) {
338 descr->buf_addr = 0; /* tell DMAC don't touch memory */
343 descr->buf_size = cpu_to_be32(bufsize);
344 descr->dmac_cmd_status = 0;
345 descr->result_size = 0;
346 descr->valid_size = 0;
347 descr->data_error = 0;
349 offset = ((unsigned long)descr->skb->data) &
352 skb_reserve(descr->skb, GELIC_NET_RXBUF_ALIGN - offset);
354 descr->buf_addr = cpu_to_be32(dma_map_single(ctodev(card),
355 descr->skb->data,
358 if (!descr->buf_addr) {
359 dev_kfree_skb_any(descr->skb);
360 descr->skb = NULL;
363 gelic_descr_set_status(descr, GELIC_DESCR_DMA_NOT_IN_USE);
366 gelic_descr_set_status(descr, GELIC_DESCR_DMA_CARDOWNED);
372 * gelic_card_release_rx_chain - free all skb of rx descr
378 struct gelic_descr *descr = card->rx_chain.head;
381 if (descr->skb) {
383 be32_to_cpu(descr->buf_addr),
384 descr->skb->len,
386 descr->buf_addr = 0;
387 dev_kfree_skb_any(descr->skb);
388 descr->skb = NULL;
389 gelic_descr_set_status(descr,
392 descr = descr->next;
393 } while (descr != card->rx_chain.head);
406 struct gelic_descr *descr = card->rx_chain.head;
410 if (!descr->skb) {
411 ret = gelic_descr_prepare_rx(card, descr);
415 descr = descr->next;
416 } while (descr != card->rx_chain.head);
443 * @descr: descriptor to release
448 struct gelic_descr *descr)
450 struct sk_buff *skb = descr->skb;
452 BUG_ON(!(be32_to_cpu(descr->data_status) & GELIC_DESCR_TX_TAIL));
454 dma_unmap_single(ctodev(card), be32_to_cpu(descr->buf_addr), skb->len,
458 descr->buf_addr = 0;
459 descr->buf_size = 0;
460 descr->next_descr_addr = 0;
461 descr->result_size = 0;
462 descr->valid_size = 0;
463 descr->data_status = 0;
464 descr->data_error = 0;
465 descr->skb = NULL;
467 /* set descr status */
468 gelic_descr_set_status(descr, GELIC_DESCR_DMA_NOT_IN_USE);
711 * @descr: descriptor structure to fill out
718 static void gelic_descr_set_tx_cmdstat(struct gelic_descr *descr,
722 descr->dmac_cmd_status =
730 descr->dmac_cmd_status =
735 descr->dmac_cmd_status =
742 descr->dmac_cmd_status =
777 * @descr: descriptor structure
784 struct gelic_descr *descr,
810 descr->buf_addr = cpu_to_be32(buf);
811 descr->buf_size = cpu_to_be32(skb->len);
812 descr->skb = skb;
813 descr->data_status = 0;
814 descr->next_descr_addr = 0; /* terminate hw descr */
815 gelic_descr_set_tx_cmdstat(descr, skb);
818 card->tx_chain.head = descr->next;
825 * @descr: descriptor address to enable TX processing at
829 struct gelic_descr *descr)
836 if (gelic_descr_get_status(descr) == GELIC_DESCR_DMA_CARDOWNED) {
839 descr->bus_addr, 0);
857 struct gelic_descr *descr;
865 descr = gelic_card_get_next_tx_descr(card);
866 if (!descr) {
875 result = gelic_descr_prepare_tx(card, descr, skb);
890 descr->prev->next_descr_addr = cpu_to_be32(descr->bus_addr);
896 if (gelic_card_kick_txdma(card, descr)) {
902 gelic_descr_release_tx(card, descr);
903 gelic_descr_release_tx(card, descr->next);
904 card->tx_chain.tail = descr->next->next;
914 * @descr: descriptor to process
921 static void gelic_net_pass_skb_up(struct gelic_descr *descr,
926 struct sk_buff *skb = descr->skb;
929 data_status = be32_to_cpu(descr->data_status);
930 data_error = be32_to_cpu(descr->data_error);
932 dma_unmap_single(ctodev(card), be32_to_cpu(descr->buf_addr),
936 skb_put(skb, be32_to_cpu(descr->valid_size)?
937 be32_to_cpu(descr->valid_size) :
938 be32_to_cpu(descr->result_size));
939 if (!descr->valid_size)
941 be32_to_cpu(descr->result_size),
942 be32_to_cpu(descr->buf_size),
943 be32_to_cpu(descr->dmac_cmd_status));
945 descr->skb = NULL;
984 struct gelic_descr *descr = chain->head;
988 status = gelic_descr_get_status(descr);
991 be32_to_cpu(descr->dmac_cmd_status) &
998 dev_dbg(ctodev(card), "dormant descr? %p\n", descr);
1006 vid = *(u16 *)(descr->skb->data) & VLAN_VID_MASK;
1052 /* ok, we've got a packet in descr */
1053 gelic_net_pass_skb_up(descr, card, netdev);
1060 descr->next_descr_addr = 0;
1063 gelic_descr_set_status(descr, GELIC_DESCR_DMA_NOT_IN_USE);
1069 gelic_descr_prepare_rx(card, descr);
1071 chain->tail = descr;
1072 chain->head = descr->next;
1077 descr->prev->next_descr_addr = cpu_to_be32(descr->bus_addr);
1569 BUILD_BUG_ON(offsetof(struct gelic_card, descr) % 32);
1763 card->descr, GELIC_NET_TX_DESCRIPTORS))
1766 card->descr + GELIC_NET_TX_DESCRIPTORS,
1773 dev_dbg(ctodev(card), "descr rx %p, tx %p, size %#lx, num %#x\n",