Lines Matching refs:tx_ring

412  * @tx_ring: ring being initialized
417 struct igbvf_ring *tx_ring)
422 size = sizeof(struct igbvf_buffer) * tx_ring->count;
423 tx_ring->buffer_info = vzalloc(size);
424 if (!tx_ring->buffer_info)
428 tx_ring->size = tx_ring->count * sizeof(union e1000_adv_tx_desc);
429 tx_ring->size = ALIGN(tx_ring->size, 4096);
431 tx_ring->desc = dma_alloc_coherent(&pdev->dev, tx_ring->size,
432 &tx_ring->dma, GFP_KERNEL);
433 if (!tx_ring->desc)
436 tx_ring->adapter = adapter;
437 tx_ring->next_to_use = 0;
438 tx_ring->next_to_clean = 0;
442 vfree(tx_ring->buffer_info);
494 * @tx_ring: ring to be cleaned
496 static void igbvf_clean_tx_ring(struct igbvf_ring *tx_ring)
498 struct igbvf_adapter *adapter = tx_ring->adapter;
503 if (!tx_ring->buffer_info)
507 for (i = 0; i < tx_ring->count; i++) {
508 buffer_info = &tx_ring->buffer_info[i];
512 size = sizeof(struct igbvf_buffer) * tx_ring->count;
513 memset(tx_ring->buffer_info, 0, size);
516 memset(tx_ring->desc, 0, tx_ring->size);
518 tx_ring->next_to_use = 0;
519 tx_ring->next_to_clean = 0;
521 writel(0, adapter->hw.hw_addr + tx_ring->head);
522 writel(0, adapter->hw.hw_addr + tx_ring->tail);
527 * @tx_ring: ring to free resources from
531 void igbvf_free_tx_resources(struct igbvf_ring *tx_ring)
533 struct pci_dev *pdev = tx_ring->adapter->pdev;
535 igbvf_clean_tx_ring(tx_ring);
537 vfree(tx_ring->buffer_info);
538 tx_ring->buffer_info = NULL;
540 dma_free_coherent(&pdev->dev, tx_ring->size, tx_ring->desc,
541 tx_ring->dma);
543 tx_ring->desc = NULL;
717 adapter->tx_ring->itr_range =
719 adapter->tx_ring->itr_val,
725 adapter->tx_ring->itr_range == lowest_latency)
726 adapter->tx_ring->itr_range = low_latency;
728 new_itr = igbvf_range_to_itr(adapter->tx_ring->itr_range);
730 if (new_itr != adapter->tx_ring->itr_val) {
731 u32 current_itr = adapter->tx_ring->itr_val;
739 adapter->tx_ring->itr_val = new_itr;
741 adapter->tx_ring->set_itr = 1;
768 * @tx_ring: ring structure to clean descriptors from
772 static bool igbvf_clean_tx_irq(struct igbvf_ring *tx_ring)
774 struct igbvf_adapter *adapter = tx_ring->adapter;
783 i = tx_ring->next_to_clean;
784 buffer_info = &tx_ring->buffer_info[i];
803 tx_desc = IGBVF_TX_DESC_ADV(*tx_ring, i);
823 if (i == tx_ring->count)
826 buffer_info = &tx_ring->buffer_info[i];
830 } while (count < tx_ring->count);
832 tx_ring->next_to_clean = i;
835 igbvf_desc_unused(tx_ring) >= IGBVF_TX_QUEUE_WAKE)) {
849 return count < tx_ring->count;
874 struct igbvf_ring *tx_ring = adapter->tx_ring;
876 if (tx_ring->set_itr) {
877 writel(tx_ring->itr_val,
878 adapter->hw.hw_addr + tx_ring->itr_register);
879 adapter->tx_ring->set_itr = 0;
888 if (!igbvf_clean_tx_irq(tx_ring))
890 ew32(EICS, tx_ring->eims_value);
892 ew32(EIMS, tx_ring->eims_value);
962 adapter->tx_ring[tx_queue].eims_value = BIT(msix_vector);
978 struct igbvf_ring *tx_ring = adapter->tx_ring;
985 adapter->eims_enable_mask |= tx_ring->eims_value;
986 writel(tx_ring->itr_val, hw->hw_addr + tx_ring->itr_register);
1055 sprintf(adapter->tx_ring->name, "%s-tx-0", netdev->name);
1058 memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ);
1063 igbvf_intr_msix_tx, 0, adapter->tx_ring->name,
1068 adapter->tx_ring->itr_register = E1000_EITR(vector);
1069 adapter->tx_ring->itr_val = adapter->current_itr;
1105 adapter->tx_ring = kzalloc(sizeof(struct igbvf_ring), GFP_KERNEL);
1106 if (!adapter->tx_ring)
1111 kfree(adapter->tx_ring);
1291 struct igbvf_ring *tx_ring = adapter->tx_ring;
1302 ew32(TDLEN(0), tx_ring->count * sizeof(union e1000_adv_tx_desc));
1303 tdba = tx_ring->dma;
1308 tx_ring->head = E1000_TDH(0);
1309 tx_ring->tail = E1000_TDT(0);
1604 igbvf_clean_tx_ring(adapter->tx_ring);
1719 err = igbvf_setup_tx_resources(adapter, adapter->tx_ring);
1758 igbvf_free_tx_resources(adapter->tx_ring);
1785 igbvf_free_tx_resources(adapter->tx_ring);
1919 struct igbvf_ring *tx_ring = adapter->tx_ring;
1949 tx_pending = (igbvf_desc_unused(tx_ring) + 1 <
1950 tx_ring->count);
1978 static void igbvf_tx_ctxtdesc(struct igbvf_ring *tx_ring, u32 vlan_macip_lens,
1983 u16 i = tx_ring->next_to_use;
1985 context_desc = IGBVF_TX_CTXTDESC_ADV(*tx_ring, i);
1986 buffer_info = &tx_ring->buffer_info[i];
1989 tx_ring->next_to_use = (i < tx_ring->count) ? i : 0;
2003 static int igbvf_tso(struct igbvf_ring *tx_ring,
2072 igbvf_tx_ctxtdesc(tx_ring, vlan_macip_lens, type_tucmd, mss_l4len_idx);
2077 static bool igbvf_tx_csum(struct igbvf_ring *tx_ring, struct sk_buff *skb,
2114 igbvf_tx_ctxtdesc(tx_ring, vlan_macip_lens, type_tucmd, 0);
2123 if (igbvf_desc_unused(adapter->tx_ring) >= size)
2135 if (igbvf_desc_unused(adapter->tx_ring) < size)
2148 struct igbvf_ring *tx_ring,
2157 i = tx_ring->next_to_use;
2159 buffer_info = &tx_ring->buffer_info[i];
2175 if (i == tx_ring->count)
2181 buffer_info = &tx_ring->buffer_info[i];
2192 tx_ring->buffer_info[i].skb = skb;
2210 i += tx_ring->count;
2212 buffer_info = &tx_ring->buffer_info[i];
2220 struct igbvf_ring *tx_ring,
2252 i = tx_ring->next_to_use;
2254 buffer_info = &tx_ring->buffer_info[i];
2255 tx_desc = IGBVF_TX_DESC_ADV(*tx_ring, i);
2261 if (i == tx_ring->count)
2273 tx_ring->buffer_info[first].next_to_watch = tx_desc;
2274 tx_ring->next_to_use = i;
2275 writel(i, adapter->hw.hw_addr + tx_ring->tail);
2280 struct igbvf_ring *tx_ring)
2319 first = tx_ring->next_to_use;
2321 tso = igbvf_tso(tx_ring, skb, tx_flags, &hdr_len);
2329 else if (igbvf_tx_csum(tx_ring, skb, tx_flags, protocol) &&
2336 count = igbvf_tx_map_adv(adapter, tx_ring, skb);
2339 igbvf_tx_queue_adv(adapter, tx_ring, tx_flags, count,
2345 tx_ring->buffer_info[first].time_stamp = 0;
2346 tx_ring->next_to_use = first;
2356 struct igbvf_ring *tx_ring;
2363 tx_ring = &adapter->tx_ring[0];
2365 return igbvf_xmit_frame_ring_adv(skb, netdev, tx_ring);
2514 igbvf_clean_tx_irq(adapter->tx_ring);
2857 adapter->tx_ring->count = 1024;
2883 kfree(adapter->tx_ring);
2931 kfree(adapter->tx_ring);