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