• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/

Lines Matching defs:rxq

418 	struct rx_queue rxq[8];
453 /* rxq/txq helper functions *************************************************/
454 static struct mv643xx_eth_private *rxq_to_mp(struct rx_queue *rxq)
456 return container_of(rxq, struct mv643xx_eth_private, rxq[rxq->index]);
464 static void rxq_enable(struct rx_queue *rxq)
466 struct mv643xx_eth_private *mp = rxq_to_mp(rxq);
467 wrlp(mp, RXQ_COMMAND, 1 << rxq->index);
470 static void rxq_disable(struct rx_queue *rxq)
472 struct mv643xx_eth_private *mp = rxq_to_mp(rxq);
473 u8 mask = 1 << rxq->index;
547 static int rxq_process(struct rx_queue *rxq, int budget)
549 struct mv643xx_eth_private *mp = rxq_to_mp(rxq);
556 while (rx < budget && rxq->rx_desc_count) {
562 rx_desc = &rxq->rx_desc_area[rxq->rx_curr_desc];
569 skb = rxq->rx_skb[rxq->rx_curr_desc];
570 rxq->rx_skb[rxq->rx_curr_desc] = NULL;
572 rxq->rx_curr_desc++;
573 if (rxq->rx_curr_desc == rxq->rx_ring_size)
574 rxq->rx_curr_desc = 0;
578 rxq->rx_desc_count--;
581 mp->work_rx_refill |= 1 << rxq->index;
617 lro_receive_skb(&rxq->lro_mgr, skb, (void *)cmd_sts);
642 lro_flush_all(&rxq->lro_mgr);
645 mp->work_rx &= ~(1 << rxq->index);
650 static int rxq_refill(struct rx_queue *rxq, int budget)
652 struct mv643xx_eth_private *mp = rxq_to_mp(rxq);
656 while (refilled < budget && rxq->rx_desc_count < rxq->rx_ring_size) {
675 rxq->rx_desc_count++;
677 rx = rxq->rx_used_desc++;
678 if (rxq->rx_used_desc == rxq->rx_ring_size)
679 rxq->rx_used_desc = 0;
681 rx_desc = rxq->rx_desc_area + rx;
688 rxq->rx_skb[rx] = skb;
702 mp->work_rx_refill &= ~(1 << rxq->index);
1200 struct rx_queue *rxq = mp->rxq + i;
1202 lro_aggregated += rxq->lro_mgr.stats.aggregated;
1203 lro_flushed += rxq->lro_mgr.stats.flushed;
1204 lro_no_desc += rxq->lro_mgr.stats.no_desc;
1856 struct rx_queue *rxq = mp->rxq + index;
1861 rxq->index = index;
1863 rxq->rx_ring_size = mp->rx_ring_size;
1865 rxq->rx_desc_count = 0;
1866 rxq->rx_curr_desc = 0;
1867 rxq->rx_used_desc = 0;
1869 size = rxq->rx_ring_size * sizeof(struct rx_desc);
1872 rxq->rx_desc_area = ioremap(mp->rx_desc_sram_addr,
1874 rxq->rx_desc_dma = mp->rx_desc_sram_addr;
1876 rxq->rx_desc_area = dma_alloc_coherent(mp->dev->dev.parent,
1877 size, &rxq->rx_desc_dma,
1881 if (rxq->rx_desc_area == NULL) {
1886 memset(rxq->rx_desc_area, 0, size);
1888 rxq->rx_desc_area_size = size;
1889 rxq->rx_skb = kmalloc(rxq->rx_ring_size * sizeof(*rxq->rx_skb),
1891 if (rxq->rx_skb == NULL) {
1897 rx_desc = (struct rx_desc *)rxq->rx_desc_area;
1898 for (i = 0; i < rxq->rx_ring_size; i++) {
1902 if (nexti == rxq->rx_ring_size)
1905 rx_desc[i].next_desc_ptr = rxq->rx_desc_dma +
1909 rxq->lro_mgr.dev = mp->dev;
1910 memset(&rxq->lro_mgr.stats, 0, sizeof(rxq->lro_mgr.stats));
1911 rxq->lro_mgr.features = LRO_F_NAPI;
1912 rxq->lro_mgr.ip_summed = CHECKSUM_UNNECESSARY;
1913 rxq->lro_mgr.ip_summed_aggr = CHECKSUM_UNNECESSARY;
1914 rxq->lro_mgr.max_desc = ARRAY_SIZE(rxq->lro_arr);
1915 rxq->lro_mgr.max_aggr = 32;
1916 rxq->lro_mgr.frag_align_pad = 0;
1917 rxq->lro_mgr.lro_arr = rxq->lro_arr;
1918 rxq->lro_mgr.get_skb_header = mv643xx_get_skb_header;
1920 memset(&rxq->lro_arr, 0, sizeof(rxq->lro_arr));
1927 iounmap(rxq->rx_desc_area);
1930 rxq->rx_desc_area,
1931 rxq->rx_desc_dma);
1937 static void rxq_deinit(struct rx_queue *rxq)
1939 struct mv643xx_eth_private *mp = rxq_to_mp(rxq);
1942 rxq_disable(rxq);
1944 for (i = 0; i < rxq->rx_ring_size; i++) {
1945 if (rxq->rx_skb[i]) {
1946 dev_kfree_skb(rxq->rx_skb[i]);
1947 rxq->rx_desc_count--;
1951 if (rxq->rx_desc_count) {
1954 rxq->rx_desc_count);
1957 if (rxq->index == 0 &&
1958 rxq->rx_desc_area_size <= mp->rx_desc_sram_size)
1959 iounmap(rxq->rx_desc_area);
1961 dma_free_coherent(mp->dev->dev.parent, rxq->rx_desc_area_size,
1962 rxq->rx_desc_area, rxq->rx_desc_dma);
1964 kfree(rxq->rx_skb);
2189 work_done += rxq_process(mp->rxq + queue, work_tbd);
2191 work_done += rxq_refill(mp->rxq + queue, work_tbd);
2293 struct rx_queue *rxq = mp->rxq + i;
2296 addr = (u32)rxq->rx_desc_dma;
2297 addr += rxq->rx_curr_desc * sizeof(struct rx_desc);
2300 rxq_enable(rxq);
2361 rxq_deinit(mp->rxq + i);
2365 rxq_refill(mp->rxq + i, INT_MAX);
2394 rxq_deinit(mp->rxq + i);
2407 rxq_disable(mp->rxq + i);
2452 rxq_deinit(mp->rxq + i);