Lines Matching refs:txdes

60 	struct ftmac100_txdes txdes[TX_QUEUE_ENTRIES];  member
186 offsetof(struct ftmac100_descs, txdes)); in ftmac100_start_hw()
473 static void ftmac100_txdes_reset(struct ftmac100_txdes *txdes) in ftmac100_txdes_reset() argument
476 txdes->txdes0 = 0; in ftmac100_txdes_reset()
477 txdes->txdes1 &= cpu_to_le32(FTMAC100_TXDES1_EDOTR); in ftmac100_txdes_reset()
478 txdes->txdes2 = 0; in ftmac100_txdes_reset()
479 txdes->txdes3 = 0; in ftmac100_txdes_reset()
482 static bool ftmac100_txdes_owned_by_dma(struct ftmac100_txdes *txdes) in ftmac100_txdes_owned_by_dma() argument
484 return txdes->txdes0 & cpu_to_le32(FTMAC100_TXDES0_TXDMA_OWN); in ftmac100_txdes_owned_by_dma()
487 static void ftmac100_txdes_set_dma_own(struct ftmac100_txdes *txdes) in ftmac100_txdes_set_dma_own() argument
494 txdes->txdes0 |= cpu_to_le32(FTMAC100_TXDES0_TXDMA_OWN); in ftmac100_txdes_set_dma_own()
497 static bool ftmac100_txdes_excessive_collision(struct ftmac100_txdes *txdes) in ftmac100_txdes_excessive_collision() argument
499 return txdes->txdes0 & cpu_to_le32(FTMAC100_TXDES0_TXPKT_EXSCOL); in ftmac100_txdes_excessive_collision()
502 static bool ftmac100_txdes_late_collision(struct ftmac100_txdes *txdes) in ftmac100_txdes_late_collision() argument
504 return txdes->txdes0 & cpu_to_le32(FTMAC100_TXDES0_TXPKT_LATECOL); in ftmac100_txdes_late_collision()
507 static void ftmac100_txdes_set_end_of_ring(struct ftmac100_txdes *txdes) in ftmac100_txdes_set_end_of_ring() argument
509 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_EDOTR); in ftmac100_txdes_set_end_of_ring()
512 static void ftmac100_txdes_set_first_segment(struct ftmac100_txdes *txdes) in ftmac100_txdes_set_first_segment() argument
514 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_FTS); in ftmac100_txdes_set_first_segment()
517 static void ftmac100_txdes_set_last_segment(struct ftmac100_txdes *txdes) in ftmac100_txdes_set_last_segment() argument
519 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_LTS); in ftmac100_txdes_set_last_segment()
522 static void ftmac100_txdes_set_txint(struct ftmac100_txdes *txdes) in ftmac100_txdes_set_txint() argument
524 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_TXIC); in ftmac100_txdes_set_txint()
527 static void ftmac100_txdes_set_buffer_size(struct ftmac100_txdes *txdes, in ftmac100_txdes_set_buffer_size() argument
530 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_TXBUF_SIZE(len)); in ftmac100_txdes_set_buffer_size()
533 static void ftmac100_txdes_set_dma_addr(struct ftmac100_txdes *txdes, in ftmac100_txdes_set_dma_addr() argument
536 txdes->txdes2 = cpu_to_le32(addr); in ftmac100_txdes_set_dma_addr()
539 static dma_addr_t ftmac100_txdes_get_dma_addr(struct ftmac100_txdes *txdes) in ftmac100_txdes_get_dma_addr() argument
541 return le32_to_cpu(txdes->txdes2); in ftmac100_txdes_get_dma_addr()
548 static void ftmac100_txdes_set_skb(struct ftmac100_txdes *txdes, struct sk_buff *skb) in ftmac100_txdes_set_skb() argument
550 txdes->txdes3 = (unsigned int)skb; in ftmac100_txdes_set_skb()
553 static struct sk_buff *ftmac100_txdes_get_skb(struct ftmac100_txdes *txdes) in ftmac100_txdes_get_skb() argument
555 return (struct sk_buff *)txdes->txdes3; in ftmac100_txdes_get_skb()
578 return &priv->descs->txdes[priv->tx_pointer]; in ftmac100_current_txdes()
583 return &priv->descs->txdes[priv->tx_clean_pointer]; in ftmac100_current_clean_txdes()
589 struct ftmac100_txdes *txdes; in ftmac100_tx_complete_packet() local
596 txdes = ftmac100_current_clean_txdes(priv); in ftmac100_tx_complete_packet()
598 if (ftmac100_txdes_owned_by_dma(txdes)) in ftmac100_tx_complete_packet()
601 skb = ftmac100_txdes_get_skb(txdes); in ftmac100_tx_complete_packet()
602 map = ftmac100_txdes_get_dma_addr(txdes); in ftmac100_tx_complete_packet()
604 if (unlikely(ftmac100_txdes_excessive_collision(txdes) || in ftmac100_tx_complete_packet()
605 ftmac100_txdes_late_collision(txdes))) { in ftmac100_tx_complete_packet()
619 ftmac100_txdes_reset(txdes); in ftmac100_tx_complete_packet()
641 struct ftmac100_txdes *txdes; in ftmac100_xmit() local
644 txdes = ftmac100_current_txdes(priv); in ftmac100_xmit()
648 ftmac100_txdes_set_skb(txdes, skb); in ftmac100_xmit()
649 ftmac100_txdes_set_dma_addr(txdes, map); in ftmac100_xmit()
651 ftmac100_txdes_set_first_segment(txdes); in ftmac100_xmit()
652 ftmac100_txdes_set_last_segment(txdes); in ftmac100_xmit()
653 ftmac100_txdes_set_txint(txdes); in ftmac100_xmit()
654 ftmac100_txdes_set_buffer_size(txdes, len); in ftmac100_xmit()
662 ftmac100_txdes_set_dma_own(txdes); in ftmac100_xmit()
718 struct ftmac100_txdes *txdes = &priv->descs->txdes[i]; in ftmac100_free_buffers() local
719 struct sk_buff *skb = ftmac100_txdes_get_skb(txdes); in ftmac100_free_buffers()
720 dma_addr_t map = ftmac100_txdes_get_dma_addr(txdes); in ftmac100_free_buffers()
755 ftmac100_txdes_set_end_of_ring(&priv->descs->txdes[TX_QUEUE_ENTRIES - 1]); in ftmac100_alloc_buffers()