Lines Matching refs:txdes
59 struct ftmac100_txdes txdes[TX_QUEUE_ENTRIES]; member
185 offsetof(struct ftmac100_descs, txdes)); in ftmac100_start_hw()
471 static void ftmac100_txdes_reset(struct ftmac100_txdes *txdes) in ftmac100_txdes_reset() argument
474 txdes->txdes0 = 0; in ftmac100_txdes_reset()
475 txdes->txdes1 &= cpu_to_le32(FTMAC100_TXDES1_EDOTR); in ftmac100_txdes_reset()
476 txdes->txdes2 = 0; in ftmac100_txdes_reset()
477 txdes->txdes3 = 0; in ftmac100_txdes_reset()
480 static bool ftmac100_txdes_owned_by_dma(struct ftmac100_txdes *txdes) in ftmac100_txdes_owned_by_dma() argument
482 return txdes->txdes0 & cpu_to_le32(FTMAC100_TXDES0_TXDMA_OWN); in ftmac100_txdes_owned_by_dma()
485 static void ftmac100_txdes_set_dma_own(struct ftmac100_txdes *txdes) in ftmac100_txdes_set_dma_own() argument
492 txdes->txdes0 |= cpu_to_le32(FTMAC100_TXDES0_TXDMA_OWN); in ftmac100_txdes_set_dma_own()
495 static bool ftmac100_txdes_excessive_collision(struct ftmac100_txdes *txdes) in ftmac100_txdes_excessive_collision() argument
497 return txdes->txdes0 & cpu_to_le32(FTMAC100_TXDES0_TXPKT_EXSCOL); in ftmac100_txdes_excessive_collision()
500 static bool ftmac100_txdes_late_collision(struct ftmac100_txdes *txdes) in ftmac100_txdes_late_collision() argument
502 return txdes->txdes0 & cpu_to_le32(FTMAC100_TXDES0_TXPKT_LATECOL); in ftmac100_txdes_late_collision()
505 static void ftmac100_txdes_set_end_of_ring(struct ftmac100_txdes *txdes) in ftmac100_txdes_set_end_of_ring() argument
507 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_EDOTR); in ftmac100_txdes_set_end_of_ring()
510 static void ftmac100_txdes_set_first_segment(struct ftmac100_txdes *txdes) in ftmac100_txdes_set_first_segment() argument
512 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_FTS); in ftmac100_txdes_set_first_segment()
515 static void ftmac100_txdes_set_last_segment(struct ftmac100_txdes *txdes) in ftmac100_txdes_set_last_segment() argument
517 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_LTS); in ftmac100_txdes_set_last_segment()
520 static void ftmac100_txdes_set_txint(struct ftmac100_txdes *txdes) in ftmac100_txdes_set_txint() argument
522 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_TXIC); in ftmac100_txdes_set_txint()
525 static void ftmac100_txdes_set_buffer_size(struct ftmac100_txdes *txdes, in ftmac100_txdes_set_buffer_size() argument
528 txdes->txdes1 |= cpu_to_le32(FTMAC100_TXDES1_TXBUF_SIZE(len)); in ftmac100_txdes_set_buffer_size()
531 static void ftmac100_txdes_set_dma_addr(struct ftmac100_txdes *txdes, in ftmac100_txdes_set_dma_addr() argument
534 txdes->txdes2 = cpu_to_le32(addr); in ftmac100_txdes_set_dma_addr()
537 static dma_addr_t ftmac100_txdes_get_dma_addr(struct ftmac100_txdes *txdes) in ftmac100_txdes_get_dma_addr() argument
539 return le32_to_cpu(txdes->txdes2); in ftmac100_txdes_get_dma_addr()
546 static void ftmac100_txdes_set_skb(struct ftmac100_txdes *txdes, struct sk_buff *skb) in ftmac100_txdes_set_skb() argument
548 txdes->txdes3 = (unsigned int)skb; in ftmac100_txdes_set_skb()
551 static struct sk_buff *ftmac100_txdes_get_skb(struct ftmac100_txdes *txdes) in ftmac100_txdes_get_skb() argument
553 return (struct sk_buff *)txdes->txdes3; in ftmac100_txdes_get_skb()
576 return &priv->descs->txdes[priv->tx_pointer]; in ftmac100_current_txdes()
581 return &priv->descs->txdes[priv->tx_clean_pointer]; in ftmac100_current_clean_txdes()
587 struct ftmac100_txdes *txdes; in ftmac100_tx_complete_packet() local
594 txdes = ftmac100_current_clean_txdes(priv); in ftmac100_tx_complete_packet()
596 if (ftmac100_txdes_owned_by_dma(txdes)) in ftmac100_tx_complete_packet()
599 skb = ftmac100_txdes_get_skb(txdes); in ftmac100_tx_complete_packet()
600 map = ftmac100_txdes_get_dma_addr(txdes); in ftmac100_tx_complete_packet()
602 if (unlikely(ftmac100_txdes_excessive_collision(txdes) || in ftmac100_tx_complete_packet()
603 ftmac100_txdes_late_collision(txdes))) { in ftmac100_tx_complete_packet()
617 ftmac100_txdes_reset(txdes); in ftmac100_tx_complete_packet()
639 struct ftmac100_txdes *txdes; in ftmac100_xmit() local
642 txdes = ftmac100_current_txdes(priv); in ftmac100_xmit()
646 ftmac100_txdes_set_skb(txdes, skb); in ftmac100_xmit()
647 ftmac100_txdes_set_dma_addr(txdes, map); in ftmac100_xmit()
649 ftmac100_txdes_set_first_segment(txdes); in ftmac100_xmit()
650 ftmac100_txdes_set_last_segment(txdes); in ftmac100_xmit()
651 ftmac100_txdes_set_txint(txdes); in ftmac100_xmit()
652 ftmac100_txdes_set_buffer_size(txdes, len); in ftmac100_xmit()
660 ftmac100_txdes_set_dma_own(txdes); in ftmac100_xmit()
716 struct ftmac100_txdes *txdes = &priv->descs->txdes[i]; in ftmac100_free_buffers() local
717 struct sk_buff *skb = ftmac100_txdes_get_skb(txdes); in ftmac100_free_buffers()
718 dma_addr_t map = ftmac100_txdes_get_dma_addr(txdes); in ftmac100_free_buffers()
753 ftmac100_txdes_set_end_of_ring(&priv->descs->txdes[TX_QUEUE_ENTRIES - 1]); in ftmac100_alloc_buffers()