Lines Matching refs:txdes
48 struct ftmac100_txdes txdes[TX_QUEUE_ENTRIES];
209 offsetof(struct ftmac100_descs, txdes));
497 static void ftmac100_txdes_reset(struct ftmac100_txdes *txdes)
500 txdes->txdes0 = 0;
501 txdes->txdes1 &= cpu_to_le32(FTMAC100_TXDES1_EDOTR);
502 txdes->txdes2 = 0;
503 txdes->txdes3 = 0;
506 static bool ftmac100_txdes_owned_by_dma(struct ftmac100_txdes *txdes)
508 return txdes->txdes0 & cpu_to_le32(FTMAC100_TXDES0_TXDMA_OWN);
511 static void ftmac100_txdes_set_dma_own(struct ftmac100_txdes *txdes)
518 txdes->txdes0 |= cpu_to_le32(FTMAC100_TXDES0_TXDMA_OWN);
521 static bool ftmac100_txdes_excessive_collision(struct ftmac100_txdes *txdes)
523 return txdes->txdes0 & cpu_to_le32(FTMAC100_TXDES0_TXPKT_EXSCOL);
526 static bool ftmac100_txdes_late_collision(struct ftmac100_txdes *txdes)
528 return txdes->txdes0 & cpu_to_le32(FTMAC100_TXDES0_TXPKT_LATECOL);
531 static void ftmac100_txdes_set_end_of_ring(struct ftmac100_txdes *txdes)
533 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_EDOTR);
536 static void ftmac100_txdes_set_first_segment(struct ftmac100_txdes *txdes)
538 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_FTS);
541 static void ftmac100_txdes_set_last_segment(struct ftmac100_txdes *txdes)
543 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_LTS);
546 static void ftmac100_txdes_set_txint(struct ftmac100_txdes *txdes)
548 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_TXIC);
551 static void ftmac100_txdes_set_buffer_size(struct ftmac100_txdes *txdes,
554 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_TXBUF_SIZE(len));
557 static void ftmac100_txdes_set_dma_addr(struct ftmac100_txdes *txdes,
560 txdes->txdes2 = cpu_to_le32(addr);
563 static dma_addr_t ftmac100_txdes_get_dma_addr(struct ftmac100_txdes *txdes)
565 return le32_to_cpu(txdes->txdes2);
572 static void ftmac100_txdes_set_skb(struct ftmac100_txdes *txdes, struct sk_buff *skb)
574 txdes->txdes3 = (unsigned int)skb;
577 static struct sk_buff *ftmac100_txdes_get_skb(struct ftmac100_txdes *txdes)
579 return (struct sk_buff *)txdes->txdes3;
602 return &priv->descs->txdes[priv->tx_pointer];
607 return &priv->descs->txdes[priv->tx_clean_pointer];
613 struct ftmac100_txdes *txdes;
620 txdes = ftmac100_current_clean_txdes(priv);
622 if (ftmac100_txdes_owned_by_dma(txdes))
625 skb = ftmac100_txdes_get_skb(txdes);
626 map = ftmac100_txdes_get_dma_addr(txdes);
628 if (unlikely(ftmac100_txdes_excessive_collision(txdes) ||
629 ftmac100_txdes_late_collision(txdes))) {
643 ftmac100_txdes_reset(txdes);
665 struct ftmac100_txdes *txdes;
668 txdes = ftmac100_current_txdes(priv);
672 ftmac100_txdes_set_skb(txdes, skb);
673 ftmac100_txdes_set_dma_addr(txdes, map);
675 ftmac100_txdes_set_first_segment(txdes);
676 ftmac100_txdes_set_last_segment(txdes);
677 ftmac100_txdes_set_txint(txdes);
678 ftmac100_txdes_set_buffer_size(txdes, len);
686 ftmac100_txdes_set_dma_own(txdes);
742 struct ftmac100_txdes *txdes = &priv->descs->txdes[i];
743 struct sk_buff *skb = ftmac100_txdes_get_skb(txdes);
744 dma_addr_t map = ftmac100_txdes_get_dma_addr(txdes);
778 ftmac100_txdes_set_end_of_ring(&priv->descs->txdes[TX_QUEUE_ENTRIES - 1]);