Lines Matching refs:adpt
257 void emac_mac_multicast_addr_set(struct emac_adapter *adpt, u8 *addr) in emac_mac_multicast_addr_set() argument
271 mta = readl(adpt->base + EMAC_HASH_TAB_REG0 + (reg << 2)); in emac_mac_multicast_addr_set()
273 writel(mta, adpt->base + EMAC_HASH_TAB_REG0 + (reg << 2)); in emac_mac_multicast_addr_set()
276 void emac_mac_multicast_addr_clear(struct emac_adapter *adpt) in emac_mac_multicast_addr_clear() argument
278 writel(0, adpt->base + EMAC_HASH_TAB_REG0); in emac_mac_multicast_addr_clear()
279 writel(0, adpt->base + EMAC_HASH_TAB_REG1); in emac_mac_multicast_addr_clear()
289 void emac_mac_mode_config(struct emac_adapter *adpt) in emac_mac_mode_config() argument
291 struct net_device *netdev = adpt->netdev; in emac_mac_mode_config()
294 mac = readl(adpt->base + EMAC_MAC_CTRL); in emac_mac_mode_config()
306 writel(mac, adpt->base + EMAC_MAC_CTRL); in emac_mac_mode_config()
310 static void emac_mac_dma_rings_config(struct emac_adapter *adpt) in emac_mac_dma_rings_config() argument
313 writel(upper_32_bits(adpt->tx_q.tpd.dma_addr), in emac_mac_dma_rings_config()
314 adpt->base + EMAC_DESC_CTRL_1); in emac_mac_dma_rings_config()
316 writel(lower_32_bits(adpt->tx_q.tpd.dma_addr), in emac_mac_dma_rings_config()
317 adpt->base + EMAC_DESC_CTRL_8); in emac_mac_dma_rings_config()
319 writel(adpt->tx_q.tpd.count & TPD_RING_SIZE_BMSK, in emac_mac_dma_rings_config()
320 adpt->base + EMAC_DESC_CTRL_9); in emac_mac_dma_rings_config()
323 writel(upper_32_bits(adpt->rx_q.rfd.dma_addr), in emac_mac_dma_rings_config()
324 adpt->base + EMAC_DESC_CTRL_0); in emac_mac_dma_rings_config()
326 writel(lower_32_bits(adpt->rx_q.rfd.dma_addr), in emac_mac_dma_rings_config()
327 adpt->base + EMAC_DESC_CTRL_2); in emac_mac_dma_rings_config()
328 writel(lower_32_bits(adpt->rx_q.rrd.dma_addr), in emac_mac_dma_rings_config()
329 adpt->base + EMAC_DESC_CTRL_5); in emac_mac_dma_rings_config()
331 writel(adpt->rx_q.rfd.count & RFD_RING_SIZE_BMSK, in emac_mac_dma_rings_config()
332 adpt->base + EMAC_DESC_CTRL_3); in emac_mac_dma_rings_config()
333 writel(adpt->rx_q.rrd.count & RRD_RING_SIZE_BMSK, in emac_mac_dma_rings_config()
334 adpt->base + EMAC_DESC_CTRL_6); in emac_mac_dma_rings_config()
336 writel(adpt->rxbuf_size & RX_BUFFER_SIZE_BMSK, in emac_mac_dma_rings_config()
337 adpt->base + EMAC_DESC_CTRL_4); in emac_mac_dma_rings_config()
339 writel(0, adpt->base + EMAC_DESC_CTRL_11); in emac_mac_dma_rings_config()
344 writel(1, adpt->base + EMAC_INTER_SRAM_PART9); in emac_mac_dma_rings_config()
348 static void emac_mac_tx_config(struct emac_adapter *adpt) in emac_mac_tx_config() argument
353 JUMBO_TASK_OFFLOAD_THRESHOLD_BMSK, adpt->base + EMAC_TXQ_CTRL_1); in emac_mac_tx_config()
355 val = (adpt->tpd_burst << NUM_TPD_BURST_PREF_SHFT) & in emac_mac_tx_config()
362 writel(val, adpt->base + EMAC_TXQ_CTRL_0); in emac_mac_tx_config()
363 emac_reg_update32(adpt->base + EMAC_TXQ_CTRL_2, in emac_mac_tx_config()
368 static void emac_mac_rx_config(struct emac_adapter *adpt) in emac_mac_rx_config() argument
372 val = (adpt->rfd_burst << NUM_RFD_BURST_PREF_SHFT) & in emac_mac_rx_config()
376 writel(val, adpt->base + EMAC_RXQ_CTRL_0); in emac_mac_rx_config()
378 val = readl(adpt->base + EMAC_RXQ_CTRL_1); in emac_mac_rx_config()
384 writel(val, adpt->base + EMAC_RXQ_CTRL_1); in emac_mac_rx_config()
386 val = readl(adpt->base + EMAC_RXQ_CTRL_2); in emac_mac_rx_config()
390 writel(val, adpt->base + EMAC_RXQ_CTRL_2); in emac_mac_rx_config()
392 val = readl(adpt->base + EMAC_RXQ_CTRL_3); in emac_mac_rx_config()
395 writel(val, adpt->base + EMAC_RXQ_CTRL_3); in emac_mac_rx_config()
399 static void emac_mac_dma_config(struct emac_adapter *adpt) in emac_mac_dma_config() argument
403 switch (adpt->dma_order) { in emac_mac_dma_config()
417 dma_ctrl |= (((u32)adpt->dmar_block) << REGRDBLEN_SHFT) & in emac_mac_dma_config()
419 dma_ctrl |= (((u32)adpt->dmaw_block) << REGWRBLEN_SHFT) & in emac_mac_dma_config()
421 dma_ctrl |= (((u32)adpt->dmar_dly_cnt) << DMAR_DLY_CNT_SHFT) & in emac_mac_dma_config()
423 dma_ctrl |= (((u32)adpt->dmaw_dly_cnt) << DMAW_DLY_CNT_SHFT) & in emac_mac_dma_config()
427 writel(dma_ctrl, adpt->base + EMAC_DMA_CTRL); in emac_mac_dma_config()
431 static void emac_set_mac_address(struct emac_adapter *adpt, u8 *addr) in emac_set_mac_address() argument
442 writel(sta, adpt->base + EMAC_MAC_STA_ADDR0); in emac_set_mac_address()
446 writel(sta, adpt->base + EMAC_MAC_STA_ADDR1); in emac_set_mac_address()
449 static void emac_mac_config(struct emac_adapter *adpt) in emac_mac_config() argument
451 struct net_device *netdev = adpt->netdev; in emac_mac_config()
455 emac_set_mac_address(adpt, netdev->dev_addr); in emac_mac_config()
458 adpt->rxbuf_size = netdev->mtu > EMAC_DEF_RX_BUF_SIZE ? in emac_mac_config()
461 emac_mac_dma_rings_config(adpt); in emac_mac_config()
464 adpt->base + EMAC_MAX_FRAM_LEN_CTRL); in emac_mac_config()
466 emac_mac_tx_config(adpt); in emac_mac_config()
467 emac_mac_rx_config(adpt); in emac_mac_config()
468 emac_mac_dma_config(adpt); in emac_mac_config()
470 val = readl(adpt->base + EMAC_AXI_MAST_CTRL); in emac_mac_config()
473 writel(val, adpt->base + EMAC_AXI_MAST_CTRL); in emac_mac_config()
474 writel(0, adpt->base + EMAC_CLK_GATE_CTRL); in emac_mac_config()
475 writel(RX_UNCPL_INT_EN, adpt->base + EMAC_MISC_CTRL); in emac_mac_config()
478 void emac_mac_reset(struct emac_adapter *adpt) in emac_mac_reset() argument
480 emac_mac_stop(adpt); in emac_mac_reset()
482 emac_reg_update32(adpt->base + EMAC_DMA_MAS_CTRL, 0, SOFT_RST); in emac_mac_reset()
486 emac_reg_update32(adpt->base + EMAC_DMA_MAS_CTRL, 0, INT_RD_CLR_EN); in emac_mac_reset()
489 static void emac_mac_start(struct emac_adapter *adpt) in emac_mac_start() argument
491 struct phy_device *phydev = adpt->phydev; in emac_mac_start()
495 emac_reg_update32(adpt->base + EMAC_TXQ_CTRL_0, 0, TXQ_EN); in emac_mac_start()
498 emac_reg_update32(adpt->base + EMAC_RXQ_CTRL_0, 0, RXQ_EN); in emac_mac_start()
501 mac = readl(adpt->base + EMAC_MAC_CTRL); in emac_mac_start()
502 csr1 = readl(adpt->csr + EMAC_EMAC_WRAPPER_CSR1); in emac_mac_start()
512 if (adpt->automatic) { in emac_mac_start()
514 adpt->rx_flow_control = phydev->pause; in emac_mac_start()
515 adpt->tx_flow_control = phydev->pause != phydev->asym_pause; in emac_mac_start()
517 mac |= adpt->rx_flow_control ? RXFC : 0; in emac_mac_start()
518 mac |= adpt->tx_flow_control ? TXFC : 0; in emac_mac_start()
537 mac |= ((adpt->preamble << PRLEN_SHFT) & PRLEN_BMSK); in emac_mac_start()
564 mac |= adpt->single_pause_mode ? SINGLE_PAUSE_MODE : 0; in emac_mac_start()
566 writel_relaxed(csr1, adpt->csr + EMAC_EMAC_WRAPPER_CSR1); in emac_mac_start()
568 writel_relaxed(mac, adpt->base + EMAC_MAC_CTRL); in emac_mac_start()
574 writel_relaxed(adpt->irq_mod, adpt->base + EMAC_IRQ_MOD_TIM_INIT); in emac_mac_start()
576 IRQ_MODERATOR2_EN, adpt->base + EMAC_DMA_MAS_CTRL); in emac_mac_start()
578 emac_mac_mode_config(adpt); in emac_mac_start()
580 emac_reg_update32(adpt->base + EMAC_ATHR_HEADER_CTRL, in emac_mac_start()
584 void emac_mac_stop(struct emac_adapter *adpt) in emac_mac_stop() argument
586 emac_reg_update32(adpt->base + EMAC_RXQ_CTRL_0, RXQ_EN, 0); in emac_mac_stop()
587 emac_reg_update32(adpt->base + EMAC_TXQ_CTRL_0, TXQ_EN, 0); in emac_mac_stop()
588 emac_reg_update32(adpt->base + EMAC_MAC_CTRL, TXEN | RXEN, 0); in emac_mac_stop()
593 static void emac_tx_q_descs_free(struct emac_adapter *adpt) in emac_tx_q_descs_free() argument
595 struct emac_tx_queue *tx_q = &adpt->tx_q; in emac_tx_q_descs_free()
607 dma_unmap_single(adpt->netdev->dev.parent, in emac_tx_q_descs_free()
629 static void emac_rx_q_free_descs(struct emac_adapter *adpt) in emac_rx_q_free_descs() argument
631 struct device *dev = adpt->netdev->dev.parent; in emac_rx_q_free_descs()
632 struct emac_rx_queue *rx_q = &adpt->rx_q; in emac_rx_q_free_descs()
668 static void emac_tx_q_bufs_free(struct emac_adapter *adpt) in emac_tx_q_bufs_free() argument
670 struct emac_tx_queue *tx_q = &adpt->tx_q; in emac_tx_q_bufs_free()
672 emac_tx_q_descs_free(adpt); in emac_tx_q_bufs_free()
682 static int emac_tx_q_desc_alloc(struct emac_adapter *adpt, in emac_tx_q_desc_alloc() argument
685 struct emac_ring_header *ring_header = &adpt->ring_header; in emac_tx_q_desc_alloc()
686 int node = dev_to_node(adpt->netdev->dev.parent); in emac_tx_q_desc_alloc()
694 tx_q->tpd.size = tx_q->tpd.count * (adpt->tpd_size * 4); in emac_tx_q_desc_alloc()
705 static void emac_rx_q_bufs_free(struct emac_adapter *adpt) in emac_rx_q_bufs_free() argument
707 struct emac_rx_queue *rx_q = &adpt->rx_q; in emac_rx_q_bufs_free()
709 emac_rx_q_free_descs(adpt); in emac_rx_q_bufs_free()
724 static int emac_rx_descs_alloc(struct emac_adapter *adpt) in emac_rx_descs_alloc() argument
726 struct emac_ring_header *ring_header = &adpt->ring_header; in emac_rx_descs_alloc()
727 int node = dev_to_node(adpt->netdev->dev.parent); in emac_rx_descs_alloc()
728 struct emac_rx_queue *rx_q = &adpt->rx_q; in emac_rx_descs_alloc()
736 rx_q->rrd.size = rx_q->rrd.count * (adpt->rrd_size * 4); in emac_rx_descs_alloc()
737 rx_q->rfd.size = rx_q->rfd.count * (adpt->rfd_size * 4); in emac_rx_descs_alloc()
757 int emac_mac_rx_tx_rings_alloc_all(struct emac_adapter *adpt) in emac_mac_rx_tx_rings_alloc_all() argument
759 struct emac_ring_header *ring_header = &adpt->ring_header; in emac_mac_rx_tx_rings_alloc_all()
760 struct device *dev = adpt->netdev->dev.parent; in emac_mac_rx_tx_rings_alloc_all()
761 unsigned int num_tx_descs = adpt->tx_desc_cnt; in emac_mac_rx_tx_rings_alloc_all()
762 unsigned int num_rx_descs = adpt->rx_desc_cnt; in emac_mac_rx_tx_rings_alloc_all()
765 adpt->tx_q.tpd.count = adpt->tx_desc_cnt; in emac_mac_rx_tx_rings_alloc_all()
767 adpt->rx_q.rrd.count = adpt->rx_desc_cnt; in emac_mac_rx_tx_rings_alloc_all()
768 adpt->rx_q.rfd.count = adpt->rx_desc_cnt; in emac_mac_rx_tx_rings_alloc_all()
773 ring_header->size = num_tx_descs * (adpt->tpd_size * 4) + in emac_mac_rx_tx_rings_alloc_all()
774 num_rx_descs * (adpt->rfd_size * 4) + in emac_mac_rx_tx_rings_alloc_all()
775 num_rx_descs * (adpt->rrd_size * 4) + in emac_mac_rx_tx_rings_alloc_all()
788 ret = emac_tx_q_desc_alloc(adpt, &adpt->tx_q); in emac_mac_rx_tx_rings_alloc_all()
790 netdev_err(adpt->netdev, "error: Tx Queue alloc failed\n"); in emac_mac_rx_tx_rings_alloc_all()
794 ret = emac_rx_descs_alloc(adpt); in emac_mac_rx_tx_rings_alloc_all()
796 netdev_err(adpt->netdev, "error: Rx Queue alloc failed\n"); in emac_mac_rx_tx_rings_alloc_all()
803 emac_tx_q_bufs_free(adpt); in emac_mac_rx_tx_rings_alloc_all()
817 void emac_mac_rx_tx_rings_free_all(struct emac_adapter *adpt) in emac_mac_rx_tx_rings_free_all() argument
819 struct emac_ring_header *ring_header = &adpt->ring_header; in emac_mac_rx_tx_rings_free_all()
820 struct device *dev = adpt->netdev->dev.parent; in emac_mac_rx_tx_rings_free_all()
822 emac_tx_q_bufs_free(adpt); in emac_mac_rx_tx_rings_free_all()
823 emac_rx_q_bufs_free(adpt); in emac_mac_rx_tx_rings_free_all()
835 static void emac_mac_rx_tx_ring_reset_all(struct emac_adapter *adpt) in emac_mac_rx_tx_ring_reset_all() argument
839 adpt->tx_q.tpd.produce_idx = 0; in emac_mac_rx_tx_ring_reset_all()
840 adpt->tx_q.tpd.consume_idx = 0; in emac_mac_rx_tx_ring_reset_all()
841 for (i = 0; i < adpt->tx_q.tpd.count; i++) in emac_mac_rx_tx_ring_reset_all()
842 adpt->tx_q.tpd.tpbuff[i].dma_addr = 0; in emac_mac_rx_tx_ring_reset_all()
844 adpt->rx_q.rrd.produce_idx = 0; in emac_mac_rx_tx_ring_reset_all()
845 adpt->rx_q.rrd.consume_idx = 0; in emac_mac_rx_tx_ring_reset_all()
846 adpt->rx_q.rfd.produce_idx = 0; in emac_mac_rx_tx_ring_reset_all()
847 adpt->rx_q.rfd.consume_idx = 0; in emac_mac_rx_tx_ring_reset_all()
848 for (i = 0; i < adpt->rx_q.rfd.count; i++) in emac_mac_rx_tx_ring_reset_all()
849 adpt->rx_q.rfd.rfbuff[i].dma_addr = 0; in emac_mac_rx_tx_ring_reset_all()
853 static void emac_mac_rx_rfd_create(struct emac_adapter *adpt, in emac_mac_rx_rfd_create() argument
857 u32 *hw_rfd = EMAC_RFD(rx_q, adpt->rfd_size, rx_q->rfd.produce_idx); in emac_mac_rx_rfd_create()
867 static void emac_mac_rx_descs_refill(struct emac_adapter *adpt, in emac_mac_rx_descs_refill() argument
887 skb = netdev_alloc_skb_ip_align(adpt->netdev, adpt->rxbuf_size); in emac_mac_rx_descs_refill()
892 dma_map_single(adpt->netdev->dev.parent, skb->data, in emac_mac_rx_descs_refill()
893 adpt->rxbuf_size, DMA_FROM_DEVICE); in emac_mac_rx_descs_refill()
895 ret = dma_mapping_error(adpt->netdev->dev.parent, in emac_mac_rx_descs_refill()
902 curr_rxbuf->length = adpt->rxbuf_size; in emac_mac_rx_descs_refill()
904 emac_mac_rx_rfd_create(adpt, rx_q, curr_rxbuf->dma_addr); in emac_mac_rx_descs_refill()
917 emac_reg_update32(adpt->base + rx_q->produce_reg, in emac_mac_rx_descs_refill()
924 struct emac_adapter *adpt = netdev_priv(netdev); in emac_adjust_link() local
928 emac_mac_start(adpt); in emac_adjust_link()
929 emac_sgmii_link_change(adpt, true); in emac_adjust_link()
931 emac_sgmii_link_change(adpt, false); in emac_adjust_link()
932 emac_mac_stop(adpt); in emac_adjust_link()
939 int emac_mac_up(struct emac_adapter *adpt) in emac_mac_up() argument
941 struct net_device *netdev = adpt->netdev; in emac_mac_up()
944 emac_mac_rx_tx_ring_reset_all(adpt); in emac_mac_up()
945 emac_mac_config(adpt); in emac_mac_up()
946 emac_mac_rx_descs_refill(adpt, &adpt->rx_q); in emac_mac_up()
948 adpt->phydev->irq = PHY_POLL; in emac_mac_up()
949 ret = phy_connect_direct(netdev, adpt->phydev, emac_adjust_link, in emac_mac_up()
952 netdev_err(adpt->netdev, "could not connect phy\n"); in emac_mac_up()
956 phy_attached_print(adpt->phydev, NULL); in emac_mac_up()
959 writel((u32)~DIS_INT, adpt->base + EMAC_INT_STATUS); in emac_mac_up()
960 writel(adpt->irq.mask, adpt->base + EMAC_INT_MASK); in emac_mac_up()
962 phy_start(adpt->phydev); in emac_mac_up()
964 napi_enable(&adpt->rx_q.napi); in emac_mac_up()
971 void emac_mac_down(struct emac_adapter *adpt) in emac_mac_down() argument
973 struct net_device *netdev = adpt->netdev; in emac_mac_down()
976 napi_disable(&adpt->rx_q.napi); in emac_mac_down()
978 phy_stop(adpt->phydev); in emac_mac_down()
984 writel(DIS_INT, adpt->base + EMAC_INT_STATUS); in emac_mac_down()
985 writel(0, adpt->base + EMAC_INT_MASK); in emac_mac_down()
986 synchronize_irq(adpt->irq.irq); in emac_mac_down()
988 phy_disconnect(adpt->phydev); in emac_mac_down()
990 emac_mac_reset(adpt); in emac_mac_down()
992 emac_tx_q_descs_free(adpt); in emac_mac_down()
993 netdev_reset_queue(adpt->netdev); in emac_mac_down()
994 emac_rx_q_free_descs(adpt); in emac_mac_down()
998 static bool emac_rx_process_rrd(struct emac_adapter *adpt, in emac_rx_process_rrd() argument
1002 u32 *hw_rrd = EMAC_RRD(rx_q, adpt->rrd_size, rx_q->rrd.consume_idx); in emac_rx_process_rrd()
1017 netdev_err(adpt->netdev, in emac_rx_process_rrd()
1033 static void emac_tx_tpd_create(struct emac_adapter *adpt, in emac_tx_tpd_create() argument
1039 hw_tpd = EMAC_TPD(tx_q, adpt->tpd_size, tx_q->tpd.produce_idx); in emac_tx_tpd_create()
1051 static void emac_tx_tpd_mark_last(struct emac_adapter *adpt, in emac_tx_tpd_mark_last() argument
1055 EMAC_TPD(tx_q, adpt->tpd_size, tx_q->tpd.last_produce_idx); in emac_tx_tpd_mark_last()
1095 void emac_mac_rx_process(struct emac_adapter *adpt, struct emac_rx_queue *rx_q, in emac_mac_rx_process() argument
1099 struct net_device *netdev = adpt->netdev; in emac_mac_rx_process()
1106 reg = readl_relaxed(adpt->base + rx_q->consume_reg); in emac_mac_rx_process()
1117 if (!emac_rx_process_rrd(adpt, rx_q, &rrd)) in emac_mac_rx_process()
1123 dma_unmap_single(adpt->netdev->dev.parent, in emac_mac_rx_process()
1129 netdev_err(adpt->netdev, in emac_mac_rx_process()
1142 netif_dbg(adpt, rx_status, adpt->netdev, in emac_mac_rx_process()
1169 emac_reg_update32(adpt->base + rx_q->process_reg, in emac_mac_rx_process()
1171 emac_mac_rx_descs_refill(adpt, rx_q); in emac_mac_rx_process()
1187 void emac_mac_tx_process(struct emac_adapter *adpt, struct emac_tx_queue *tx_q) in emac_mac_tx_process() argument
1189 u32 reg = readl_relaxed(adpt->base + tx_q->consume_reg); in emac_mac_tx_process()
1198 dma_unmap_page(adpt->netdev->dev.parent, in emac_mac_tx_process()
1215 netdev_completed_queue(adpt->netdev, pkts_compl, bytes_compl); in emac_mac_tx_process()
1217 if (netif_queue_stopped(adpt->netdev)) in emac_mac_tx_process()
1219 netif_wake_queue(adpt->netdev); in emac_mac_tx_process()
1224 struct emac_adapter *adpt) in emac_mac_rx_tx_ring_init_all() argument
1226 adpt->rx_q.netdev = adpt->netdev; in emac_mac_rx_tx_ring_init_all()
1228 adpt->rx_q.produce_reg = EMAC_MAILBOX_0; in emac_mac_rx_tx_ring_init_all()
1229 adpt->rx_q.produce_mask = RFD0_PROD_IDX_BMSK; in emac_mac_rx_tx_ring_init_all()
1230 adpt->rx_q.produce_shift = RFD0_PROD_IDX_SHFT; in emac_mac_rx_tx_ring_init_all()
1232 adpt->rx_q.process_reg = EMAC_MAILBOX_0; in emac_mac_rx_tx_ring_init_all()
1233 adpt->rx_q.process_mask = RFD0_PROC_IDX_BMSK; in emac_mac_rx_tx_ring_init_all()
1234 adpt->rx_q.process_shft = RFD0_PROC_IDX_SHFT; in emac_mac_rx_tx_ring_init_all()
1236 adpt->rx_q.consume_reg = EMAC_MAILBOX_3; in emac_mac_rx_tx_ring_init_all()
1237 adpt->rx_q.consume_mask = RFD0_CONS_IDX_BMSK; in emac_mac_rx_tx_ring_init_all()
1238 adpt->rx_q.consume_shift = RFD0_CONS_IDX_SHFT; in emac_mac_rx_tx_ring_init_all()
1240 adpt->rx_q.irq = &adpt->irq; in emac_mac_rx_tx_ring_init_all()
1241 adpt->rx_q.intr = adpt->irq.mask & ISR_RX_PKT; in emac_mac_rx_tx_ring_init_all()
1243 adpt->tx_q.produce_reg = EMAC_MAILBOX_15; in emac_mac_rx_tx_ring_init_all()
1244 adpt->tx_q.produce_mask = NTPD_PROD_IDX_BMSK; in emac_mac_rx_tx_ring_init_all()
1245 adpt->tx_q.produce_shift = NTPD_PROD_IDX_SHFT; in emac_mac_rx_tx_ring_init_all()
1247 adpt->tx_q.consume_reg = EMAC_MAILBOX_2; in emac_mac_rx_tx_ring_init_all()
1248 adpt->tx_q.consume_mask = NTPD_CONS_IDX_BMSK; in emac_mac_rx_tx_ring_init_all()
1249 adpt->tx_q.consume_shift = NTPD_CONS_IDX_SHFT; in emac_mac_rx_tx_ring_init_all()
1253 static int emac_tso_csum(struct emac_adapter *adpt, in emac_tso_csum() argument
1278 netif_warn(adpt, tx_err, adpt->netdev, in emac_tso_csum()
1307 emac_tx_tpd_create(adpt, tx_q, &extra_tpd); in emac_tso_csum()
1323 netdev_err(adpt->netdev, in emac_tso_csum()
1338 static void emac_tx_fill_tpd(struct emac_adapter *adpt, in emac_tx_fill_tpd() argument
1357 tpbuf->dma_addr = dma_map_page(adpt->netdev->dev.parent, in emac_tx_fill_tpd()
1362 ret = dma_mapping_error(adpt->netdev->dev.parent, in emac_tx_fill_tpd()
1370 emac_tx_tpd_create(adpt, tx_q, tpd); in emac_tx_fill_tpd()
1377 tpbuf->dma_addr = dma_map_page(adpt->netdev->dev.parent, in emac_tx_fill_tpd()
1383 ret = dma_mapping_error(adpt->netdev->dev.parent, in emac_tx_fill_tpd()
1391 emac_tx_tpd_create(adpt, tx_q, tpd); in emac_tx_fill_tpd()
1402 tpbuf->dma_addr = dma_map_page(adpt->netdev->dev.parent, in emac_tx_fill_tpd()
1405 ret = dma_mapping_error(adpt->netdev->dev.parent, in emac_tx_fill_tpd()
1413 emac_tx_tpd_create(adpt, tx_q, tpd); in emac_tx_fill_tpd()
1419 emac_tx_tpd_mark_last(adpt, tx_q); in emac_tx_fill_tpd()
1434 dma_unmap_page(adpt->netdev->dev.parent, tpbuf->dma_addr, in emac_tx_fill_tpd()
1447 int emac_mac_tx_buf_send(struct emac_adapter *adpt, struct emac_tx_queue *tx_q, in emac_mac_tx_buf_send() argument
1455 if (emac_tso_csum(adpt, tx_q, skb, &tpd) != 0) { in emac_mac_tx_buf_send()
1471 emac_tx_fill_tpd(adpt, tx_q, skb, &tpd); in emac_mac_tx_buf_send()
1473 netdev_sent_queue(adpt->netdev, skb->len); in emac_mac_tx_buf_send()
1481 netif_stop_queue(adpt->netdev); in emac_mac_tx_buf_send()
1486 emac_reg_update32(adpt->base + tx_q->produce_reg, in emac_mac_tx_buf_send()