Linux Audio

Check our new training course

Loading...
v6.13.7
   1// SPDX-License-Identifier: GPL-2.0
   2/* Copyright(c) 1999 - 2018 Intel Corporation. */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
   3
   4/******************************************************************************
   5 Copyright (c)2006 - 2007 Myricom, Inc. for some LRO specific code
   6******************************************************************************/
   7
   8#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
   9
  10#include <linux/types.h>
  11#include <linux/bitops.h>
  12#include <linux/module.h>
  13#include <linux/pci.h>
  14#include <linux/netdevice.h>
  15#include <linux/vmalloc.h>
  16#include <linux/string.h>
  17#include <linux/in.h>
  18#include <linux/ip.h>
  19#include <linux/tcp.h>
  20#include <linux/sctp.h>
  21#include <linux/ipv6.h>
  22#include <linux/slab.h>
  23#include <net/checksum.h>
  24#include <net/ip6_checksum.h>
  25#include <linux/ethtool.h>
  26#include <linux/if.h>
  27#include <linux/if_vlan.h>
  28#include <linux/prefetch.h>
  29#include <net/mpls.h>
  30#include <linux/bpf.h>
  31#include <linux/bpf_trace.h>
  32#include <linux/atomic.h>
  33#include <net/xfrm.h>
  34
  35#include "ixgbevf.h"
  36
  37const char ixgbevf_driver_name[] = "ixgbevf";
  38static const char ixgbevf_driver_string[] =
  39	"Intel(R) 10 Gigabit PCI Express Virtual Function Network Driver";
  40
 
 
  41static char ixgbevf_copyright[] =
  42	"Copyright (c) 2009 - 2018 Intel Corporation.";
  43
  44static const struct ixgbevf_info *ixgbevf_info_tbl[] = {
  45	[board_82599_vf]	= &ixgbevf_82599_vf_info,
  46	[board_82599_vf_hv]	= &ixgbevf_82599_vf_hv_info,
  47	[board_X540_vf]		= &ixgbevf_X540_vf_info,
  48	[board_X540_vf_hv]	= &ixgbevf_X540_vf_hv_info,
  49	[board_X550_vf]		= &ixgbevf_X550_vf_info,
  50	[board_X550_vf_hv]	= &ixgbevf_X550_vf_hv_info,
  51	[board_X550EM_x_vf]	= &ixgbevf_X550EM_x_vf_info,
  52	[board_X550EM_x_vf_hv]	= &ixgbevf_X550EM_x_vf_hv_info,
  53	[board_x550em_a_vf]	= &ixgbevf_x550em_a_vf_info,
  54};
  55
  56/* ixgbevf_pci_tbl - PCI Device ID Table
  57 *
  58 * Wildcard entries (PCI_ANY_ID) should come last
  59 * Last entry must be all 0s
  60 *
  61 * { Vendor ID, Device ID, SubVendor ID, SubDevice ID,
  62 *   Class, Class Mask, private data (not used) }
  63 */
  64static const struct pci_device_id ixgbevf_pci_tbl[] = {
  65	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_VF), board_82599_vf },
  66	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_VF_HV), board_82599_vf_hv },
  67	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540_VF), board_X540_vf },
  68	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540_VF_HV), board_X540_vf_hv },
  69	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550_VF), board_X550_vf },
  70	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550_VF_HV), board_X550_vf_hv },
  71	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_X_VF), board_X550EM_x_vf },
  72	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_X_VF_HV), board_X550EM_x_vf_hv},
  73	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_A_VF), board_x550em_a_vf },
  74	/* required last entry */
  75	{0, }
  76};
  77MODULE_DEVICE_TABLE(pci, ixgbevf_pci_tbl);
  78
  79MODULE_DESCRIPTION("Intel(R) 10 Gigabit Virtual Function Network Driver");
  80MODULE_LICENSE("GPL v2");
 
 
  81
  82#define DEFAULT_MSG_ENABLE (NETIF_MSG_DRV|NETIF_MSG_PROBE|NETIF_MSG_LINK)
  83static int debug = -1;
  84module_param(debug, int, 0);
  85MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
  86
  87static struct workqueue_struct *ixgbevf_wq;
  88
  89static void ixgbevf_service_event_schedule(struct ixgbevf_adapter *adapter)
  90{
  91	if (!test_bit(__IXGBEVF_DOWN, &adapter->state) &&
  92	    !test_bit(__IXGBEVF_REMOVING, &adapter->state) &&
  93	    !test_and_set_bit(__IXGBEVF_SERVICE_SCHED, &adapter->state))
  94		queue_work(ixgbevf_wq, &adapter->service_task);
  95}
  96
  97static void ixgbevf_service_event_complete(struct ixgbevf_adapter *adapter)
  98{
  99	BUG_ON(!test_bit(__IXGBEVF_SERVICE_SCHED, &adapter->state));
 100
 101	/* flush memory to make sure state is correct before next watchdog */
 102	smp_mb__before_atomic();
 103	clear_bit(__IXGBEVF_SERVICE_SCHED, &adapter->state);
 104}
 105
 106/* forward decls */
 107static void ixgbevf_queue_reset_subtask(struct ixgbevf_adapter *adapter);
 108static void ixgbevf_set_itr(struct ixgbevf_q_vector *q_vector);
 109static void ixgbevf_free_all_rx_resources(struct ixgbevf_adapter *adapter);
 110static bool ixgbevf_can_reuse_rx_page(struct ixgbevf_rx_buffer *rx_buffer);
 111static void ixgbevf_reuse_rx_page(struct ixgbevf_ring *rx_ring,
 112				  struct ixgbevf_rx_buffer *old_buff);
 113
 114static void ixgbevf_remove_adapter(struct ixgbe_hw *hw)
 115{
 116	struct ixgbevf_adapter *adapter = hw->back;
 117
 118	if (!hw->hw_addr)
 119		return;
 120	hw->hw_addr = NULL;
 121	dev_err(&adapter->pdev->dev, "Adapter removed\n");
 122	if (test_bit(__IXGBEVF_SERVICE_INITED, &adapter->state))
 123		ixgbevf_service_event_schedule(adapter);
 124}
 125
 126static void ixgbevf_check_remove(struct ixgbe_hw *hw, u32 reg)
 127{
 128	u32 value;
 129
 130	/* The following check not only optimizes a bit by not
 131	 * performing a read on the status register when the
 132	 * register just read was a status register read that
 133	 * returned IXGBE_FAILED_READ_REG. It also blocks any
 134	 * potential recursion.
 135	 */
 136	if (reg == IXGBE_VFSTATUS) {
 137		ixgbevf_remove_adapter(hw);
 138		return;
 139	}
 140	value = ixgbevf_read_reg(hw, IXGBE_VFSTATUS);
 141	if (value == IXGBE_FAILED_READ_REG)
 142		ixgbevf_remove_adapter(hw);
 143}
 144
 145u32 ixgbevf_read_reg(struct ixgbe_hw *hw, u32 reg)
 146{
 147	u8 __iomem *reg_addr = READ_ONCE(hw->hw_addr);
 148	u32 value;
 149
 150	if (IXGBE_REMOVED(reg_addr))
 151		return IXGBE_FAILED_READ_REG;
 152	value = readl(reg_addr + reg);
 153	if (unlikely(value == IXGBE_FAILED_READ_REG))
 154		ixgbevf_check_remove(hw, reg);
 155	return value;
 156}
 157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 158/**
 159 * ixgbevf_set_ivar - set IVAR registers - maps interrupt causes to vectors
 160 * @adapter: pointer to adapter struct
 161 * @direction: 0 for Rx, 1 for Tx, -1 for other causes
 162 * @queue: queue to map the corresponding interrupt to
 163 * @msix_vector: the vector to map to the corresponding queue
 164 **/
 165static void ixgbevf_set_ivar(struct ixgbevf_adapter *adapter, s8 direction,
 166			     u8 queue, u8 msix_vector)
 167{
 168	u32 ivar, index;
 169	struct ixgbe_hw *hw = &adapter->hw;
 170
 171	if (direction == -1) {
 172		/* other causes */
 173		msix_vector |= IXGBE_IVAR_ALLOC_VAL;
 174		ivar = IXGBE_READ_REG(hw, IXGBE_VTIVAR_MISC);
 175		ivar &= ~0xFF;
 176		ivar |= msix_vector;
 177		IXGBE_WRITE_REG(hw, IXGBE_VTIVAR_MISC, ivar);
 178	} else {
 179		/* Tx or Rx causes */
 180		msix_vector |= IXGBE_IVAR_ALLOC_VAL;
 181		index = ((16 * (queue & 1)) + (8 * direction));
 182		ivar = IXGBE_READ_REG(hw, IXGBE_VTIVAR(queue >> 1));
 183		ivar &= ~(0xFF << index);
 184		ivar |= (msix_vector << index);
 185		IXGBE_WRITE_REG(hw, IXGBE_VTIVAR(queue >> 1), ivar);
 186	}
 187}
 188
 189static u64 ixgbevf_get_tx_completed(struct ixgbevf_ring *ring)
 190{
 191	return ring->stats.packets;
 192}
 193
 194static u32 ixgbevf_get_tx_pending(struct ixgbevf_ring *ring)
 195{
 196	struct ixgbevf_adapter *adapter = netdev_priv(ring->netdev);
 197	struct ixgbe_hw *hw = &adapter->hw;
 198
 199	u32 head = IXGBE_READ_REG(hw, IXGBE_VFTDH(ring->reg_idx));
 200	u32 tail = IXGBE_READ_REG(hw, IXGBE_VFTDT(ring->reg_idx));
 201
 202	if (head != tail)
 203		return (head < tail) ?
 204			tail - head : (tail + ring->count - head);
 205
 206	return 0;
 207}
 208
 209static inline bool ixgbevf_check_tx_hang(struct ixgbevf_ring *tx_ring)
 210{
 211	u32 tx_done = ixgbevf_get_tx_completed(tx_ring);
 212	u32 tx_done_old = tx_ring->tx_stats.tx_done_old;
 213	u32 tx_pending = ixgbevf_get_tx_pending(tx_ring);
 214
 215	clear_check_for_tx_hang(tx_ring);
 216
 217	/* Check for a hung queue, but be thorough. This verifies
 218	 * that a transmit has been completed since the previous
 219	 * check AND there is at least one packet pending. The
 220	 * ARMED bit is set to indicate a potential hang.
 221	 */
 222	if ((tx_done_old == tx_done) && tx_pending) {
 223		/* make sure it is true for two checks in a row */
 224		return test_and_set_bit(__IXGBEVF_HANG_CHECK_ARMED,
 225					&tx_ring->state);
 226	}
 227	/* reset the countdown */
 228	clear_bit(__IXGBEVF_HANG_CHECK_ARMED, &tx_ring->state);
 229
 230	/* update completed stats and continue */
 231	tx_ring->tx_stats.tx_done_old = tx_done;
 232
 233	return false;
 234}
 235
 236static void ixgbevf_tx_timeout_reset(struct ixgbevf_adapter *adapter)
 237{
 238	/* Do the reset outside of interrupt context */
 239	if (!test_bit(__IXGBEVF_DOWN, &adapter->state)) {
 240		set_bit(__IXGBEVF_RESET_REQUESTED, &adapter->state);
 241		ixgbevf_service_event_schedule(adapter);
 242	}
 243}
 244
 245/**
 246 * ixgbevf_tx_timeout - Respond to a Tx Hang
 247 * @netdev: network interface device structure
 248 * @txqueue: transmit queue hanging (unused)
 249 **/
 250static void ixgbevf_tx_timeout(struct net_device *netdev, unsigned int __always_unused txqueue)
 251{
 252	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
 253
 254	ixgbevf_tx_timeout_reset(adapter);
 255}
 256
 257/**
 258 * ixgbevf_clean_tx_irq - Reclaim resources after transmit completes
 259 * @q_vector: board private structure
 260 * @tx_ring: tx ring to clean
 261 * @napi_budget: Used to determine if we are in netpoll
 262 **/
 263static bool ixgbevf_clean_tx_irq(struct ixgbevf_q_vector *q_vector,
 264				 struct ixgbevf_ring *tx_ring, int napi_budget)
 265{
 266	struct ixgbevf_adapter *adapter = q_vector->adapter;
 267	struct ixgbevf_tx_buffer *tx_buffer;
 268	union ixgbe_adv_tx_desc *tx_desc;
 269	unsigned int total_bytes = 0, total_packets = 0, total_ipsec = 0;
 270	unsigned int budget = tx_ring->count / 2;
 271	unsigned int i = tx_ring->next_to_clean;
 272
 273	if (test_bit(__IXGBEVF_DOWN, &adapter->state))
 274		return true;
 275
 276	tx_buffer = &tx_ring->tx_buffer_info[i];
 277	tx_desc = IXGBEVF_TX_DESC(tx_ring, i);
 278	i -= tx_ring->count;
 279
 280	do {
 281		union ixgbe_adv_tx_desc *eop_desc = tx_buffer->next_to_watch;
 282
 283		/* if next_to_watch is not set then there is no work pending */
 284		if (!eop_desc)
 285			break;
 286
 287		/* prevent any other reads prior to eop_desc */
 288		smp_rmb();
 289
 290		/* if DD is not set pending work has not been completed */
 291		if (!(eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD)))
 292			break;
 293
 294		/* clear next_to_watch to prevent false hangs */
 295		tx_buffer->next_to_watch = NULL;
 296
 297		/* update the statistics for this packet */
 298		total_bytes += tx_buffer->bytecount;
 299		total_packets += tx_buffer->gso_segs;
 300		if (tx_buffer->tx_flags & IXGBE_TX_FLAGS_IPSEC)
 301			total_ipsec++;
 302
 303		/* free the skb */
 304		if (ring_is_xdp(tx_ring))
 305			page_frag_free(tx_buffer->data);
 306		else
 307			napi_consume_skb(tx_buffer->skb, napi_budget);
 308
 309		/* unmap skb header data */
 310		dma_unmap_single(tx_ring->dev,
 311				 dma_unmap_addr(tx_buffer, dma),
 312				 dma_unmap_len(tx_buffer, len),
 313				 DMA_TO_DEVICE);
 314
 315		/* clear tx_buffer data */
 
 316		dma_unmap_len_set(tx_buffer, len, 0);
 317
 318		/* unmap remaining buffers */
 319		while (tx_desc != eop_desc) {
 320			tx_buffer++;
 321			tx_desc++;
 322			i++;
 323			if (unlikely(!i)) {
 324				i -= tx_ring->count;
 325				tx_buffer = tx_ring->tx_buffer_info;
 326				tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
 327			}
 328
 329			/* unmap any remaining paged data */
 330			if (dma_unmap_len(tx_buffer, len)) {
 331				dma_unmap_page(tx_ring->dev,
 332					       dma_unmap_addr(tx_buffer, dma),
 333					       dma_unmap_len(tx_buffer, len),
 334					       DMA_TO_DEVICE);
 335				dma_unmap_len_set(tx_buffer, len, 0);
 336			}
 337		}
 338
 339		/* move us one more past the eop_desc for start of next pkt */
 340		tx_buffer++;
 341		tx_desc++;
 342		i++;
 343		if (unlikely(!i)) {
 344			i -= tx_ring->count;
 345			tx_buffer = tx_ring->tx_buffer_info;
 346			tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
 347		}
 348
 349		/* issue prefetch for next Tx descriptor */
 350		prefetch(tx_desc);
 351
 352		/* update budget accounting */
 353		budget--;
 354	} while (likely(budget));
 355
 356	i += tx_ring->count;
 357	tx_ring->next_to_clean = i;
 358	u64_stats_update_begin(&tx_ring->syncp);
 359	tx_ring->stats.bytes += total_bytes;
 360	tx_ring->stats.packets += total_packets;
 361	u64_stats_update_end(&tx_ring->syncp);
 362	q_vector->tx.total_bytes += total_bytes;
 363	q_vector->tx.total_packets += total_packets;
 364	adapter->tx_ipsec += total_ipsec;
 365
 366	if (check_for_tx_hang(tx_ring) && ixgbevf_check_tx_hang(tx_ring)) {
 367		struct ixgbe_hw *hw = &adapter->hw;
 368		union ixgbe_adv_tx_desc *eop_desc;
 369
 370		eop_desc = tx_ring->tx_buffer_info[i].next_to_watch;
 371
 372		pr_err("Detected Tx Unit Hang%s\n"
 373		       "  Tx Queue             <%d>\n"
 374		       "  TDH, TDT             <%x>, <%x>\n"
 375		       "  next_to_use          <%x>\n"
 376		       "  next_to_clean        <%x>\n"
 377		       "tx_buffer_info[next_to_clean]\n"
 378		       "  next_to_watch        <%p>\n"
 379		       "  eop_desc->wb.status  <%x>\n"
 380		       "  time_stamp           <%lx>\n"
 381		       "  jiffies              <%lx>\n",
 382		       ring_is_xdp(tx_ring) ? " XDP" : "",
 383		       tx_ring->queue_index,
 384		       IXGBE_READ_REG(hw, IXGBE_VFTDH(tx_ring->reg_idx)),
 385		       IXGBE_READ_REG(hw, IXGBE_VFTDT(tx_ring->reg_idx)),
 386		       tx_ring->next_to_use, i,
 387		       eop_desc, (eop_desc ? eop_desc->wb.status : 0),
 388		       tx_ring->tx_buffer_info[i].time_stamp, jiffies);
 389
 390		if (!ring_is_xdp(tx_ring))
 391			netif_stop_subqueue(tx_ring->netdev,
 392					    tx_ring->queue_index);
 393
 394		/* schedule immediate reset if we believe we hung */
 395		ixgbevf_tx_timeout_reset(adapter);
 396
 397		return true;
 398	}
 399
 400	if (ring_is_xdp(tx_ring))
 401		return !!budget;
 402
 403#define TX_WAKE_THRESHOLD (DESC_NEEDED * 2)
 404	if (unlikely(total_packets && netif_carrier_ok(tx_ring->netdev) &&
 405		     (ixgbevf_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD))) {
 406		/* Make sure that anybody stopping the queue after this
 407		 * sees the new next_to_clean.
 408		 */
 409		smp_mb();
 410
 411		if (__netif_subqueue_stopped(tx_ring->netdev,
 412					     tx_ring->queue_index) &&
 413		    !test_bit(__IXGBEVF_DOWN, &adapter->state)) {
 414			netif_wake_subqueue(tx_ring->netdev,
 415					    tx_ring->queue_index);
 416			++tx_ring->tx_stats.restart_queue;
 417		}
 418	}
 419
 420	return !!budget;
 421}
 422
 423/**
 424 * ixgbevf_rx_skb - Helper function to determine proper Rx method
 425 * @q_vector: structure containing interrupt and ring information
 426 * @skb: packet to send up
 
 
 427 **/
 428static void ixgbevf_rx_skb(struct ixgbevf_q_vector *q_vector,
 429			   struct sk_buff *skb)
 
 430{
 431	napi_gro_receive(&q_vector->napi, skb);
 432}
 433
 434#define IXGBE_RSS_L4_TYPES_MASK \
 435	((1ul << IXGBE_RXDADV_RSSTYPE_IPV4_TCP) | \
 436	 (1ul << IXGBE_RXDADV_RSSTYPE_IPV4_UDP) | \
 437	 (1ul << IXGBE_RXDADV_RSSTYPE_IPV6_TCP) | \
 438	 (1ul << IXGBE_RXDADV_RSSTYPE_IPV6_UDP))
 439
 440static inline void ixgbevf_rx_hash(struct ixgbevf_ring *ring,
 441				   union ixgbe_adv_rx_desc *rx_desc,
 442				   struct sk_buff *skb)
 443{
 444	u16 rss_type;
 445
 446	if (!(ring->netdev->features & NETIF_F_RXHASH))
 447		return;
 
 
 
 448
 449	rss_type = le16_to_cpu(rx_desc->wb.lower.lo_dword.hs_rss.pkt_info) &
 450		   IXGBE_RXDADV_RSSTYPE_MASK;
 
 
 
 
 
 
 
 
 
 
 
 451
 452	if (!rss_type)
 
 
 453		return;
 
 
 454
 455	skb_set_hash(skb, le32_to_cpu(rx_desc->wb.lower.hi_dword.rss),
 456		     (IXGBE_RSS_L4_TYPES_MASK & (1ul << rss_type)) ?
 457		     PKT_HASH_TYPE_L4 : PKT_HASH_TYPE_L3);
 458}
 459
 460/**
 461 * ixgbevf_rx_checksum - indicate in skb if hw indicated a good cksum
 462 * @ring: structure containig ring specific data
 463 * @rx_desc: current Rx descriptor being processed
 464 * @skb: skb currently being received and modified
 465 **/
 466static inline void ixgbevf_rx_checksum(struct ixgbevf_ring *ring,
 467				       union ixgbe_adv_rx_desc *rx_desc,
 468				       struct sk_buff *skb)
 469{
 470	skb_checksum_none_assert(skb);
 471
 472	/* Rx csum disabled */
 473	if (!(ring->netdev->features & NETIF_F_RXCSUM))
 474		return;
 475
 476	/* if IP and error */
 477	if (ixgbevf_test_staterr(rx_desc, IXGBE_RXD_STAT_IPCS) &&
 478	    ixgbevf_test_staterr(rx_desc, IXGBE_RXDADV_ERR_IPE)) {
 479		ring->rx_stats.csum_err++;
 480		return;
 481	}
 482
 483	if (!ixgbevf_test_staterr(rx_desc, IXGBE_RXD_STAT_L4CS))
 484		return;
 485
 486	if (ixgbevf_test_staterr(rx_desc, IXGBE_RXDADV_ERR_TCPE)) {
 487		ring->rx_stats.csum_err++;
 488		return;
 489	}
 490
 491	/* It must be a TCP or UDP packet with a valid checksum */
 492	skb->ip_summed = CHECKSUM_UNNECESSARY;
 493}
 494
 495/**
 496 * ixgbevf_process_skb_fields - Populate skb header fields from Rx descriptor
 497 * @rx_ring: rx descriptor ring packet is being transacted on
 498 * @rx_desc: pointer to the EOP Rx descriptor
 499 * @skb: pointer to current skb being populated
 500 *
 501 * This function checks the ring, descriptor, and packet information in
 502 * order to populate the checksum, VLAN, protocol, and other fields within
 503 * the skb.
 504 **/
 505static void ixgbevf_process_skb_fields(struct ixgbevf_ring *rx_ring,
 506				       union ixgbe_adv_rx_desc *rx_desc,
 507				       struct sk_buff *skb)
 508{
 509	ixgbevf_rx_hash(rx_ring, rx_desc, skb);
 510	ixgbevf_rx_checksum(rx_ring, rx_desc, skb);
 511
 512	if (ixgbevf_test_staterr(rx_desc, IXGBE_RXD_STAT_VP)) {
 513		u16 vid = le16_to_cpu(rx_desc->wb.upper.vlan);
 514		unsigned long *active_vlans = netdev_priv(rx_ring->netdev);
 515
 516		if (test_bit(vid & VLAN_VID_MASK, active_vlans))
 517			__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vid);
 518	}
 519
 520	if (ixgbevf_test_staterr(rx_desc, IXGBE_RXDADV_STAT_SECP))
 521		ixgbevf_ipsec_rx(rx_ring, rx_desc, skb);
 522
 523	skb->protocol = eth_type_trans(skb, rx_ring->netdev);
 524}
 525
 526static
 527struct ixgbevf_rx_buffer *ixgbevf_get_rx_buffer(struct ixgbevf_ring *rx_ring,
 528						const unsigned int size)
 529{
 530	struct ixgbevf_rx_buffer *rx_buffer;
 531
 532	rx_buffer = &rx_ring->rx_buffer_info[rx_ring->next_to_clean];
 533	prefetchw(rx_buffer->page);
 534
 535	/* we are reusing so sync this buffer for CPU use */
 536	dma_sync_single_range_for_cpu(rx_ring->dev,
 537				      rx_buffer->dma,
 538				      rx_buffer->page_offset,
 539				      size,
 540				      DMA_FROM_DEVICE);
 541
 542	rx_buffer->pagecnt_bias--;
 543
 544	return rx_buffer;
 545}
 546
 547static void ixgbevf_put_rx_buffer(struct ixgbevf_ring *rx_ring,
 548				  struct ixgbevf_rx_buffer *rx_buffer,
 549				  struct sk_buff *skb)
 550{
 551	if (ixgbevf_can_reuse_rx_page(rx_buffer)) {
 552		/* hand second half of page back to the ring */
 553		ixgbevf_reuse_rx_page(rx_ring, rx_buffer);
 554	} else {
 555		if (IS_ERR(skb))
 556			/* We are not reusing the buffer so unmap it and free
 557			 * any references we are holding to it
 558			 */
 559			dma_unmap_page_attrs(rx_ring->dev, rx_buffer->dma,
 560					     ixgbevf_rx_pg_size(rx_ring),
 561					     DMA_FROM_DEVICE,
 562					     IXGBEVF_RX_DMA_ATTR);
 563		__page_frag_cache_drain(rx_buffer->page,
 564					rx_buffer->pagecnt_bias);
 565	}
 566
 567	/* clear contents of rx_buffer */
 568	rx_buffer->page = NULL;
 569}
 570
 571/**
 572 * ixgbevf_is_non_eop - process handling of non-EOP buffers
 573 * @rx_ring: Rx ring being processed
 574 * @rx_desc: Rx descriptor for current buffer
 575 *
 576 * This function updates next to clean.  If the buffer is an EOP buffer
 577 * this function exits returning false, otherwise it will place the
 578 * sk_buff in the next buffer to be chained and return true indicating
 579 * that this is in fact a non-EOP buffer.
 580 **/
 581static bool ixgbevf_is_non_eop(struct ixgbevf_ring *rx_ring,
 582			       union ixgbe_adv_rx_desc *rx_desc)
 583{
 584	u32 ntc = rx_ring->next_to_clean + 1;
 585
 586	/* fetch, update, and store next to clean */
 587	ntc = (ntc < rx_ring->count) ? ntc : 0;
 588	rx_ring->next_to_clean = ntc;
 589
 590	prefetch(IXGBEVF_RX_DESC(rx_ring, ntc));
 591
 592	if (likely(ixgbevf_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP)))
 593		return false;
 594
 595	return true;
 596}
 597
 598static inline unsigned int ixgbevf_rx_offset(struct ixgbevf_ring *rx_ring)
 599{
 600	return ring_uses_build_skb(rx_ring) ? IXGBEVF_SKB_PAD : 0;
 601}
 602
 603static bool ixgbevf_alloc_mapped_page(struct ixgbevf_ring *rx_ring,
 604				      struct ixgbevf_rx_buffer *bi)
 605{
 606	struct page *page = bi->page;
 607	dma_addr_t dma;
 608
 609	/* since we are recycling buffers we should seldom need to alloc */
 610	if (likely(page))
 611		return true;
 612
 613	/* alloc new page for storage */
 614	page = dev_alloc_pages(ixgbevf_rx_pg_order(rx_ring));
 615	if (unlikely(!page)) {
 616		rx_ring->rx_stats.alloc_rx_page_failed++;
 617		return false;
 618	}
 619
 620	/* map page for use */
 621	dma = dma_map_page_attrs(rx_ring->dev, page, 0,
 622				 ixgbevf_rx_pg_size(rx_ring),
 623				 DMA_FROM_DEVICE, IXGBEVF_RX_DMA_ATTR);
 624
 625	/* if mapping failed free memory back to system since
 626	 * there isn't much point in holding memory we can't use
 627	 */
 628	if (dma_mapping_error(rx_ring->dev, dma)) {
 629		__free_pages(page, ixgbevf_rx_pg_order(rx_ring));
 630
 631		rx_ring->rx_stats.alloc_rx_page_failed++;
 632		return false;
 633	}
 634
 635	bi->dma = dma;
 636	bi->page = page;
 637	bi->page_offset = ixgbevf_rx_offset(rx_ring);
 638	bi->pagecnt_bias = 1;
 639	rx_ring->rx_stats.alloc_rx_page++;
 640
 641	return true;
 642}
 643
 644/**
 645 * ixgbevf_alloc_rx_buffers - Replace used receive buffers; packet split
 646 * @rx_ring: rx descriptor ring (for a specific queue) to setup buffers on
 647 * @cleaned_count: number of buffers to replace
 648 **/
 649static void ixgbevf_alloc_rx_buffers(struct ixgbevf_ring *rx_ring,
 650				     u16 cleaned_count)
 651{
 652	union ixgbe_adv_rx_desc *rx_desc;
 653	struct ixgbevf_rx_buffer *bi;
 654	unsigned int i = rx_ring->next_to_use;
 655
 656	/* nothing to do or no valid netdev defined */
 657	if (!cleaned_count || !rx_ring->netdev)
 658		return;
 659
 660	rx_desc = IXGBEVF_RX_DESC(rx_ring, i);
 661	bi = &rx_ring->rx_buffer_info[i];
 662	i -= rx_ring->count;
 
 
 
 
 663
 664	do {
 665		if (!ixgbevf_alloc_mapped_page(rx_ring, bi))
 666			break;
 667
 668		/* sync the buffer for use by the device */
 669		dma_sync_single_range_for_device(rx_ring->dev, bi->dma,
 670						 bi->page_offset,
 671						 ixgbevf_rx_bufsz(rx_ring),
 672						 DMA_FROM_DEVICE);
 673
 674		/* Refresh the desc even if pkt_addr didn't change
 675		 * because each write-back erases this info.
 676		 */
 677		rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);
 678
 679		rx_desc++;
 680		bi++;
 681		i++;
 682		if (unlikely(!i)) {
 683			rx_desc = IXGBEVF_RX_DESC(rx_ring, 0);
 684			bi = rx_ring->rx_buffer_info;
 685			i -= rx_ring->count;
 686		}
 687
 688		/* clear the length for the next_to_use descriptor */
 689		rx_desc->wb.upper.length = 0;
 690
 691		cleaned_count--;
 692	} while (cleaned_count);
 693
 694	i += rx_ring->count;
 695
 696	if (rx_ring->next_to_use != i) {
 697		/* record the next descriptor to use */
 698		rx_ring->next_to_use = i;
 699
 700		/* update next to alloc since we have filled the ring */
 701		rx_ring->next_to_alloc = i;
 702
 703		/* Force memory writes to complete before letting h/w
 704		 * know there are new descriptors to fetch.  (Only
 705		 * applicable for weak-ordered memory model archs,
 706		 * such as IA-64).
 707		 */
 708		wmb();
 709		ixgbevf_write_tail(rx_ring, i);
 710	}
 711}
 712
 713/**
 714 * ixgbevf_cleanup_headers - Correct corrupted or empty headers
 715 * @rx_ring: rx descriptor ring packet is being transacted on
 716 * @rx_desc: pointer to the EOP Rx descriptor
 717 * @skb: pointer to current skb being fixed
 718 *
 719 * Check for corrupted packet headers caused by senders on the local L2
 720 * embedded NIC switch not setting up their Tx Descriptors right.  These
 721 * should be very rare.
 722 *
 723 * Also address the case where we are pulling data in on pages only
 724 * and as such no data is present in the skb header.
 725 *
 726 * In addition if skb is not at least 60 bytes we need to pad it so that
 727 * it is large enough to qualify as a valid Ethernet frame.
 728 *
 729 * Returns true if an error was encountered and skb was freed.
 730 **/
 731static bool ixgbevf_cleanup_headers(struct ixgbevf_ring *rx_ring,
 732				    union ixgbe_adv_rx_desc *rx_desc,
 733				    struct sk_buff *skb)
 734{
 735	/* XDP packets use error pointer so abort at this point */
 736	if (IS_ERR(skb))
 737		return true;
 738
 739	/* verify that the packet does not have any known errors */
 740	if (unlikely(ixgbevf_test_staterr(rx_desc,
 741					  IXGBE_RXDADV_ERR_FRAME_ERR_MASK))) {
 742		struct net_device *netdev = rx_ring->netdev;
 743
 744		if (!(netdev->features & NETIF_F_RXALL)) {
 745			dev_kfree_skb_any(skb);
 746			return true;
 747		}
 748	}
 749
 750	/* if eth_skb_pad returns an error the skb was freed */
 751	if (eth_skb_pad(skb))
 752		return true;
 753
 754	return false;
 755}
 756
 757/**
 758 * ixgbevf_reuse_rx_page - page flip buffer and store it back on the ring
 759 * @rx_ring: rx descriptor ring to store buffers on
 760 * @old_buff: donor buffer to have page reused
 761 *
 762 * Synchronizes page for reuse by the adapter
 763 **/
 764static void ixgbevf_reuse_rx_page(struct ixgbevf_ring *rx_ring,
 765				  struct ixgbevf_rx_buffer *old_buff)
 766{
 767	struct ixgbevf_rx_buffer *new_buff;
 768	u16 nta = rx_ring->next_to_alloc;
 769
 770	new_buff = &rx_ring->rx_buffer_info[nta];
 771
 772	/* update, and store next to alloc */
 773	nta++;
 774	rx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0;
 775
 776	/* transfer page from old buffer to new buffer */
 777	new_buff->page = old_buff->page;
 778	new_buff->dma = old_buff->dma;
 779	new_buff->page_offset = old_buff->page_offset;
 780	new_buff->pagecnt_bias = old_buff->pagecnt_bias;
 781}
 782
 783static bool ixgbevf_can_reuse_rx_page(struct ixgbevf_rx_buffer *rx_buffer)
 784{
 785	unsigned int pagecnt_bias = rx_buffer->pagecnt_bias;
 786	struct page *page = rx_buffer->page;
 787
 788	/* avoid re-using remote and pfmemalloc pages */
 789	if (!dev_page_is_reusable(page))
 790		return false;
 791
 792#if (PAGE_SIZE < 8192)
 793	/* if we are only owner of page we can reuse it */
 794	if (unlikely((page_ref_count(page) - pagecnt_bias) > 1))
 795		return false;
 796#else
 797#define IXGBEVF_LAST_OFFSET \
 798	(SKB_WITH_OVERHEAD(PAGE_SIZE) - IXGBEVF_RXBUFFER_2048)
 799
 800	if (rx_buffer->page_offset > IXGBEVF_LAST_OFFSET)
 801		return false;
 802
 803#endif
 804
 805	/* If we have drained the page fragment pool we need to update
 806	 * the pagecnt_bias and page count so that we fully restock the
 807	 * number of references the driver holds.
 808	 */
 809	if (unlikely(!pagecnt_bias)) {
 810		page_ref_add(page, USHRT_MAX);
 811		rx_buffer->pagecnt_bias = USHRT_MAX;
 812	}
 813
 814	return true;
 815}
 816
 817/**
 818 * ixgbevf_add_rx_frag - Add contents of Rx buffer to sk_buff
 819 * @rx_ring: rx descriptor ring to transact packets on
 820 * @rx_buffer: buffer containing page to add
 821 * @skb: sk_buff to place the data into
 822 * @size: size of buffer to be added
 823 *
 824 * This function will add the data contained in rx_buffer->page to the skb.
 825 **/
 826static void ixgbevf_add_rx_frag(struct ixgbevf_ring *rx_ring,
 827				struct ixgbevf_rx_buffer *rx_buffer,
 828				struct sk_buff *skb,
 829				unsigned int size)
 830{
 831#if (PAGE_SIZE < 8192)
 832	unsigned int truesize = ixgbevf_rx_pg_size(rx_ring) / 2;
 833#else
 834	unsigned int truesize = ring_uses_build_skb(rx_ring) ?
 835				SKB_DATA_ALIGN(IXGBEVF_SKB_PAD + size) :
 836				SKB_DATA_ALIGN(size);
 837#endif
 838	skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, rx_buffer->page,
 839			rx_buffer->page_offset, size, truesize);
 840#if (PAGE_SIZE < 8192)
 841	rx_buffer->page_offset ^= truesize;
 842#else
 843	rx_buffer->page_offset += truesize;
 844#endif
 845}
 846
 847static
 848struct sk_buff *ixgbevf_construct_skb(struct ixgbevf_ring *rx_ring,
 849				      struct ixgbevf_rx_buffer *rx_buffer,
 850				      struct xdp_buff *xdp,
 851				      union ixgbe_adv_rx_desc *rx_desc)
 852{
 853	unsigned int size = xdp->data_end - xdp->data;
 854#if (PAGE_SIZE < 8192)
 855	unsigned int truesize = ixgbevf_rx_pg_size(rx_ring) / 2;
 856#else
 857	unsigned int truesize = SKB_DATA_ALIGN(xdp->data_end -
 858					       xdp->data_hard_start);
 859#endif
 860	unsigned int headlen;
 861	struct sk_buff *skb;
 862
 863	/* prefetch first cache line of first page */
 864	net_prefetch(xdp->data);
 865
 866	/* Note, we get here by enabling legacy-rx via:
 867	 *
 868	 *    ethtool --set-priv-flags <dev> legacy-rx on
 869	 *
 870	 * In this mode, we currently get 0 extra XDP headroom as
 871	 * opposed to having legacy-rx off, where we process XDP
 872	 * packets going to stack via ixgbevf_build_skb().
 873	 *
 874	 * For ixgbevf_construct_skb() mode it means that the
 875	 * xdp->data_meta will always point to xdp->data, since
 876	 * the helper cannot expand the head. Should this ever
 877	 * changed in future for legacy-rx mode on, then lets also
 878	 * add xdp->data_meta handling here.
 879	 */
 880
 881	/* allocate a skb to store the frags */
 882	skb = napi_alloc_skb(&rx_ring->q_vector->napi, IXGBEVF_RX_HDR_SIZE);
 883	if (unlikely(!skb))
 884		return NULL;
 885
 886	/* Determine available headroom for copy */
 887	headlen = size;
 888	if (headlen > IXGBEVF_RX_HDR_SIZE)
 889		headlen = eth_get_headlen(skb->dev, xdp->data,
 890					  IXGBEVF_RX_HDR_SIZE);
 891
 892	/* align pull length to size of long to optimize memcpy performance */
 893	memcpy(__skb_put(skb, headlen), xdp->data,
 894	       ALIGN(headlen, sizeof(long)));
 895
 896	/* update all of the pointers */
 897	size -= headlen;
 898	if (size) {
 899		skb_add_rx_frag(skb, 0, rx_buffer->page,
 900				(xdp->data + headlen) -
 901					page_address(rx_buffer->page),
 902				size, truesize);
 903#if (PAGE_SIZE < 8192)
 904		rx_buffer->page_offset ^= truesize;
 905#else
 906		rx_buffer->page_offset += truesize;
 907#endif
 908	} else {
 909		rx_buffer->pagecnt_bias++;
 910	}
 911
 912	return skb;
 
 
 
 913}
 914
 915static inline void ixgbevf_irq_enable_queues(struct ixgbevf_adapter *adapter,
 916					     u32 qmask)
 917{
 918	struct ixgbe_hw *hw = &adapter->hw;
 919
 920	IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, qmask);
 921}
 922
 923static struct sk_buff *ixgbevf_build_skb(struct ixgbevf_ring *rx_ring,
 924					 struct ixgbevf_rx_buffer *rx_buffer,
 925					 struct xdp_buff *xdp,
 926					 union ixgbe_adv_rx_desc *rx_desc)
 927{
 928	unsigned int metasize = xdp->data - xdp->data_meta;
 929#if (PAGE_SIZE < 8192)
 930	unsigned int truesize = ixgbevf_rx_pg_size(rx_ring) / 2;
 931#else
 932	unsigned int truesize = SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) +
 933				SKB_DATA_ALIGN(xdp->data_end -
 934					       xdp->data_hard_start);
 935#endif
 936	struct sk_buff *skb;
 937
 938	/* Prefetch first cache line of first page. If xdp->data_meta
 939	 * is unused, this points to xdp->data, otherwise, we likely
 940	 * have a consumer accessing first few bytes of meta data,
 941	 * and then actual data.
 942	 */
 943	net_prefetch(xdp->data_meta);
 944
 945	/* build an skb around the page buffer */
 946	skb = napi_build_skb(xdp->data_hard_start, truesize);
 947	if (unlikely(!skb))
 948		return NULL;
 949
 950	/* update pointers within the skb to store the data */
 951	skb_reserve(skb, xdp->data - xdp->data_hard_start);
 952	__skb_put(skb, xdp->data_end - xdp->data);
 953	if (metasize)
 954		skb_metadata_set(skb, metasize);
 955
 956	/* update buffer offset */
 957#if (PAGE_SIZE < 8192)
 958	rx_buffer->page_offset ^= truesize;
 959#else
 960	rx_buffer->page_offset += truesize;
 961#endif
 962
 963	return skb;
 964}
 965
 966#define IXGBEVF_XDP_PASS 0
 967#define IXGBEVF_XDP_CONSUMED 1
 968#define IXGBEVF_XDP_TX 2
 969
 970static int ixgbevf_xmit_xdp_ring(struct ixgbevf_ring *ring,
 971				 struct xdp_buff *xdp)
 972{
 973	struct ixgbevf_tx_buffer *tx_buffer;
 974	union ixgbe_adv_tx_desc *tx_desc;
 975	u32 len, cmd_type;
 976	dma_addr_t dma;
 977	u16 i;
 978
 979	len = xdp->data_end - xdp->data;
 980
 981	if (unlikely(!ixgbevf_desc_unused(ring)))
 982		return IXGBEVF_XDP_CONSUMED;
 983
 984	dma = dma_map_single(ring->dev, xdp->data, len, DMA_TO_DEVICE);
 985	if (dma_mapping_error(ring->dev, dma))
 986		return IXGBEVF_XDP_CONSUMED;
 987
 988	/* record the location of the first descriptor for this packet */
 989	i = ring->next_to_use;
 990	tx_buffer = &ring->tx_buffer_info[i];
 991
 992	dma_unmap_len_set(tx_buffer, len, len);
 993	dma_unmap_addr_set(tx_buffer, dma, dma);
 994	tx_buffer->data = xdp->data;
 995	tx_buffer->bytecount = len;
 996	tx_buffer->gso_segs = 1;
 997	tx_buffer->protocol = 0;
 998
 999	/* Populate minimal context descriptor that will provide for the
1000	 * fact that we are expected to process Ethernet frames.
1001	 */
1002	if (!test_bit(__IXGBEVF_TX_XDP_RING_PRIMED, &ring->state)) {
1003		struct ixgbe_adv_tx_context_desc *context_desc;
1004
1005		set_bit(__IXGBEVF_TX_XDP_RING_PRIMED, &ring->state);
1006
1007		context_desc = IXGBEVF_TX_CTXTDESC(ring, 0);
1008		context_desc->vlan_macip_lens	=
1009			cpu_to_le32(ETH_HLEN << IXGBE_ADVTXD_MACLEN_SHIFT);
1010		context_desc->fceof_saidx	= 0;
1011		context_desc->type_tucmd_mlhl	=
1012			cpu_to_le32(IXGBE_TXD_CMD_DEXT |
1013				    IXGBE_ADVTXD_DTYP_CTXT);
1014		context_desc->mss_l4len_idx	= 0;
1015
1016		i = 1;
1017	}
1018
1019	/* put descriptor type bits */
1020	cmd_type = IXGBE_ADVTXD_DTYP_DATA |
1021		   IXGBE_ADVTXD_DCMD_DEXT |
1022		   IXGBE_ADVTXD_DCMD_IFCS;
1023	cmd_type |= len | IXGBE_TXD_CMD;
1024
1025	tx_desc = IXGBEVF_TX_DESC(ring, i);
1026	tx_desc->read.buffer_addr = cpu_to_le64(dma);
1027
1028	tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type);
1029	tx_desc->read.olinfo_status =
1030			cpu_to_le32((len << IXGBE_ADVTXD_PAYLEN_SHIFT) |
1031				    IXGBE_ADVTXD_CC);
1032
1033	/* Avoid any potential race with cleanup */
1034	smp_wmb();
1035
1036	/* set next_to_watch value indicating a packet is present */
1037	i++;
1038	if (i == ring->count)
1039		i = 0;
1040
1041	tx_buffer->next_to_watch = tx_desc;
1042	ring->next_to_use = i;
1043
1044	return IXGBEVF_XDP_TX;
1045}
1046
1047static struct sk_buff *ixgbevf_run_xdp(struct ixgbevf_adapter *adapter,
1048				       struct ixgbevf_ring  *rx_ring,
1049				       struct xdp_buff *xdp)
1050{
1051	int result = IXGBEVF_XDP_PASS;
1052	struct ixgbevf_ring *xdp_ring;
1053	struct bpf_prog *xdp_prog;
1054	u32 act;
1055
1056	xdp_prog = READ_ONCE(rx_ring->xdp_prog);
1057
1058	if (!xdp_prog)
1059		goto xdp_out;
1060
1061	act = bpf_prog_run_xdp(xdp_prog, xdp);
1062	switch (act) {
1063	case XDP_PASS:
1064		break;
1065	case XDP_TX:
1066		xdp_ring = adapter->xdp_ring[rx_ring->queue_index];
1067		result = ixgbevf_xmit_xdp_ring(xdp_ring, xdp);
1068		if (result == IXGBEVF_XDP_CONSUMED)
1069			goto out_failure;
1070		break;
1071	default:
1072		bpf_warn_invalid_xdp_action(rx_ring->netdev, xdp_prog, act);
1073		fallthrough;
1074	case XDP_ABORTED:
1075out_failure:
1076		trace_xdp_exception(rx_ring->netdev, xdp_prog, act);
1077		fallthrough; /* handle aborts by dropping packet */
1078	case XDP_DROP:
1079		result = IXGBEVF_XDP_CONSUMED;
1080		break;
1081	}
1082xdp_out:
1083	return ERR_PTR(-result);
1084}
1085
1086static unsigned int ixgbevf_rx_frame_truesize(struct ixgbevf_ring *rx_ring,
1087					      unsigned int size)
1088{
1089	unsigned int truesize;
1090
1091#if (PAGE_SIZE < 8192)
1092	truesize = ixgbevf_rx_pg_size(rx_ring) / 2; /* Must be power-of-2 */
1093#else
1094	truesize = ring_uses_build_skb(rx_ring) ?
1095		SKB_DATA_ALIGN(IXGBEVF_SKB_PAD + size) +
1096		SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) :
1097		SKB_DATA_ALIGN(size);
1098#endif
1099	return truesize;
1100}
1101
1102static void ixgbevf_rx_buffer_flip(struct ixgbevf_ring *rx_ring,
1103				   struct ixgbevf_rx_buffer *rx_buffer,
1104				   unsigned int size)
1105{
1106	unsigned int truesize = ixgbevf_rx_frame_truesize(rx_ring, size);
1107
1108#if (PAGE_SIZE < 8192)
1109	rx_buffer->page_offset ^= truesize;
1110#else
1111	rx_buffer->page_offset += truesize;
1112#endif
1113}
1114
1115static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector,
1116				struct ixgbevf_ring *rx_ring,
1117				int budget)
1118{
1119	unsigned int total_rx_bytes = 0, total_rx_packets = 0, frame_sz = 0;
1120	struct ixgbevf_adapter *adapter = q_vector->adapter;
1121	u16 cleaned_count = ixgbevf_desc_unused(rx_ring);
1122	struct sk_buff *skb = rx_ring->skb;
1123	bool xdp_xmit = false;
1124	struct xdp_buff xdp;
1125
1126	/* Frame size depend on rx_ring setup when PAGE_SIZE=4K */
1127#if (PAGE_SIZE < 8192)
1128	frame_sz = ixgbevf_rx_frame_truesize(rx_ring, 0);
1129#endif
1130	xdp_init_buff(&xdp, frame_sz, &rx_ring->xdp_rxq);
1131
1132	while (likely(total_rx_packets < budget)) {
1133		struct ixgbevf_rx_buffer *rx_buffer;
1134		union ixgbe_adv_rx_desc *rx_desc;
1135		unsigned int size;
1136
1137		/* return some buffers to hardware, one at a time is too slow */
1138		if (cleaned_count >= IXGBEVF_RX_BUFFER_WRITE) {
1139			ixgbevf_alloc_rx_buffers(rx_ring, cleaned_count);
1140			cleaned_count = 0;
1141		}
1142
1143		rx_desc = IXGBEVF_RX_DESC(rx_ring, rx_ring->next_to_clean);
1144		size = le16_to_cpu(rx_desc->wb.upper.length);
1145		if (!size)
1146			break;
 
1147
1148		/* This memory barrier is needed to keep us from reading
1149		 * any other fields out of the rx_desc until we know the
1150		 * RXD_STAT_DD bit is set
1151		 */
1152		rmb();
1153
1154		rx_buffer = ixgbevf_get_rx_buffer(rx_ring, size);
1155
1156		/* retrieve a buffer from the ring */
1157		if (!skb) {
1158			unsigned int offset = ixgbevf_rx_offset(rx_ring);
1159			unsigned char *hard_start;
1160
1161			hard_start = page_address(rx_buffer->page) +
1162				     rx_buffer->page_offset - offset;
1163			xdp_prepare_buff(&xdp, hard_start, offset, size, true);
1164#if (PAGE_SIZE > 4096)
1165			/* At larger PAGE_SIZE, frame_sz depend on len size */
1166			xdp.frame_sz = ixgbevf_rx_frame_truesize(rx_ring, size);
1167#endif
1168			skb = ixgbevf_run_xdp(adapter, rx_ring, &xdp);
1169		}
1170
1171		if (IS_ERR(skb)) {
1172			if (PTR_ERR(skb) == -IXGBEVF_XDP_TX) {
1173				xdp_xmit = true;
1174				ixgbevf_rx_buffer_flip(rx_ring, rx_buffer,
1175						       size);
1176			} else {
1177				rx_buffer->pagecnt_bias++;
1178			}
1179			total_rx_packets++;
1180			total_rx_bytes += size;
1181		} else if (skb) {
1182			ixgbevf_add_rx_frag(rx_ring, rx_buffer, skb, size);
1183		} else if (ring_uses_build_skb(rx_ring)) {
1184			skb = ixgbevf_build_skb(rx_ring, rx_buffer,
1185						&xdp, rx_desc);
1186		} else {
1187			skb = ixgbevf_construct_skb(rx_ring, rx_buffer,
1188						    &xdp, rx_desc);
1189		}
1190
1191		/* exit if we failed to retrieve a buffer */
1192		if (!skb) {
1193			rx_ring->rx_stats.alloc_rx_buff_failed++;
1194			rx_buffer->pagecnt_bias++;
1195			break;
1196		}
1197
1198		ixgbevf_put_rx_buffer(rx_ring, rx_buffer, skb);
 
1199		cleaned_count++;
1200
1201		/* fetch next buffer in frame if non-eop */
1202		if (ixgbevf_is_non_eop(rx_ring, rx_desc))
1203			continue;
1204
1205		/* verify the packet layout is correct */
1206		if (ixgbevf_cleanup_headers(rx_ring, rx_desc, skb)) {
1207			skb = NULL;
1208			continue;
 
 
 
 
 
 
 
 
 
 
 
1209		}
1210
 
 
 
 
 
 
 
 
1211		/* probably a little skewed due to removing CRC */
1212		total_rx_bytes += skb->len;
 
 
 
1213
1214		/* Workaround hardware that can't do proper VEPA multicast
1215		 * source pruning.
1216		 */
1217		if ((skb->pkt_type == PACKET_BROADCAST ||
1218		     skb->pkt_type == PACKET_MULTICAST) &&
1219		    ether_addr_equal(rx_ring->netdev->dev_addr,
1220				     eth_hdr(skb)->h_source)) {
1221			dev_kfree_skb_irq(skb);
1222			continue;
1223		}
1224
1225		/* populate checksum, VLAN, and protocol */
1226		ixgbevf_process_skb_fields(rx_ring, rx_desc, skb);
 
 
1227
1228		ixgbevf_rx_skb(q_vector, skb);
 
 
 
 
1229
1230		/* reset skb pointer */
1231		skb = NULL;
 
1232
1233		/* update budget accounting */
1234		total_rx_packets++;
1235	}
1236
1237	/* place incomplete frames back on ring for completion */
1238	rx_ring->skb = skb;
1239
1240	if (xdp_xmit) {
1241		struct ixgbevf_ring *xdp_ring =
1242			adapter->xdp_ring[rx_ring->queue_index];
1243
1244		/* Force memory writes to complete before letting h/w
1245		 * know there are new descriptors to fetch.
1246		 */
1247		wmb();
1248		ixgbevf_write_tail(xdp_ring, xdp_ring->next_to_use);
1249	}
1250
1251	u64_stats_update_begin(&rx_ring->syncp);
1252	rx_ring->stats.packets += total_rx_packets;
1253	rx_ring->stats.bytes += total_rx_bytes;
1254	u64_stats_update_end(&rx_ring->syncp);
1255	q_vector->rx.total_packets += total_rx_packets;
1256	q_vector->rx.total_bytes += total_rx_bytes;
1257
1258	return total_rx_packets;
1259}
1260
1261/**
1262 * ixgbevf_poll - NAPI polling calback
1263 * @napi: napi struct with our devices info in it
1264 * @budget: amount of work driver is allowed to do this pass, in packets
1265 *
1266 * This function will clean more than one or more rings associated with a
1267 * q_vector.
1268 **/
1269static int ixgbevf_poll(struct napi_struct *napi, int budget)
1270{
1271	struct ixgbevf_q_vector *q_vector =
1272		container_of(napi, struct ixgbevf_q_vector, napi);
1273	struct ixgbevf_adapter *adapter = q_vector->adapter;
1274	struct ixgbevf_ring *ring;
1275	int per_ring_budget, work_done = 0;
1276	bool clean_complete = true;
1277
1278	ixgbevf_for_each_ring(ring, q_vector->tx) {
1279		if (!ixgbevf_clean_tx_irq(q_vector, ring, budget))
1280			clean_complete = false;
1281	}
1282
1283	if (budget <= 0)
 
1284		return budget;
 
1285
1286	/* attempt to distribute budget to each queue fairly, but don't allow
1287	 * the budget to go below 1 because we'll exit polling
1288	 */
1289	if (q_vector->rx.count > 1)
1290		per_ring_budget = max(budget/q_vector->rx.count, 1);
1291	else
1292		per_ring_budget = budget;
1293
1294	ixgbevf_for_each_ring(ring, q_vector->rx) {
1295		int cleaned = ixgbevf_clean_rx_irq(q_vector, ring,
1296						   per_ring_budget);
1297		work_done += cleaned;
1298		if (cleaned >= per_ring_budget)
1299			clean_complete = false;
1300	}
 
 
 
1301
1302	/* If all work not completed, return budget and keep polling */
1303	if (!clean_complete)
1304		return budget;
 
 
 
 
 
 
 
 
1305
1306	/* Exit the polling mode, but don't re-enable interrupts if stack might
1307	 * poll us due to busy-polling
1308	 */
1309	if (likely(napi_complete_done(napi, work_done))) {
1310		if (adapter->rx_itr_setting == 1)
1311			ixgbevf_set_itr(q_vector);
1312		if (!test_bit(__IXGBEVF_DOWN, &adapter->state) &&
1313		    !test_bit(__IXGBEVF_REMOVING, &adapter->state))
1314			ixgbevf_irq_enable_queues(adapter,
1315						  BIT(q_vector->v_idx));
1316	}
1317
1318	return min(work_done, budget - 1);
1319}
1320
1321/**
1322 * ixgbevf_write_eitr - write VTEITR register in hardware specific way
1323 * @q_vector: structure containing interrupt and ring information
1324 **/
1325void ixgbevf_write_eitr(struct ixgbevf_q_vector *q_vector)
1326{
1327	struct ixgbevf_adapter *adapter = q_vector->adapter;
1328	struct ixgbe_hw *hw = &adapter->hw;
1329	int v_idx = q_vector->v_idx;
1330	u32 itr_reg = q_vector->itr & IXGBE_MAX_EITR;
1331
1332	/* set the WDIS bit to not clear the timer bits and cause an
 
1333	 * immediate assertion of the interrupt
1334	 */
1335	itr_reg |= IXGBE_EITR_CNT_WDIS;
1336
1337	IXGBE_WRITE_REG(hw, IXGBE_VTEITR(v_idx), itr_reg);
1338}
1339
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1340/**
1341 * ixgbevf_configure_msix - Configure MSI-X hardware
1342 * @adapter: board private structure
1343 *
1344 * ixgbevf_configure_msix sets up the hardware to properly generate MSI-X
1345 * interrupts.
1346 **/
1347static void ixgbevf_configure_msix(struct ixgbevf_adapter *adapter)
1348{
1349	struct ixgbevf_q_vector *q_vector;
1350	int q_vectors, v_idx;
1351
1352	q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
1353	adapter->eims_enable_mask = 0;
1354
1355	/* Populate the IVAR table and set the ITR values to the
 
1356	 * corresponding register.
1357	 */
1358	for (v_idx = 0; v_idx < q_vectors; v_idx++) {
1359		struct ixgbevf_ring *ring;
1360
1361		q_vector = adapter->q_vector[v_idx];
1362
1363		ixgbevf_for_each_ring(ring, q_vector->rx)
1364			ixgbevf_set_ivar(adapter, 0, ring->reg_idx, v_idx);
1365
1366		ixgbevf_for_each_ring(ring, q_vector->tx)
1367			ixgbevf_set_ivar(adapter, 1, ring->reg_idx, v_idx);
1368
1369		if (q_vector->tx.ring && !q_vector->rx.ring) {
1370			/* Tx only vector */
1371			if (adapter->tx_itr_setting == 1)
1372				q_vector->itr = IXGBE_12K_ITR;
1373			else
1374				q_vector->itr = adapter->tx_itr_setting;
1375		} else {
1376			/* Rx or Rx/Tx vector */
1377			if (adapter->rx_itr_setting == 1)
1378				q_vector->itr = IXGBE_20K_ITR;
1379			else
1380				q_vector->itr = adapter->rx_itr_setting;
1381		}
1382
1383		/* add q_vector eims value to global eims_enable_mask */
1384		adapter->eims_enable_mask |= BIT(v_idx);
1385
1386		ixgbevf_write_eitr(q_vector);
1387	}
1388
1389	ixgbevf_set_ivar(adapter, -1, 1, v_idx);
1390	/* setup eims_other and add value to global eims_enable_mask */
1391	adapter->eims_other = BIT(v_idx);
1392	adapter->eims_enable_mask |= adapter->eims_other;
1393}
1394
1395enum latency_range {
1396	lowest_latency = 0,
1397	low_latency = 1,
1398	bulk_latency = 2,
1399	latency_invalid = 255
1400};
1401
1402/**
1403 * ixgbevf_update_itr - update the dynamic ITR value based on statistics
1404 * @q_vector: structure containing interrupt and ring information
1405 * @ring_container: structure containing ring performance data
1406 *
1407 * Stores a new ITR value based on packets and byte
1408 * counts during the last interrupt.  The advantage of per interrupt
1409 * computation is faster updates and more accurate ITR for the current
1410 * traffic pattern.  Constants in this function were computed
1411 * based on theoretical maximum wire speed and thresholds were set based
1412 * on testing data as well as attempting to minimize response time
1413 * while increasing bulk throughput.
1414 **/
1415static void ixgbevf_update_itr(struct ixgbevf_q_vector *q_vector,
1416			       struct ixgbevf_ring_container *ring_container)
1417{
1418	int bytes = ring_container->total_bytes;
1419	int packets = ring_container->total_packets;
1420	u32 timepassed_us;
1421	u64 bytes_perint;
1422	u8 itr_setting = ring_container->itr;
1423
1424	if (packets == 0)
1425		return;
1426
1427	/* simple throttle rate management
1428	 *    0-20MB/s lowest (100000 ints/s)
1429	 *   20-100MB/s low   (20000 ints/s)
1430	 *  100-1249MB/s bulk (12000 ints/s)
1431	 */
1432	/* what was last interrupt timeslice? */
1433	timepassed_us = q_vector->itr >> 2;
1434	if (timepassed_us == 0)
1435		return;
1436
1437	bytes_perint = bytes / timepassed_us; /* bytes/usec */
1438
1439	switch (itr_setting) {
1440	case lowest_latency:
1441		if (bytes_perint > 10)
1442			itr_setting = low_latency;
1443		break;
1444	case low_latency:
1445		if (bytes_perint > 20)
1446			itr_setting = bulk_latency;
1447		else if (bytes_perint <= 10)
1448			itr_setting = lowest_latency;
1449		break;
1450	case bulk_latency:
1451		if (bytes_perint <= 20)
1452			itr_setting = low_latency;
1453		break;
1454	}
1455
1456	/* clear work counters since we have the values we need */
1457	ring_container->total_bytes = 0;
1458	ring_container->total_packets = 0;
1459
1460	/* write updated itr to ring container */
1461	ring_container->itr = itr_setting;
1462}
1463
1464static void ixgbevf_set_itr(struct ixgbevf_q_vector *q_vector)
1465{
1466	u32 new_itr = q_vector->itr;
1467	u8 current_itr;
1468
1469	ixgbevf_update_itr(q_vector, &q_vector->tx);
1470	ixgbevf_update_itr(q_vector, &q_vector->rx);
1471
1472	current_itr = max(q_vector->rx.itr, q_vector->tx.itr);
1473
1474	switch (current_itr) {
1475	/* counts and packets in update_itr are dependent on these numbers */
1476	case lowest_latency:
1477		new_itr = IXGBE_100K_ITR;
1478		break;
1479	case low_latency:
1480		new_itr = IXGBE_20K_ITR;
1481		break;
1482	case bulk_latency:
1483		new_itr = IXGBE_12K_ITR;
1484		break;
1485	default:
 
1486		break;
1487	}
1488
1489	if (new_itr != q_vector->itr) {
1490		/* do an exponential smoothing */
1491		new_itr = (10 * new_itr * q_vector->itr) /
1492			  ((9 * new_itr) + q_vector->itr);
1493
1494		/* save the algorithm value here */
1495		q_vector->itr = new_itr;
1496
1497		ixgbevf_write_eitr(q_vector);
1498	}
1499}
1500
1501static irqreturn_t ixgbevf_msix_other(int irq, void *data)
1502{
1503	struct ixgbevf_adapter *adapter = data;
1504	struct ixgbe_hw *hw = &adapter->hw;
1505
1506	hw->mac.get_link_status = 1;
1507
1508	ixgbevf_service_event_schedule(adapter);
 
 
1509
1510	IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, adapter->eims_other);
1511
1512	return IRQ_HANDLED;
1513}
1514
1515/**
1516 * ixgbevf_msix_clean_rings - single unshared vector rx clean (all queues)
1517 * @irq: unused
1518 * @data: pointer to our q_vector struct for this interrupt vector
1519 **/
1520static irqreturn_t ixgbevf_msix_clean_rings(int irq, void *data)
1521{
1522	struct ixgbevf_q_vector *q_vector = data;
1523
1524	/* EIAM disabled interrupts (on this vector) for us */
1525	if (q_vector->rx.ring || q_vector->tx.ring)
1526		napi_schedule_irqoff(&q_vector->napi);
1527
1528	return IRQ_HANDLED;
1529}
1530
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1531/**
1532 * ixgbevf_request_msix_irqs - Initialize MSI-X interrupts
1533 * @adapter: board private structure
1534 *
1535 * ixgbevf_request_msix_irqs allocates MSI-X vectors and requests
1536 * interrupts from the kernel.
1537 **/
1538static int ixgbevf_request_msix_irqs(struct ixgbevf_adapter *adapter)
1539{
1540	struct net_device *netdev = adapter->netdev;
1541	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
1542	unsigned int ri = 0, ti = 0;
1543	int vector, err;
 
1544
1545	for (vector = 0; vector < q_vectors; vector++) {
1546		struct ixgbevf_q_vector *q_vector = adapter->q_vector[vector];
1547		struct msix_entry *entry = &adapter->msix_entries[vector];
1548
1549		if (q_vector->tx.ring && q_vector->rx.ring) {
1550			snprintf(q_vector->name, sizeof(q_vector->name),
1551				 "%s-TxRx-%u", netdev->name, ri++);
1552			ti++;
1553		} else if (q_vector->rx.ring) {
1554			snprintf(q_vector->name, sizeof(q_vector->name),
1555				 "%s-rx-%u", netdev->name, ri++);
1556		} else if (q_vector->tx.ring) {
1557			snprintf(q_vector->name, sizeof(q_vector->name),
1558				 "%s-tx-%u", netdev->name, ti++);
1559		} else {
1560			/* skip this unused q_vector */
1561			continue;
1562		}
1563		err = request_irq(entry->vector, &ixgbevf_msix_clean_rings, 0,
1564				  q_vector->name, q_vector);
1565		if (err) {
1566			hw_dbg(&adapter->hw,
1567			       "request_irq failed for MSIX interrupt Error: %d\n",
1568			       err);
1569			goto free_queue_irqs;
1570		}
1571	}
1572
1573	err = request_irq(adapter->msix_entries[vector].vector,
1574			  &ixgbevf_msix_other, 0, netdev->name, adapter);
1575	if (err) {
1576		hw_dbg(&adapter->hw, "request_irq for msix_other failed: %d\n",
1577		       err);
1578		goto free_queue_irqs;
1579	}
1580
1581	return 0;
1582
1583free_queue_irqs:
1584	while (vector) {
1585		vector--;
1586		free_irq(adapter->msix_entries[vector].vector,
1587			 adapter->q_vector[vector]);
1588	}
1589	/* This failure is non-recoverable - it indicates the system is
1590	 * out of MSIX vector resources and the VF driver cannot run
1591	 * without them.  Set the number of msix vectors to zero
1592	 * indicating that not enough can be allocated.  The error
1593	 * will be returned to the user indicating device open failed.
1594	 * Any further attempts to force the driver to open will also
1595	 * fail.  The only way to recover is to unload the driver and
1596	 * reload it again.  If the system has recovered some MSIX
1597	 * vectors then it may succeed.
1598	 */
1599	adapter->num_msix_vectors = 0;
1600	return err;
1601}
1602
 
 
 
 
 
 
 
 
 
 
 
 
 
1603/**
1604 * ixgbevf_request_irq - initialize interrupts
1605 * @adapter: board private structure
1606 *
1607 * Attempts to configure interrupts using the best available
1608 * capabilities of the hardware and kernel.
1609 **/
1610static int ixgbevf_request_irq(struct ixgbevf_adapter *adapter)
1611{
1612	int err = ixgbevf_request_msix_irqs(adapter);
 
 
1613
1614	if (err)
1615		hw_dbg(&adapter->hw, "request_irq failed, Error %d\n", err);
 
1616
1617	return err;
1618}
1619
1620static void ixgbevf_free_irq(struct ixgbevf_adapter *adapter)
1621{
1622	int i, q_vectors;
1623
1624	if (!adapter->msix_entries)
1625		return;
1626
1627	q_vectors = adapter->num_msix_vectors;
1628	i = q_vectors - 1;
1629
1630	free_irq(adapter->msix_entries[i].vector, adapter);
1631	i--;
1632
1633	for (; i >= 0; i--) {
1634		/* free only the irqs that were actually requested */
1635		if (!adapter->q_vector[i]->rx.ring &&
1636		    !adapter->q_vector[i]->tx.ring)
1637			continue;
1638
1639		free_irq(adapter->msix_entries[i].vector,
1640			 adapter->q_vector[i]);
1641	}
 
 
1642}
1643
1644/**
1645 * ixgbevf_irq_disable - Mask off interrupt generation on the NIC
1646 * @adapter: board private structure
1647 **/
1648static inline void ixgbevf_irq_disable(struct ixgbevf_adapter *adapter)
1649{
1650	struct ixgbe_hw *hw = &adapter->hw;
1651	int i;
1652
1653	IXGBE_WRITE_REG(hw, IXGBE_VTEIAM, 0);
1654	IXGBE_WRITE_REG(hw, IXGBE_VTEIMC, ~0);
1655	IXGBE_WRITE_REG(hw, IXGBE_VTEIAC, 0);
1656
1657	IXGBE_WRITE_FLUSH(hw);
1658
1659	for (i = 0; i < adapter->num_msix_vectors; i++)
1660		synchronize_irq(adapter->msix_entries[i].vector);
1661}
1662
1663/**
1664 * ixgbevf_irq_enable - Enable default interrupt generation settings
1665 * @adapter: board private structure
1666 **/
1667static inline void ixgbevf_irq_enable(struct ixgbevf_adapter *adapter)
1668{
1669	struct ixgbe_hw *hw = &adapter->hw;
1670
1671	IXGBE_WRITE_REG(hw, IXGBE_VTEIAM, adapter->eims_enable_mask);
1672	IXGBE_WRITE_REG(hw, IXGBE_VTEIAC, adapter->eims_enable_mask);
1673	IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, adapter->eims_enable_mask);
1674}
1675
1676/**
1677 * ixgbevf_configure_tx_ring - Configure 82599 VF Tx ring after Reset
1678 * @adapter: board private structure
1679 * @ring: structure containing ring specific data
1680 *
1681 * Configure the Tx descriptor ring after a reset.
1682 **/
1683static void ixgbevf_configure_tx_ring(struct ixgbevf_adapter *adapter,
1684				      struct ixgbevf_ring *ring)
1685{
1686	struct ixgbe_hw *hw = &adapter->hw;
1687	u64 tdba = ring->dma;
1688	int wait_loop = 10;
1689	u32 txdctl = IXGBE_TXDCTL_ENABLE;
1690	u8 reg_idx = ring->reg_idx;
1691
1692	/* disable queue to avoid issues while updating state */
1693	IXGBE_WRITE_REG(hw, IXGBE_VFTXDCTL(reg_idx), IXGBE_TXDCTL_SWFLSH);
1694	IXGBE_WRITE_FLUSH(hw);
1695
1696	IXGBE_WRITE_REG(hw, IXGBE_VFTDBAL(reg_idx), tdba & DMA_BIT_MASK(32));
1697	IXGBE_WRITE_REG(hw, IXGBE_VFTDBAH(reg_idx), tdba >> 32);
1698	IXGBE_WRITE_REG(hw, IXGBE_VFTDLEN(reg_idx),
1699			ring->count * sizeof(union ixgbe_adv_tx_desc));
1700
1701	/* disable head writeback */
1702	IXGBE_WRITE_REG(hw, IXGBE_VFTDWBAH(reg_idx), 0);
1703	IXGBE_WRITE_REG(hw, IXGBE_VFTDWBAL(reg_idx), 0);
1704
1705	/* enable relaxed ordering */
1706	IXGBE_WRITE_REG(hw, IXGBE_VFDCA_TXCTRL(reg_idx),
1707			(IXGBE_DCA_TXCTRL_DESC_RRO_EN |
1708			 IXGBE_DCA_TXCTRL_DATA_RRO_EN));
1709
1710	/* reset head and tail pointers */
1711	IXGBE_WRITE_REG(hw, IXGBE_VFTDH(reg_idx), 0);
1712	IXGBE_WRITE_REG(hw, IXGBE_VFTDT(reg_idx), 0);
1713	ring->tail = adapter->io_addr + IXGBE_VFTDT(reg_idx);
1714
1715	/* reset ntu and ntc to place SW in sync with hardwdare */
1716	ring->next_to_clean = 0;
1717	ring->next_to_use = 0;
1718
1719	/* In order to avoid issues WTHRESH + PTHRESH should always be equal
1720	 * to or less than the number of on chip descriptors, which is
1721	 * currently 40.
1722	 */
1723	txdctl |= (8 << 16);    /* WTHRESH = 8 */
1724
1725	/* Setting PTHRESH to 32 both improves performance */
1726	txdctl |= (1u << 8) |    /* HTHRESH = 1 */
1727		   32;           /* PTHRESH = 32 */
1728
1729	/* reinitialize tx_buffer_info */
1730	memset(ring->tx_buffer_info, 0,
1731	       sizeof(struct ixgbevf_tx_buffer) * ring->count);
1732
1733	clear_bit(__IXGBEVF_HANG_CHECK_ARMED, &ring->state);
1734	clear_bit(__IXGBEVF_TX_XDP_RING_PRIMED, &ring->state);
1735
1736	IXGBE_WRITE_REG(hw, IXGBE_VFTXDCTL(reg_idx), txdctl);
1737
1738	/* poll to verify queue is enabled */
1739	do {
1740		usleep_range(1000, 2000);
1741		txdctl = IXGBE_READ_REG(hw, IXGBE_VFTXDCTL(reg_idx));
1742	}  while (--wait_loop && !(txdctl & IXGBE_TXDCTL_ENABLE));
1743	if (!wait_loop)
1744		hw_dbg(hw, "Could not enable Tx Queue %d\n", reg_idx);
1745}
1746
1747/**
1748 * ixgbevf_configure_tx - Configure 82599 VF Transmit Unit after Reset
1749 * @adapter: board private structure
1750 *
1751 * Configure the Tx unit of the MAC after a reset.
1752 **/
1753static void ixgbevf_configure_tx(struct ixgbevf_adapter *adapter)
1754{
1755	u32 i;
1756
1757	/* Setup the HW Tx Head and Tail descriptor pointers */
1758	for (i = 0; i < adapter->num_tx_queues; i++)
1759		ixgbevf_configure_tx_ring(adapter, adapter->tx_ring[i]);
1760	for (i = 0; i < adapter->num_xdp_queues; i++)
1761		ixgbevf_configure_tx_ring(adapter, adapter->xdp_ring[i]);
1762}
1763
1764#define IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT	2
1765
1766static void ixgbevf_configure_srrctl(struct ixgbevf_adapter *adapter,
1767				     struct ixgbevf_ring *ring, int index)
1768{
 
1769	struct ixgbe_hw *hw = &adapter->hw;
1770	u32 srrctl;
1771
 
 
1772	srrctl = IXGBE_SRRCTL_DROP_EN;
1773
1774	srrctl |= IXGBEVF_RX_HDR_SIZE << IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT;
1775	if (ring_uses_large_buffer(ring))
1776		srrctl |= IXGBEVF_RXBUFFER_3072 >> IXGBE_SRRCTL_BSIZEPKT_SHIFT;
1777	else
1778		srrctl |= IXGBEVF_RXBUFFER_2048 >> IXGBE_SRRCTL_BSIZEPKT_SHIFT;
1779	srrctl |= IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF;
1780
 
 
 
1781	IXGBE_WRITE_REG(hw, IXGBE_VFSRRCTL(index), srrctl);
1782}
1783
1784static void ixgbevf_setup_psrtype(struct ixgbevf_adapter *adapter)
1785{
1786	struct ixgbe_hw *hw = &adapter->hw;
1787
1788	/* PSRTYPE must be initialized in 82599 */
1789	u32 psrtype = IXGBE_PSRTYPE_TCPHDR | IXGBE_PSRTYPE_UDPHDR |
1790		      IXGBE_PSRTYPE_IPV4HDR | IXGBE_PSRTYPE_IPV6HDR |
1791		      IXGBE_PSRTYPE_L2HDR;
1792
1793	if (adapter->num_rx_queues > 1)
1794		psrtype |= BIT(29);
1795
1796	IXGBE_WRITE_REG(hw, IXGBE_VFPSRTYPE, psrtype);
1797}
1798
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1799#define IXGBEVF_MAX_RX_DESC_POLL 10
1800static void ixgbevf_disable_rx_queue(struct ixgbevf_adapter *adapter,
1801				     struct ixgbevf_ring *ring)
1802{
1803	struct ixgbe_hw *hw = &adapter->hw;
1804	int wait_loop = IXGBEVF_MAX_RX_DESC_POLL;
1805	u32 rxdctl;
1806	u8 reg_idx = ring->reg_idx;
1807
1808	if (IXGBE_REMOVED(hw->hw_addr))
1809		return;
1810	rxdctl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(reg_idx));
1811	rxdctl &= ~IXGBE_RXDCTL_ENABLE;
1812
1813	/* write value back with RXDCTL.ENABLE bit cleared */
1814	IXGBE_WRITE_REG(hw, IXGBE_VFRXDCTL(reg_idx), rxdctl);
1815
1816	/* the hardware may take up to 100us to really disable the Rx queue */
1817	do {
1818		udelay(10);
1819		rxdctl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(reg_idx));
1820	} while (--wait_loop && (rxdctl & IXGBE_RXDCTL_ENABLE));
1821
1822	if (!wait_loop)
1823		pr_err("RXDCTL.ENABLE queue %d not cleared while polling\n",
1824		       reg_idx);
1825}
1826
1827static void ixgbevf_rx_desc_queue_enable(struct ixgbevf_adapter *adapter,
1828					 struct ixgbevf_ring *ring)
1829{
1830	struct ixgbe_hw *hw = &adapter->hw;
1831	int wait_loop = IXGBEVF_MAX_RX_DESC_POLL;
1832	u32 rxdctl;
1833	u8 reg_idx = ring->reg_idx;
1834
1835	if (IXGBE_REMOVED(hw->hw_addr))
1836		return;
1837	do {
1838		usleep_range(1000, 2000);
1839		rxdctl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(reg_idx));
1840	} while (--wait_loop && !(rxdctl & IXGBE_RXDCTL_ENABLE));
1841
1842	if (!wait_loop)
1843		pr_err("RXDCTL.ENABLE queue %d not set while polling\n",
1844		       reg_idx);
1845}
1846
1847/**
1848 * ixgbevf_init_rss_key - Initialize adapter RSS key
1849 * @adapter: device handle
1850 *
1851 * Allocates and initializes the RSS key if it is not allocated.
1852 **/
1853static inline int ixgbevf_init_rss_key(struct ixgbevf_adapter *adapter)
1854{
1855	u32 *rss_key;
1856
1857	if (!adapter->rss_key) {
1858		rss_key = kzalloc(IXGBEVF_RSS_HASH_KEY_SIZE, GFP_KERNEL);
1859		if (unlikely(!rss_key))
1860			return -ENOMEM;
1861
1862		netdev_rss_key_fill(rss_key, IXGBEVF_RSS_HASH_KEY_SIZE);
1863		adapter->rss_key = rss_key;
1864	}
1865
1866	return 0;
1867}
1868
1869static void ixgbevf_setup_vfmrqc(struct ixgbevf_adapter *adapter)
1870{
1871	struct ixgbe_hw *hw = &adapter->hw;
1872	u32 vfmrqc = 0, vfreta = 0;
1873	u16 rss_i = adapter->num_rx_queues;
1874	u8 i, j;
1875
1876	/* Fill out hash function seeds */
1877	for (i = 0; i < IXGBEVF_VFRSSRK_REGS; i++)
1878		IXGBE_WRITE_REG(hw, IXGBE_VFRSSRK(i), *(adapter->rss_key + i));
1879
1880	for (i = 0, j = 0; i < IXGBEVF_X550_VFRETA_SIZE; i++, j++) {
1881		if (j == rss_i)
1882			j = 0;
1883
1884		adapter->rss_indir_tbl[i] = j;
1885
1886		vfreta |= j << (i & 0x3) * 8;
1887		if ((i & 3) == 3) {
1888			IXGBE_WRITE_REG(hw, IXGBE_VFRETA(i >> 2), vfreta);
1889			vfreta = 0;
1890		}
1891	}
1892
1893	/* Perform hash on these packet types */
1894	vfmrqc |= IXGBE_VFMRQC_RSS_FIELD_IPV4 |
1895		IXGBE_VFMRQC_RSS_FIELD_IPV4_TCP |
1896		IXGBE_VFMRQC_RSS_FIELD_IPV6 |
1897		IXGBE_VFMRQC_RSS_FIELD_IPV6_TCP;
1898
1899	vfmrqc |= IXGBE_VFMRQC_RSSEN;
1900
1901	IXGBE_WRITE_REG(hw, IXGBE_VFMRQC, vfmrqc);
1902}
1903
1904static void ixgbevf_configure_rx_ring(struct ixgbevf_adapter *adapter,
1905				      struct ixgbevf_ring *ring)
1906{
1907	struct ixgbe_hw *hw = &adapter->hw;
1908	union ixgbe_adv_rx_desc *rx_desc;
1909	u64 rdba = ring->dma;
1910	u32 rxdctl;
1911	u8 reg_idx = ring->reg_idx;
1912
1913	/* disable queue to avoid issues while updating state */
1914	rxdctl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(reg_idx));
1915	ixgbevf_disable_rx_queue(adapter, ring);
1916
1917	IXGBE_WRITE_REG(hw, IXGBE_VFRDBAL(reg_idx), rdba & DMA_BIT_MASK(32));
1918	IXGBE_WRITE_REG(hw, IXGBE_VFRDBAH(reg_idx), rdba >> 32);
1919	IXGBE_WRITE_REG(hw, IXGBE_VFRDLEN(reg_idx),
1920			ring->count * sizeof(union ixgbe_adv_rx_desc));
1921
1922#ifndef CONFIG_SPARC
1923	/* enable relaxed ordering */
1924	IXGBE_WRITE_REG(hw, IXGBE_VFDCA_RXCTRL(reg_idx),
1925			IXGBE_DCA_RXCTRL_DESC_RRO_EN);
1926#else
1927	IXGBE_WRITE_REG(hw, IXGBE_VFDCA_RXCTRL(reg_idx),
1928			IXGBE_DCA_RXCTRL_DESC_RRO_EN |
1929			IXGBE_DCA_RXCTRL_DATA_WRO_EN);
1930#endif
1931
1932	/* reset head and tail pointers */
1933	IXGBE_WRITE_REG(hw, IXGBE_VFRDH(reg_idx), 0);
1934	IXGBE_WRITE_REG(hw, IXGBE_VFRDT(reg_idx), 0);
1935	ring->tail = adapter->io_addr + IXGBE_VFRDT(reg_idx);
1936
1937	/* initialize rx_buffer_info */
1938	memset(ring->rx_buffer_info, 0,
1939	       sizeof(struct ixgbevf_rx_buffer) * ring->count);
1940
1941	/* initialize Rx descriptor 0 */
1942	rx_desc = IXGBEVF_RX_DESC(ring, 0);
1943	rx_desc->wb.upper.length = 0;
1944
1945	/* reset ntu and ntc to place SW in sync with hardwdare */
1946	ring->next_to_clean = 0;
1947	ring->next_to_use = 0;
1948	ring->next_to_alloc = 0;
1949
1950	ixgbevf_configure_srrctl(adapter, ring, reg_idx);
1951
1952	/* RXDCTL.RLPML does not work on 82599 */
1953	if (adapter->hw.mac.type != ixgbe_mac_82599_vf) {
1954		rxdctl &= ~(IXGBE_RXDCTL_RLPMLMASK |
1955			    IXGBE_RXDCTL_RLPML_EN);
1956
1957#if (PAGE_SIZE < 8192)
1958		/* Limit the maximum frame size so we don't overrun the skb */
1959		if (ring_uses_build_skb(ring) &&
1960		    !ring_uses_large_buffer(ring))
1961			rxdctl |= IXGBEVF_MAX_FRAME_BUILD_SKB |
1962				  IXGBE_RXDCTL_RLPML_EN;
1963#endif
1964	}
1965
 
 
 
1966	rxdctl |= IXGBE_RXDCTL_ENABLE | IXGBE_RXDCTL_VME;
1967	IXGBE_WRITE_REG(hw, IXGBE_VFRXDCTL(reg_idx), rxdctl);
1968
1969	ixgbevf_rx_desc_queue_enable(adapter, ring);
1970	ixgbevf_alloc_rx_buffers(ring, ixgbevf_desc_unused(ring));
1971}
1972
1973static void ixgbevf_set_rx_buffer_len(struct ixgbevf_adapter *adapter,
1974				      struct ixgbevf_ring *rx_ring)
1975{
1976	struct net_device *netdev = adapter->netdev;
1977	unsigned int max_frame = netdev->mtu + ETH_HLEN + ETH_FCS_LEN;
1978
1979	/* set build_skb and buffer size flags */
1980	clear_ring_build_skb_enabled(rx_ring);
1981	clear_ring_uses_large_buffer(rx_ring);
1982
1983	if (adapter->flags & IXGBEVF_FLAGS_LEGACY_RX)
1984		return;
1985
1986	if (PAGE_SIZE < 8192)
1987		if (max_frame > IXGBEVF_MAX_FRAME_BUILD_SKB)
1988			set_ring_uses_large_buffer(rx_ring);
1989
1990	/* 82599 can't rely on RXDCTL.RLPML to restrict the size of the frame */
1991	if (adapter->hw.mac.type == ixgbe_mac_82599_vf && !ring_uses_large_buffer(rx_ring))
1992		return;
1993
1994	set_ring_build_skb_enabled(rx_ring);
1995}
1996
1997/**
1998 * ixgbevf_configure_rx - Configure 82599 VF Receive Unit after Reset
1999 * @adapter: board private structure
2000 *
2001 * Configure the Rx unit of the MAC after a reset.
2002 **/
2003static void ixgbevf_configure_rx(struct ixgbevf_adapter *adapter)
2004{
2005	struct ixgbe_hw *hw = &adapter->hw;
2006	struct net_device *netdev = adapter->netdev;
2007	int i, ret;
2008
2009	ixgbevf_setup_psrtype(adapter);
2010	if (hw->mac.type >= ixgbe_mac_X550_vf)
2011		ixgbevf_setup_vfmrqc(adapter);
2012
2013	spin_lock_bh(&adapter->mbx_lock);
2014	/* notify the PF of our intent to use this size of frame */
2015	ret = hw->mac.ops.set_rlpml(hw, netdev->mtu + ETH_HLEN + ETH_FCS_LEN);
2016	spin_unlock_bh(&adapter->mbx_lock);
2017	if (ret)
2018		dev_err(&adapter->pdev->dev,
2019			"Failed to set MTU at %d\n", netdev->mtu);
2020
2021	/* Setup the HW Rx Head and Tail Descriptor Pointers and
2022	 * the Base and Length of the Rx Descriptor Ring
2023	 */
2024	for (i = 0; i < adapter->num_rx_queues; i++) {
2025		struct ixgbevf_ring *rx_ring = adapter->rx_ring[i];
2026
2027		ixgbevf_set_rx_buffer_len(adapter, rx_ring);
2028		ixgbevf_configure_rx_ring(adapter, rx_ring);
2029	}
2030}
2031
2032static int ixgbevf_vlan_rx_add_vid(struct net_device *netdev,
2033				   __be16 proto, u16 vid)
2034{
2035	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
2036	struct ixgbe_hw *hw = &adapter->hw;
2037	int err;
2038
2039	spin_lock_bh(&adapter->mbx_lock);
2040
2041	/* add VID to filter table */
2042	err = hw->mac.ops.set_vfta(hw, vid, 0, true);
2043
2044	spin_unlock_bh(&adapter->mbx_lock);
2045
2046	if (err) {
2047		netdev_err(netdev, "VF could not set VLAN %d\n", vid);
2048
2049		/* translate error return types so error makes sense */
2050		if (err == IXGBE_ERR_MBX)
2051			return -EIO;
2052
2053		if (err == IXGBE_ERR_INVALID_ARGUMENT)
2054			return -EACCES;
2055	}
2056
2057	set_bit(vid, adapter->active_vlans);
2058
2059	return err;
2060}
2061
2062static int ixgbevf_vlan_rx_kill_vid(struct net_device *netdev,
2063				    __be16 proto, u16 vid)
2064{
2065	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
2066	struct ixgbe_hw *hw = &adapter->hw;
2067	int err;
2068
2069	spin_lock_bh(&adapter->mbx_lock);
2070
2071	/* remove VID from filter table */
2072	err = hw->mac.ops.set_vfta(hw, vid, 0, false);
2073
2074	spin_unlock_bh(&adapter->mbx_lock);
2075
2076	if (err)
2077		netdev_err(netdev, "Could not remove VLAN %d\n", vid);
2078
2079	clear_bit(vid, adapter->active_vlans);
2080
2081	return err;
2082}
2083
2084static void ixgbevf_restore_vlan(struct ixgbevf_adapter *adapter)
2085{
2086	u16 vid;
2087
2088	for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID)
2089		ixgbevf_vlan_rx_add_vid(adapter->netdev,
2090					htons(ETH_P_8021Q), vid);
2091}
2092
2093static int ixgbevf_write_uc_addr_list(struct net_device *netdev)
2094{
2095	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
2096	struct ixgbe_hw *hw = &adapter->hw;
2097	int count = 0;
2098
 
 
 
 
 
2099	if (!netdev_uc_empty(netdev)) {
2100		struct netdev_hw_addr *ha;
2101
2102		netdev_for_each_uc_addr(ha, netdev) {
2103			hw->mac.ops.set_uc_addr(hw, ++count, ha->addr);
2104			udelay(200);
2105		}
2106	} else {
2107		/* If the list is empty then send message to PF driver to
2108		 * clear all MAC VLANs on this VF.
 
2109		 */
2110		hw->mac.ops.set_uc_addr(hw, 0, NULL);
2111	}
2112
2113	return count;
2114}
2115
2116/**
2117 * ixgbevf_set_rx_mode - Multicast and unicast set
2118 * @netdev: network interface device structure
2119 *
2120 * The set_rx_method entry point is called whenever the multicast address
2121 * list, unicast address list or the network interface flags are updated.
2122 * This routine is responsible for configuring the hardware for proper
2123 * multicast mode and configuring requested unicast filters.
2124 **/
2125static void ixgbevf_set_rx_mode(struct net_device *netdev)
2126{
2127	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
2128	struct ixgbe_hw *hw = &adapter->hw;
2129	unsigned int flags = netdev->flags;
2130	int xcast_mode;
2131
2132	/* request the most inclusive mode we need */
2133	if (flags & IFF_PROMISC)
2134		xcast_mode = IXGBEVF_XCAST_MODE_PROMISC;
2135	else if (flags & IFF_ALLMULTI)
2136		xcast_mode = IXGBEVF_XCAST_MODE_ALLMULTI;
2137	else if (flags & (IFF_BROADCAST | IFF_MULTICAST))
2138		xcast_mode = IXGBEVF_XCAST_MODE_MULTI;
2139	else
2140		xcast_mode = IXGBEVF_XCAST_MODE_NONE;
2141
2142	spin_lock_bh(&adapter->mbx_lock);
2143
2144	hw->mac.ops.update_xcast_mode(hw, xcast_mode);
2145
2146	/* reprogram multicast list */
2147	hw->mac.ops.update_mc_addr_list(hw, netdev);
2148
2149	ixgbevf_write_uc_addr_list(netdev);
2150
2151	spin_unlock_bh(&adapter->mbx_lock);
2152}
2153
2154static void ixgbevf_napi_enable_all(struct ixgbevf_adapter *adapter)
2155{
2156	int q_idx;
2157	struct ixgbevf_q_vector *q_vector;
2158	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
2159
2160	for (q_idx = 0; q_idx < q_vectors; q_idx++) {
2161		q_vector = adapter->q_vector[q_idx];
 
 
 
2162		napi_enable(&q_vector->napi);
2163	}
2164}
2165
2166static void ixgbevf_napi_disable_all(struct ixgbevf_adapter *adapter)
2167{
2168	int q_idx;
2169	struct ixgbevf_q_vector *q_vector;
2170	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
2171
2172	for (q_idx = 0; q_idx < q_vectors; q_idx++) {
2173		q_vector = adapter->q_vector[q_idx];
2174		napi_disable(&q_vector->napi);
 
 
 
 
 
 
2175	}
2176}
2177
2178static int ixgbevf_configure_dcb(struct ixgbevf_adapter *adapter)
2179{
2180	struct ixgbe_hw *hw = &adapter->hw;
2181	unsigned int def_q = 0;
2182	unsigned int num_tcs = 0;
2183	unsigned int num_rx_queues = adapter->num_rx_queues;
2184	unsigned int num_tx_queues = adapter->num_tx_queues;
2185	int err;
2186
2187	spin_lock_bh(&adapter->mbx_lock);
2188
2189	/* fetch queue configuration from the PF */
2190	err = ixgbevf_get_queues(hw, &num_tcs, &def_q);
2191
2192	spin_unlock_bh(&adapter->mbx_lock);
2193
2194	if (err)
2195		return err;
2196
2197	if (num_tcs > 1) {
2198		/* we need only one Tx queue */
2199		num_tx_queues = 1;
2200
2201		/* update default Tx ring register index */
2202		adapter->tx_ring[0]->reg_idx = def_q;
2203
2204		/* we need as many queues as traffic classes */
2205		num_rx_queues = num_tcs;
2206	}
2207
2208	/* if we have a bad config abort request queue reset */
2209	if ((adapter->num_rx_queues != num_rx_queues) ||
2210	    (adapter->num_tx_queues != num_tx_queues)) {
2211		/* force mailbox timeout to prevent further messages */
2212		hw->mbx.timeout = 0;
2213
2214		/* wait for watchdog to come around and bail us out */
2215		set_bit(__IXGBEVF_QUEUE_RESET_REQUESTED, &adapter->state);
2216	}
2217
2218	return 0;
2219}
2220
2221static void ixgbevf_configure(struct ixgbevf_adapter *adapter)
2222{
2223	ixgbevf_configure_dcb(adapter);
2224
2225	ixgbevf_set_rx_mode(adapter->netdev);
2226
2227	ixgbevf_restore_vlan(adapter);
2228	ixgbevf_ipsec_restore(adapter);
2229
2230	ixgbevf_configure_tx(adapter);
2231	ixgbevf_configure_rx(adapter);
2232}
2233
2234static void ixgbevf_save_reset_stats(struct ixgbevf_adapter *adapter)
2235{
2236	/* Only save pre-reset stats if there are some */
2237	if (adapter->stats.vfgprc || adapter->stats.vfgptc) {
2238		adapter->stats.saved_reset_vfgprc += adapter->stats.vfgprc -
2239			adapter->stats.base_vfgprc;
2240		adapter->stats.saved_reset_vfgptc += adapter->stats.vfgptc -
2241			adapter->stats.base_vfgptc;
2242		adapter->stats.saved_reset_vfgorc += adapter->stats.vfgorc -
2243			adapter->stats.base_vfgorc;
2244		adapter->stats.saved_reset_vfgotc += adapter->stats.vfgotc -
2245			adapter->stats.base_vfgotc;
2246		adapter->stats.saved_reset_vfmprc += adapter->stats.vfmprc -
2247			adapter->stats.base_vfmprc;
2248	}
2249}
2250
2251static void ixgbevf_init_last_counter_stats(struct ixgbevf_adapter *adapter)
2252{
2253	struct ixgbe_hw *hw = &adapter->hw;
2254
2255	adapter->stats.last_vfgprc = IXGBE_READ_REG(hw, IXGBE_VFGPRC);
2256	adapter->stats.last_vfgorc = IXGBE_READ_REG(hw, IXGBE_VFGORC_LSB);
2257	adapter->stats.last_vfgorc |=
2258		(((u64)(IXGBE_READ_REG(hw, IXGBE_VFGORC_MSB))) << 32);
2259	adapter->stats.last_vfgptc = IXGBE_READ_REG(hw, IXGBE_VFGPTC);
2260	adapter->stats.last_vfgotc = IXGBE_READ_REG(hw, IXGBE_VFGOTC_LSB);
2261	adapter->stats.last_vfgotc |=
2262		(((u64)(IXGBE_READ_REG(hw, IXGBE_VFGOTC_MSB))) << 32);
2263	adapter->stats.last_vfmprc = IXGBE_READ_REG(hw, IXGBE_VFMPRC);
2264
2265	adapter->stats.base_vfgprc = adapter->stats.last_vfgprc;
2266	adapter->stats.base_vfgorc = adapter->stats.last_vfgorc;
2267	adapter->stats.base_vfgptc = adapter->stats.last_vfgptc;
2268	adapter->stats.base_vfgotc = adapter->stats.last_vfgotc;
2269	adapter->stats.base_vfmprc = adapter->stats.last_vfmprc;
2270}
2271
2272static void ixgbevf_negotiate_api(struct ixgbevf_adapter *adapter)
2273{
2274	struct ixgbe_hw *hw = &adapter->hw;
2275	static const int api[] = {
2276		ixgbe_mbox_api_15,
2277		ixgbe_mbox_api_14,
2278		ixgbe_mbox_api_13,
2279		ixgbe_mbox_api_12,
2280		ixgbe_mbox_api_11,
2281		ixgbe_mbox_api_10,
2282		ixgbe_mbox_api_unknown
2283	};
2284	int err, idx = 0;
2285
2286	spin_lock_bh(&adapter->mbx_lock);
2287
2288	while (api[idx] != ixgbe_mbox_api_unknown) {
2289		err = hw->mac.ops.negotiate_api_version(hw, api[idx]);
2290		if (!err)
2291			break;
2292		idx++;
2293	}
2294
2295	if (hw->api_version >= ixgbe_mbox_api_15) {
2296		hw->mbx.ops.init_params(hw);
2297		memcpy(&hw->mbx.ops, &ixgbevf_mbx_ops,
2298		       sizeof(struct ixgbe_mbx_operations));
2299	}
2300
2301	spin_unlock_bh(&adapter->mbx_lock);
2302}
2303
2304static void ixgbevf_up_complete(struct ixgbevf_adapter *adapter)
2305{
2306	struct net_device *netdev = adapter->netdev;
2307	struct pci_dev *pdev = adapter->pdev;
2308	struct ixgbe_hw *hw = &adapter->hw;
2309	bool state;
2310
2311	ixgbevf_configure_msix(adapter);
2312
2313	spin_lock_bh(&adapter->mbx_lock);
2314
2315	if (is_valid_ether_addr(hw->mac.addr))
2316		hw->mac.ops.set_rar(hw, 0, hw->mac.addr, 0);
2317	else
2318		hw->mac.ops.set_rar(hw, 0, hw->mac.perm_addr, 0);
2319
2320	spin_unlock_bh(&adapter->mbx_lock);
2321
2322	state = adapter->link_state;
2323	hw->mac.ops.get_link_state(hw, &adapter->link_state);
2324	if (state && state != adapter->link_state)
2325		dev_info(&pdev->dev, "VF is administratively disabled\n");
2326
2327	smp_mb__before_atomic();
2328	clear_bit(__IXGBEVF_DOWN, &adapter->state);
2329	ixgbevf_napi_enable_all(adapter);
2330
2331	/* clear any pending interrupts, may auto mask */
2332	IXGBE_READ_REG(hw, IXGBE_VTEICR);
2333	ixgbevf_irq_enable(adapter);
2334
2335	/* enable transmits */
2336	netif_tx_start_all_queues(netdev);
2337
2338	ixgbevf_save_reset_stats(adapter);
2339	ixgbevf_init_last_counter_stats(adapter);
2340
2341	hw->mac.get_link_status = 1;
2342	mod_timer(&adapter->service_timer, jiffies);
2343}
2344
2345void ixgbevf_up(struct ixgbevf_adapter *adapter)
2346{
 
 
2347	ixgbevf_configure(adapter);
2348
2349	ixgbevf_up_complete(adapter);
 
 
 
 
 
2350}
2351
2352/**
2353 * ixgbevf_clean_rx_ring - Free Rx Buffers per Queue
2354 * @rx_ring: ring to free buffers from
2355 **/
2356static void ixgbevf_clean_rx_ring(struct ixgbevf_ring *rx_ring)
2357{
2358	u16 i = rx_ring->next_to_clean;
 
2359
2360	/* Free Rx ring sk_buff */
2361	if (rx_ring->skb) {
2362		dev_kfree_skb(rx_ring->skb);
2363		rx_ring->skb = NULL;
2364	}
2365
2366	/* Free all the Rx ring pages */
2367	while (i != rx_ring->next_to_alloc) {
2368		struct ixgbevf_rx_buffer *rx_buffer;
2369
2370		rx_buffer = &rx_ring->rx_buffer_info[i];
2371
2372		/* Invalidate cache lines that may have been written to by
2373		 * device so that we avoid corrupting memory.
2374		 */
2375		dma_sync_single_range_for_cpu(rx_ring->dev,
2376					      rx_buffer->dma,
2377					      rx_buffer->page_offset,
2378					      ixgbevf_rx_bufsz(rx_ring),
2379					      DMA_FROM_DEVICE);
2380
2381		/* free resources associated with mapping */
2382		dma_unmap_page_attrs(rx_ring->dev,
2383				     rx_buffer->dma,
2384				     ixgbevf_rx_pg_size(rx_ring),
2385				     DMA_FROM_DEVICE,
2386				     IXGBEVF_RX_DMA_ATTR);
2387
2388		__page_frag_cache_drain(rx_buffer->page,
2389					rx_buffer->pagecnt_bias);
2390
2391		i++;
2392		if (i == rx_ring->count)
2393			i = 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2394	}
2395
2396	rx_ring->next_to_alloc = 0;
2397	rx_ring->next_to_clean = 0;
2398	rx_ring->next_to_use = 0;
 
 
2399}
2400
2401/**
2402 * ixgbevf_clean_tx_ring - Free Tx Buffers
2403 * @tx_ring: ring to be cleaned
2404 **/
2405static void ixgbevf_clean_tx_ring(struct ixgbevf_ring *tx_ring)
2406{
2407	u16 i = tx_ring->next_to_clean;
2408	struct ixgbevf_tx_buffer *tx_buffer = &tx_ring->tx_buffer_info[i];
 
2409
2410	while (i != tx_ring->next_to_use) {
2411		union ixgbe_adv_tx_desc *eop_desc, *tx_desc;
2412
2413		/* Free all the Tx ring sk_buffs */
2414		if (ring_is_xdp(tx_ring))
2415			page_frag_free(tx_buffer->data);
2416		else
2417			dev_kfree_skb_any(tx_buffer->skb);
2418
2419		/* unmap skb header data */
2420		dma_unmap_single(tx_ring->dev,
2421				 dma_unmap_addr(tx_buffer, dma),
2422				 dma_unmap_len(tx_buffer, len),
2423				 DMA_TO_DEVICE);
2424
2425		/* check for eop_desc to determine the end of the packet */
2426		eop_desc = tx_buffer->next_to_watch;
2427		tx_desc = IXGBEVF_TX_DESC(tx_ring, i);
2428
2429		/* unmap remaining buffers */
2430		while (tx_desc != eop_desc) {
2431			tx_buffer++;
2432			tx_desc++;
2433			i++;
2434			if (unlikely(i == tx_ring->count)) {
2435				i = 0;
2436				tx_buffer = tx_ring->tx_buffer_info;
2437				tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
2438			}
2439
2440			/* unmap any remaining paged data */
2441			if (dma_unmap_len(tx_buffer, len))
2442				dma_unmap_page(tx_ring->dev,
2443					       dma_unmap_addr(tx_buffer, dma),
2444					       dma_unmap_len(tx_buffer, len),
2445					       DMA_TO_DEVICE);
2446		}
2447
2448		/* move us one more past the eop_desc for start of next pkt */
2449		tx_buffer++;
2450		i++;
2451		if (unlikely(i == tx_ring->count)) {
2452			i = 0;
2453			tx_buffer = tx_ring->tx_buffer_info;
2454		}
2455	}
2456
2457	/* reset next_to_use and next_to_clean */
2458	tx_ring->next_to_use = 0;
2459	tx_ring->next_to_clean = 0;
2460
 
2461}
2462
2463/**
2464 * ixgbevf_clean_all_rx_rings - Free Rx Buffers for all queues
2465 * @adapter: board private structure
2466 **/
2467static void ixgbevf_clean_all_rx_rings(struct ixgbevf_adapter *adapter)
2468{
2469	int i;
2470
2471	for (i = 0; i < adapter->num_rx_queues; i++)
2472		ixgbevf_clean_rx_ring(adapter->rx_ring[i]);
2473}
2474
2475/**
2476 * ixgbevf_clean_all_tx_rings - Free Tx Buffers for all queues
2477 * @adapter: board private structure
2478 **/
2479static void ixgbevf_clean_all_tx_rings(struct ixgbevf_adapter *adapter)
2480{
2481	int i;
2482
2483	for (i = 0; i < adapter->num_tx_queues; i++)
2484		ixgbevf_clean_tx_ring(adapter->tx_ring[i]);
2485	for (i = 0; i < adapter->num_xdp_queues; i++)
2486		ixgbevf_clean_tx_ring(adapter->xdp_ring[i]);
2487}
2488
2489void ixgbevf_down(struct ixgbevf_adapter *adapter)
2490{
2491	struct net_device *netdev = adapter->netdev;
2492	struct ixgbe_hw *hw = &adapter->hw;
2493	int i;
2494
2495	/* signal that we are down to the interrupt handler */
2496	if (test_and_set_bit(__IXGBEVF_DOWN, &adapter->state))
2497		return; /* do nothing if already down */
2498
2499	/* disable all enabled Rx queues */
2500	for (i = 0; i < adapter->num_rx_queues; i++)
2501		ixgbevf_disable_rx_queue(adapter, adapter->rx_ring[i]);
2502
2503	usleep_range(10000, 20000);
2504
2505	netif_tx_stop_all_queues(netdev);
2506
2507	/* call carrier off first to avoid false dev_watchdog timeouts */
2508	netif_carrier_off(netdev);
2509	netif_tx_disable(netdev);
2510
2511	ixgbevf_irq_disable(adapter);
2512
2513	ixgbevf_napi_disable_all(adapter);
2514
2515	del_timer_sync(&adapter->service_timer);
 
 
 
 
 
2516
2517	/* disable transmits in the hardware now that interrupts are off */
2518	for (i = 0; i < adapter->num_tx_queues; i++) {
2519		u8 reg_idx = adapter->tx_ring[i]->reg_idx;
2520
2521		IXGBE_WRITE_REG(hw, IXGBE_VFTXDCTL(reg_idx),
2522				IXGBE_TXDCTL_SWFLSH);
2523	}
2524
2525	for (i = 0; i < adapter->num_xdp_queues; i++) {
2526		u8 reg_idx = adapter->xdp_ring[i]->reg_idx;
2527
2528		IXGBE_WRITE_REG(hw, IXGBE_VFTXDCTL(reg_idx),
2529				IXGBE_TXDCTL_SWFLSH);
2530	}
2531
2532	if (!pci_channel_offline(adapter->pdev))
2533		ixgbevf_reset(adapter);
2534
2535	ixgbevf_clean_all_tx_rings(adapter);
2536	ixgbevf_clean_all_rx_rings(adapter);
2537}
2538
2539void ixgbevf_reinit_locked(struct ixgbevf_adapter *adapter)
2540{
 
 
2541	while (test_and_set_bit(__IXGBEVF_RESETTING, &adapter->state))
2542		msleep(1);
2543
2544	ixgbevf_down(adapter);
2545	pci_set_master(adapter->pdev);
2546	ixgbevf_up(adapter);
2547
2548	clear_bit(__IXGBEVF_RESETTING, &adapter->state);
2549}
2550
2551void ixgbevf_reset(struct ixgbevf_adapter *adapter)
2552{
2553	struct ixgbe_hw *hw = &adapter->hw;
2554	struct net_device *netdev = adapter->netdev;
2555
2556	if (hw->mac.ops.reset_hw(hw)) {
2557		hw_dbg(hw, "PF still resetting\n");
2558	} else {
2559		hw->mac.ops.init_hw(hw);
2560		ixgbevf_negotiate_api(adapter);
2561	}
2562
2563	if (is_valid_ether_addr(adapter->hw.mac.addr)) {
2564		eth_hw_addr_set(netdev, adapter->hw.mac.addr);
2565		ether_addr_copy(netdev->perm_addr, adapter->hw.mac.addr);
 
 
2566	}
2567
2568	adapter->last_reset = jiffies;
2569}
2570
2571static int ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
2572					int vectors)
2573{
2574	int vector_threshold;
2575
2576	/* We'll want at least 2 (vector_threshold):
2577	 * 1) TxQ[0] + RxQ[0] handler
2578	 * 2) Other (Link Status Change, etc.)
2579	 */
2580	vector_threshold = MIN_MSIX_COUNT;
2581
2582	/* The more we get, the more we will assign to Tx/Rx Cleanup
2583	 * for the separate queues...where Rx Cleanup >= Tx Cleanup.
2584	 * Right now, we simply care about how many we'll get; we'll
2585	 * set them up later while requesting irq's.
2586	 */
2587	vectors = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
2588					vector_threshold, vectors);
2589
2590	if (vectors < 0) {
2591		dev_err(&adapter->pdev->dev,
2592			"Unable to allocate MSI-X interrupts\n");
2593		kfree(adapter->msix_entries);
2594		adapter->msix_entries = NULL;
2595		return vectors;
2596	}
2597
2598	/* Adjust for only the vectors we'll use, which is minimum
2599	 * of max_msix_q_vectors + NON_Q_VECTORS, or the number of
2600	 * vectors we were allocated.
2601	 */
2602	adapter->num_msix_vectors = vectors;
2603
2604	return 0;
2605}
2606
2607/**
2608 * ixgbevf_set_num_queues - Allocate queues for device, feature dependent
2609 * @adapter: board private structure to initialize
2610 *
2611 * This is the top level queue allocation routine.  The order here is very
2612 * important, starting with the "most" number of features turned on at once,
2613 * and ending with the smallest set of features.  This way large combinations
2614 * can be allocated if they're turned on, and smaller combinations are the
2615 * fall through conditions.
2616 *
2617 **/
2618static void ixgbevf_set_num_queues(struct ixgbevf_adapter *adapter)
2619{
2620	struct ixgbe_hw *hw = &adapter->hw;
2621	unsigned int def_q = 0;
2622	unsigned int num_tcs = 0;
2623	int err;
2624
2625	/* Start with base case */
2626	adapter->num_rx_queues = 1;
2627	adapter->num_tx_queues = 1;
2628	adapter->num_xdp_queues = 0;
2629
2630	spin_lock_bh(&adapter->mbx_lock);
2631
2632	/* fetch queue configuration from the PF */
2633	err = ixgbevf_get_queues(hw, &num_tcs, &def_q);
2634
2635	spin_unlock_bh(&adapter->mbx_lock);
2636
2637	if (err)
2638		return;
2639
2640	/* we need as many queues as traffic classes */
2641	if (num_tcs > 1) {
2642		adapter->num_rx_queues = num_tcs;
2643	} else {
2644		u16 rss = min_t(u16, num_online_cpus(), IXGBEVF_MAX_RSS_QUEUES);
2645
2646		switch (hw->api_version) {
2647		case ixgbe_mbox_api_11:
2648		case ixgbe_mbox_api_12:
2649		case ixgbe_mbox_api_13:
2650		case ixgbe_mbox_api_14:
2651		case ixgbe_mbox_api_15:
2652			if (adapter->xdp_prog &&
2653			    hw->mac.max_tx_queues == rss)
2654				rss = rss > 3 ? 2 : 1;
2655
2656			adapter->num_rx_queues = rss;
2657			adapter->num_tx_queues = rss;
2658			adapter->num_xdp_queues = adapter->xdp_prog ? rss : 0;
2659			break;
2660		default:
2661			break;
2662		}
2663	}
2664}
2665
2666/**
2667 * ixgbevf_set_interrupt_capability - set MSI-X or FAIL if not supported
2668 * @adapter: board private structure to initialize
2669 *
2670 * Attempt to configure the interrupts using the best available
2671 * capabilities of the hardware and the kernel.
 
2672 **/
2673static int ixgbevf_set_interrupt_capability(struct ixgbevf_adapter *adapter)
2674{
2675	int vector, v_budget;
2676
2677	/* It's easy to be greedy for MSI-X vectors, but it really
2678	 * doesn't do us much good if we have a lot more vectors
2679	 * than CPU's.  So let's be conservative and only ask for
2680	 * (roughly) the same number of vectors as there are CPU's.
2681	 * The default is to use pairs of vectors.
2682	 */
2683	v_budget = max(adapter->num_rx_queues, adapter->num_tx_queues);
2684	v_budget = min_t(int, v_budget, num_online_cpus());
2685	v_budget += NON_Q_VECTORS;
2686
2687	adapter->msix_entries = kcalloc(v_budget,
2688					sizeof(struct msix_entry), GFP_KERNEL);
2689	if (!adapter->msix_entries)
2690		return -ENOMEM;
2691
2692	for (vector = 0; vector < v_budget; vector++)
2693		adapter->msix_entries[vector].entry = vector;
2694
2695	/* A failure in MSI-X entry allocation isn't fatal, but the VF driver
2696	 * does not support any other modes, so we will simply fail here. Note
2697	 * that we clean up the msix_entries pointer else-where.
2698	 */
2699	return ixgbevf_acquire_msix_vectors(adapter, v_budget);
2700}
2701
2702static void ixgbevf_add_ring(struct ixgbevf_ring *ring,
2703			     struct ixgbevf_ring_container *head)
2704{
2705	ring->next = head->ring;
2706	head->ring = ring;
2707	head->count++;
2708}
2709
2710/**
2711 * ixgbevf_alloc_q_vector - Allocate memory for a single interrupt vector
2712 * @adapter: board private structure to initialize
2713 * @v_idx: index of vector in adapter struct
2714 * @txr_count: number of Tx rings for q vector
2715 * @txr_idx: index of first Tx ring to assign
2716 * @xdp_count: total number of XDP rings to allocate
2717 * @xdp_idx: index of first XDP ring to allocate
2718 * @rxr_count: number of Rx rings for q vector
2719 * @rxr_idx: index of first Rx ring to assign
2720 *
2721 * We allocate one q_vector.  If allocation fails we return -ENOMEM.
2722 **/
2723static int ixgbevf_alloc_q_vector(struct ixgbevf_adapter *adapter, int v_idx,
2724				  int txr_count, int txr_idx,
2725				  int xdp_count, int xdp_idx,
2726				  int rxr_count, int rxr_idx)
2727{
2728	struct ixgbevf_q_vector *q_vector;
2729	int reg_idx = txr_idx + xdp_idx;
2730	struct ixgbevf_ring *ring;
2731	int ring_count, size;
2732
2733	ring_count = txr_count + xdp_count + rxr_count;
2734	size = sizeof(*q_vector) + (sizeof(*ring) * ring_count);
2735
2736	/* allocate q_vector and rings */
2737	q_vector = kzalloc(size, GFP_KERNEL);
2738	if (!q_vector)
2739		return -ENOMEM;
2740
2741	/* initialize NAPI */
2742	netif_napi_add(adapter->netdev, &q_vector->napi, ixgbevf_poll);
2743
2744	/* tie q_vector and adapter together */
2745	adapter->q_vector[v_idx] = q_vector;
2746	q_vector->adapter = adapter;
2747	q_vector->v_idx = v_idx;
2748
2749	/* initialize pointer to rings */
2750	ring = q_vector->ring;
 
 
2751
2752	while (txr_count) {
2753		/* assign generic ring traits */
2754		ring->dev = &adapter->pdev->dev;
2755		ring->netdev = adapter->netdev;
2756
2757		/* configure backlink on ring */
2758		ring->q_vector = q_vector;
2759
2760		/* update q_vector Tx values */
2761		ixgbevf_add_ring(ring, &q_vector->tx);
2762
2763		/* apply Tx specific ring traits */
2764		ring->count = adapter->tx_ring_count;
2765		ring->queue_index = txr_idx;
2766		ring->reg_idx = reg_idx;
2767
2768		/* assign ring to adapter */
2769		adapter->tx_ring[txr_idx] = ring;
2770
2771		/* update count and index */
2772		txr_count--;
2773		txr_idx++;
2774		reg_idx++;
2775
2776		/* push pointer to next ring */
2777		ring++;
2778	}
2779
2780	while (xdp_count) {
2781		/* assign generic ring traits */
2782		ring->dev = &adapter->pdev->dev;
2783		ring->netdev = adapter->netdev;
2784
2785		/* configure backlink on ring */
2786		ring->q_vector = q_vector;
2787
2788		/* update q_vector Tx values */
2789		ixgbevf_add_ring(ring, &q_vector->tx);
2790
2791		/* apply Tx specific ring traits */
2792		ring->count = adapter->tx_ring_count;
2793		ring->queue_index = xdp_idx;
2794		ring->reg_idx = reg_idx;
2795		set_ring_xdp(ring);
2796
2797		/* assign ring to adapter */
2798		adapter->xdp_ring[xdp_idx] = ring;
2799
2800		/* update count and index */
2801		xdp_count--;
2802		xdp_idx++;
2803		reg_idx++;
2804
2805		/* push pointer to next ring */
2806		ring++;
2807	}
2808
2809	while (rxr_count) {
2810		/* assign generic ring traits */
2811		ring->dev = &adapter->pdev->dev;
2812		ring->netdev = adapter->netdev;
2813
2814		/* configure backlink on ring */
2815		ring->q_vector = q_vector;
2816
2817		/* update q_vector Rx values */
2818		ixgbevf_add_ring(ring, &q_vector->rx);
2819
2820		/* apply Rx specific ring traits */
2821		ring->count = adapter->rx_ring_count;
2822		ring->queue_index = rxr_idx;
2823		ring->reg_idx = rxr_idx;
2824
2825		/* assign ring to adapter */
2826		adapter->rx_ring[rxr_idx] = ring;
2827
2828		/* update count and index */
2829		rxr_count--;
2830		rxr_idx++;
2831
2832		/* push pointer to next ring */
2833		ring++;
 
 
2834	}
2835
2836	return 0;
 
 
 
 
2837}
2838
2839/**
2840 * ixgbevf_free_q_vector - Free memory allocated for specific interrupt vector
2841 * @adapter: board private structure to initialize
2842 * @v_idx: index of vector in adapter struct
2843 *
2844 * This function frees the memory allocated to the q_vector.  In addition if
2845 * NAPI is enabled it will delete any references to the NAPI struct prior
2846 * to freeing the q_vector.
2847 **/
2848static void ixgbevf_free_q_vector(struct ixgbevf_adapter *adapter, int v_idx)
2849{
2850	struct ixgbevf_q_vector *q_vector = adapter->q_vector[v_idx];
2851	struct ixgbevf_ring *ring;
 
2852
2853	ixgbevf_for_each_ring(ring, q_vector->tx) {
2854		if (ring_is_xdp(ring))
2855			adapter->xdp_ring[ring->queue_index] = NULL;
2856		else
2857			adapter->tx_ring[ring->queue_index] = NULL;
 
 
 
 
 
 
 
 
 
 
 
 
 
2858	}
2859
2860	ixgbevf_for_each_ring(ring, q_vector->rx)
2861		adapter->rx_ring[ring->queue_index] = NULL;
2862
2863	adapter->q_vector[v_idx] = NULL;
2864	netif_napi_del(&q_vector->napi);
 
2865
2866	/* ixgbevf_get_stats() might access the rings on this vector,
2867	 * we must wait a grace period before freeing it.
2868	 */
2869	kfree_rcu(q_vector, rcu);
 
 
 
 
2870}
2871
2872/**
2873 * ixgbevf_alloc_q_vectors - Allocate memory for interrupt vectors
2874 * @adapter: board private structure to initialize
2875 *
2876 * We allocate one q_vector per queue interrupt.  If allocation fails we
2877 * return -ENOMEM.
2878 **/
2879static int ixgbevf_alloc_q_vectors(struct ixgbevf_adapter *adapter)
2880{
2881	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
2882	int rxr_remaining = adapter->num_rx_queues;
2883	int txr_remaining = adapter->num_tx_queues;
2884	int xdp_remaining = adapter->num_xdp_queues;
2885	int rxr_idx = 0, txr_idx = 0, xdp_idx = 0, v_idx = 0;
2886	int err;
2887
2888	if (q_vectors >= (rxr_remaining + txr_remaining + xdp_remaining)) {
2889		for (; rxr_remaining; v_idx++, q_vectors--) {
2890			int rqpv = DIV_ROUND_UP(rxr_remaining, q_vectors);
2891
2892			err = ixgbevf_alloc_q_vector(adapter, v_idx,
2893						     0, 0, 0, 0, rqpv, rxr_idx);
2894			if (err)
2895				goto err_out;
2896
2897			/* update counts and index */
2898			rxr_remaining -= rqpv;
2899			rxr_idx += rqpv;
2900		}
2901	}
2902
2903	for (; q_vectors; v_idx++, q_vectors--) {
2904		int rqpv = DIV_ROUND_UP(rxr_remaining, q_vectors);
2905		int tqpv = DIV_ROUND_UP(txr_remaining, q_vectors);
2906		int xqpv = DIV_ROUND_UP(xdp_remaining, q_vectors);
2907
2908		err = ixgbevf_alloc_q_vector(adapter, v_idx,
2909					     tqpv, txr_idx,
2910					     xqpv, xdp_idx,
2911					     rqpv, rxr_idx);
2912
2913		if (err)
 
 
2914			goto err_out;
2915
2916		/* update counts and index */
2917		rxr_remaining -= rqpv;
2918		rxr_idx += rqpv;
2919		txr_remaining -= tqpv;
2920		txr_idx += tqpv;
2921		xdp_remaining -= xqpv;
2922		xdp_idx += xqpv;
2923	}
2924
2925	return 0;
2926
2927err_out:
2928	while (v_idx) {
2929		v_idx--;
2930		ixgbevf_free_q_vector(adapter, v_idx);
 
 
 
 
 
 
2931	}
2932
2933	return -ENOMEM;
2934}
2935
2936/**
2937 * ixgbevf_free_q_vectors - Free memory allocated for interrupt vectors
2938 * @adapter: board private structure to initialize
2939 *
2940 * This function frees the memory allocated to the q_vectors.  In addition if
2941 * NAPI is enabled it will delete any references to the NAPI struct prior
2942 * to freeing the q_vector.
2943 **/
2944static void ixgbevf_free_q_vectors(struct ixgbevf_adapter *adapter)
2945{
2946	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
 
 
 
2947
2948	while (q_vectors) {
2949		q_vectors--;
2950		ixgbevf_free_q_vector(adapter, q_vectors);
 
 
 
2951	}
2952}
2953
2954/**
2955 * ixgbevf_reset_interrupt_capability - Reset MSIX setup
2956 * @adapter: board private structure
2957 *
2958 **/
2959static void ixgbevf_reset_interrupt_capability(struct ixgbevf_adapter *adapter)
2960{
2961	if (!adapter->msix_entries)
2962		return;
2963
2964	pci_disable_msix(adapter->pdev);
2965	kfree(adapter->msix_entries);
2966	adapter->msix_entries = NULL;
2967}
2968
2969/**
2970 * ixgbevf_init_interrupt_scheme - Determine if MSIX is supported and init
2971 * @adapter: board private structure to initialize
2972 *
2973 **/
2974static int ixgbevf_init_interrupt_scheme(struct ixgbevf_adapter *adapter)
2975{
2976	int err;
2977
2978	/* Number of supported queues */
2979	ixgbevf_set_num_queues(adapter);
2980
2981	err = ixgbevf_set_interrupt_capability(adapter);
2982	if (err) {
2983		hw_dbg(&adapter->hw,
2984		       "Unable to setup interrupt capabilities\n");
2985		goto err_set_interrupt;
2986	}
2987
2988	err = ixgbevf_alloc_q_vectors(adapter);
2989	if (err) {
2990		hw_dbg(&adapter->hw, "Unable to allocate memory for queue vectors\n");
 
2991		goto err_alloc_q_vectors;
2992	}
2993
2994	hw_dbg(&adapter->hw, "Multiqueue %s: Rx Queue count = %u, Tx Queue count = %u XDP Queue count %u\n",
2995	       (adapter->num_rx_queues > 1) ? "Enabled" : "Disabled",
2996	       adapter->num_rx_queues, adapter->num_tx_queues,
2997	       adapter->num_xdp_queues);
 
 
 
 
 
 
2998
2999	set_bit(__IXGBEVF_DOWN, &adapter->state);
3000
3001	return 0;
 
 
3002err_alloc_q_vectors:
3003	ixgbevf_reset_interrupt_capability(adapter);
3004err_set_interrupt:
3005	return err;
3006}
3007
3008/**
3009 * ixgbevf_clear_interrupt_scheme - Clear the current interrupt scheme settings
3010 * @adapter: board private structure to clear interrupt scheme on
3011 *
3012 * We go through and clear interrupt specific resources and reset the structure
3013 * to pre-load conditions
3014 **/
3015static void ixgbevf_clear_interrupt_scheme(struct ixgbevf_adapter *adapter)
3016{
 
 
 
 
 
 
 
 
 
 
 
3017	adapter->num_tx_queues = 0;
3018	adapter->num_xdp_queues = 0;
3019	adapter->num_rx_queues = 0;
3020
3021	ixgbevf_free_q_vectors(adapter);
3022	ixgbevf_reset_interrupt_capability(adapter);
3023}
3024
3025/**
3026 * ixgbevf_sw_init - Initialize general software structures
 
3027 * @adapter: board private structure to initialize
3028 *
3029 * ixgbevf_sw_init initializes the Adapter private data structure.
3030 * Fields are initialized based on PCI device information and
3031 * OS network device settings (MTU size).
3032 **/
3033static int ixgbevf_sw_init(struct ixgbevf_adapter *adapter)
3034{
3035	struct ixgbe_hw *hw = &adapter->hw;
3036	struct pci_dev *pdev = adapter->pdev;
3037	struct net_device *netdev = adapter->netdev;
3038	int err;
3039
3040	/* PCI config space info */
 
3041	hw->vendor_id = pdev->vendor;
3042	hw->device_id = pdev->device;
3043	hw->revision_id = pdev->revision;
3044	hw->subsystem_vendor_id = pdev->subsystem_vendor;
3045	hw->subsystem_device_id = pdev->subsystem_device;
3046
3047	hw->mbx.ops.init_params(hw);
3048
3049	if (hw->mac.type >= ixgbe_mac_X550_vf) {
3050		err = ixgbevf_init_rss_key(adapter);
3051		if (err)
3052			goto out;
3053	}
3054
3055	/* assume legacy case in which PF would only give VF 2 queues */
3056	hw->mac.max_tx_queues = 2;
3057	hw->mac.max_rx_queues = 2;
3058
3059	/* lock to protect mailbox accesses */
3060	spin_lock_init(&adapter->mbx_lock);
3061
3062	err = hw->mac.ops.reset_hw(hw);
3063	if (err) {
3064		dev_info(&pdev->dev,
3065			 "PF still in reset state.  Is the PF interface up?\n");
3066	} else {
3067		err = hw->mac.ops.init_hw(hw);
3068		if (err) {
3069			pr_err("init_shared_code failed: %d\n", err);
3070			goto out;
3071		}
3072		ixgbevf_negotiate_api(adapter);
3073		err = hw->mac.ops.get_mac_addr(hw, hw->mac.addr);
3074		if (err)
3075			dev_info(&pdev->dev, "Error reading MAC address\n");
3076		else if (is_zero_ether_addr(adapter->hw.mac.addr))
3077			dev_info(&pdev->dev,
3078				 "MAC address not assigned by administrator.\n");
3079		eth_hw_addr_set(netdev, hw->mac.addr);
3080	}
3081
3082	if (!is_valid_ether_addr(netdev->dev_addr)) {
3083		dev_info(&pdev->dev, "Assigning random MAC address\n");
3084		eth_hw_addr_random(netdev);
3085		ether_addr_copy(hw->mac.addr, netdev->dev_addr);
3086		ether_addr_copy(hw->mac.perm_addr, netdev->dev_addr);
3087	}
3088
3089	/* Enable dynamic interrupt throttling rates */
3090	adapter->rx_itr_setting = 1;
3091	adapter->tx_itr_setting = 1;
3092
3093	/* set default ring sizes */
3094	adapter->tx_ring_count = IXGBEVF_DEFAULT_TXD;
3095	adapter->rx_ring_count = IXGBEVF_DEFAULT_RXD;
3096
3097	adapter->link_state = true;
3098
3099	set_bit(__IXGBEVF_DOWN, &adapter->state);
3100	return 0;
3101
3102out:
3103	return err;
3104}
3105
3106#define UPDATE_VF_COUNTER_32bit(reg, last_counter, counter)	\
3107	{							\
3108		u32 current_counter = IXGBE_READ_REG(hw, reg);	\
3109		if (current_counter < last_counter)		\
3110			counter += 0x100000000LL;		\
3111		last_counter = current_counter;			\
3112		counter &= 0xFFFFFFFF00000000LL;		\
3113		counter |= current_counter;			\
3114	}
3115
3116#define UPDATE_VF_COUNTER_36bit(reg_lsb, reg_msb, last_counter, counter) \
3117	{								 \
3118		u64 current_counter_lsb = IXGBE_READ_REG(hw, reg_lsb);	 \
3119		u64 current_counter_msb = IXGBE_READ_REG(hw, reg_msb);	 \
3120		u64 current_counter = (current_counter_msb << 32) |	 \
3121			current_counter_lsb;				 \
3122		if (current_counter < last_counter)			 \
3123			counter += 0x1000000000LL;			 \
3124		last_counter = current_counter;				 \
3125		counter &= 0xFFFFFFF000000000LL;			 \
3126		counter |= current_counter;				 \
3127	}
3128/**
3129 * ixgbevf_update_stats - Update the board statistics counters.
3130 * @adapter: board private structure
3131 **/
3132void ixgbevf_update_stats(struct ixgbevf_adapter *adapter)
3133{
3134	struct ixgbe_hw *hw = &adapter->hw;
3135	u64 alloc_rx_page_failed = 0, alloc_rx_buff_failed = 0;
3136	u64 alloc_rx_page = 0, hw_csum_rx_error = 0;
3137	int i;
3138
3139	if (test_bit(__IXGBEVF_DOWN, &adapter->state) ||
3140	    test_bit(__IXGBEVF_RESETTING, &adapter->state))
3141		return;
3142
3143	UPDATE_VF_COUNTER_32bit(IXGBE_VFGPRC, adapter->stats.last_vfgprc,
3144				adapter->stats.vfgprc);
3145	UPDATE_VF_COUNTER_32bit(IXGBE_VFGPTC, adapter->stats.last_vfgptc,
3146				adapter->stats.vfgptc);
3147	UPDATE_VF_COUNTER_36bit(IXGBE_VFGORC_LSB, IXGBE_VFGORC_MSB,
3148				adapter->stats.last_vfgorc,
3149				adapter->stats.vfgorc);
3150	UPDATE_VF_COUNTER_36bit(IXGBE_VFGOTC_LSB, IXGBE_VFGOTC_MSB,
3151				adapter->stats.last_vfgotc,
3152				adapter->stats.vfgotc);
3153	UPDATE_VF_COUNTER_32bit(IXGBE_VFMPRC, adapter->stats.last_vfmprc,
3154				adapter->stats.vfmprc);
3155
3156	for (i = 0;  i  < adapter->num_rx_queues;  i++) {
3157		struct ixgbevf_ring *rx_ring = adapter->rx_ring[i];
3158
3159		hw_csum_rx_error += rx_ring->rx_stats.csum_err;
3160		alloc_rx_page_failed += rx_ring->rx_stats.alloc_rx_page_failed;
3161		alloc_rx_buff_failed += rx_ring->rx_stats.alloc_rx_buff_failed;
3162		alloc_rx_page += rx_ring->rx_stats.alloc_rx_page;
3163	}
3164
3165	adapter->hw_csum_rx_error = hw_csum_rx_error;
3166	adapter->alloc_rx_page_failed = alloc_rx_page_failed;
3167	adapter->alloc_rx_buff_failed = alloc_rx_buff_failed;
3168	adapter->alloc_rx_page = alloc_rx_page;
3169}
3170
3171/**
3172 * ixgbevf_service_timer - Timer Call-back
3173 * @t: pointer to timer_list struct
3174 **/
3175static void ixgbevf_service_timer(struct timer_list *t)
3176{
3177	struct ixgbevf_adapter *adapter = from_timer(adapter, t,
3178						     service_timer);
3179
3180	/* Reset the timer */
3181	mod_timer(&adapter->service_timer, (HZ * 2) + jiffies);
3182
3183	ixgbevf_service_event_schedule(adapter);
3184}
3185
3186static void ixgbevf_reset_subtask(struct ixgbevf_adapter *adapter)
3187{
3188	if (!test_and_clear_bit(__IXGBEVF_RESET_REQUESTED, &adapter->state))
3189		return;
3190
3191	rtnl_lock();
3192	/* If we're already down or resetting, just bail */
3193	if (test_bit(__IXGBEVF_DOWN, &adapter->state) ||
3194	    test_bit(__IXGBEVF_REMOVING, &adapter->state) ||
3195	    test_bit(__IXGBEVF_RESETTING, &adapter->state)) {
3196		rtnl_unlock();
3197		return;
3198	}
3199
3200	adapter->tx_timeout_count++;
3201
3202	ixgbevf_reinit_locked(adapter);
3203	rtnl_unlock();
3204}
3205
3206/**
3207 * ixgbevf_check_hang_subtask - check for hung queues and dropped interrupts
3208 * @adapter: pointer to the device adapter structure
3209 *
3210 * This function serves two purposes.  First it strobes the interrupt lines
3211 * in order to make certain interrupts are occurring.  Secondly it sets the
3212 * bits needed to check for TX hangs.  As a result we should immediately
3213 * determine if a hang has occurred.
3214 **/
3215static void ixgbevf_check_hang_subtask(struct ixgbevf_adapter *adapter)
3216{
 
3217	struct ixgbe_hw *hw = &adapter->hw;
3218	u32 eics = 0;
3219	int i;
3220
3221	/* If we're down or resetting, just bail */
3222	if (test_bit(__IXGBEVF_DOWN, &adapter->state) ||
3223	    test_bit(__IXGBEVF_RESETTING, &adapter->state))
3224		return;
3225
3226	/* Force detection of hung controller */
3227	if (netif_carrier_ok(adapter->netdev)) {
3228		for (i = 0; i < adapter->num_tx_queues; i++)
3229			set_check_for_tx_hang(adapter->tx_ring[i]);
3230		for (i = 0; i < adapter->num_xdp_queues; i++)
3231			set_check_for_tx_hang(adapter->xdp_ring[i]);
3232	}
3233
3234	/* get one bit for every active Tx/Rx interrupt vector */
3235	for (i = 0; i < adapter->num_msix_vectors - NON_Q_VECTORS; i++) {
3236		struct ixgbevf_q_vector *qv = adapter->q_vector[i];
3237
3238		if (qv->rx.ring || qv->tx.ring)
3239			eics |= BIT(i);
3240	}
3241
3242	/* Cause software interrupt to ensure rings are cleaned */
3243	IXGBE_WRITE_REG(hw, IXGBE_VTEICS, eics);
3244}
3245
3246/**
3247 * ixgbevf_watchdog_update_link - update the link status
3248 * @adapter: pointer to the device adapter structure
3249 **/
3250static void ixgbevf_watchdog_update_link(struct ixgbevf_adapter *adapter)
3251{
3252	struct ixgbe_hw *hw = &adapter->hw;
3253	u32 link_speed = adapter->link_speed;
3254	bool link_up = adapter->link_up;
3255	s32 err;
3256
3257	spin_lock_bh(&adapter->mbx_lock);
3258
3259	err = hw->mac.ops.check_link(hw, &link_speed, &link_up, false);
3260
3261	spin_unlock_bh(&adapter->mbx_lock);
3262
3263	/* if check for link returns error we will need to reset */
3264	if (err && time_after(jiffies, adapter->last_reset + (10 * HZ))) {
3265		set_bit(__IXGBEVF_RESET_REQUESTED, &adapter->state);
3266		link_up = false;
3267	}
3268
3269	adapter->link_up = link_up;
3270	adapter->link_speed = link_speed;
3271}
3272
3273/**
3274 * ixgbevf_watchdog_link_is_up - update netif_carrier status and
3275 *				 print link up message
3276 * @adapter: pointer to the device adapter structure
3277 **/
3278static void ixgbevf_watchdog_link_is_up(struct ixgbevf_adapter *adapter)
3279{
3280	struct net_device *netdev = adapter->netdev;
3281
3282	/* only continue if link was previously down */
3283	if (netif_carrier_ok(netdev))
3284		return;
3285
3286	dev_info(&adapter->pdev->dev, "NIC Link is Up %s\n",
3287		 (adapter->link_speed == IXGBE_LINK_SPEED_10GB_FULL) ?
3288		 "10 Gbps" :
3289		 (adapter->link_speed == IXGBE_LINK_SPEED_1GB_FULL) ?
3290		 "1 Gbps" :
3291		 (adapter->link_speed == IXGBE_LINK_SPEED_100_FULL) ?
3292		 "100 Mbps" :
3293		 "unknown speed");
3294
3295	netif_carrier_on(netdev);
 
3296}
3297
3298/**
3299 * ixgbevf_watchdog_link_is_down - update netif_carrier status and
3300 *				   print link down message
3301 * @adapter: pointer to the adapter structure
3302 **/
3303static void ixgbevf_watchdog_link_is_down(struct ixgbevf_adapter *adapter)
3304{
3305	struct net_device *netdev = adapter->netdev;
3306
3307	adapter->link_speed = 0;
3308
3309	/* only continue if link was up previously */
3310	if (!netif_carrier_ok(netdev))
3311		return;
3312
3313	dev_info(&adapter->pdev->dev, "NIC Link is Down\n");
3314
3315	netif_carrier_off(netdev);
3316}
3317
3318/**
3319 * ixgbevf_watchdog_subtask - worker thread to bring link up
3320 * @adapter: board private structure
3321 **/
3322static void ixgbevf_watchdog_subtask(struct ixgbevf_adapter *adapter)
3323{
3324	/* if interface is down do nothing */
3325	if (test_bit(__IXGBEVF_DOWN, &adapter->state) ||
 
3326	    test_bit(__IXGBEVF_RESETTING, &adapter->state))
3327		return;
3328
3329	ixgbevf_watchdog_update_link(adapter);
3330
3331	if (adapter->link_up && adapter->link_state)
3332		ixgbevf_watchdog_link_is_up(adapter);
3333	else
3334		ixgbevf_watchdog_link_is_down(adapter);
3335
3336	ixgbevf_update_stats(adapter);
3337}
3338
3339/**
3340 * ixgbevf_service_task - manages and runs subtasks
3341 * @work: pointer to work_struct containing our data
3342 **/
3343static void ixgbevf_service_task(struct work_struct *work)
3344{
3345	struct ixgbevf_adapter *adapter = container_of(work,
3346						       struct ixgbevf_adapter,
3347						       service_task);
 
3348	struct ixgbe_hw *hw = &adapter->hw;
 
 
 
3349
3350	if (IXGBE_REMOVED(hw->hw_addr)) {
3351		if (!test_bit(__IXGBEVF_DOWN, &adapter->state)) {
3352			rtnl_lock();
3353			ixgbevf_down(adapter);
3354			rtnl_unlock();
3355		}
3356		return;
3357	}
3358
3359	ixgbevf_queue_reset_subtask(adapter);
3360	ixgbevf_reset_subtask(adapter);
3361	ixgbevf_watchdog_subtask(adapter);
3362	ixgbevf_check_hang_subtask(adapter);
3363
3364	ixgbevf_service_event_complete(adapter);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3365}
3366
3367/**
3368 * ixgbevf_free_tx_resources - Free Tx Resources per Queue
3369 * @tx_ring: Tx descriptor ring for a specific queue
3370 *
3371 * Free all transmit software resources
3372 **/
3373void ixgbevf_free_tx_resources(struct ixgbevf_ring *tx_ring)
3374{
3375	ixgbevf_clean_tx_ring(tx_ring);
3376
3377	vfree(tx_ring->tx_buffer_info);
3378	tx_ring->tx_buffer_info = NULL;
3379
3380	/* if not set, then don't free */
3381	if (!tx_ring->desc)
3382		return;
3383
3384	dma_free_coherent(tx_ring->dev, tx_ring->size, tx_ring->desc,
3385			  tx_ring->dma);
3386
3387	tx_ring->desc = NULL;
3388}
3389
3390/**
3391 * ixgbevf_free_all_tx_resources - Free Tx Resources for All Queues
3392 * @adapter: board private structure
3393 *
3394 * Free all transmit software resources
3395 **/
3396static void ixgbevf_free_all_tx_resources(struct ixgbevf_adapter *adapter)
3397{
3398	int i;
3399
3400	for (i = 0; i < adapter->num_tx_queues; i++)
3401		if (adapter->tx_ring[i]->desc)
3402			ixgbevf_free_tx_resources(adapter->tx_ring[i]);
3403	for (i = 0; i < adapter->num_xdp_queues; i++)
3404		if (adapter->xdp_ring[i]->desc)
3405			ixgbevf_free_tx_resources(adapter->xdp_ring[i]);
3406}
3407
3408/**
3409 * ixgbevf_setup_tx_resources - allocate Tx resources (Descriptors)
3410 * @tx_ring: Tx descriptor ring (for a specific queue) to setup
3411 *
3412 * Return 0 on success, negative on failure
3413 **/
3414int ixgbevf_setup_tx_resources(struct ixgbevf_ring *tx_ring)
3415{
3416	struct ixgbevf_adapter *adapter = netdev_priv(tx_ring->netdev);
3417	int size;
3418
3419	size = sizeof(struct ixgbevf_tx_buffer) * tx_ring->count;
3420	tx_ring->tx_buffer_info = vmalloc(size);
3421	if (!tx_ring->tx_buffer_info)
3422		goto err;
3423
3424	u64_stats_init(&tx_ring->syncp);
3425
3426	/* round up to nearest 4K */
3427	tx_ring->size = tx_ring->count * sizeof(union ixgbe_adv_tx_desc);
3428	tx_ring->size = ALIGN(tx_ring->size, 4096);
3429
3430	tx_ring->desc = dma_alloc_coherent(tx_ring->dev, tx_ring->size,
3431					   &tx_ring->dma, GFP_KERNEL);
3432	if (!tx_ring->desc)
3433		goto err;
3434
3435	return 0;
3436
3437err:
3438	vfree(tx_ring->tx_buffer_info);
3439	tx_ring->tx_buffer_info = NULL;
3440	hw_dbg(&adapter->hw, "Unable to allocate memory for the transmit descriptor ring\n");
 
3441	return -ENOMEM;
3442}
3443
3444/**
3445 * ixgbevf_setup_all_tx_resources - allocate all queues Tx resources
3446 * @adapter: board private structure
3447 *
3448 * If this function returns with an error, then it's possible one or
3449 * more of the rings is populated (while the rest are not).  It is the
3450 * callers duty to clean those orphaned rings.
3451 *
3452 * Return 0 on success, negative on failure
3453 **/
3454static int ixgbevf_setup_all_tx_resources(struct ixgbevf_adapter *adapter)
3455{
3456	int i, j = 0, err = 0;
3457
3458	for (i = 0; i < adapter->num_tx_queues; i++) {
3459		err = ixgbevf_setup_tx_resources(adapter->tx_ring[i]);
3460		if (!err)
3461			continue;
3462		hw_dbg(&adapter->hw, "Allocation for Tx Queue %u failed\n", i);
3463		goto err_setup_tx;
3464	}
3465
3466	for (j = 0; j < adapter->num_xdp_queues; j++) {
3467		err = ixgbevf_setup_tx_resources(adapter->xdp_ring[j]);
3468		if (!err)
3469			continue;
3470		hw_dbg(&adapter->hw, "Allocation for XDP Queue %u failed\n", j);
3471		goto err_setup_tx;
3472	}
3473
3474	return 0;
3475err_setup_tx:
3476	/* rewind the index freeing the rings as we go */
3477	while (j--)
3478		ixgbevf_free_tx_resources(adapter->xdp_ring[j]);
3479	while (i--)
3480		ixgbevf_free_tx_resources(adapter->tx_ring[i]);
3481
3482	return err;
3483}
3484
3485/**
3486 * ixgbevf_setup_rx_resources - allocate Rx resources (Descriptors)
3487 * @adapter: board private structure
3488 * @rx_ring: Rx descriptor ring (for a specific queue) to setup
3489 *
3490 * Returns 0 on success, negative on failure
3491 **/
3492int ixgbevf_setup_rx_resources(struct ixgbevf_adapter *adapter,
3493			       struct ixgbevf_ring *rx_ring)
3494{
3495	int size;
3496
3497	size = sizeof(struct ixgbevf_rx_buffer) * rx_ring->count;
3498	rx_ring->rx_buffer_info = vmalloc(size);
3499	if (!rx_ring->rx_buffer_info)
3500		goto err;
3501
3502	u64_stats_init(&rx_ring->syncp);
3503
3504	/* Round up to nearest 4K */
3505	rx_ring->size = rx_ring->count * sizeof(union ixgbe_adv_rx_desc);
3506	rx_ring->size = ALIGN(rx_ring->size, 4096);
3507
3508	rx_ring->desc = dma_alloc_coherent(rx_ring->dev, rx_ring->size,
3509					   &rx_ring->dma, GFP_KERNEL);
3510
3511	if (!rx_ring->desc)
3512		goto err;
3513
3514	/* XDP RX-queue info */
3515	if (xdp_rxq_info_reg(&rx_ring->xdp_rxq, adapter->netdev,
3516			     rx_ring->queue_index, 0) < 0)
3517		goto err;
3518
3519	rx_ring->xdp_prog = adapter->xdp_prog;
3520
3521	return 0;
3522err:
3523	vfree(rx_ring->rx_buffer_info);
3524	rx_ring->rx_buffer_info = NULL;
3525	dev_err(rx_ring->dev, "Unable to allocate memory for the Rx descriptor ring\n");
3526	return -ENOMEM;
3527}
3528
3529/**
3530 * ixgbevf_setup_all_rx_resources - allocate all queues Rx resources
3531 * @adapter: board private structure
3532 *
3533 * If this function returns with an error, then it's possible one or
3534 * more of the rings is populated (while the rest are not).  It is the
3535 * callers duty to clean those orphaned rings.
3536 *
3537 * Return 0 on success, negative on failure
3538 **/
3539static int ixgbevf_setup_all_rx_resources(struct ixgbevf_adapter *adapter)
3540{
3541	int i, err = 0;
3542
3543	for (i = 0; i < adapter->num_rx_queues; i++) {
3544		err = ixgbevf_setup_rx_resources(adapter, adapter->rx_ring[i]);
3545		if (!err)
3546			continue;
3547		hw_dbg(&adapter->hw, "Allocation for Rx Queue %u failed\n", i);
3548		goto err_setup_rx;
 
3549	}
3550
3551	return 0;
3552err_setup_rx:
3553	/* rewind the index freeing the rings as we go */
3554	while (i--)
3555		ixgbevf_free_rx_resources(adapter->rx_ring[i]);
3556	return err;
3557}
3558
3559/**
3560 * ixgbevf_free_rx_resources - Free Rx Resources
3561 * @rx_ring: ring to clean the resources from
3562 *
3563 * Free all receive software resources
3564 **/
3565void ixgbevf_free_rx_resources(struct ixgbevf_ring *rx_ring)
3566{
3567	ixgbevf_clean_rx_ring(rx_ring);
3568
3569	rx_ring->xdp_prog = NULL;
3570	xdp_rxq_info_unreg(&rx_ring->xdp_rxq);
3571	vfree(rx_ring->rx_buffer_info);
3572	rx_ring->rx_buffer_info = NULL;
3573
3574	dma_free_coherent(rx_ring->dev, rx_ring->size, rx_ring->desc,
3575			  rx_ring->dma);
3576
3577	rx_ring->desc = NULL;
3578}
3579
3580/**
3581 * ixgbevf_free_all_rx_resources - Free Rx Resources for All Queues
3582 * @adapter: board private structure
3583 *
3584 * Free all receive software resources
3585 **/
3586static void ixgbevf_free_all_rx_resources(struct ixgbevf_adapter *adapter)
3587{
3588	int i;
3589
3590	for (i = 0; i < adapter->num_rx_queues; i++)
3591		if (adapter->rx_ring[i]->desc)
3592			ixgbevf_free_rx_resources(adapter->rx_ring[i]);
3593}
3594
3595/**
3596 * ixgbevf_open - Called when a network interface is made active
3597 * @netdev: network interface device structure
3598 *
3599 * Returns 0 on success, negative value on failure
3600 *
3601 * The open entry point is called when a network interface is made
3602 * active by the system (IFF_UP).  At this point all resources needed
3603 * for transmit and receive operations are allocated, the interrupt
3604 * handler is registered with the OS, the watchdog timer is started,
3605 * and the stack is notified that the interface is ready.
3606 **/
3607int ixgbevf_open(struct net_device *netdev)
3608{
3609	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3610	struct ixgbe_hw *hw = &adapter->hw;
3611	int err;
3612
3613	/* A previous failure to open the device because of a lack of
3614	 * available MSIX vector resources may have reset the number
3615	 * of msix vectors variable to zero.  The only way to recover
3616	 * is to unload/reload the driver and hope that the system has
3617	 * been able to recover some MSIX vector resources.
3618	 */
3619	if (!adapter->num_msix_vectors)
3620		return -ENOMEM;
3621
 
 
 
 
3622	if (hw->adapter_stopped) {
3623		ixgbevf_reset(adapter);
3624		/* if adapter is still stopped then PF isn't up and
3625		 * the VF can't start.
3626		 */
3627		if (hw->adapter_stopped) {
3628			err = IXGBE_ERR_MBX;
3629			pr_err("Unable to start - perhaps the PF Driver isn't up yet\n");
 
3630			goto err_setup_reset;
3631		}
3632	}
3633
3634	/* disallow open during test */
3635	if (test_bit(__IXGBEVF_TESTING, &adapter->state))
3636		return -EBUSY;
3637
3638	netif_carrier_off(netdev);
3639
3640	/* allocate transmit descriptors */
3641	err = ixgbevf_setup_all_tx_resources(adapter);
3642	if (err)
3643		goto err_setup_tx;
3644
3645	/* allocate receive descriptors */
3646	err = ixgbevf_setup_all_rx_resources(adapter);
3647	if (err)
3648		goto err_setup_rx;
3649
3650	ixgbevf_configure(adapter);
3651
3652	err = ixgbevf_request_irq(adapter);
3653	if (err)
3654		goto err_req_irq;
 
 
 
3655
3656	/* Notify the stack of the actual queue counts. */
3657	err = netif_set_real_num_tx_queues(netdev, adapter->num_tx_queues);
3658	if (err)
3659		goto err_set_queues;
3660
3661	err = netif_set_real_num_rx_queues(netdev, adapter->num_rx_queues);
 
 
3662	if (err)
3663		goto err_set_queues;
3664
3665	ixgbevf_up_complete(adapter);
3666
3667	return 0;
3668
3669err_set_queues:
3670	ixgbevf_free_irq(adapter);
3671err_req_irq:
3672	ixgbevf_free_all_rx_resources(adapter);
3673err_setup_rx:
3674	ixgbevf_free_all_tx_resources(adapter);
3675err_setup_tx:
 
3676	ixgbevf_reset(adapter);
 
3677err_setup_reset:
3678
3679	return err;
3680}
3681
3682/**
3683 * ixgbevf_close_suspend - actions necessary to both suspend and close flows
3684 * @adapter: the private adapter struct
3685 *
3686 * This function should contain the necessary work common to both suspending
3687 * and closing of the device.
3688 */
3689static void ixgbevf_close_suspend(struct ixgbevf_adapter *adapter)
3690{
3691	ixgbevf_down(adapter);
3692	ixgbevf_free_irq(adapter);
3693	ixgbevf_free_all_tx_resources(adapter);
3694	ixgbevf_free_all_rx_resources(adapter);
3695}
3696
3697/**
3698 * ixgbevf_close - Disables a network interface
3699 * @netdev: network interface device structure
3700 *
3701 * Returns 0, this is not allowed to fail
3702 *
3703 * The close entry point is called when an interface is de-activated
3704 * by the OS.  The hardware is still under the drivers control, but
3705 * needs to be disabled.  A global MAC reset is issued to stop the
3706 * hardware, and all transmit and receive resources are freed.
3707 **/
3708int ixgbevf_close(struct net_device *netdev)
3709{
3710	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3711
3712	if (netif_device_present(netdev))
3713		ixgbevf_close_suspend(adapter);
 
 
 
3714
3715	return 0;
3716}
3717
3718static void ixgbevf_queue_reset_subtask(struct ixgbevf_adapter *adapter)
3719{
3720	struct net_device *dev = adapter->netdev;
3721
3722	if (!test_and_clear_bit(__IXGBEVF_QUEUE_RESET_REQUESTED,
3723				&adapter->state))
3724		return;
3725
 
 
3726	/* if interface is down do nothing */
3727	if (test_bit(__IXGBEVF_DOWN, &adapter->state) ||
3728	    test_bit(__IXGBEVF_RESETTING, &adapter->state))
3729		return;
3730
3731	/* Hardware has to reinitialize queues and interrupts to
3732	 * match packet buffer alignment. Unfortunately, the
3733	 * hardware is not flexible enough to do this dynamically.
3734	 */
3735	rtnl_lock();
3736
3737	if (netif_running(dev))
3738		ixgbevf_close(dev);
3739
3740	ixgbevf_clear_interrupt_scheme(adapter);
3741	ixgbevf_init_interrupt_scheme(adapter);
3742
3743	if (netif_running(dev))
3744		ixgbevf_open(dev);
3745
3746	rtnl_unlock();
3747}
3748
3749static void ixgbevf_tx_ctxtdesc(struct ixgbevf_ring *tx_ring,
3750				u32 vlan_macip_lens, u32 fceof_saidx,
3751				u32 type_tucmd, u32 mss_l4len_idx)
3752{
3753	struct ixgbe_adv_tx_context_desc *context_desc;
3754	u16 i = tx_ring->next_to_use;
3755
3756	context_desc = IXGBEVF_TX_CTXTDESC(tx_ring, i);
3757
3758	i++;
3759	tx_ring->next_to_use = (i < tx_ring->count) ? i : 0;
3760
3761	/* set bits to identify this as an advanced context descriptor */
3762	type_tucmd |= IXGBE_TXD_CMD_DEXT | IXGBE_ADVTXD_DTYP_CTXT;
3763
3764	context_desc->vlan_macip_lens	= cpu_to_le32(vlan_macip_lens);
3765	context_desc->fceof_saidx	= cpu_to_le32(fceof_saidx);
3766	context_desc->type_tucmd_mlhl	= cpu_to_le32(type_tucmd);
3767	context_desc->mss_l4len_idx	= cpu_to_le32(mss_l4len_idx);
3768}
3769
3770static int ixgbevf_tso(struct ixgbevf_ring *tx_ring,
3771		       struct ixgbevf_tx_buffer *first,
3772		       u8 *hdr_len,
3773		       struct ixgbevf_ipsec_tx_data *itd)
3774{
3775	u32 vlan_macip_lens, type_tucmd, mss_l4len_idx;
3776	struct sk_buff *skb = first->skb;
3777	union {
3778		struct iphdr *v4;
3779		struct ipv6hdr *v6;
3780		unsigned char *hdr;
3781	} ip;
3782	union {
3783		struct tcphdr *tcp;
3784		unsigned char *hdr;
3785	} l4;
3786	u32 paylen, l4_offset;
3787	u32 fceof_saidx = 0;
3788	int err;
3789
3790	if (skb->ip_summed != CHECKSUM_PARTIAL)
3791		return 0;
3792
3793	if (!skb_is_gso(skb))
3794		return 0;
3795
3796	err = skb_cow_head(skb, 0);
3797	if (err < 0)
3798		return err;
3799
3800	if (eth_p_mpls(first->protocol))
3801		ip.hdr = skb_inner_network_header(skb);
3802	else
3803		ip.hdr = skb_network_header(skb);
3804	l4.hdr = skb_checksum_start(skb);
3805
3806	/* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */
3807	type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP;
3808
3809	/* initialize outer IP header fields */
3810	if (ip.v4->version == 4) {
3811		unsigned char *csum_start = skb_checksum_start(skb);
3812		unsigned char *trans_start = ip.hdr + (ip.v4->ihl * 4);
3813		int len = csum_start - trans_start;
3814
3815		/* IP header will have to cancel out any data that
3816		 * is not a part of the outer IP header, so set to
3817		 * a reverse csum if needed, else init check to 0.
3818		 */
3819		ip.v4->check = (skb_shinfo(skb)->gso_type & SKB_GSO_PARTIAL) ?
3820					   csum_fold(csum_partial(trans_start,
3821								  len, 0)) : 0;
3822		type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4;
3823
3824		ip.v4->tot_len = 0;
3825		first->tx_flags |= IXGBE_TX_FLAGS_TSO |
3826				   IXGBE_TX_FLAGS_CSUM |
3827				   IXGBE_TX_FLAGS_IPV4;
3828	} else {
3829		ip.v6->payload_len = 0;
 
 
 
 
3830		first->tx_flags |= IXGBE_TX_FLAGS_TSO |
3831				   IXGBE_TX_FLAGS_CSUM;
3832	}
3833
3834	/* determine offset of inner transport header */
3835	l4_offset = l4.hdr - skb->data;
3836
3837	/* compute length of segmentation header */
3838	*hdr_len = (l4.tcp->doff * 4) + l4_offset;
3839
3840	/* remove payload length from inner checksum */
3841	paylen = skb->len - l4_offset;
3842	csum_replace_by_diff(&l4.tcp->check, (__force __wsum)htonl(paylen));
3843
3844	/* update gso size and bytecount with header size */
3845	first->gso_segs = skb_shinfo(skb)->gso_segs;
3846	first->bytecount += (first->gso_segs - 1) * *hdr_len;
3847
3848	/* mss_l4len_id: use 1 as index for TSO */
3849	mss_l4len_idx = (*hdr_len - l4_offset) << IXGBE_ADVTXD_L4LEN_SHIFT;
3850	mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT;
3851	mss_l4len_idx |= (1u << IXGBE_ADVTXD_IDX_SHIFT);
3852
3853	fceof_saidx |= itd->pfsa;
3854	type_tucmd |= itd->flags | itd->trailer_len;
3855
3856	/* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */
3857	vlan_macip_lens = l4.hdr - ip.hdr;
3858	vlan_macip_lens |= (ip.hdr - skb->data) << IXGBE_ADVTXD_MACLEN_SHIFT;
3859	vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK;
3860
3861	ixgbevf_tx_ctxtdesc(tx_ring, vlan_macip_lens, fceof_saidx, type_tucmd,
3862			    mss_l4len_idx);
3863
3864	return 1;
3865}
3866
3867static void ixgbevf_tx_csum(struct ixgbevf_ring *tx_ring,
3868			    struct ixgbevf_tx_buffer *first,
3869			    struct ixgbevf_ipsec_tx_data *itd)
3870{
3871	struct sk_buff *skb = first->skb;
3872	u32 vlan_macip_lens = 0;
3873	u32 fceof_saidx = 0;
3874	u32 type_tucmd = 0;
3875
3876	if (skb->ip_summed != CHECKSUM_PARTIAL)
3877		goto no_csum;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3878
3879	switch (skb->csum_offset) {
3880	case offsetof(struct tcphdr, check):
3881		type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP;
3882		fallthrough;
3883	case offsetof(struct udphdr, check):
3884		break;
3885	case offsetof(struct sctphdr, checksum):
3886		/* validate that this is actually an SCTP request */
3887		if (skb_csum_is_sctp(skb)) {
3888			type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_SCTP;
 
 
 
 
 
 
 
 
 
 
 
3889			break;
3890		}
3891		fallthrough;
3892	default:
3893		skb_checksum_help(skb);
3894		goto no_csum;
3895	}
3896
3897	if (first->protocol == htons(ETH_P_IP))
3898		type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4;
 
3899
3900	/* update TX checksum flag */
3901	first->tx_flags |= IXGBE_TX_FLAGS_CSUM;
3902	vlan_macip_lens = skb_checksum_start_offset(skb) -
3903			  skb_network_offset(skb);
3904no_csum:
3905	/* vlan_macip_lens: MACLEN, VLAN tag */
3906	vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT;
3907	vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK;
3908
3909	fceof_saidx |= itd->pfsa;
3910	type_tucmd |= itd->flags | itd->trailer_len;
3911
3912	ixgbevf_tx_ctxtdesc(tx_ring, vlan_macip_lens,
3913			    fceof_saidx, type_tucmd, 0);
3914}
3915
3916static __le32 ixgbevf_tx_cmd_type(u32 tx_flags)
3917{
3918	/* set type for advanced descriptor with frame checksum insertion */
3919	__le32 cmd_type = cpu_to_le32(IXGBE_ADVTXD_DTYP_DATA |
3920				      IXGBE_ADVTXD_DCMD_IFCS |
3921				      IXGBE_ADVTXD_DCMD_DEXT);
3922
3923	/* set HW VLAN bit if VLAN is present */
3924	if (tx_flags & IXGBE_TX_FLAGS_VLAN)
3925		cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_VLE);
3926
3927	/* set segmentation enable bits for TSO/FSO */
3928	if (tx_flags & IXGBE_TX_FLAGS_TSO)
3929		cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_TSE);
3930
3931	return cmd_type;
3932}
3933
3934static void ixgbevf_tx_olinfo_status(union ixgbe_adv_tx_desc *tx_desc,
3935				     u32 tx_flags, unsigned int paylen)
3936{
3937	__le32 olinfo_status = cpu_to_le32(paylen << IXGBE_ADVTXD_PAYLEN_SHIFT);
3938
3939	/* enable L4 checksum for TSO and TX checksum offload */
3940	if (tx_flags & IXGBE_TX_FLAGS_CSUM)
3941		olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_TXSM);
3942
3943	/* enble IPv4 checksum for TSO */
3944	if (tx_flags & IXGBE_TX_FLAGS_IPV4)
3945		olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_IXSM);
3946
3947	/* enable IPsec */
3948	if (tx_flags & IXGBE_TX_FLAGS_IPSEC)
3949		olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_IPSEC);
3950
3951	/* use index 1 context for TSO/FSO/FCOE/IPSEC */
3952	if (tx_flags & (IXGBE_TX_FLAGS_TSO | IXGBE_TX_FLAGS_IPSEC))
3953		olinfo_status |= cpu_to_le32(1u << IXGBE_ADVTXD_IDX_SHIFT);
3954
3955	/* Check Context must be set if Tx switch is enabled, which it
3956	 * always is for case where virtual functions are running
3957	 */
3958	olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_CC);
3959
3960	tx_desc->read.olinfo_status = olinfo_status;
3961}
3962
3963static void ixgbevf_tx_map(struct ixgbevf_ring *tx_ring,
3964			   struct ixgbevf_tx_buffer *first,
3965			   const u8 hdr_len)
3966{
 
3967	struct sk_buff *skb = first->skb;
3968	struct ixgbevf_tx_buffer *tx_buffer;
3969	union ixgbe_adv_tx_desc *tx_desc;
3970	skb_frag_t *frag;
3971	dma_addr_t dma;
3972	unsigned int data_len, size;
 
3973	u32 tx_flags = first->tx_flags;
3974	__le32 cmd_type = ixgbevf_tx_cmd_type(tx_flags);
3975	u16 i = tx_ring->next_to_use;
3976
3977	tx_desc = IXGBEVF_TX_DESC(tx_ring, i);
3978
3979	ixgbevf_tx_olinfo_status(tx_desc, tx_flags, skb->len - hdr_len);
3980
3981	size = skb_headlen(skb);
3982	data_len = skb->data_len;
3983
3984	dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);
 
 
3985
3986	tx_buffer = first;
3987
3988	for (frag = &skb_shinfo(skb)->frags[0];; frag++) {
3989		if (dma_mapping_error(tx_ring->dev, dma))
3990			goto dma_error;
3991
3992		/* record length, and DMA address */
3993		dma_unmap_len_set(tx_buffer, len, size);
3994		dma_unmap_addr_set(tx_buffer, dma, dma);
3995
3996		tx_desc->read.buffer_addr = cpu_to_le64(dma);
3997
 
3998		while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) {
3999			tx_desc->read.cmd_type_len =
4000				cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD);
4001
4002			i++;
4003			tx_desc++;
4004			if (i == tx_ring->count) {
4005				tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
4006				i = 0;
4007			}
4008			tx_desc->read.olinfo_status = 0;
4009
4010			dma += IXGBE_MAX_DATA_PER_TXD;
4011			size -= IXGBE_MAX_DATA_PER_TXD;
4012
4013			tx_desc->read.buffer_addr = cpu_to_le64(dma);
 
4014		}
4015
4016		if (likely(!data_len))
4017			break;
4018
4019		tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size);
4020
4021		i++;
4022		tx_desc++;
4023		if (i == tx_ring->count) {
4024			tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
4025			i = 0;
4026		}
4027		tx_desc->read.olinfo_status = 0;
4028
4029		size = skb_frag_size(frag);
4030		data_len -= size;
4031
4032		dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size,
4033				       DMA_TO_DEVICE);
 
 
4034
4035		tx_buffer = &tx_ring->tx_buffer_info[i];
 
 
 
 
 
 
 
4036	}
4037
4038	/* write last descriptor with RS and EOP bits */
4039	cmd_type |= cpu_to_le32(size) | cpu_to_le32(IXGBE_TXD_CMD);
4040	tx_desc->read.cmd_type_len = cmd_type;
4041
4042	/* set the timestamp */
4043	first->time_stamp = jiffies;
4044
4045	skb_tx_timestamp(skb);
4046
4047	/* Force memory writes to complete before letting h/w know there
4048	 * are new descriptors to fetch.  (Only applicable for weak-ordered
4049	 * memory model archs, such as IA-64).
4050	 *
4051	 * We also need this memory barrier (wmb) to make certain all of the
4052	 * status bits have been updated before next_to_watch is written.
4053	 */
4054	wmb();
4055
4056	/* set next_to_watch value indicating a packet is present */
4057	first->next_to_watch = tx_desc;
4058
4059	i++;
4060	if (i == tx_ring->count)
4061		i = 0;
4062
4063	tx_ring->next_to_use = i;
4064
4065	/* notify HW of packet */
4066	ixgbevf_write_tail(tx_ring, i);
4067
4068	return;
4069dma_error:
4070	dev_err(tx_ring->dev, "TX DMA map failed\n");
4071	tx_buffer = &tx_ring->tx_buffer_info[i];
4072
4073	/* clear dma mappings for failed tx_buffer_info map */
4074	while (tx_buffer != first) {
4075		if (dma_unmap_len(tx_buffer, len))
4076			dma_unmap_page(tx_ring->dev,
4077				       dma_unmap_addr(tx_buffer, dma),
4078				       dma_unmap_len(tx_buffer, len),
4079				       DMA_TO_DEVICE);
4080		dma_unmap_len_set(tx_buffer, len, 0);
4081
4082		if (i-- == 0)
4083			i += tx_ring->count;
4084		tx_buffer = &tx_ring->tx_buffer_info[i];
 
 
 
 
 
 
4085	}
4086
4087	if (dma_unmap_len(tx_buffer, len))
4088		dma_unmap_single(tx_ring->dev,
4089				 dma_unmap_addr(tx_buffer, dma),
4090				 dma_unmap_len(tx_buffer, len),
4091				 DMA_TO_DEVICE);
4092	dma_unmap_len_set(tx_buffer, len, 0);
4093
4094	dev_kfree_skb_any(tx_buffer->skb);
4095	tx_buffer->skb = NULL;
4096
4097	tx_ring->next_to_use = i;
4098}
4099
4100static int __ixgbevf_maybe_stop_tx(struct ixgbevf_ring *tx_ring, int size)
4101{
4102	netif_stop_subqueue(tx_ring->netdev, tx_ring->queue_index);
4103	/* Herbert's original patch had:
4104	 *  smp_mb__after_netif_stop_queue();
4105	 * but since that doesn't exist yet, just open code it.
4106	 */
4107	smp_mb();
4108
4109	/* We need to check again in a case another CPU has just
4110	 * made room available.
4111	 */
4112	if (likely(ixgbevf_desc_unused(tx_ring) < size))
4113		return -EBUSY;
4114
4115	/* A reprieve! - use start_queue because it doesn't call schedule */
4116	netif_start_subqueue(tx_ring->netdev, tx_ring->queue_index);
4117	++tx_ring->tx_stats.restart_queue;
4118
4119	return 0;
4120}
4121
4122static int ixgbevf_maybe_stop_tx(struct ixgbevf_ring *tx_ring, int size)
4123{
4124	if (likely(ixgbevf_desc_unused(tx_ring) >= size))
4125		return 0;
4126	return __ixgbevf_maybe_stop_tx(tx_ring, size);
4127}
4128
4129static int ixgbevf_xmit_frame_ring(struct sk_buff *skb,
4130				   struct ixgbevf_ring *tx_ring)
4131{
 
4132	struct ixgbevf_tx_buffer *first;
 
4133	int tso;
4134	u32 tx_flags = 0;
4135	u16 count = TXD_USE_COUNT(skb_headlen(skb));
4136	struct ixgbevf_ipsec_tx_data ipsec_tx = { 0 };
4137#if PAGE_SIZE > IXGBE_MAX_DATA_PER_TXD
4138	unsigned short f;
4139#endif
4140	u8 hdr_len = 0;
4141	u8 *dst_mac = skb_header_pointer(skb, 0, 0, NULL);
4142
4143	if (!dst_mac || is_link_local_ether_addr(dst_mac)) {
4144		dev_kfree_skb_any(skb);
4145		return NETDEV_TX_OK;
4146	}
4147
4148	/* need: 1 descriptor per page * PAGE_SIZE/IXGBE_MAX_DATA_PER_TXD,
 
 
 
4149	 *       + 1 desc for skb_headlen/IXGBE_MAX_DATA_PER_TXD,
4150	 *       + 2 desc gap to keep tail from touching head,
4151	 *       + 1 desc for context descriptor,
4152	 * otherwise try next time
4153	 */
4154#if PAGE_SIZE > IXGBE_MAX_DATA_PER_TXD
4155	for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
4156		skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
4157
4158		count += TXD_USE_COUNT(skb_frag_size(frag));
4159	}
4160#else
4161	count += skb_shinfo(skb)->nr_frags;
4162#endif
4163	if (ixgbevf_maybe_stop_tx(tx_ring, count + 3)) {
4164		tx_ring->tx_stats.tx_busy++;
4165		return NETDEV_TX_BUSY;
4166	}
4167
4168	/* record the location of the first descriptor for this packet */
4169	first = &tx_ring->tx_buffer_info[tx_ring->next_to_use];
4170	first->skb = skb;
4171	first->bytecount = skb->len;
4172	first->gso_segs = 1;
4173
4174	if (skb_vlan_tag_present(skb)) {
4175		tx_flags |= skb_vlan_tag_get(skb);
4176		tx_flags <<= IXGBE_TX_FLAGS_VLAN_SHIFT;
4177		tx_flags |= IXGBE_TX_FLAGS_VLAN;
4178	}
4179
4180	/* record initial flags and protocol */
4181	first->tx_flags = tx_flags;
4182	first->protocol = vlan_get_protocol(skb);
4183
4184#ifdef CONFIG_IXGBEVF_IPSEC
4185	if (xfrm_offload(skb) && !ixgbevf_ipsec_tx(tx_ring, first, &ipsec_tx))
4186		goto out_drop;
4187#endif
4188	tso = ixgbevf_tso(tx_ring, first, &hdr_len, &ipsec_tx);
4189	if (tso < 0)
4190		goto out_drop;
4191	else if (!tso)
4192		ixgbevf_tx_csum(tx_ring, first, &ipsec_tx);
4193
4194	ixgbevf_tx_map(tx_ring, first, hdr_len);
4195
4196	ixgbevf_maybe_stop_tx(tx_ring, DESC_NEEDED);
4197
4198	return NETDEV_TX_OK;
4199
4200out_drop:
4201	dev_kfree_skb_any(first->skb);
4202	first->skb = NULL;
4203
4204	return NETDEV_TX_OK;
4205}
4206
4207static netdev_tx_t ixgbevf_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
4208{
4209	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4210	struct ixgbevf_ring *tx_ring;
4211
4212	if (skb->len <= 0) {
4213		dev_kfree_skb_any(skb);
4214		return NETDEV_TX_OK;
4215	}
4216
4217	/* The minimum packet size for olinfo paylen is 17 so pad the skb
4218	 * in order to meet this minimum size requirement.
4219	 */
4220	if (skb->len < 17) {
4221		if (skb_padto(skb, 17))
4222			return NETDEV_TX_OK;
4223		skb->len = 17;
4224	}
4225
4226	tx_ring = adapter->tx_ring[skb->queue_mapping];
4227	return ixgbevf_xmit_frame_ring(skb, tx_ring);
4228}
4229
4230/**
4231 * ixgbevf_set_mac - Change the Ethernet Address of the NIC
4232 * @netdev: network interface device structure
4233 * @p: pointer to an address structure
4234 *
4235 * Returns 0 on success, negative on failure
4236 **/
4237static int ixgbevf_set_mac(struct net_device *netdev, void *p)
4238{
4239	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4240	struct ixgbe_hw *hw = &adapter->hw;
4241	struct sockaddr *addr = p;
4242	int err;
4243
4244	if (!is_valid_ether_addr(addr->sa_data))
4245		return -EADDRNOTAVAIL;
4246
 
 
 
4247	spin_lock_bh(&adapter->mbx_lock);
4248
4249	err = hw->mac.ops.set_rar(hw, 0, addr->sa_data, 0);
4250
4251	spin_unlock_bh(&adapter->mbx_lock);
4252
4253	if (err)
4254		return -EPERM;
4255
4256	ether_addr_copy(hw->mac.addr, addr->sa_data);
4257	ether_addr_copy(hw->mac.perm_addr, addr->sa_data);
4258	eth_hw_addr_set(netdev, addr->sa_data);
4259
4260	return 0;
4261}
4262
4263/**
4264 * ixgbevf_change_mtu - Change the Maximum Transfer Unit
4265 * @netdev: network interface device structure
4266 * @new_mtu: new value for maximum frame size
4267 *
4268 * Returns 0 on success, negative on failure
4269 **/
4270static int ixgbevf_change_mtu(struct net_device *netdev, int new_mtu)
4271{
4272	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4273	struct ixgbe_hw *hw = &adapter->hw;
4274	int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
4275	int ret;
4276
4277	/* prevent MTU being changed to a size unsupported by XDP */
4278	if (adapter->xdp_prog) {
4279		dev_warn(&adapter->pdev->dev, "MTU cannot be changed while XDP program is loaded\n");
4280		return -EPERM;
 
 
 
 
4281	}
4282
4283	spin_lock_bh(&adapter->mbx_lock);
4284	/* notify the PF of our intent to use this size of frame */
4285	ret = hw->mac.ops.set_rlpml(hw, max_frame);
4286	spin_unlock_bh(&adapter->mbx_lock);
4287	if (ret)
4288		return -EINVAL;
4289
4290	hw_dbg(hw, "changing MTU from %d to %d\n",
4291	       netdev->mtu, new_mtu);
4292
4293	/* must set new MTU before calling down or up */
4294	WRITE_ONCE(netdev->mtu, new_mtu);
4295
4296	if (netif_running(netdev))
4297		ixgbevf_reinit_locked(adapter);
4298
4299	return 0;
4300}
4301
4302static int ixgbevf_suspend(struct device *dev_d)
4303{
4304	struct net_device *netdev = dev_get_drvdata(dev_d);
4305	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
 
 
 
4306
4307	rtnl_lock();
4308	netif_device_detach(netdev);
4309
4310	if (netif_running(netdev))
4311		ixgbevf_close_suspend(adapter);
 
 
 
 
 
 
4312
4313	ixgbevf_clear_interrupt_scheme(adapter);
4314	rtnl_unlock();
 
 
 
 
 
 
 
 
4315
4316	return 0;
4317}
4318
4319static int ixgbevf_resume(struct device *dev_d)
 
4320{
4321	struct pci_dev *pdev = to_pci_dev(dev_d);
4322	struct net_device *netdev = pci_get_drvdata(pdev);
4323	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4324	u32 err;
4325
4326	adapter->hw.hw_addr = adapter->io_addr;
4327	smp_mb__before_atomic();
 
 
 
 
 
 
 
 
 
 
 
4328	clear_bit(__IXGBEVF_DISABLED, &adapter->state);
4329	pci_set_master(pdev);
4330
4331	ixgbevf_reset(adapter);
4332
4333	rtnl_lock();
4334	err = ixgbevf_init_interrupt_scheme(adapter);
4335	if (!err && netif_running(netdev))
4336		err = ixgbevf_open(netdev);
4337	rtnl_unlock();
4338	if (err)
 
4339		return err;
 
 
 
 
 
 
 
4340
4341	netif_device_attach(netdev);
4342
4343	return err;
4344}
4345
 
4346static void ixgbevf_shutdown(struct pci_dev *pdev)
4347{
4348	ixgbevf_suspend(&pdev->dev);
4349}
4350
4351static void ixgbevf_get_tx_ring_stats(struct rtnl_link_stats64 *stats,
4352				      const struct ixgbevf_ring *ring)
4353{
4354	u64 bytes, packets;
4355	unsigned int start;
4356
4357	if (ring) {
4358		do {
4359			start = u64_stats_fetch_begin(&ring->syncp);
4360			bytes = ring->stats.bytes;
4361			packets = ring->stats.packets;
4362		} while (u64_stats_fetch_retry(&ring->syncp, start));
4363		stats->tx_bytes += bytes;
4364		stats->tx_packets += packets;
4365	}
4366}
4367
4368static void ixgbevf_get_stats(struct net_device *netdev,
4369			      struct rtnl_link_stats64 *stats)
4370{
4371	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4372	unsigned int start;
4373	u64 bytes, packets;
4374	const struct ixgbevf_ring *ring;
4375	int i;
4376
4377	ixgbevf_update_stats(adapter);
4378
4379	stats->multicast = adapter->stats.vfmprc - adapter->stats.base_vfmprc;
4380
4381	rcu_read_lock();
4382	for (i = 0; i < adapter->num_rx_queues; i++) {
4383		ring = adapter->rx_ring[i];
4384		do {
4385			start = u64_stats_fetch_begin(&ring->syncp);
4386			bytes = ring->stats.bytes;
4387			packets = ring->stats.packets;
4388		} while (u64_stats_fetch_retry(&ring->syncp, start));
4389		stats->rx_bytes += bytes;
4390		stats->rx_packets += packets;
4391	}
4392
4393	for (i = 0; i < adapter->num_tx_queues; i++) {
4394		ring = adapter->tx_ring[i];
4395		ixgbevf_get_tx_ring_stats(stats, ring);
 
 
 
 
 
 
4396	}
4397
4398	for (i = 0; i < adapter->num_xdp_queues; i++) {
4399		ring = adapter->xdp_ring[i];
4400		ixgbevf_get_tx_ring_stats(stats, ring);
4401	}
4402	rcu_read_unlock();
4403}
4404
4405#define IXGBEVF_MAX_MAC_HDR_LEN		127
4406#define IXGBEVF_MAX_NETWORK_HDR_LEN	511
4407
4408static netdev_features_t
4409ixgbevf_features_check(struct sk_buff *skb, struct net_device *dev,
4410		       netdev_features_t features)
4411{
4412	unsigned int network_hdr_len, mac_hdr_len;
4413
4414	/* Make certain the headers can be described by a context descriptor */
4415	mac_hdr_len = skb_network_offset(skb);
4416	if (unlikely(mac_hdr_len > IXGBEVF_MAX_MAC_HDR_LEN))
4417		return features & ~(NETIF_F_HW_CSUM |
4418				    NETIF_F_SCTP_CRC |
4419				    NETIF_F_HW_VLAN_CTAG_TX |
4420				    NETIF_F_TSO |
4421				    NETIF_F_TSO6);
4422
4423	network_hdr_len = skb_checksum_start(skb) - skb_network_header(skb);
4424	if (unlikely(network_hdr_len >  IXGBEVF_MAX_NETWORK_HDR_LEN))
4425		return features & ~(NETIF_F_HW_CSUM |
4426				    NETIF_F_SCTP_CRC |
4427				    NETIF_F_TSO |
4428				    NETIF_F_TSO6);
4429
4430	/* We can only support IPV4 TSO in tunnels if we can mangle the
4431	 * inner IP ID field, so strip TSO if MANGLEID is not supported.
4432	 */
4433	if (skb->encapsulation && !(features & NETIF_F_TSO_MANGLEID))
4434		features &= ~NETIF_F_TSO;
4435
4436	return features;
4437}
4438
4439static int ixgbevf_xdp_setup(struct net_device *dev, struct bpf_prog *prog)
4440{
4441	int i, frame_size = dev->mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN;
4442	struct ixgbevf_adapter *adapter = netdev_priv(dev);
4443	struct bpf_prog *old_prog;
4444
4445	/* verify ixgbevf ring attributes are sufficient for XDP */
4446	for (i = 0; i < adapter->num_rx_queues; i++) {
4447		struct ixgbevf_ring *ring = adapter->rx_ring[i];
4448
4449		if (frame_size > ixgbevf_rx_bufsz(ring))
4450			return -EINVAL;
4451	}
4452
4453	old_prog = xchg(&adapter->xdp_prog, prog);
4454
4455	/* If transitioning XDP modes reconfigure rings */
4456	if (!!prog != !!old_prog) {
4457		/* Hardware has to reinitialize queues and interrupts to
4458		 * match packet buffer alignment. Unfortunately, the
4459		 * hardware is not flexible enough to do this dynamically.
4460		 */
4461		if (netif_running(dev))
4462			ixgbevf_close(dev);
4463
4464		ixgbevf_clear_interrupt_scheme(adapter);
4465		ixgbevf_init_interrupt_scheme(adapter);
4466
4467		if (netif_running(dev))
4468			ixgbevf_open(dev);
4469	} else {
4470		for (i = 0; i < adapter->num_rx_queues; i++)
4471			xchg(&adapter->rx_ring[i]->xdp_prog, adapter->xdp_prog);
4472	}
4473
4474	if (old_prog)
4475		bpf_prog_put(old_prog);
4476
4477	return 0;
4478}
4479
4480static int ixgbevf_xdp(struct net_device *dev, struct netdev_bpf *xdp)
4481{
4482	switch (xdp->command) {
4483	case XDP_SETUP_PROG:
4484		return ixgbevf_xdp_setup(dev, xdp->prog);
4485	default:
4486		return -EINVAL;
4487	}
4488}
4489
4490static const struct net_device_ops ixgbevf_netdev_ops = {
4491	.ndo_open		= ixgbevf_open,
4492	.ndo_stop		= ixgbevf_close,
4493	.ndo_start_xmit		= ixgbevf_xmit_frame,
4494	.ndo_set_rx_mode	= ixgbevf_set_rx_mode,
4495	.ndo_get_stats64	= ixgbevf_get_stats,
4496	.ndo_validate_addr	= eth_validate_addr,
4497	.ndo_set_mac_address	= ixgbevf_set_mac,
4498	.ndo_change_mtu		= ixgbevf_change_mtu,
4499	.ndo_tx_timeout		= ixgbevf_tx_timeout,
4500	.ndo_vlan_rx_add_vid	= ixgbevf_vlan_rx_add_vid,
4501	.ndo_vlan_rx_kill_vid	= ixgbevf_vlan_rx_kill_vid,
4502	.ndo_features_check	= ixgbevf_features_check,
4503	.ndo_bpf		= ixgbevf_xdp,
 
4504};
4505
4506static void ixgbevf_assign_netdev_ops(struct net_device *dev)
4507{
4508	dev->netdev_ops = &ixgbevf_netdev_ops;
4509	ixgbevf_set_ethtool_ops(dev);
4510	dev->watchdog_timeo = 5 * HZ;
4511}
4512
4513/**
4514 * ixgbevf_probe - Device Initialization Routine
4515 * @pdev: PCI device information struct
4516 * @ent: entry in ixgbevf_pci_tbl
4517 *
4518 * Returns 0 on success, negative on failure
4519 *
4520 * ixgbevf_probe initializes an adapter identified by a pci_dev structure.
4521 * The OS initialization, configuring of the adapter private structure,
4522 * and a hardware reset occur.
4523 **/
4524static int ixgbevf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
4525{
4526	struct net_device *netdev;
4527	struct ixgbevf_adapter *adapter = NULL;
4528	struct ixgbe_hw *hw = NULL;
4529	const struct ixgbevf_info *ii = ixgbevf_info_tbl[ent->driver_data];
4530	bool disable_dev = false;
4531	int err;
4532
4533	err = pci_enable_device(pdev);
4534	if (err)
4535		return err;
4536
4537	err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
4538	if (err) {
4539		dev_err(&pdev->dev, "No usable DMA configuration, aborting\n");
4540		goto err_dma;
 
 
 
 
 
 
4541	}
4542
4543	err = pci_request_regions(pdev, ixgbevf_driver_name);
4544	if (err) {
4545		dev_err(&pdev->dev, "pci_request_regions failed 0x%x\n", err);
4546		goto err_pci_reg;
4547	}
4548
4549	pci_set_master(pdev);
4550
4551	netdev = alloc_etherdev_mq(sizeof(struct ixgbevf_adapter),
4552				   MAX_TX_QUEUES);
4553	if (!netdev) {
4554		err = -ENOMEM;
4555		goto err_alloc_etherdev;
4556	}
4557
4558	SET_NETDEV_DEV(netdev, &pdev->dev);
4559
 
4560	adapter = netdev_priv(netdev);
4561
4562	adapter->netdev = netdev;
4563	adapter->pdev = pdev;
4564	hw = &adapter->hw;
4565	hw->back = adapter;
4566	adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE);
4567
4568	/* call save state here in standalone driver because it relies on
 
4569	 * adapter struct to exist, and needs to call netdev_priv
4570	 */
4571	pci_save_state(pdev);
4572
4573	hw->hw_addr = ioremap(pci_resource_start(pdev, 0),
4574			      pci_resource_len(pdev, 0));
4575	adapter->io_addr = hw->hw_addr;
4576	if (!hw->hw_addr) {
4577		err = -EIO;
4578		goto err_ioremap;
4579	}
4580
4581	ixgbevf_assign_netdev_ops(netdev);
4582
4583	/* Setup HW API */
 
 
4584	memcpy(&hw->mac.ops, ii->mac_ops, sizeof(hw->mac.ops));
4585	hw->mac.type  = ii->mac;
4586
4587	memcpy(&hw->mbx.ops, &ixgbevf_mbx_ops_legacy,
4588	       sizeof(struct ixgbe_mbx_operations));
4589
4590	/* setup the private structure */
4591	err = ixgbevf_sw_init(adapter);
4592	if (err)
4593		goto err_sw_init;
4594
4595	/* The HW MAC address was set and/or determined in sw_init */
4596	if (!is_valid_ether_addr(netdev->dev_addr)) {
4597		pr_err("invalid MAC address\n");
4598		err = -EIO;
4599		goto err_sw_init;
4600	}
4601
4602	netdev->hw_features = NETIF_F_SG |
4603			      NETIF_F_TSO |
4604			      NETIF_F_TSO6 |
4605			      NETIF_F_RXCSUM |
4606			      NETIF_F_HW_CSUM |
4607			      NETIF_F_SCTP_CRC;
4608
4609#define IXGBEVF_GSO_PARTIAL_FEATURES (NETIF_F_GSO_GRE | \
4610				      NETIF_F_GSO_GRE_CSUM | \
4611				      NETIF_F_GSO_IPXIP4 | \
4612				      NETIF_F_GSO_IPXIP6 | \
4613				      NETIF_F_GSO_UDP_TUNNEL | \
4614				      NETIF_F_GSO_UDP_TUNNEL_CSUM)
4615
4616	netdev->gso_partial_features = IXGBEVF_GSO_PARTIAL_FEATURES;
4617	netdev->hw_features |= NETIF_F_GSO_PARTIAL |
4618			       IXGBEVF_GSO_PARTIAL_FEATURES;
4619
4620	netdev->features = netdev->hw_features | NETIF_F_HIGHDMA;
4621
4622	netdev->vlan_features |= netdev->features | NETIF_F_TSO_MANGLEID;
4623	netdev->mpls_features |= NETIF_F_SG |
4624				 NETIF_F_TSO |
4625				 NETIF_F_TSO6 |
4626				 NETIF_F_HW_CSUM;
4627	netdev->mpls_features |= IXGBEVF_GSO_PARTIAL_FEATURES;
4628	netdev->hw_enc_features |= netdev->vlan_features;
4629
4630	/* set this bit last since it cannot be part of vlan_features */
4631	netdev->features |= NETIF_F_HW_VLAN_CTAG_FILTER |
4632			    NETIF_F_HW_VLAN_CTAG_RX |
4633			    NETIF_F_HW_VLAN_CTAG_TX;
4634
4635	netdev->priv_flags |= IFF_UNICAST_FLT;
4636	netdev->xdp_features = NETDEV_XDP_ACT_BASIC;
4637
4638	/* MTU range: 68 - 1504 or 9710 */
4639	netdev->min_mtu = ETH_MIN_MTU;
4640	switch (adapter->hw.api_version) {
4641	case ixgbe_mbox_api_11:
4642	case ixgbe_mbox_api_12:
4643	case ixgbe_mbox_api_13:
4644	case ixgbe_mbox_api_14:
4645	case ixgbe_mbox_api_15:
4646		netdev->max_mtu = IXGBE_MAX_JUMBO_FRAME_SIZE -
4647				  (ETH_HLEN + ETH_FCS_LEN);
4648		break;
4649	default:
4650		if (adapter->hw.mac.type != ixgbe_mac_82599_vf)
4651			netdev->max_mtu = IXGBE_MAX_JUMBO_FRAME_SIZE -
4652					  (ETH_HLEN + ETH_FCS_LEN);
4653		else
4654			netdev->max_mtu = ETH_DATA_LEN + ETH_FCS_LEN;
4655		break;
4656	}
4657
4658	if (IXGBE_REMOVED(hw->hw_addr)) {
4659		err = -EIO;
4660		goto err_sw_init;
4661	}
4662
4663	timer_setup(&adapter->service_timer, ixgbevf_service_timer, 0);
4664
4665	INIT_WORK(&adapter->service_task, ixgbevf_service_task);
4666	set_bit(__IXGBEVF_SERVICE_INITED, &adapter->state);
4667	clear_bit(__IXGBEVF_SERVICE_SCHED, &adapter->state);
4668
4669	err = ixgbevf_init_interrupt_scheme(adapter);
4670	if (err)
4671		goto err_sw_init;
4672
4673	strcpy(netdev->name, "eth%d");
4674
4675	err = register_netdev(netdev);
4676	if (err)
4677		goto err_register;
4678
4679	pci_set_drvdata(pdev, netdev);
4680	netif_carrier_off(netdev);
4681	ixgbevf_init_ipsec_offload(adapter);
4682
4683	ixgbevf_init_last_counter_stats(adapter);
4684
4685	/* print the VF info */
4686	dev_info(&pdev->dev, "%pM\n", netdev->dev_addr);
4687	dev_info(&pdev->dev, "MAC: %d\n", hw->mac.type);
4688
4689	switch (hw->mac.type) {
4690	case ixgbe_mac_X550_vf:
4691		dev_info(&pdev->dev, "Intel(R) X550 Virtual Function\n");
4692		break;
4693	case ixgbe_mac_X540_vf:
4694		dev_info(&pdev->dev, "Intel(R) X540 Virtual Function\n");
4695		break;
4696	case ixgbe_mac_82599_vf:
4697	default:
4698		dev_info(&pdev->dev, "Intel(R) 82599 Virtual Function\n");
4699		break;
4700	}
4701
 
 
4702	return 0;
4703
4704err_register:
4705	ixgbevf_clear_interrupt_scheme(adapter);
4706err_sw_init:
4707	ixgbevf_reset_interrupt_capability(adapter);
4708	iounmap(adapter->io_addr);
4709	kfree(adapter->rss_key);
4710err_ioremap:
4711	disable_dev = !test_and_set_bit(__IXGBEVF_DISABLED, &adapter->state);
4712	free_netdev(netdev);
4713err_alloc_etherdev:
4714	pci_release_regions(pdev);
4715err_pci_reg:
4716err_dma:
4717	if (!adapter || disable_dev)
4718		pci_disable_device(pdev);
4719	return err;
4720}
4721
4722/**
4723 * ixgbevf_remove - Device Removal Routine
4724 * @pdev: PCI device information struct
4725 *
4726 * ixgbevf_remove is called by the PCI subsystem to alert the driver
4727 * that it should release a PCI device.  The could be caused by a
4728 * Hot-Plug event, or because the driver is going to be removed from
4729 * memory.
4730 **/
4731static void ixgbevf_remove(struct pci_dev *pdev)
4732{
4733	struct net_device *netdev = pci_get_drvdata(pdev);
4734	struct ixgbevf_adapter *adapter;
4735	bool disable_dev;
4736
4737	if (!netdev)
4738		return;
4739
4740	adapter = netdev_priv(netdev);
4741
4742	set_bit(__IXGBEVF_REMOVING, &adapter->state);
4743	cancel_work_sync(&adapter->service_task);
4744
4745	if (netdev->reg_state == NETREG_REGISTERED)
4746		unregister_netdev(netdev);
4747
4748	ixgbevf_stop_ipsec_offload(adapter);
4749	ixgbevf_clear_interrupt_scheme(adapter);
4750	ixgbevf_reset_interrupt_capability(adapter);
4751
4752	iounmap(adapter->io_addr);
4753	pci_release_regions(pdev);
4754
4755	hw_dbg(&adapter->hw, "Remove complete\n");
4756
4757	kfree(adapter->rss_key);
4758	disable_dev = !test_and_set_bit(__IXGBEVF_DISABLED, &adapter->state);
4759	free_netdev(netdev);
4760
4761	if (disable_dev)
4762		pci_disable_device(pdev);
4763}
4764
4765/**
4766 * ixgbevf_io_error_detected - called when PCI error is detected
4767 * @pdev: Pointer to PCI device
4768 * @state: The current pci connection state
4769 *
4770 * This function is called after a PCI bus error affecting
4771 * this device has been detected.
4772 **/
4773static pci_ers_result_t ixgbevf_io_error_detected(struct pci_dev *pdev,
4774						  pci_channel_state_t state)
4775{
4776	struct net_device *netdev = pci_get_drvdata(pdev);
4777	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4778
4779	if (!test_bit(__IXGBEVF_SERVICE_INITED, &adapter->state))
4780		return PCI_ERS_RESULT_DISCONNECT;
4781
4782	rtnl_lock();
4783	netif_device_detach(netdev);
4784
4785	if (netif_running(netdev))
4786		ixgbevf_close_suspend(adapter);
4787
4788	if (state == pci_channel_io_perm_failure) {
4789		rtnl_unlock();
4790		return PCI_ERS_RESULT_DISCONNECT;
4791	}
4792
 
 
 
4793	if (!test_and_set_bit(__IXGBEVF_DISABLED, &adapter->state))
4794		pci_disable_device(pdev);
4795	rtnl_unlock();
4796
4797	/* Request a slot reset. */
4798	return PCI_ERS_RESULT_NEED_RESET;
4799}
4800
4801/**
4802 * ixgbevf_io_slot_reset - called after the pci bus has been reset.
4803 * @pdev: Pointer to PCI device
4804 *
4805 * Restart the card from scratch, as if from a cold-boot. Implementation
4806 * resembles the first-half of the ixgbevf_resume routine.
4807 **/
4808static pci_ers_result_t ixgbevf_io_slot_reset(struct pci_dev *pdev)
4809{
4810	struct net_device *netdev = pci_get_drvdata(pdev);
4811	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4812
4813	if (pci_enable_device_mem(pdev)) {
4814		dev_err(&pdev->dev,
4815			"Cannot re-enable PCI device after reset.\n");
4816		return PCI_ERS_RESULT_DISCONNECT;
4817	}
4818
4819	adapter->hw.hw_addr = adapter->io_addr;
4820	smp_mb__before_atomic();
4821	clear_bit(__IXGBEVF_DISABLED, &adapter->state);
4822	pci_set_master(pdev);
4823
4824	ixgbevf_reset(adapter);
4825
4826	return PCI_ERS_RESULT_RECOVERED;
4827}
4828
4829/**
4830 * ixgbevf_io_resume - called when traffic can start flowing again.
4831 * @pdev: Pointer to PCI device
4832 *
4833 * This callback is called when the error recovery driver tells us that
4834 * its OK to resume normal operation. Implementation resembles the
4835 * second-half of the ixgbevf_resume routine.
4836 **/
4837static void ixgbevf_io_resume(struct pci_dev *pdev)
4838{
4839	struct net_device *netdev = pci_get_drvdata(pdev);
 
4840
4841	rtnl_lock();
4842	if (netif_running(netdev))
4843		ixgbevf_open(netdev);
4844
4845	netif_device_attach(netdev);
4846	rtnl_unlock();
4847}
4848
4849/* PCI Error Recovery (ERS) */
4850static const struct pci_error_handlers ixgbevf_err_handler = {
4851	.error_detected = ixgbevf_io_error_detected,
4852	.slot_reset = ixgbevf_io_slot_reset,
4853	.resume = ixgbevf_io_resume,
4854};
4855
4856static DEFINE_SIMPLE_DEV_PM_OPS(ixgbevf_pm_ops, ixgbevf_suspend, ixgbevf_resume);
4857
4858static struct pci_driver ixgbevf_driver = {
4859	.name		= ixgbevf_driver_name,
4860	.id_table	= ixgbevf_pci_tbl,
4861	.probe		= ixgbevf_probe,
4862	.remove		= ixgbevf_remove,
4863
4864	/* Power Management Hooks */
4865	.driver.pm	= pm_sleep_ptr(&ixgbevf_pm_ops),
4866
4867	.shutdown	= ixgbevf_shutdown,
4868	.err_handler	= &ixgbevf_err_handler
 
4869};
4870
4871/**
4872 * ixgbevf_init_module - Driver Registration Routine
4873 *
4874 * ixgbevf_init_module is the first routine called when the driver is
4875 * loaded. All it does is register with the PCI subsystem.
4876 **/
4877static int __init ixgbevf_init_module(void)
4878{
4879	int err;
 
 
4880
4881	pr_info("%s\n", ixgbevf_driver_string);
4882	pr_info("%s\n", ixgbevf_copyright);
4883	ixgbevf_wq = create_singlethread_workqueue(ixgbevf_driver_name);
4884	if (!ixgbevf_wq) {
4885		pr_err("%s: Failed to create workqueue\n", ixgbevf_driver_name);
4886		return -ENOMEM;
4887	}
4888
4889	err = pci_register_driver(&ixgbevf_driver);
4890	if (err) {
4891		destroy_workqueue(ixgbevf_wq);
4892		return err;
4893	}
4894
4895	return 0;
 
4896}
4897
4898module_init(ixgbevf_init_module);
4899
4900/**
4901 * ixgbevf_exit_module - Driver Exit Cleanup Routine
4902 *
4903 * ixgbevf_exit_module is called just before the driver is removed
4904 * from memory.
4905 **/
4906static void __exit ixgbevf_exit_module(void)
4907{
4908	pci_unregister_driver(&ixgbevf_driver);
4909	if (ixgbevf_wq) {
4910		destroy_workqueue(ixgbevf_wq);
4911		ixgbevf_wq = NULL;
4912	}
4913}
4914
4915#ifdef DEBUG
4916/**
4917 * ixgbevf_get_hw_dev_name - return device name string
4918 * used by hardware layer to print debugging information
4919 * @hw: pointer to private hardware struct
4920 **/
4921char *ixgbevf_get_hw_dev_name(struct ixgbe_hw *hw)
4922{
4923	struct ixgbevf_adapter *adapter = hw->back;
4924
4925	return adapter->netdev->name;
4926}
4927
4928#endif
4929module_exit(ixgbevf_exit_module);
4930
4931/* ixgbevf_main.c */
v3.15
   1/*******************************************************************************
   2
   3  Intel 82599 Virtual Function driver
   4  Copyright(c) 1999 - 2014 Intel Corporation.
   5
   6  This program is free software; you can redistribute it and/or modify it
   7  under the terms and conditions of the GNU General Public License,
   8  version 2, as published by the Free Software Foundation.
   9
  10  This program is distributed in the hope it will be useful, but WITHOUT
  11  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  13  more details.
  14
  15  You should have received a copy of the GNU General Public License along with
  16  this program; if not, write to the Free Software Foundation, Inc.,
  17  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
  18
  19  The full GNU General Public License is included in this distribution in
  20  the file called "COPYING".
  21
  22  Contact Information:
  23  e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
  24  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
  25
  26*******************************************************************************/
  27
  28
  29/******************************************************************************
  30 Copyright (c)2006 - 2007 Myricom, Inc. for some LRO specific code
  31******************************************************************************/
  32
  33#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
  34
  35#include <linux/types.h>
  36#include <linux/bitops.h>
  37#include <linux/module.h>
  38#include <linux/pci.h>
  39#include <linux/netdevice.h>
  40#include <linux/vmalloc.h>
  41#include <linux/string.h>
  42#include <linux/in.h>
  43#include <linux/ip.h>
  44#include <linux/tcp.h>
  45#include <linux/sctp.h>
  46#include <linux/ipv6.h>
  47#include <linux/slab.h>
  48#include <net/checksum.h>
  49#include <net/ip6_checksum.h>
  50#include <linux/ethtool.h>
  51#include <linux/if.h>
  52#include <linux/if_vlan.h>
  53#include <linux/prefetch.h>
 
 
 
 
 
  54
  55#include "ixgbevf.h"
  56
  57const char ixgbevf_driver_name[] = "ixgbevf";
  58static const char ixgbevf_driver_string[] =
  59	"Intel(R) 10 Gigabit PCI Express Virtual Function Network Driver";
  60
  61#define DRV_VERSION "2.12.1-k"
  62const char ixgbevf_driver_version[] = DRV_VERSION;
  63static char ixgbevf_copyright[] =
  64	"Copyright (c) 2009 - 2012 Intel Corporation.";
  65
  66static const struct ixgbevf_info *ixgbevf_info_tbl[] = {
  67	[board_82599_vf] = &ixgbevf_82599_vf_info,
  68	[board_X540_vf]  = &ixgbevf_X540_vf_info,
 
 
 
 
 
 
 
  69};
  70
  71/* ixgbevf_pci_tbl - PCI Device ID Table
  72 *
  73 * Wildcard entries (PCI_ANY_ID) should come last
  74 * Last entry must be all 0s
  75 *
  76 * { Vendor ID, Device ID, SubVendor ID, SubDevice ID,
  77 *   Class, Class Mask, private data (not used) }
  78 */
  79static DEFINE_PCI_DEVICE_TABLE(ixgbevf_pci_tbl) = {
  80	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_VF), board_82599_vf },
 
  81	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540_VF), board_X540_vf },
 
 
 
 
 
 
  82	/* required last entry */
  83	{0, }
  84};
  85MODULE_DEVICE_TABLE(pci, ixgbevf_pci_tbl);
  86
  87MODULE_AUTHOR("Intel Corporation, <linux.nics@intel.com>");
  88MODULE_DESCRIPTION("Intel(R) 82599 Virtual Function Driver");
  89MODULE_LICENSE("GPL");
  90MODULE_VERSION(DRV_VERSION);
  91
  92#define DEFAULT_MSG_ENABLE (NETIF_MSG_DRV|NETIF_MSG_PROBE|NETIF_MSG_LINK)
  93static int debug = -1;
  94module_param(debug, int, 0);
  95MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
  96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  97/* forward decls */
  98static void ixgbevf_queue_reset_subtask(struct ixgbevf_adapter *adapter);
  99static void ixgbevf_set_itr(struct ixgbevf_q_vector *q_vector);
 100static void ixgbevf_free_all_rx_resources(struct ixgbevf_adapter *adapter);
 
 
 
 101
 102static void ixgbevf_remove_adapter(struct ixgbe_hw *hw)
 103{
 104	struct ixgbevf_adapter *adapter = hw->back;
 105
 106	if (!hw->hw_addr)
 107		return;
 108	hw->hw_addr = NULL;
 109	dev_err(&adapter->pdev->dev, "Adapter removed\n");
 110	if (test_bit(__IXGBEVF_WORK_INIT, &adapter->state))
 111		schedule_work(&adapter->watchdog_task);
 112}
 113
 114static void ixgbevf_check_remove(struct ixgbe_hw *hw, u32 reg)
 115{
 116	u32 value;
 117
 118	/* The following check not only optimizes a bit by not
 119	 * performing a read on the status register when the
 120	 * register just read was a status register read that
 121	 * returned IXGBE_FAILED_READ_REG. It also blocks any
 122	 * potential recursion.
 123	 */
 124	if (reg == IXGBE_VFSTATUS) {
 125		ixgbevf_remove_adapter(hw);
 126		return;
 127	}
 128	value = ixgbevf_read_reg(hw, IXGBE_VFSTATUS);
 129	if (value == IXGBE_FAILED_READ_REG)
 130		ixgbevf_remove_adapter(hw);
 131}
 132
 133u32 ixgbevf_read_reg(struct ixgbe_hw *hw, u32 reg)
 134{
 135	u8 __iomem *reg_addr = ACCESS_ONCE(hw->hw_addr);
 136	u32 value;
 137
 138	if (IXGBE_REMOVED(reg_addr))
 139		return IXGBE_FAILED_READ_REG;
 140	value = readl(reg_addr + reg);
 141	if (unlikely(value == IXGBE_FAILED_READ_REG))
 142		ixgbevf_check_remove(hw, reg);
 143	return value;
 144}
 145
 146static inline void ixgbevf_release_rx_desc(struct ixgbevf_ring *rx_ring,
 147					   u32 val)
 148{
 149	rx_ring->next_to_use = val;
 150
 151	/*
 152	 * Force memory writes to complete before letting h/w
 153	 * know there are new descriptors to fetch.  (Only
 154	 * applicable for weak-ordered memory model archs,
 155	 * such as IA-64).
 156	 */
 157	wmb();
 158	ixgbevf_write_tail(rx_ring, val);
 159}
 160
 161/**
 162 * ixgbevf_set_ivar - set IVAR registers - maps interrupt causes to vectors
 163 * @adapter: pointer to adapter struct
 164 * @direction: 0 for Rx, 1 for Tx, -1 for other causes
 165 * @queue: queue to map the corresponding interrupt to
 166 * @msix_vector: the vector to map to the corresponding queue
 167 */
 168static void ixgbevf_set_ivar(struct ixgbevf_adapter *adapter, s8 direction,
 169			     u8 queue, u8 msix_vector)
 170{
 171	u32 ivar, index;
 172	struct ixgbe_hw *hw = &adapter->hw;
 
 173	if (direction == -1) {
 174		/* other causes */
 175		msix_vector |= IXGBE_IVAR_ALLOC_VAL;
 176		ivar = IXGBE_READ_REG(hw, IXGBE_VTIVAR_MISC);
 177		ivar &= ~0xFF;
 178		ivar |= msix_vector;
 179		IXGBE_WRITE_REG(hw, IXGBE_VTIVAR_MISC, ivar);
 180	} else {
 181		/* tx or rx causes */
 182		msix_vector |= IXGBE_IVAR_ALLOC_VAL;
 183		index = ((16 * (queue & 1)) + (8 * direction));
 184		ivar = IXGBE_READ_REG(hw, IXGBE_VTIVAR(queue >> 1));
 185		ivar &= ~(0xFF << index);
 186		ivar |= (msix_vector << index);
 187		IXGBE_WRITE_REG(hw, IXGBE_VTIVAR(queue >> 1), ivar);
 188	}
 189}
 190
 191static void ixgbevf_unmap_and_free_tx_resource(struct ixgbevf_ring *tx_ring,
 192					struct ixgbevf_tx_buffer *tx_buffer)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 193{
 194	if (tx_buffer->skb) {
 195		dev_kfree_skb_any(tx_buffer->skb);
 196		if (dma_unmap_len(tx_buffer, len))
 197			dma_unmap_single(tx_ring->dev,
 198					 dma_unmap_addr(tx_buffer, dma),
 199					 dma_unmap_len(tx_buffer, len),
 200					 DMA_TO_DEVICE);
 201	} else if (dma_unmap_len(tx_buffer, len)) {
 202		dma_unmap_page(tx_ring->dev,
 203			       dma_unmap_addr(tx_buffer, dma),
 204			       dma_unmap_len(tx_buffer, len),
 205			       DMA_TO_DEVICE);
 
 
 
 206	}
 207	tx_buffer->next_to_watch = NULL;
 208	tx_buffer->skb = NULL;
 209	dma_unmap_len_set(tx_buffer, len, 0);
 210	/* tx_buffer must be completely set up in the transmit path */
 
 
 
 211}
 212
 213#define IXGBE_MAX_TXD_PWR	14
 214#define IXGBE_MAX_DATA_PER_TXD	(1 << IXGBE_MAX_TXD_PWR)
 
 
 
 
 
 
 215
 216/* Tx Descriptors needed, worst case */
 217#define TXD_USE_COUNT(S) DIV_ROUND_UP((S), IXGBE_MAX_DATA_PER_TXD)
 218#define DESC_NEEDED (MAX_SKB_FRAGS + 4)
 
 
 
 
 
 219
 220static void ixgbevf_tx_timeout(struct net_device *netdev);
 
 221
 222/**
 223 * ixgbevf_clean_tx_irq - Reclaim resources after transmit completes
 224 * @q_vector: board private structure
 225 * @tx_ring: tx ring to clean
 
 226 **/
 227static bool ixgbevf_clean_tx_irq(struct ixgbevf_q_vector *q_vector,
 228				 struct ixgbevf_ring *tx_ring)
 229{
 230	struct ixgbevf_adapter *adapter = q_vector->adapter;
 231	struct ixgbevf_tx_buffer *tx_buffer;
 232	union ixgbe_adv_tx_desc *tx_desc;
 233	unsigned int total_bytes = 0, total_packets = 0;
 234	unsigned int budget = tx_ring->count / 2;
 235	unsigned int i = tx_ring->next_to_clean;
 236
 237	if (test_bit(__IXGBEVF_DOWN, &adapter->state))
 238		return true;
 239
 240	tx_buffer = &tx_ring->tx_buffer_info[i];
 241	tx_desc = IXGBEVF_TX_DESC(tx_ring, i);
 242	i -= tx_ring->count;
 243
 244	do {
 245		union ixgbe_adv_tx_desc *eop_desc = tx_buffer->next_to_watch;
 246
 247		/* if next_to_watch is not set then there is no work pending */
 248		if (!eop_desc)
 249			break;
 250
 251		/* prevent any other reads prior to eop_desc */
 252		read_barrier_depends();
 253
 254		/* if DD is not set pending work has not been completed */
 255		if (!(eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD)))
 256			break;
 257
 258		/* clear next_to_watch to prevent false hangs */
 259		tx_buffer->next_to_watch = NULL;
 260
 261		/* update the statistics for this packet */
 262		total_bytes += tx_buffer->bytecount;
 263		total_packets += tx_buffer->gso_segs;
 
 
 264
 265		/* free the skb */
 266		dev_kfree_skb_any(tx_buffer->skb);
 
 
 
 267
 268		/* unmap skb header data */
 269		dma_unmap_single(tx_ring->dev,
 270				 dma_unmap_addr(tx_buffer, dma),
 271				 dma_unmap_len(tx_buffer, len),
 272				 DMA_TO_DEVICE);
 273
 274		/* clear tx_buffer data */
 275		tx_buffer->skb = NULL;
 276		dma_unmap_len_set(tx_buffer, len, 0);
 277
 278		/* unmap remaining buffers */
 279		while (tx_desc != eop_desc) {
 280			tx_buffer++;
 281			tx_desc++;
 282			i++;
 283			if (unlikely(!i)) {
 284				i -= tx_ring->count;
 285				tx_buffer = tx_ring->tx_buffer_info;
 286				tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
 287			}
 288
 289			/* unmap any remaining paged data */
 290			if (dma_unmap_len(tx_buffer, len)) {
 291				dma_unmap_page(tx_ring->dev,
 292					       dma_unmap_addr(tx_buffer, dma),
 293					       dma_unmap_len(tx_buffer, len),
 294					       DMA_TO_DEVICE);
 295				dma_unmap_len_set(tx_buffer, len, 0);
 296			}
 297		}
 298
 299		/* move us one more past the eop_desc for start of next pkt */
 300		tx_buffer++;
 301		tx_desc++;
 302		i++;
 303		if (unlikely(!i)) {
 304			i -= tx_ring->count;
 305			tx_buffer = tx_ring->tx_buffer_info;
 306			tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
 307		}
 308
 309		/* issue prefetch for next Tx descriptor */
 310		prefetch(tx_desc);
 311
 312		/* update budget accounting */
 313		budget--;
 314	} while (likely(budget));
 315
 316	i += tx_ring->count;
 317	tx_ring->next_to_clean = i;
 318	u64_stats_update_begin(&tx_ring->syncp);
 319	tx_ring->stats.bytes += total_bytes;
 320	tx_ring->stats.packets += total_packets;
 321	u64_stats_update_end(&tx_ring->syncp);
 322	q_vector->tx.total_bytes += total_bytes;
 323	q_vector->tx.total_packets += total_packets;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 324
 325#define TX_WAKE_THRESHOLD (DESC_NEEDED * 2)
 326	if (unlikely(total_packets && netif_carrier_ok(tx_ring->netdev) &&
 327		     (ixgbevf_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD))) {
 328		/* Make sure that anybody stopping the queue after this
 329		 * sees the new next_to_clean.
 330		 */
 331		smp_mb();
 332
 333		if (__netif_subqueue_stopped(tx_ring->netdev,
 334					     tx_ring->queue_index) &&
 335		    !test_bit(__IXGBEVF_DOWN, &adapter->state)) {
 336			netif_wake_subqueue(tx_ring->netdev,
 337					    tx_ring->queue_index);
 338			++tx_ring->tx_stats.restart_queue;
 339		}
 340	}
 341
 342	return !!budget;
 343}
 344
 345/**
 346 * ixgbevf_receive_skb - Send a completed packet up the stack
 347 * @q_vector: structure containing interrupt and ring information
 348 * @skb: packet to send up
 349 * @status: hardware indication of status of receive
 350 * @rx_desc: rx descriptor
 351 **/
 352static void ixgbevf_receive_skb(struct ixgbevf_q_vector *q_vector,
 353				struct sk_buff *skb, u8 status,
 354				union ixgbe_adv_rx_desc *rx_desc)
 355{
 356	struct ixgbevf_adapter *adapter = q_vector->adapter;
 357	bool is_vlan = (status & IXGBE_RXD_STAT_VP);
 358	u16 tag = le16_to_cpu(rx_desc->wb.upper.vlan);
 
 
 
 
 
 359
 360	if (is_vlan && test_bit(tag & VLAN_VID_MASK, adapter->active_vlans))
 361		__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), tag);
 
 
 
 362
 363	if (!(adapter->flags & IXGBE_FLAG_IN_NETPOLL))
 364		napi_gro_receive(&q_vector->napi, skb);
 365	else
 366		netif_rx(skb);
 367}
 368
 369/**
 370 * ixgbevf_rx_skb - Helper function to determine proper Rx method
 371 * @q_vector: structure containing interrupt and ring information
 372 * @skb: packet to send up
 373 * @status: hardware indication of status of receive
 374 * @rx_desc: rx descriptor
 375 **/
 376static void ixgbevf_rx_skb(struct ixgbevf_q_vector *q_vector,
 377			   struct sk_buff *skb, u8 status,
 378			   union ixgbe_adv_rx_desc *rx_desc)
 379{
 380#ifdef CONFIG_NET_RX_BUSY_POLL
 381	skb_mark_napi_id(skb, &q_vector->napi);
 382
 383	if (ixgbevf_qv_busy_polling(q_vector)) {
 384		netif_receive_skb(skb);
 385		/* exit early if we busy polled */
 386		return;
 387	}
 388#endif /* CONFIG_NET_RX_BUSY_POLL */
 389
 390	ixgbevf_receive_skb(q_vector, skb, status, rx_desc);
 
 
 391}
 392
 393/**
 394 * ixgbevf_rx_checksum - indicate in skb if hw indicated a good cksum
 395 * @ring: pointer to Rx descriptor ring structure
 396 * @status_err: hardware indication of status of receive
 397 * @skb: skb currently being received and modified
 398 **/
 399static inline void ixgbevf_rx_checksum(struct ixgbevf_ring *ring,
 400				       u32 status_err, struct sk_buff *skb)
 
 401{
 402	skb_checksum_none_assert(skb);
 403
 404	/* Rx csum disabled */
 405	if (!(ring->netdev->features & NETIF_F_RXCSUM))
 406		return;
 407
 408	/* if IP and error */
 409	if ((status_err & IXGBE_RXD_STAT_IPCS) &&
 410	    (status_err & IXGBE_RXDADV_ERR_IPE)) {
 411		ring->rx_stats.csum_err++;
 412		return;
 413	}
 414
 415	if (!(status_err & IXGBE_RXD_STAT_L4CS))
 416		return;
 417
 418	if (status_err & IXGBE_RXDADV_ERR_TCPE) {
 419		ring->rx_stats.csum_err++;
 420		return;
 421	}
 422
 423	/* It must be a TCP or UDP packet with a valid checksum */
 424	skb->ip_summed = CHECKSUM_UNNECESSARY;
 425}
 426
 427/**
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 428 * ixgbevf_alloc_rx_buffers - Replace used receive buffers; packet split
 429 * @rx_ring: rx descriptor ring (for a specific queue) to setup buffers on
 
 430 **/
 431static void ixgbevf_alloc_rx_buffers(struct ixgbevf_ring *rx_ring,
 432				     int cleaned_count)
 433{
 434	union ixgbe_adv_rx_desc *rx_desc;
 435	struct ixgbevf_rx_buffer *bi;
 436	unsigned int i = rx_ring->next_to_use;
 437
 438	while (cleaned_count--) {
 439		rx_desc = IXGBEVF_RX_DESC(rx_ring, i);
 440		bi = &rx_ring->rx_buffer_info[i];
 441
 442		if (!bi->skb) {
 443			struct sk_buff *skb;
 444
 445			skb = netdev_alloc_skb_ip_align(rx_ring->netdev,
 446							rx_ring->rx_buf_len);
 447			if (!skb)
 448				goto no_buffers;
 449
 450			bi->skb = skb;
 
 
 451
 452			bi->dma = dma_map_single(rx_ring->dev, skb->data,
 453						 rx_ring->rx_buf_len,
 
 
 454						 DMA_FROM_DEVICE);
 455			if (dma_mapping_error(rx_ring->dev, bi->dma)) {
 456				dev_kfree_skb(skb);
 457				bi->skb = NULL;
 458				dev_err(rx_ring->dev, "Rx DMA map failed\n");
 459				break;
 460			}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 461		}
 462		rx_desc->read.pkt_addr = cpu_to_le64(bi->dma);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 463
 464		i++;
 465		if (i == rx_ring->count)
 466			i = 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 467	}
 468
 469no_buffers:
 470	rx_ring->rx_stats.alloc_rx_buff_failed++;
 471	if (rx_ring->next_to_use != i)
 472		ixgbevf_release_rx_desc(rx_ring, i);
 473}
 474
 475static inline void ixgbevf_irq_enable_queues(struct ixgbevf_adapter *adapter,
 476					     u32 qmask)
 477{
 478	struct ixgbe_hw *hw = &adapter->hw;
 479
 480	IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, qmask);
 481}
 482
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 483static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector,
 484				struct ixgbevf_ring *rx_ring,
 485				int budget)
 486{
 487	union ixgbe_adv_rx_desc *rx_desc, *next_rxd;
 488	struct ixgbevf_rx_buffer *rx_buffer_info, *next_buffer;
 489	struct sk_buff *skb;
 490	unsigned int i;
 491	u32 len, staterr;
 492	int cleaned_count = 0;
 493	unsigned int total_rx_bytes = 0, total_rx_packets = 0;
 
 
 
 
 
 
 
 
 
 
 494
 495	i = rx_ring->next_to_clean;
 496	rx_desc = IXGBEVF_RX_DESC(rx_ring, i);
 497	staterr = le32_to_cpu(rx_desc->wb.upper.status_error);
 498	rx_buffer_info = &rx_ring->rx_buffer_info[i];
 
 499
 500	while (staterr & IXGBE_RXD_STAT_DD) {
 501		if (!budget)
 
 502			break;
 503		budget--;
 504
 505		rmb(); /* read descriptor and rx_buffer_info after status DD */
 506		len = le16_to_cpu(rx_desc->wb.upper.length);
 507		skb = rx_buffer_info->skb;
 508		prefetch(skb->data - NET_IP_ALIGN);
 509		rx_buffer_info->skb = NULL;
 510
 511		if (rx_buffer_info->dma) {
 512			dma_unmap_single(rx_ring->dev, rx_buffer_info->dma,
 513					 rx_ring->rx_buf_len,
 514					 DMA_FROM_DEVICE);
 515			rx_buffer_info->dma = 0;
 516			skb_put(skb, len);
 
 
 
 
 
 
 
 
 
 517		}
 518
 519		i++;
 520		if (i == rx_ring->count)
 521			i = 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 522
 523		next_rxd = IXGBEVF_RX_DESC(rx_ring, i);
 524		prefetch(next_rxd);
 525		cleaned_count++;
 526
 527		next_buffer = &rx_ring->rx_buffer_info[i];
 
 
 528
 529		if (!(staterr & IXGBE_RXD_STAT_EOP)) {
 530			skb->next = next_buffer->skb;
 531			IXGBE_CB(skb->next)->prev = skb;
 532			rx_ring->rx_stats.non_eop_descs++;
 533			goto next_desc;
 534		}
 535
 536		/* we should not be chaining buffers, if we did drop the skb */
 537		if (IXGBE_CB(skb)->prev) {
 538			do {
 539				struct sk_buff *this = skb;
 540				skb = IXGBE_CB(skb)->prev;
 541				dev_kfree_skb(this);
 542			} while (skb);
 543			goto next_desc;
 544		}
 545
 546		/* ERR_MASK will only have valid bits if EOP set */
 547		if (unlikely(staterr & IXGBE_RXDADV_ERR_FRAME_ERR_MASK)) {
 548			dev_kfree_skb_irq(skb);
 549			goto next_desc;
 550		}
 551
 552		ixgbevf_rx_checksum(rx_ring, staterr, skb);
 553
 554		/* probably a little skewed due to removing CRC */
 555		total_rx_bytes += skb->len;
 556		total_rx_packets++;
 557
 558		skb->protocol = eth_type_trans(skb, rx_ring->netdev);
 559
 560		/* Workaround hardware that can't do proper VEPA multicast
 561		 * source pruning.
 562		 */
 563		if ((skb->pkt_type == PACKET_BROADCAST ||
 564		    skb->pkt_type == PACKET_MULTICAST) &&
 565		    ether_addr_equal(rx_ring->netdev->dev_addr,
 566				     eth_hdr(skb)->h_source)) {
 567			dev_kfree_skb_irq(skb);
 568			goto next_desc;
 569		}
 570
 571		ixgbevf_rx_skb(q_vector, skb, staterr, rx_desc);
 572
 573next_desc:
 574		rx_desc->wb.upper.status_error = 0;
 575
 576		/* return some buffers to hardware, one at a time is too slow */
 577		if (cleaned_count >= IXGBEVF_RX_BUFFER_WRITE) {
 578			ixgbevf_alloc_rx_buffers(rx_ring, cleaned_count);
 579			cleaned_count = 0;
 580		}
 581
 582		/* use prefetched values */
 583		rx_desc = next_rxd;
 584		rx_buffer_info = &rx_ring->rx_buffer_info[i];
 585
 586		staterr = le32_to_cpu(rx_desc->wb.upper.status_error);
 
 587	}
 588
 589	rx_ring->next_to_clean = i;
 590	cleaned_count = ixgbevf_desc_unused(rx_ring);
 591
 592	if (cleaned_count)
 593		ixgbevf_alloc_rx_buffers(rx_ring, cleaned_count);
 
 
 
 
 
 
 
 
 594
 595	u64_stats_update_begin(&rx_ring->syncp);
 596	rx_ring->stats.packets += total_rx_packets;
 597	rx_ring->stats.bytes += total_rx_bytes;
 598	u64_stats_update_end(&rx_ring->syncp);
 599	q_vector->rx.total_packets += total_rx_packets;
 600	q_vector->rx.total_bytes += total_rx_bytes;
 601
 602	return total_rx_packets;
 603}
 604
 605/**
 606 * ixgbevf_poll - NAPI polling calback
 607 * @napi: napi struct with our devices info in it
 608 * @budget: amount of work driver is allowed to do this pass, in packets
 609 *
 610 * This function will clean more than one or more rings associated with a
 611 * q_vector.
 612 **/
 613static int ixgbevf_poll(struct napi_struct *napi, int budget)
 614{
 615	struct ixgbevf_q_vector *q_vector =
 616		container_of(napi, struct ixgbevf_q_vector, napi);
 617	struct ixgbevf_adapter *adapter = q_vector->adapter;
 618	struct ixgbevf_ring *ring;
 619	int per_ring_budget;
 620	bool clean_complete = true;
 621
 622	ixgbevf_for_each_ring(ring, q_vector->tx)
 623		clean_complete &= ixgbevf_clean_tx_irq(q_vector, ring);
 
 
 624
 625#ifdef CONFIG_NET_RX_BUSY_POLL
 626	if (!ixgbevf_qv_lock_napi(q_vector))
 627		return budget;
 628#endif
 629
 630	/* attempt to distribute budget to each queue fairly, but don't allow
 631	 * the budget to go below 1 because we'll exit polling */
 
 632	if (q_vector->rx.count > 1)
 633		per_ring_budget = max(budget/q_vector->rx.count, 1);
 634	else
 635		per_ring_budget = budget;
 636
 637	adapter->flags |= IXGBE_FLAG_IN_NETPOLL;
 638	ixgbevf_for_each_ring(ring, q_vector->rx)
 639		clean_complete &= (ixgbevf_clean_rx_irq(q_vector, ring,
 640							per_ring_budget)
 641				   < per_ring_budget);
 642	adapter->flags &= ~IXGBE_FLAG_IN_NETPOLL;
 643
 644#ifdef CONFIG_NET_RX_BUSY_POLL
 645	ixgbevf_qv_unlock_napi(q_vector);
 646#endif
 647
 648	/* If all work not completed, return budget and keep polling */
 649	if (!clean_complete)
 650		return budget;
 651	/* all work done, exit the polling mode */
 652	napi_complete(napi);
 653	if (adapter->rx_itr_setting & 1)
 654		ixgbevf_set_itr(q_vector);
 655	if (!test_bit(__IXGBEVF_DOWN, &adapter->state) &&
 656	    !test_bit(__IXGBEVF_REMOVING, &adapter->state))
 657		ixgbevf_irq_enable_queues(adapter,
 658					  1 << q_vector->v_idx);
 659
 660	return 0;
 
 
 
 
 
 
 
 
 
 
 
 
 661}
 662
 663/**
 664 * ixgbevf_write_eitr - write VTEITR register in hardware specific way
 665 * @q_vector: structure containing interrupt and ring information
 666 */
 667void ixgbevf_write_eitr(struct ixgbevf_q_vector *q_vector)
 668{
 669	struct ixgbevf_adapter *adapter = q_vector->adapter;
 670	struct ixgbe_hw *hw = &adapter->hw;
 671	int v_idx = q_vector->v_idx;
 672	u32 itr_reg = q_vector->itr & IXGBE_MAX_EITR;
 673
 674	/*
 675	 * set the WDIS bit to not clear the timer bits and cause an
 676	 * immediate assertion of the interrupt
 677	 */
 678	itr_reg |= IXGBE_EITR_CNT_WDIS;
 679
 680	IXGBE_WRITE_REG(hw, IXGBE_VTEITR(v_idx), itr_reg);
 681}
 682
 683#ifdef CONFIG_NET_RX_BUSY_POLL
 684/* must be called with local_bh_disable()d */
 685static int ixgbevf_busy_poll_recv(struct napi_struct *napi)
 686{
 687	struct ixgbevf_q_vector *q_vector =
 688			container_of(napi, struct ixgbevf_q_vector, napi);
 689	struct ixgbevf_adapter *adapter = q_vector->adapter;
 690	struct ixgbevf_ring  *ring;
 691	int found = 0;
 692
 693	if (test_bit(__IXGBEVF_DOWN, &adapter->state))
 694		return LL_FLUSH_FAILED;
 695
 696	if (!ixgbevf_qv_lock_poll(q_vector))
 697		return LL_FLUSH_BUSY;
 698
 699	ixgbevf_for_each_ring(ring, q_vector->rx) {
 700		found = ixgbevf_clean_rx_irq(q_vector, ring, 4);
 701#ifdef BP_EXTENDED_STATS
 702		if (found)
 703			ring->stats.cleaned += found;
 704		else
 705			ring->stats.misses++;
 706#endif
 707		if (found)
 708			break;
 709	}
 710
 711	ixgbevf_qv_unlock_poll(q_vector);
 712
 713	return found;
 714}
 715#endif /* CONFIG_NET_RX_BUSY_POLL */
 716
 717/**
 718 * ixgbevf_configure_msix - Configure MSI-X hardware
 719 * @adapter: board private structure
 720 *
 721 * ixgbevf_configure_msix sets up the hardware to properly generate MSI-X
 722 * interrupts.
 723 **/
 724static void ixgbevf_configure_msix(struct ixgbevf_adapter *adapter)
 725{
 726	struct ixgbevf_q_vector *q_vector;
 727	int q_vectors, v_idx;
 728
 729	q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
 730	adapter->eims_enable_mask = 0;
 731
 732	/*
 733	 * Populate the IVAR table and set the ITR values to the
 734	 * corresponding register.
 735	 */
 736	for (v_idx = 0; v_idx < q_vectors; v_idx++) {
 737		struct ixgbevf_ring *ring;
 
 738		q_vector = adapter->q_vector[v_idx];
 739
 740		ixgbevf_for_each_ring(ring, q_vector->rx)
 741			ixgbevf_set_ivar(adapter, 0, ring->reg_idx, v_idx);
 742
 743		ixgbevf_for_each_ring(ring, q_vector->tx)
 744			ixgbevf_set_ivar(adapter, 1, ring->reg_idx, v_idx);
 745
 746		if (q_vector->tx.ring && !q_vector->rx.ring) {
 747			/* tx only vector */
 748			if (adapter->tx_itr_setting == 1)
 749				q_vector->itr = IXGBE_10K_ITR;
 750			else
 751				q_vector->itr = adapter->tx_itr_setting;
 752		} else {
 753			/* rx or rx/tx vector */
 754			if (adapter->rx_itr_setting == 1)
 755				q_vector->itr = IXGBE_20K_ITR;
 756			else
 757				q_vector->itr = adapter->rx_itr_setting;
 758		}
 759
 760		/* add q_vector eims value to global eims_enable_mask */
 761		adapter->eims_enable_mask |= 1 << v_idx;
 762
 763		ixgbevf_write_eitr(q_vector);
 764	}
 765
 766	ixgbevf_set_ivar(adapter, -1, 1, v_idx);
 767	/* setup eims_other and add value to global eims_enable_mask */
 768	adapter->eims_other = 1 << v_idx;
 769	adapter->eims_enable_mask |= adapter->eims_other;
 770}
 771
 772enum latency_range {
 773	lowest_latency = 0,
 774	low_latency = 1,
 775	bulk_latency = 2,
 776	latency_invalid = 255
 777};
 778
 779/**
 780 * ixgbevf_update_itr - update the dynamic ITR value based on statistics
 781 * @q_vector: structure containing interrupt and ring information
 782 * @ring_container: structure containing ring performance data
 783 *
 784 *      Stores a new ITR value based on packets and byte
 785 *      counts during the last interrupt.  The advantage of per interrupt
 786 *      computation is faster updates and more accurate ITR for the current
 787 *      traffic pattern.  Constants in this function were computed
 788 *      based on theoretical maximum wire speed and thresholds were set based
 789 *      on testing data as well as attempting to minimize response time
 790 *      while increasing bulk throughput.
 791 **/
 792static void ixgbevf_update_itr(struct ixgbevf_q_vector *q_vector,
 793			       struct ixgbevf_ring_container *ring_container)
 794{
 795	int bytes = ring_container->total_bytes;
 796	int packets = ring_container->total_packets;
 797	u32 timepassed_us;
 798	u64 bytes_perint;
 799	u8 itr_setting = ring_container->itr;
 800
 801	if (packets == 0)
 802		return;
 803
 804	/* simple throttlerate management
 805	 *    0-20MB/s lowest (100000 ints/s)
 806	 *   20-100MB/s low   (20000 ints/s)
 807	 *  100-1249MB/s bulk (8000 ints/s)
 808	 */
 809	/* what was last interrupt timeslice? */
 810	timepassed_us = q_vector->itr >> 2;
 
 
 
 811	bytes_perint = bytes / timepassed_us; /* bytes/usec */
 812
 813	switch (itr_setting) {
 814	case lowest_latency:
 815		if (bytes_perint > 10)
 816			itr_setting = low_latency;
 817		break;
 818	case low_latency:
 819		if (bytes_perint > 20)
 820			itr_setting = bulk_latency;
 821		else if (bytes_perint <= 10)
 822			itr_setting = lowest_latency;
 823		break;
 824	case bulk_latency:
 825		if (bytes_perint <= 20)
 826			itr_setting = low_latency;
 827		break;
 828	}
 829
 830	/* clear work counters since we have the values we need */
 831	ring_container->total_bytes = 0;
 832	ring_container->total_packets = 0;
 833
 834	/* write updated itr to ring container */
 835	ring_container->itr = itr_setting;
 836}
 837
 838static void ixgbevf_set_itr(struct ixgbevf_q_vector *q_vector)
 839{
 840	u32 new_itr = q_vector->itr;
 841	u8 current_itr;
 842
 843	ixgbevf_update_itr(q_vector, &q_vector->tx);
 844	ixgbevf_update_itr(q_vector, &q_vector->rx);
 845
 846	current_itr = max(q_vector->rx.itr, q_vector->tx.itr);
 847
 848	switch (current_itr) {
 849	/* counts and packets in update_itr are dependent on these numbers */
 850	case lowest_latency:
 851		new_itr = IXGBE_100K_ITR;
 852		break;
 853	case low_latency:
 854		new_itr = IXGBE_20K_ITR;
 855		break;
 856	case bulk_latency:
 
 
 857	default:
 858		new_itr = IXGBE_8K_ITR;
 859		break;
 860	}
 861
 862	if (new_itr != q_vector->itr) {
 863		/* do an exponential smoothing */
 864		new_itr = (10 * new_itr * q_vector->itr) /
 865			  ((9 * new_itr) + q_vector->itr);
 866
 867		/* save the algorithm value here */
 868		q_vector->itr = new_itr;
 869
 870		ixgbevf_write_eitr(q_vector);
 871	}
 872}
 873
 874static irqreturn_t ixgbevf_msix_other(int irq, void *data)
 875{
 876	struct ixgbevf_adapter *adapter = data;
 877	struct ixgbe_hw *hw = &adapter->hw;
 878
 879	hw->mac.get_link_status = 1;
 880
 881	if (!test_bit(__IXGBEVF_DOWN, &adapter->state) &&
 882	    !test_bit(__IXGBEVF_REMOVING, &adapter->state))
 883		mod_timer(&adapter->watchdog_timer, jiffies);
 884
 885	IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, adapter->eims_other);
 886
 887	return IRQ_HANDLED;
 888}
 889
 890/**
 891 * ixgbevf_msix_clean_rings - single unshared vector rx clean (all queues)
 892 * @irq: unused
 893 * @data: pointer to our q_vector struct for this interrupt vector
 894 **/
 895static irqreturn_t ixgbevf_msix_clean_rings(int irq, void *data)
 896{
 897	struct ixgbevf_q_vector *q_vector = data;
 898
 899	/* EIAM disabled interrupts (on this vector) for us */
 900	if (q_vector->rx.ring || q_vector->tx.ring)
 901		napi_schedule(&q_vector->napi);
 902
 903	return IRQ_HANDLED;
 904}
 905
 906static inline void map_vector_to_rxq(struct ixgbevf_adapter *a, int v_idx,
 907				     int r_idx)
 908{
 909	struct ixgbevf_q_vector *q_vector = a->q_vector[v_idx];
 910
 911	a->rx_ring[r_idx]->next = q_vector->rx.ring;
 912	q_vector->rx.ring = a->rx_ring[r_idx];
 913	q_vector->rx.count++;
 914}
 915
 916static inline void map_vector_to_txq(struct ixgbevf_adapter *a, int v_idx,
 917				     int t_idx)
 918{
 919	struct ixgbevf_q_vector *q_vector = a->q_vector[v_idx];
 920
 921	a->tx_ring[t_idx]->next = q_vector->tx.ring;
 922	q_vector->tx.ring = a->tx_ring[t_idx];
 923	q_vector->tx.count++;
 924}
 925
 926/**
 927 * ixgbevf_map_rings_to_vectors - Maps descriptor rings to vectors
 928 * @adapter: board private structure to initialize
 929 *
 930 * This function maps descriptor rings to the queue-specific vectors
 931 * we were allotted through the MSI-X enabling code.  Ideally, we'd have
 932 * one vector per ring/queue, but on a constrained vector budget, we
 933 * group the rings as "efficiently" as possible.  You would add new
 934 * mapping configurations in here.
 935 **/
 936static int ixgbevf_map_rings_to_vectors(struct ixgbevf_adapter *adapter)
 937{
 938	int q_vectors;
 939	int v_start = 0;
 940	int rxr_idx = 0, txr_idx = 0;
 941	int rxr_remaining = adapter->num_rx_queues;
 942	int txr_remaining = adapter->num_tx_queues;
 943	int i, j;
 944	int rqpv, tqpv;
 945	int err = 0;
 946
 947	q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
 948
 949	/*
 950	 * The ideal configuration...
 951	 * We have enough vectors to map one per queue.
 952	 */
 953	if (q_vectors == adapter->num_rx_queues + adapter->num_tx_queues) {
 954		for (; rxr_idx < rxr_remaining; v_start++, rxr_idx++)
 955			map_vector_to_rxq(adapter, v_start, rxr_idx);
 956
 957		for (; txr_idx < txr_remaining; v_start++, txr_idx++)
 958			map_vector_to_txq(adapter, v_start, txr_idx);
 959		goto out;
 960	}
 961
 962	/*
 963	 * If we don't have enough vectors for a 1-to-1
 964	 * mapping, we'll have to group them so there are
 965	 * multiple queues per vector.
 966	 */
 967	/* Re-adjusting *qpv takes care of the remainder. */
 968	for (i = v_start; i < q_vectors; i++) {
 969		rqpv = DIV_ROUND_UP(rxr_remaining, q_vectors - i);
 970		for (j = 0; j < rqpv; j++) {
 971			map_vector_to_rxq(adapter, i, rxr_idx);
 972			rxr_idx++;
 973			rxr_remaining--;
 974		}
 975	}
 976	for (i = v_start; i < q_vectors; i++) {
 977		tqpv = DIV_ROUND_UP(txr_remaining, q_vectors - i);
 978		for (j = 0; j < tqpv; j++) {
 979			map_vector_to_txq(adapter, i, txr_idx);
 980			txr_idx++;
 981			txr_remaining--;
 982		}
 983	}
 984
 985out:
 986	return err;
 987}
 988
 989/**
 990 * ixgbevf_request_msix_irqs - Initialize MSI-X interrupts
 991 * @adapter: board private structure
 992 *
 993 * ixgbevf_request_msix_irqs allocates MSI-X vectors and requests
 994 * interrupts from the kernel.
 995 **/
 996static int ixgbevf_request_msix_irqs(struct ixgbevf_adapter *adapter)
 997{
 998	struct net_device *netdev = adapter->netdev;
 999	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
 
1000	int vector, err;
1001	int ri = 0, ti = 0;
1002
1003	for (vector = 0; vector < q_vectors; vector++) {
1004		struct ixgbevf_q_vector *q_vector = adapter->q_vector[vector];
1005		struct msix_entry *entry = &adapter->msix_entries[vector];
1006
1007		if (q_vector->tx.ring && q_vector->rx.ring) {
1008			snprintf(q_vector->name, sizeof(q_vector->name) - 1,
1009				 "%s-%s-%d", netdev->name, "TxRx", ri++);
1010			ti++;
1011		} else if (q_vector->rx.ring) {
1012			snprintf(q_vector->name, sizeof(q_vector->name) - 1,
1013				 "%s-%s-%d", netdev->name, "rx", ri++);
1014		} else if (q_vector->tx.ring) {
1015			snprintf(q_vector->name, sizeof(q_vector->name) - 1,
1016				 "%s-%s-%d", netdev->name, "tx", ti++);
1017		} else {
1018			/* skip this unused q_vector */
1019			continue;
1020		}
1021		err = request_irq(entry->vector, &ixgbevf_msix_clean_rings, 0,
1022				  q_vector->name, q_vector);
1023		if (err) {
1024			hw_dbg(&adapter->hw,
1025			       "request_irq failed for MSIX interrupt "
1026			       "Error: %d\n", err);
1027			goto free_queue_irqs;
1028		}
1029	}
1030
1031	err = request_irq(adapter->msix_entries[vector].vector,
1032			  &ixgbevf_msix_other, 0, netdev->name, adapter);
1033	if (err) {
1034		hw_dbg(&adapter->hw,
1035		       "request_irq for msix_other failed: %d\n", err);
1036		goto free_queue_irqs;
1037	}
1038
1039	return 0;
1040
1041free_queue_irqs:
1042	while (vector) {
1043		vector--;
1044		free_irq(adapter->msix_entries[vector].vector,
1045			 adapter->q_vector[vector]);
1046	}
1047	/* This failure is non-recoverable - it indicates the system is
1048	 * out of MSIX vector resources and the VF driver cannot run
1049	 * without them.  Set the number of msix vectors to zero
1050	 * indicating that not enough can be allocated.  The error
1051	 * will be returned to the user indicating device open failed.
1052	 * Any further attempts to force the driver to open will also
1053	 * fail.  The only way to recover is to unload the driver and
1054	 * reload it again.  If the system has recovered some MSIX
1055	 * vectors then it may succeed.
1056	 */
1057	adapter->num_msix_vectors = 0;
1058	return err;
1059}
1060
1061static inline void ixgbevf_reset_q_vectors(struct ixgbevf_adapter *adapter)
1062{
1063	int i, q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
1064
1065	for (i = 0; i < q_vectors; i++) {
1066		struct ixgbevf_q_vector *q_vector = adapter->q_vector[i];
1067		q_vector->rx.ring = NULL;
1068		q_vector->tx.ring = NULL;
1069		q_vector->rx.count = 0;
1070		q_vector->tx.count = 0;
1071	}
1072}
1073
1074/**
1075 * ixgbevf_request_irq - initialize interrupts
1076 * @adapter: board private structure
1077 *
1078 * Attempts to configure interrupts using the best available
1079 * capabilities of the hardware and kernel.
1080 **/
1081static int ixgbevf_request_irq(struct ixgbevf_adapter *adapter)
1082{
1083	int err = 0;
1084
1085	err = ixgbevf_request_msix_irqs(adapter);
1086
1087	if (err)
1088		hw_dbg(&adapter->hw,
1089		       "request_irq failed, Error %d\n", err);
1090
1091	return err;
1092}
1093
1094static void ixgbevf_free_irq(struct ixgbevf_adapter *adapter)
1095{
1096	int i, q_vectors;
1097
 
 
 
1098	q_vectors = adapter->num_msix_vectors;
1099	i = q_vectors - 1;
1100
1101	free_irq(adapter->msix_entries[i].vector, adapter);
1102	i--;
1103
1104	for (; i >= 0; i--) {
1105		/* free only the irqs that were actually requested */
1106		if (!adapter->q_vector[i]->rx.ring &&
1107		    !adapter->q_vector[i]->tx.ring)
1108			continue;
1109
1110		free_irq(adapter->msix_entries[i].vector,
1111			 adapter->q_vector[i]);
1112	}
1113
1114	ixgbevf_reset_q_vectors(adapter);
1115}
1116
1117/**
1118 * ixgbevf_irq_disable - Mask off interrupt generation on the NIC
1119 * @adapter: board private structure
1120 **/
1121static inline void ixgbevf_irq_disable(struct ixgbevf_adapter *adapter)
1122{
1123	struct ixgbe_hw *hw = &adapter->hw;
1124	int i;
1125
1126	IXGBE_WRITE_REG(hw, IXGBE_VTEIAM, 0);
1127	IXGBE_WRITE_REG(hw, IXGBE_VTEIMC, ~0);
1128	IXGBE_WRITE_REG(hw, IXGBE_VTEIAC, 0);
1129
1130	IXGBE_WRITE_FLUSH(hw);
1131
1132	for (i = 0; i < adapter->num_msix_vectors; i++)
1133		synchronize_irq(adapter->msix_entries[i].vector);
1134}
1135
1136/**
1137 * ixgbevf_irq_enable - Enable default interrupt generation settings
1138 * @adapter: board private structure
1139 **/
1140static inline void ixgbevf_irq_enable(struct ixgbevf_adapter *adapter)
1141{
1142	struct ixgbe_hw *hw = &adapter->hw;
1143
1144	IXGBE_WRITE_REG(hw, IXGBE_VTEIAM, adapter->eims_enable_mask);
1145	IXGBE_WRITE_REG(hw, IXGBE_VTEIAC, adapter->eims_enable_mask);
1146	IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, adapter->eims_enable_mask);
1147}
1148
1149/**
1150 * ixgbevf_configure_tx_ring - Configure 82599 VF Tx ring after Reset
1151 * @adapter: board private structure
1152 * @ring: structure containing ring specific data
1153 *
1154 * Configure the Tx descriptor ring after a reset.
1155 **/
1156static void ixgbevf_configure_tx_ring(struct ixgbevf_adapter *adapter,
1157				      struct ixgbevf_ring *ring)
1158{
1159	struct ixgbe_hw *hw = &adapter->hw;
1160	u64 tdba = ring->dma;
1161	int wait_loop = 10;
1162	u32 txdctl = IXGBE_TXDCTL_ENABLE;
1163	u8 reg_idx = ring->reg_idx;
1164
1165	/* disable queue to avoid issues while updating state */
1166	IXGBE_WRITE_REG(hw, IXGBE_VFTXDCTL(reg_idx), IXGBE_TXDCTL_SWFLSH);
1167	IXGBE_WRITE_FLUSH(hw);
1168
1169	IXGBE_WRITE_REG(hw, IXGBE_VFTDBAL(reg_idx), tdba & DMA_BIT_MASK(32));
1170	IXGBE_WRITE_REG(hw, IXGBE_VFTDBAH(reg_idx), tdba >> 32);
1171	IXGBE_WRITE_REG(hw, IXGBE_VFTDLEN(reg_idx),
1172			ring->count * sizeof(union ixgbe_adv_tx_desc));
1173
1174	/* disable head writeback */
1175	IXGBE_WRITE_REG(hw, IXGBE_VFTDWBAH(reg_idx), 0);
1176	IXGBE_WRITE_REG(hw, IXGBE_VFTDWBAL(reg_idx), 0);
1177
1178	/* enable relaxed ordering */
1179	IXGBE_WRITE_REG(hw, IXGBE_VFDCA_TXCTRL(reg_idx),
1180			(IXGBE_DCA_TXCTRL_DESC_RRO_EN |
1181			 IXGBE_DCA_TXCTRL_DATA_RRO_EN));
1182
1183	/* reset head and tail pointers */
1184	IXGBE_WRITE_REG(hw, IXGBE_VFTDH(reg_idx), 0);
1185	IXGBE_WRITE_REG(hw, IXGBE_VFTDT(reg_idx), 0);
1186	ring->tail = adapter->io_addr + IXGBE_VFTDT(reg_idx);
1187
1188	/* reset ntu and ntc to place SW in sync with hardwdare */
1189	ring->next_to_clean = 0;
1190	ring->next_to_use = 0;
1191
1192	/* In order to avoid issues WTHRESH + PTHRESH should always be equal
1193	 * to or less than the number of on chip descriptors, which is
1194	 * currently 40.
1195	 */
1196	txdctl |= (8 << 16);    /* WTHRESH = 8 */
1197
1198	/* Setting PTHRESH to 32 both improves performance */
1199	txdctl |= (1 << 8) |    /* HTHRESH = 1 */
1200		  32;          /* PTHRESH = 32 */
 
 
 
 
 
 
 
1201
1202	IXGBE_WRITE_REG(hw, IXGBE_VFTXDCTL(reg_idx), txdctl);
1203
1204	/* poll to verify queue is enabled */
1205	do {
1206		usleep_range(1000, 2000);
1207		txdctl = IXGBE_READ_REG(hw, IXGBE_VFTXDCTL(reg_idx));
1208	}  while (--wait_loop && !(txdctl & IXGBE_TXDCTL_ENABLE));
1209	if (!wait_loop)
1210		pr_err("Could not enable Tx Queue %d\n", reg_idx);
1211}
1212
1213/**
1214 * ixgbevf_configure_tx - Configure 82599 VF Transmit Unit after Reset
1215 * @adapter: board private structure
1216 *
1217 * Configure the Tx unit of the MAC after a reset.
1218 **/
1219static void ixgbevf_configure_tx(struct ixgbevf_adapter *adapter)
1220{
1221	u32 i;
1222
1223	/* Setup the HW Tx Head and Tail descriptor pointers */
1224	for (i = 0; i < adapter->num_tx_queues; i++)
1225		ixgbevf_configure_tx_ring(adapter, adapter->tx_ring[i]);
 
 
1226}
1227
1228#define IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT	2
1229
1230static void ixgbevf_configure_srrctl(struct ixgbevf_adapter *adapter, int index)
 
1231{
1232	struct ixgbevf_ring *rx_ring;
1233	struct ixgbe_hw *hw = &adapter->hw;
1234	u32 srrctl;
1235
1236	rx_ring = adapter->rx_ring[index];
1237
1238	srrctl = IXGBE_SRRCTL_DROP_EN;
1239
 
 
 
 
 
1240	srrctl |= IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF;
1241
1242	srrctl |= ALIGN(rx_ring->rx_buf_len, 1024) >>
1243		  IXGBE_SRRCTL_BSIZEPKT_SHIFT;
1244
1245	IXGBE_WRITE_REG(hw, IXGBE_VFSRRCTL(index), srrctl);
1246}
1247
1248static void ixgbevf_setup_psrtype(struct ixgbevf_adapter *adapter)
1249{
1250	struct ixgbe_hw *hw = &adapter->hw;
1251
1252	/* PSRTYPE must be initialized in 82599 */
1253	u32 psrtype = IXGBE_PSRTYPE_TCPHDR | IXGBE_PSRTYPE_UDPHDR |
1254		      IXGBE_PSRTYPE_IPV4HDR | IXGBE_PSRTYPE_IPV6HDR |
1255		      IXGBE_PSRTYPE_L2HDR;
1256
1257	if (adapter->num_rx_queues > 1)
1258		psrtype |= 1 << 29;
1259
1260	IXGBE_WRITE_REG(hw, IXGBE_VFPSRTYPE, psrtype);
1261}
1262
1263static void ixgbevf_set_rx_buffer_len(struct ixgbevf_adapter *adapter)
1264{
1265	struct ixgbe_hw *hw = &adapter->hw;
1266	struct net_device *netdev = adapter->netdev;
1267	int max_frame = netdev->mtu + ETH_HLEN + ETH_FCS_LEN;
1268	int i;
1269	u16 rx_buf_len;
1270
1271	/* notify the PF of our intent to use this size of frame */
1272	ixgbevf_rlpml_set_vf(hw, max_frame);
1273
1274	/* PF will allow an extra 4 bytes past for vlan tagged frames */
1275	max_frame += VLAN_HLEN;
1276
1277	/*
1278	 * Allocate buffer sizes that fit well into 32K and
1279	 * take into account max frame size of 9.5K
1280	 */
1281	if ((hw->mac.type == ixgbe_mac_X540_vf) &&
1282	    (max_frame <= MAXIMUM_ETHERNET_VLAN_SIZE))
1283		rx_buf_len = MAXIMUM_ETHERNET_VLAN_SIZE;
1284	else if (max_frame <= IXGBEVF_RXBUFFER_2K)
1285		rx_buf_len = IXGBEVF_RXBUFFER_2K;
1286	else if (max_frame <= IXGBEVF_RXBUFFER_4K)
1287		rx_buf_len = IXGBEVF_RXBUFFER_4K;
1288	else if (max_frame <= IXGBEVF_RXBUFFER_8K)
1289		rx_buf_len = IXGBEVF_RXBUFFER_8K;
1290	else
1291		rx_buf_len = IXGBEVF_RXBUFFER_10K;
1292
1293	for (i = 0; i < adapter->num_rx_queues; i++)
1294		adapter->rx_ring[i]->rx_buf_len = rx_buf_len;
1295}
1296
1297#define IXGBEVF_MAX_RX_DESC_POLL 10
1298static void ixgbevf_disable_rx_queue(struct ixgbevf_adapter *adapter,
1299				     struct ixgbevf_ring *ring)
1300{
1301	struct ixgbe_hw *hw = &adapter->hw;
1302	int wait_loop = IXGBEVF_MAX_RX_DESC_POLL;
1303	u32 rxdctl;
1304	u8 reg_idx = ring->reg_idx;
1305
1306	if (IXGBE_REMOVED(hw->hw_addr))
1307		return;
1308	rxdctl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(reg_idx));
1309	rxdctl &= ~IXGBE_RXDCTL_ENABLE;
1310
1311	/* write value back with RXDCTL.ENABLE bit cleared */
1312	IXGBE_WRITE_REG(hw, IXGBE_VFRXDCTL(reg_idx), rxdctl);
1313
1314	/* the hardware may take up to 100us to really disable the rx queue */
1315	do {
1316		udelay(10);
1317		rxdctl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(reg_idx));
1318	} while (--wait_loop && (rxdctl & IXGBE_RXDCTL_ENABLE));
1319
1320	if (!wait_loop)
1321		pr_err("RXDCTL.ENABLE queue %d not cleared while polling\n",
1322		       reg_idx);
1323}
1324
1325static void ixgbevf_rx_desc_queue_enable(struct ixgbevf_adapter *adapter,
1326					 struct ixgbevf_ring *ring)
1327{
1328	struct ixgbe_hw *hw = &adapter->hw;
1329	int wait_loop = IXGBEVF_MAX_RX_DESC_POLL;
1330	u32 rxdctl;
1331	u8 reg_idx = ring->reg_idx;
1332
1333	if (IXGBE_REMOVED(hw->hw_addr))
1334		return;
1335	do {
1336		usleep_range(1000, 2000);
1337		rxdctl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(reg_idx));
1338	} while (--wait_loop && !(rxdctl & IXGBE_RXDCTL_ENABLE));
1339
1340	if (!wait_loop)
1341		pr_err("RXDCTL.ENABLE queue %d not set while polling\n",
1342		       reg_idx);
1343}
1344
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1345static void ixgbevf_configure_rx_ring(struct ixgbevf_adapter *adapter,
1346				      struct ixgbevf_ring *ring)
1347{
1348	struct ixgbe_hw *hw = &adapter->hw;
 
1349	u64 rdba = ring->dma;
1350	u32 rxdctl;
1351	u8 reg_idx = ring->reg_idx;
1352
1353	/* disable queue to avoid issues while updating state */
1354	rxdctl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(reg_idx));
1355	ixgbevf_disable_rx_queue(adapter, ring);
1356
1357	IXGBE_WRITE_REG(hw, IXGBE_VFRDBAL(reg_idx), rdba & DMA_BIT_MASK(32));
1358	IXGBE_WRITE_REG(hw, IXGBE_VFRDBAH(reg_idx), rdba >> 32);
1359	IXGBE_WRITE_REG(hw, IXGBE_VFRDLEN(reg_idx),
1360			ring->count * sizeof(union ixgbe_adv_rx_desc));
1361
 
1362	/* enable relaxed ordering */
1363	IXGBE_WRITE_REG(hw, IXGBE_VFDCA_RXCTRL(reg_idx),
1364			IXGBE_DCA_RXCTRL_DESC_RRO_EN);
 
 
 
 
 
1365
1366	/* reset head and tail pointers */
1367	IXGBE_WRITE_REG(hw, IXGBE_VFRDH(reg_idx), 0);
1368	IXGBE_WRITE_REG(hw, IXGBE_VFRDT(reg_idx), 0);
1369	ring->tail = adapter->io_addr + IXGBE_VFRDT(reg_idx);
1370
 
 
 
 
 
 
 
 
1371	/* reset ntu and ntc to place SW in sync with hardwdare */
1372	ring->next_to_clean = 0;
1373	ring->next_to_use = 0;
 
1374
1375	ixgbevf_configure_srrctl(adapter, reg_idx);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1376
1377	/* prevent DMA from exceeding buffer space available */
1378	rxdctl &= ~IXGBE_RXDCTL_RLPMLMASK;
1379	rxdctl |= ring->rx_buf_len | IXGBE_RXDCTL_RLPML_EN;
1380	rxdctl |= IXGBE_RXDCTL_ENABLE | IXGBE_RXDCTL_VME;
1381	IXGBE_WRITE_REG(hw, IXGBE_VFRXDCTL(reg_idx), rxdctl);
1382
1383	ixgbevf_rx_desc_queue_enable(adapter, ring);
1384	ixgbevf_alloc_rx_buffers(ring, ixgbevf_desc_unused(ring));
1385}
1386
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1387/**
1388 * ixgbevf_configure_rx - Configure 82599 VF Receive Unit after Reset
1389 * @adapter: board private structure
1390 *
1391 * Configure the Rx unit of the MAC after a reset.
1392 **/
1393static void ixgbevf_configure_rx(struct ixgbevf_adapter *adapter)
1394{
1395	int i;
 
 
1396
1397	ixgbevf_setup_psrtype(adapter);
 
 
1398
1399	/* set_rx_buffer_len must be called before ring initialization */
1400	ixgbevf_set_rx_buffer_len(adapter);
 
 
 
 
 
1401
1402	/* Setup the HW Rx Head and Tail Descriptor Pointers and
1403	 * the Base and Length of the Rx Descriptor Ring */
1404	for (i = 0; i < adapter->num_rx_queues; i++)
1405		ixgbevf_configure_rx_ring(adapter, adapter->rx_ring[i]);
 
 
 
 
 
1406}
1407
1408static int ixgbevf_vlan_rx_add_vid(struct net_device *netdev,
1409				   __be16 proto, u16 vid)
1410{
1411	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
1412	struct ixgbe_hw *hw = &adapter->hw;
1413	int err;
1414
1415	spin_lock_bh(&adapter->mbx_lock);
1416
1417	/* add VID to filter table */
1418	err = hw->mac.ops.set_vfta(hw, vid, 0, true);
1419
1420	spin_unlock_bh(&adapter->mbx_lock);
1421
1422	/* translate error return types so error makes sense */
1423	if (err == IXGBE_ERR_MBX)
1424		return -EIO;
 
 
 
1425
1426	if (err == IXGBE_ERR_INVALID_ARGUMENT)
1427		return -EACCES;
 
1428
1429	set_bit(vid, adapter->active_vlans);
1430
1431	return err;
1432}
1433
1434static int ixgbevf_vlan_rx_kill_vid(struct net_device *netdev,
1435				    __be16 proto, u16 vid)
1436{
1437	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
1438	struct ixgbe_hw *hw = &adapter->hw;
1439	int err = -EOPNOTSUPP;
1440
1441	spin_lock_bh(&adapter->mbx_lock);
1442
1443	/* remove VID from filter table */
1444	err = hw->mac.ops.set_vfta(hw, vid, 0, false);
1445
1446	spin_unlock_bh(&adapter->mbx_lock);
1447
 
 
 
1448	clear_bit(vid, adapter->active_vlans);
1449
1450	return err;
1451}
1452
1453static void ixgbevf_restore_vlan(struct ixgbevf_adapter *adapter)
1454{
1455	u16 vid;
1456
1457	for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID)
1458		ixgbevf_vlan_rx_add_vid(adapter->netdev,
1459					htons(ETH_P_8021Q), vid);
1460}
1461
1462static int ixgbevf_write_uc_addr_list(struct net_device *netdev)
1463{
1464	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
1465	struct ixgbe_hw *hw = &adapter->hw;
1466	int count = 0;
1467
1468	if ((netdev_uc_count(netdev)) > 10) {
1469		pr_err("Too many unicast filters - No Space\n");
1470		return -ENOSPC;
1471	}
1472
1473	if (!netdev_uc_empty(netdev)) {
1474		struct netdev_hw_addr *ha;
 
1475		netdev_for_each_uc_addr(ha, netdev) {
1476			hw->mac.ops.set_uc_addr(hw, ++count, ha->addr);
1477			udelay(200);
1478		}
1479	} else {
1480		/*
1481		 * If the list is empty then send message to PF driver to
1482		 * clear all macvlans on this VF.
1483		 */
1484		hw->mac.ops.set_uc_addr(hw, 0, NULL);
1485	}
1486
1487	return count;
1488}
1489
1490/**
1491 * ixgbevf_set_rx_mode - Multicast and unicast set
1492 * @netdev: network interface device structure
1493 *
1494 * The set_rx_method entry point is called whenever the multicast address
1495 * list, unicast address list or the network interface flags are updated.
1496 * This routine is responsible for configuring the hardware for proper
1497 * multicast mode and configuring requested unicast filters.
1498 **/
1499static void ixgbevf_set_rx_mode(struct net_device *netdev)
1500{
1501	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
1502	struct ixgbe_hw *hw = &adapter->hw;
 
 
 
 
 
 
 
 
 
 
 
 
1503
1504	spin_lock_bh(&adapter->mbx_lock);
1505
 
 
1506	/* reprogram multicast list */
1507	hw->mac.ops.update_mc_addr_list(hw, netdev);
1508
1509	ixgbevf_write_uc_addr_list(netdev);
1510
1511	spin_unlock_bh(&adapter->mbx_lock);
1512}
1513
1514static void ixgbevf_napi_enable_all(struct ixgbevf_adapter *adapter)
1515{
1516	int q_idx;
1517	struct ixgbevf_q_vector *q_vector;
1518	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
1519
1520	for (q_idx = 0; q_idx < q_vectors; q_idx++) {
1521		q_vector = adapter->q_vector[q_idx];
1522#ifdef CONFIG_NET_RX_BUSY_POLL
1523		ixgbevf_qv_init_lock(adapter->q_vector[q_idx]);
1524#endif
1525		napi_enable(&q_vector->napi);
1526	}
1527}
1528
1529static void ixgbevf_napi_disable_all(struct ixgbevf_adapter *adapter)
1530{
1531	int q_idx;
1532	struct ixgbevf_q_vector *q_vector;
1533	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
1534
1535	for (q_idx = 0; q_idx < q_vectors; q_idx++) {
1536		q_vector = adapter->q_vector[q_idx];
1537		napi_disable(&q_vector->napi);
1538#ifdef CONFIG_NET_RX_BUSY_POLL
1539		while (!ixgbevf_qv_disable(adapter->q_vector[q_idx])) {
1540			pr_info("QV %d locked\n", q_idx);
1541			usleep_range(1000, 20000);
1542		}
1543#endif /* CONFIG_NET_RX_BUSY_POLL */
1544	}
1545}
1546
1547static int ixgbevf_configure_dcb(struct ixgbevf_adapter *adapter)
1548{
1549	struct ixgbe_hw *hw = &adapter->hw;
1550	unsigned int def_q = 0;
1551	unsigned int num_tcs = 0;
1552	unsigned int num_rx_queues = 1;
 
1553	int err;
1554
1555	spin_lock_bh(&adapter->mbx_lock);
1556
1557	/* fetch queue configuration from the PF */
1558	err = ixgbevf_get_queues(hw, &num_tcs, &def_q);
1559
1560	spin_unlock_bh(&adapter->mbx_lock);
1561
1562	if (err)
1563		return err;
1564
1565	if (num_tcs > 1) {
 
 
 
1566		/* update default Tx ring register index */
1567		adapter->tx_ring[0]->reg_idx = def_q;
1568
1569		/* we need as many queues as traffic classes */
1570		num_rx_queues = num_tcs;
1571	}
1572
1573	/* if we have a bad config abort request queue reset */
1574	if (adapter->num_rx_queues != num_rx_queues) {
 
1575		/* force mailbox timeout to prevent further messages */
1576		hw->mbx.timeout = 0;
1577
1578		/* wait for watchdog to come around and bail us out */
1579		adapter->flags |= IXGBEVF_FLAG_QUEUE_RESET_REQUESTED;
1580	}
1581
1582	return 0;
1583}
1584
1585static void ixgbevf_configure(struct ixgbevf_adapter *adapter)
1586{
1587	ixgbevf_configure_dcb(adapter);
1588
1589	ixgbevf_set_rx_mode(adapter->netdev);
1590
1591	ixgbevf_restore_vlan(adapter);
 
1592
1593	ixgbevf_configure_tx(adapter);
1594	ixgbevf_configure_rx(adapter);
1595}
1596
1597static void ixgbevf_save_reset_stats(struct ixgbevf_adapter *adapter)
1598{
1599	/* Only save pre-reset stats if there are some */
1600	if (adapter->stats.vfgprc || adapter->stats.vfgptc) {
1601		adapter->stats.saved_reset_vfgprc += adapter->stats.vfgprc -
1602			adapter->stats.base_vfgprc;
1603		adapter->stats.saved_reset_vfgptc += adapter->stats.vfgptc -
1604			adapter->stats.base_vfgptc;
1605		adapter->stats.saved_reset_vfgorc += adapter->stats.vfgorc -
1606			adapter->stats.base_vfgorc;
1607		adapter->stats.saved_reset_vfgotc += adapter->stats.vfgotc -
1608			adapter->stats.base_vfgotc;
1609		adapter->stats.saved_reset_vfmprc += adapter->stats.vfmprc -
1610			adapter->stats.base_vfmprc;
1611	}
1612}
1613
1614static void ixgbevf_init_last_counter_stats(struct ixgbevf_adapter *adapter)
1615{
1616	struct ixgbe_hw *hw = &adapter->hw;
1617
1618	adapter->stats.last_vfgprc = IXGBE_READ_REG(hw, IXGBE_VFGPRC);
1619	adapter->stats.last_vfgorc = IXGBE_READ_REG(hw, IXGBE_VFGORC_LSB);
1620	adapter->stats.last_vfgorc |=
1621		(((u64)(IXGBE_READ_REG(hw, IXGBE_VFGORC_MSB))) << 32);
1622	adapter->stats.last_vfgptc = IXGBE_READ_REG(hw, IXGBE_VFGPTC);
1623	adapter->stats.last_vfgotc = IXGBE_READ_REG(hw, IXGBE_VFGOTC_LSB);
1624	adapter->stats.last_vfgotc |=
1625		(((u64)(IXGBE_READ_REG(hw, IXGBE_VFGOTC_MSB))) << 32);
1626	adapter->stats.last_vfmprc = IXGBE_READ_REG(hw, IXGBE_VFMPRC);
1627
1628	adapter->stats.base_vfgprc = adapter->stats.last_vfgprc;
1629	adapter->stats.base_vfgorc = adapter->stats.last_vfgorc;
1630	adapter->stats.base_vfgptc = adapter->stats.last_vfgptc;
1631	adapter->stats.base_vfgotc = adapter->stats.last_vfgotc;
1632	adapter->stats.base_vfmprc = adapter->stats.last_vfmprc;
1633}
1634
1635static void ixgbevf_negotiate_api(struct ixgbevf_adapter *adapter)
1636{
1637	struct ixgbe_hw *hw = &adapter->hw;
1638	int api[] = { ixgbe_mbox_api_11,
1639		      ixgbe_mbox_api_10,
1640		      ixgbe_mbox_api_unknown };
1641	int err = 0, idx = 0;
 
 
 
 
 
 
1642
1643	spin_lock_bh(&adapter->mbx_lock);
1644
1645	while (api[idx] != ixgbe_mbox_api_unknown) {
1646		err = ixgbevf_negotiate_api_version(hw, api[idx]);
1647		if (!err)
1648			break;
1649		idx++;
1650	}
1651
 
 
 
 
 
 
1652	spin_unlock_bh(&adapter->mbx_lock);
1653}
1654
1655static void ixgbevf_up_complete(struct ixgbevf_adapter *adapter)
1656{
1657	struct net_device *netdev = adapter->netdev;
 
1658	struct ixgbe_hw *hw = &adapter->hw;
 
1659
1660	ixgbevf_configure_msix(adapter);
1661
1662	spin_lock_bh(&adapter->mbx_lock);
1663
1664	if (is_valid_ether_addr(hw->mac.addr))
1665		hw->mac.ops.set_rar(hw, 0, hw->mac.addr, 0);
1666	else
1667		hw->mac.ops.set_rar(hw, 0, hw->mac.perm_addr, 0);
1668
1669	spin_unlock_bh(&adapter->mbx_lock);
1670
1671	smp_mb__before_clear_bit();
 
 
 
 
 
1672	clear_bit(__IXGBEVF_DOWN, &adapter->state);
1673	ixgbevf_napi_enable_all(adapter);
1674
 
 
 
 
1675	/* enable transmits */
1676	netif_tx_start_all_queues(netdev);
1677
1678	ixgbevf_save_reset_stats(adapter);
1679	ixgbevf_init_last_counter_stats(adapter);
1680
1681	hw->mac.get_link_status = 1;
1682	mod_timer(&adapter->watchdog_timer, jiffies);
1683}
1684
1685void ixgbevf_up(struct ixgbevf_adapter *adapter)
1686{
1687	struct ixgbe_hw *hw = &adapter->hw;
1688
1689	ixgbevf_configure(adapter);
1690
1691	ixgbevf_up_complete(adapter);
1692
1693	/* clear any pending interrupts, may auto mask */
1694	IXGBE_READ_REG(hw, IXGBE_VTEICR);
1695
1696	ixgbevf_irq_enable(adapter);
1697}
1698
1699/**
1700 * ixgbevf_clean_rx_ring - Free Rx Buffers per Queue
1701 * @rx_ring: ring to free buffers from
1702 **/
1703static void ixgbevf_clean_rx_ring(struct ixgbevf_ring *rx_ring)
1704{
1705	unsigned long size;
1706	unsigned int i;
1707
1708	if (!rx_ring->rx_buffer_info)
1709		return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1710
1711	/* Free all the Rx ring sk_buffs */
1712	for (i = 0; i < rx_ring->count; i++) {
1713		struct ixgbevf_rx_buffer *rx_buffer_info;
1714
1715		rx_buffer_info = &rx_ring->rx_buffer_info[i];
1716		if (rx_buffer_info->dma) {
1717			dma_unmap_single(rx_ring->dev, rx_buffer_info->dma,
1718					 rx_ring->rx_buf_len,
1719					 DMA_FROM_DEVICE);
1720			rx_buffer_info->dma = 0;
1721		}
1722		if (rx_buffer_info->skb) {
1723			struct sk_buff *skb = rx_buffer_info->skb;
1724			rx_buffer_info->skb = NULL;
1725			do {
1726				struct sk_buff *this = skb;
1727				skb = IXGBE_CB(skb)->prev;
1728				dev_kfree_skb(this);
1729			} while (skb);
1730		}
1731	}
1732
1733	size = sizeof(struct ixgbevf_rx_buffer) * rx_ring->count;
1734	memset(rx_ring->rx_buffer_info, 0, size);
1735
1736	/* Zero out the descriptor ring */
1737	memset(rx_ring->desc, 0, rx_ring->size);
1738}
1739
1740/**
1741 * ixgbevf_clean_tx_ring - Free Tx Buffers
1742 * @tx_ring: ring to be cleaned
1743 **/
1744static void ixgbevf_clean_tx_ring(struct ixgbevf_ring *tx_ring)
1745{
1746	struct ixgbevf_tx_buffer *tx_buffer_info;
1747	unsigned long size;
1748	unsigned int i;
1749
1750	if (!tx_ring->tx_buffer_info)
1751		return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1752
1753	/* Free all the Tx ring sk_buffs */
1754	for (i = 0; i < tx_ring->count; i++) {
1755		tx_buffer_info = &tx_ring->tx_buffer_info[i];
1756		ixgbevf_unmap_and_free_tx_resource(tx_ring, tx_buffer_info);
 
 
 
1757	}
1758
1759	size = sizeof(struct ixgbevf_tx_buffer) * tx_ring->count;
1760	memset(tx_ring->tx_buffer_info, 0, size);
 
1761
1762	memset(tx_ring->desc, 0, tx_ring->size);
1763}
1764
1765/**
1766 * ixgbevf_clean_all_rx_rings - Free Rx Buffers for all queues
1767 * @adapter: board private structure
1768 **/
1769static void ixgbevf_clean_all_rx_rings(struct ixgbevf_adapter *adapter)
1770{
1771	int i;
1772
1773	for (i = 0; i < adapter->num_rx_queues; i++)
1774		ixgbevf_clean_rx_ring(adapter->rx_ring[i]);
1775}
1776
1777/**
1778 * ixgbevf_clean_all_tx_rings - Free Tx Buffers for all queues
1779 * @adapter: board private structure
1780 **/
1781static void ixgbevf_clean_all_tx_rings(struct ixgbevf_adapter *adapter)
1782{
1783	int i;
1784
1785	for (i = 0; i < adapter->num_tx_queues; i++)
1786		ixgbevf_clean_tx_ring(adapter->tx_ring[i]);
 
 
1787}
1788
1789void ixgbevf_down(struct ixgbevf_adapter *adapter)
1790{
1791	struct net_device *netdev = adapter->netdev;
1792	struct ixgbe_hw *hw = &adapter->hw;
1793	int i;
1794
1795	/* signal that we are down to the interrupt handler */
1796	if (test_and_set_bit(__IXGBEVF_DOWN, &adapter->state))
1797		return; /* do nothing if already down */
1798
1799	/* disable all enabled rx queues */
1800	for (i = 0; i < adapter->num_rx_queues; i++)
1801		ixgbevf_disable_rx_queue(adapter, adapter->rx_ring[i]);
1802
1803	netif_tx_disable(netdev);
1804
1805	msleep(10);
1806
1807	netif_tx_stop_all_queues(netdev);
 
 
1808
1809	ixgbevf_irq_disable(adapter);
1810
1811	ixgbevf_napi_disable_all(adapter);
1812
1813	del_timer_sync(&adapter->watchdog_timer);
1814	/* can't call flush scheduled work here because it can deadlock
1815	 * if linkwatch_event tries to acquire the rtnl_lock which we are
1816	 * holding */
1817	while (adapter->flags & IXGBE_FLAG_IN_WATCHDOG_TASK)
1818		msleep(1);
1819
1820	/* disable transmits in the hardware now that interrupts are off */
1821	for (i = 0; i < adapter->num_tx_queues; i++) {
1822		u8 reg_idx = adapter->tx_ring[i]->reg_idx;
1823
1824		IXGBE_WRITE_REG(hw, IXGBE_VFTXDCTL(reg_idx),
1825				IXGBE_TXDCTL_SWFLSH);
1826	}
1827
1828	netif_carrier_off(netdev);
 
 
 
 
 
1829
1830	if (!pci_channel_offline(adapter->pdev))
1831		ixgbevf_reset(adapter);
1832
1833	ixgbevf_clean_all_tx_rings(adapter);
1834	ixgbevf_clean_all_rx_rings(adapter);
1835}
1836
1837void ixgbevf_reinit_locked(struct ixgbevf_adapter *adapter)
1838{
1839	WARN_ON(in_interrupt());
1840
1841	while (test_and_set_bit(__IXGBEVF_RESETTING, &adapter->state))
1842		msleep(1);
1843
1844	ixgbevf_down(adapter);
 
1845	ixgbevf_up(adapter);
1846
1847	clear_bit(__IXGBEVF_RESETTING, &adapter->state);
1848}
1849
1850void ixgbevf_reset(struct ixgbevf_adapter *adapter)
1851{
1852	struct ixgbe_hw *hw = &adapter->hw;
1853	struct net_device *netdev = adapter->netdev;
1854
1855	if (hw->mac.ops.reset_hw(hw)) {
1856		hw_dbg(hw, "PF still resetting\n");
1857	} else {
1858		hw->mac.ops.init_hw(hw);
1859		ixgbevf_negotiate_api(adapter);
1860	}
1861
1862	if (is_valid_ether_addr(adapter->hw.mac.addr)) {
1863		memcpy(netdev->dev_addr, adapter->hw.mac.addr,
1864		       netdev->addr_len);
1865		memcpy(netdev->perm_addr, adapter->hw.mac.addr,
1866		       netdev->addr_len);
1867	}
 
 
1868}
1869
1870static int ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
1871					int vectors)
1872{
1873	int vector_threshold;
1874
1875	/* We'll want at least 2 (vector_threshold):
1876	 * 1) TxQ[0] + RxQ[0] handler
1877	 * 2) Other (Link Status Change, etc.)
1878	 */
1879	vector_threshold = MIN_MSIX_COUNT;
1880
1881	/* The more we get, the more we will assign to Tx/Rx Cleanup
1882	 * for the separate queues...where Rx Cleanup >= Tx Cleanup.
1883	 * Right now, we simply care about how many we'll get; we'll
1884	 * set them up later while requesting irq's.
1885	 */
1886	vectors = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
1887					vector_threshold, vectors);
1888
1889	if (vectors < 0) {
1890		dev_err(&adapter->pdev->dev,
1891			"Unable to allocate MSI-X interrupts\n");
1892		kfree(adapter->msix_entries);
1893		adapter->msix_entries = NULL;
1894		return vectors;
1895	}
1896
1897	/* Adjust for only the vectors we'll use, which is minimum
1898	 * of max_msix_q_vectors + NON_Q_VECTORS, or the number of
1899	 * vectors we were allocated.
1900	 */
1901	adapter->num_msix_vectors = vectors;
1902
1903	return 0;
1904}
1905
1906/**
1907 * ixgbevf_set_num_queues - Allocate queues for device, feature dependent
1908 * @adapter: board private structure to initialize
1909 *
1910 * This is the top level queue allocation routine.  The order here is very
1911 * important, starting with the "most" number of features turned on at once,
1912 * and ending with the smallest set of features.  This way large combinations
1913 * can be allocated if they're turned on, and smaller combinations are the
1914 * fallthrough conditions.
1915 *
1916 **/
1917static void ixgbevf_set_num_queues(struct ixgbevf_adapter *adapter)
1918{
1919	struct ixgbe_hw *hw = &adapter->hw;
1920	unsigned int def_q = 0;
1921	unsigned int num_tcs = 0;
1922	int err;
1923
1924	/* Start with base case */
1925	adapter->num_rx_queues = 1;
1926	adapter->num_tx_queues = 1;
 
1927
1928	spin_lock_bh(&adapter->mbx_lock);
1929
1930	/* fetch queue configuration from the PF */
1931	err = ixgbevf_get_queues(hw, &num_tcs, &def_q);
1932
1933	spin_unlock_bh(&adapter->mbx_lock);
1934
1935	if (err)
1936		return;
1937
1938	/* we need as many queues as traffic classes */
1939	if (num_tcs > 1)
1940		adapter->num_rx_queues = num_tcs;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1941}
1942
1943/**
1944 * ixgbevf_alloc_queues - Allocate memory for all rings
1945 * @adapter: board private structure to initialize
1946 *
1947 * We allocate one ring per queue at run-time since we don't know the
1948 * number of queues at compile-time.  The polling_netdev array is
1949 * intended for Multiqueue, but should work fine with a single queue.
1950 **/
1951static int ixgbevf_alloc_queues(struct ixgbevf_adapter *adapter)
1952{
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1953	struct ixgbevf_ring *ring;
1954	int rx = 0, tx = 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1955
1956	for (; tx < adapter->num_tx_queues; tx++) {
1957		ring = kzalloc(sizeof(*ring), GFP_KERNEL);
1958		if (!ring)
1959			goto err_allocation;
1960
 
 
1961		ring->dev = &adapter->pdev->dev;
1962		ring->netdev = adapter->netdev;
 
 
 
 
 
 
 
 
1963		ring->count = adapter->tx_ring_count;
1964		ring->queue_index = tx;
1965		ring->reg_idx = tx;
 
 
 
1966
1967		adapter->tx_ring[tx] = ring;
 
 
 
 
 
 
1968	}
1969
1970	for (; rx < adapter->num_rx_queues; rx++) {
1971		ring = kzalloc(sizeof(*ring), GFP_KERNEL);
1972		if (!ring)
1973			goto err_allocation;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1974
 
 
1975		ring->dev = &adapter->pdev->dev;
1976		ring->netdev = adapter->netdev;
1977
 
 
 
 
 
 
 
1978		ring->count = adapter->rx_ring_count;
1979		ring->queue_index = rx;
1980		ring->reg_idx = rx;
1981
1982		adapter->rx_ring[rx] = ring;
1983	}
1984
1985	return 0;
 
 
1986
1987err_allocation:
1988	while (tx) {
1989		kfree(adapter->tx_ring[--tx]);
1990		adapter->tx_ring[tx] = NULL;
1991	}
1992
1993	while (rx) {
1994		kfree(adapter->rx_ring[--rx]);
1995		adapter->rx_ring[rx] = NULL;
1996	}
1997	return -ENOMEM;
1998}
1999
2000/**
2001 * ixgbevf_set_interrupt_capability - set MSI-X or FAIL if not supported
2002 * @adapter: board private structure to initialize
 
2003 *
2004 * Attempt to configure the interrupts using the best available
2005 * capabilities of the hardware and the kernel.
 
2006 **/
2007static int ixgbevf_set_interrupt_capability(struct ixgbevf_adapter *adapter)
2008{
2009	struct net_device *netdev = adapter->netdev;
2010	int err = 0;
2011	int vector, v_budget;
2012
2013	/*
2014	 * It's easy to be greedy for MSI-X vectors, but it really
2015	 * doesn't do us much good if we have a lot more vectors
2016	 * than CPU's.  So let's be conservative and only ask for
2017	 * (roughly) the same number of vectors as there are CPU's.
2018	 * The default is to use pairs of vectors.
2019	 */
2020	v_budget = max(adapter->num_rx_queues, adapter->num_tx_queues);
2021	v_budget = min_t(int, v_budget, num_online_cpus());
2022	v_budget += NON_Q_VECTORS;
2023
2024	/* A failure in MSI-X entry allocation isn't fatal, but it does
2025	 * mean we disable MSI-X capabilities of the adapter. */
2026	adapter->msix_entries = kcalloc(v_budget,
2027					sizeof(struct msix_entry), GFP_KERNEL);
2028	if (!adapter->msix_entries) {
2029		err = -ENOMEM;
2030		goto out;
2031	}
2032
2033	for (vector = 0; vector < v_budget; vector++)
2034		adapter->msix_entries[vector].entry = vector;
2035
2036	err = ixgbevf_acquire_msix_vectors(adapter, v_budget);
2037	if (err)
2038		goto out;
2039
2040	err = netif_set_real_num_tx_queues(netdev, adapter->num_tx_queues);
2041	if (err)
2042		goto out;
2043
2044	err = netif_set_real_num_rx_queues(netdev, adapter->num_rx_queues);
2045
2046out:
2047	return err;
2048}
2049
2050/**
2051 * ixgbevf_alloc_q_vectors - Allocate memory for interrupt vectors
2052 * @adapter: board private structure to initialize
2053 *
2054 * We allocate one q_vector per queue interrupt.  If allocation fails we
2055 * return -ENOMEM.
2056 **/
2057static int ixgbevf_alloc_q_vectors(struct ixgbevf_adapter *adapter)
2058{
2059	int q_idx, num_q_vectors;
2060	struct ixgbevf_q_vector *q_vector;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2061
2062	num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
 
 
 
 
 
 
 
 
2063
2064	for (q_idx = 0; q_idx < num_q_vectors; q_idx++) {
2065		q_vector = kzalloc(sizeof(struct ixgbevf_q_vector), GFP_KERNEL);
2066		if (!q_vector)
2067			goto err_out;
2068		q_vector->adapter = adapter;
2069		q_vector->v_idx = q_idx;
2070		netif_napi_add(adapter->netdev, &q_vector->napi,
2071			       ixgbevf_poll, 64);
2072#ifdef CONFIG_NET_RX_BUSY_POLL
2073		napi_hash_add(&q_vector->napi);
2074#endif
2075		adapter->q_vector[q_idx] = q_vector;
2076	}
2077
2078	return 0;
2079
2080err_out:
2081	while (q_idx) {
2082		q_idx--;
2083		q_vector = adapter->q_vector[q_idx];
2084#ifdef CONFIG_NET_RX_BUSY_POLL
2085		napi_hash_del(&q_vector->napi);
2086#endif
2087		netif_napi_del(&q_vector->napi);
2088		kfree(q_vector);
2089		adapter->q_vector[q_idx] = NULL;
2090	}
 
2091	return -ENOMEM;
2092}
2093
2094/**
2095 * ixgbevf_free_q_vectors - Free memory allocated for interrupt vectors
2096 * @adapter: board private structure to initialize
2097 *
2098 * This function frees the memory allocated to the q_vectors.  In addition if
2099 * NAPI is enabled it will delete any references to the NAPI struct prior
2100 * to freeing the q_vector.
2101 **/
2102static void ixgbevf_free_q_vectors(struct ixgbevf_adapter *adapter)
2103{
2104	int q_idx, num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
2105
2106	for (q_idx = 0; q_idx < num_q_vectors; q_idx++) {
2107		struct ixgbevf_q_vector *q_vector = adapter->q_vector[q_idx];
2108
2109		adapter->q_vector[q_idx] = NULL;
2110#ifdef CONFIG_NET_RX_BUSY_POLL
2111		napi_hash_del(&q_vector->napi);
2112#endif
2113		netif_napi_del(&q_vector->napi);
2114		kfree(q_vector);
2115	}
2116}
2117
2118/**
2119 * ixgbevf_reset_interrupt_capability - Reset MSIX setup
2120 * @adapter: board private structure
2121 *
2122 **/
2123static void ixgbevf_reset_interrupt_capability(struct ixgbevf_adapter *adapter)
2124{
 
 
 
2125	pci_disable_msix(adapter->pdev);
2126	kfree(adapter->msix_entries);
2127	adapter->msix_entries = NULL;
2128}
2129
2130/**
2131 * ixgbevf_init_interrupt_scheme - Determine if MSIX is supported and init
2132 * @adapter: board private structure to initialize
2133 *
2134 **/
2135static int ixgbevf_init_interrupt_scheme(struct ixgbevf_adapter *adapter)
2136{
2137	int err;
2138
2139	/* Number of supported queues */
2140	ixgbevf_set_num_queues(adapter);
2141
2142	err = ixgbevf_set_interrupt_capability(adapter);
2143	if (err) {
2144		hw_dbg(&adapter->hw,
2145		       "Unable to setup interrupt capabilities\n");
2146		goto err_set_interrupt;
2147	}
2148
2149	err = ixgbevf_alloc_q_vectors(adapter);
2150	if (err) {
2151		hw_dbg(&adapter->hw, "Unable to allocate memory for queue "
2152		       "vectors\n");
2153		goto err_alloc_q_vectors;
2154	}
2155
2156	err = ixgbevf_alloc_queues(adapter);
2157	if (err) {
2158		pr_err("Unable to allocate memory for queues\n");
2159		goto err_alloc_queues;
2160	}
2161
2162	hw_dbg(&adapter->hw, "Multiqueue %s: Rx Queue count = %u, "
2163	       "Tx Queue count = %u\n",
2164	       (adapter->num_rx_queues > 1) ? "Enabled" :
2165	       "Disabled", adapter->num_rx_queues, adapter->num_tx_queues);
2166
2167	set_bit(__IXGBEVF_DOWN, &adapter->state);
2168
2169	return 0;
2170err_alloc_queues:
2171	ixgbevf_free_q_vectors(adapter);
2172err_alloc_q_vectors:
2173	ixgbevf_reset_interrupt_capability(adapter);
2174err_set_interrupt:
2175	return err;
2176}
2177
2178/**
2179 * ixgbevf_clear_interrupt_scheme - Clear the current interrupt scheme settings
2180 * @adapter: board private structure to clear interrupt scheme on
2181 *
2182 * We go through and clear interrupt specific resources and reset the structure
2183 * to pre-load conditions
2184 **/
2185static void ixgbevf_clear_interrupt_scheme(struct ixgbevf_adapter *adapter)
2186{
2187	int i;
2188
2189	for (i = 0; i < adapter->num_tx_queues; i++) {
2190		kfree(adapter->tx_ring[i]);
2191		adapter->tx_ring[i] = NULL;
2192	}
2193	for (i = 0; i < adapter->num_rx_queues; i++) {
2194		kfree(adapter->rx_ring[i]);
2195		adapter->rx_ring[i] = NULL;
2196	}
2197
2198	adapter->num_tx_queues = 0;
 
2199	adapter->num_rx_queues = 0;
2200
2201	ixgbevf_free_q_vectors(adapter);
2202	ixgbevf_reset_interrupt_capability(adapter);
2203}
2204
2205/**
2206 * ixgbevf_sw_init - Initialize general software structures
2207 * (struct ixgbevf_adapter)
2208 * @adapter: board private structure to initialize
2209 *
2210 * ixgbevf_sw_init initializes the Adapter private data structure.
2211 * Fields are initialized based on PCI device information and
2212 * OS network device settings (MTU size).
2213 **/
2214static int ixgbevf_sw_init(struct ixgbevf_adapter *adapter)
2215{
2216	struct ixgbe_hw *hw = &adapter->hw;
2217	struct pci_dev *pdev = adapter->pdev;
2218	struct net_device *netdev = adapter->netdev;
2219	int err;
2220
2221	/* PCI config space info */
2222
2223	hw->vendor_id = pdev->vendor;
2224	hw->device_id = pdev->device;
2225	hw->revision_id = pdev->revision;
2226	hw->subsystem_vendor_id = pdev->subsystem_vendor;
2227	hw->subsystem_device_id = pdev->subsystem_device;
2228
2229	hw->mbx.ops.init_params(hw);
2230
 
 
 
 
 
 
2231	/* assume legacy case in which PF would only give VF 2 queues */
2232	hw->mac.max_tx_queues = 2;
2233	hw->mac.max_rx_queues = 2;
2234
2235	/* lock to protect mailbox accesses */
2236	spin_lock_init(&adapter->mbx_lock);
2237
2238	err = hw->mac.ops.reset_hw(hw);
2239	if (err) {
2240		dev_info(&pdev->dev,
2241			 "PF still in reset state.  Is the PF interface up?\n");
2242	} else {
2243		err = hw->mac.ops.init_hw(hw);
2244		if (err) {
2245			pr_err("init_shared_code failed: %d\n", err);
2246			goto out;
2247		}
2248		ixgbevf_negotiate_api(adapter);
2249		err = hw->mac.ops.get_mac_addr(hw, hw->mac.addr);
2250		if (err)
2251			dev_info(&pdev->dev, "Error reading MAC address\n");
2252		else if (is_zero_ether_addr(adapter->hw.mac.addr))
2253			dev_info(&pdev->dev,
2254				 "MAC address not assigned by administrator.\n");
2255		memcpy(netdev->dev_addr, hw->mac.addr, netdev->addr_len);
2256	}
2257
2258	if (!is_valid_ether_addr(netdev->dev_addr)) {
2259		dev_info(&pdev->dev, "Assigning random MAC address\n");
2260		eth_hw_addr_random(netdev);
2261		memcpy(hw->mac.addr, netdev->dev_addr, netdev->addr_len);
 
2262	}
2263
2264	/* Enable dynamic interrupt throttling rates */
2265	adapter->rx_itr_setting = 1;
2266	adapter->tx_itr_setting = 1;
2267
2268	/* set default ring sizes */
2269	adapter->tx_ring_count = IXGBEVF_DEFAULT_TXD;
2270	adapter->rx_ring_count = IXGBEVF_DEFAULT_RXD;
2271
 
 
2272	set_bit(__IXGBEVF_DOWN, &adapter->state);
2273	return 0;
2274
2275out:
2276	return err;
2277}
2278
2279#define UPDATE_VF_COUNTER_32bit(reg, last_counter, counter)	\
2280	{							\
2281		u32 current_counter = IXGBE_READ_REG(hw, reg);	\
2282		if (current_counter < last_counter)		\
2283			counter += 0x100000000LL;		\
2284		last_counter = current_counter;			\
2285		counter &= 0xFFFFFFFF00000000LL;		\
2286		counter |= current_counter;			\
2287	}
2288
2289#define UPDATE_VF_COUNTER_36bit(reg_lsb, reg_msb, last_counter, counter) \
2290	{								 \
2291		u64 current_counter_lsb = IXGBE_READ_REG(hw, reg_lsb);	 \
2292		u64 current_counter_msb = IXGBE_READ_REG(hw, reg_msb);	 \
2293		u64 current_counter = (current_counter_msb << 32) |      \
2294			current_counter_lsb;                             \
2295		if (current_counter < last_counter)			 \
2296			counter += 0x1000000000LL;			 \
2297		last_counter = current_counter;				 \
2298		counter &= 0xFFFFFFF000000000LL;			 \
2299		counter |= current_counter;				 \
2300	}
2301/**
2302 * ixgbevf_update_stats - Update the board statistics counters.
2303 * @adapter: board private structure
2304 **/
2305void ixgbevf_update_stats(struct ixgbevf_adapter *adapter)
2306{
2307	struct ixgbe_hw *hw = &adapter->hw;
 
 
2308	int i;
2309
2310	if (!adapter->link_up)
 
2311		return;
2312
2313	UPDATE_VF_COUNTER_32bit(IXGBE_VFGPRC, adapter->stats.last_vfgprc,
2314				adapter->stats.vfgprc);
2315	UPDATE_VF_COUNTER_32bit(IXGBE_VFGPTC, adapter->stats.last_vfgptc,
2316				adapter->stats.vfgptc);
2317	UPDATE_VF_COUNTER_36bit(IXGBE_VFGORC_LSB, IXGBE_VFGORC_MSB,
2318				adapter->stats.last_vfgorc,
2319				adapter->stats.vfgorc);
2320	UPDATE_VF_COUNTER_36bit(IXGBE_VFGOTC_LSB, IXGBE_VFGOTC_MSB,
2321				adapter->stats.last_vfgotc,
2322				adapter->stats.vfgotc);
2323	UPDATE_VF_COUNTER_32bit(IXGBE_VFMPRC, adapter->stats.last_vfmprc,
2324				adapter->stats.vfmprc);
2325
2326	for (i = 0;  i  < adapter->num_rx_queues;  i++) {
2327		adapter->hw_csum_rx_error +=
2328			adapter->rx_ring[i]->hw_csum_rx_error;
2329		adapter->rx_ring[i]->hw_csum_rx_error = 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2330	}
 
 
 
 
 
2331}
2332
2333/**
2334 * ixgbevf_watchdog - Timer Call-back
2335 * @data: pointer to adapter cast into an unsigned long
 
 
 
 
 
2336 **/
2337static void ixgbevf_watchdog(unsigned long data)
2338{
2339	struct ixgbevf_adapter *adapter = (struct ixgbevf_adapter *)data;
2340	struct ixgbe_hw *hw = &adapter->hw;
2341	u32 eics = 0;
2342	int i;
2343
2344	/*
2345	 * Do the watchdog outside of interrupt context due to the lovely
2346	 * delays that some of the newer hardware requires
2347	 */
2348
2349	if (test_bit(__IXGBEVF_DOWN, &adapter->state))
2350		goto watchdog_short_circuit;
 
 
 
 
 
2351
2352	/* get one bit for every active tx/rx interrupt vector */
2353	for (i = 0; i < adapter->num_msix_vectors - NON_Q_VECTORS; i++) {
2354		struct ixgbevf_q_vector *qv = adapter->q_vector[i];
 
2355		if (qv->rx.ring || qv->tx.ring)
2356			eics |= 1 << i;
2357	}
2358
 
2359	IXGBE_WRITE_REG(hw, IXGBE_VTEICS, eics);
 
 
 
 
 
 
 
 
 
 
 
 
2360
2361watchdog_short_circuit:
2362	schedule_work(&adapter->watchdog_task);
 
 
 
 
 
 
 
 
 
 
 
 
2363}
2364
2365/**
2366 * ixgbevf_tx_timeout - Respond to a Tx Hang
2367 * @netdev: network interface device structure
 
2368 **/
2369static void ixgbevf_tx_timeout(struct net_device *netdev)
2370{
2371	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
 
 
 
 
 
 
 
 
 
 
 
 
 
2372
2373	/* Do the reset outside of interrupt context */
2374	schedule_work(&adapter->reset_task);
2375}
2376
2377static void ixgbevf_reset_task(struct work_struct *work)
 
 
 
 
 
2378{
2379	struct ixgbevf_adapter *adapter;
2380	adapter = container_of(work, struct ixgbevf_adapter, reset_task);
 
 
 
 
 
 
 
 
 
 
2381
2382	/* If we're already down or resetting, just bail */
 
 
 
 
 
 
2383	if (test_bit(__IXGBEVF_DOWN, &adapter->state) ||
2384	    test_bit(__IXGBEVF_REMOVING, &adapter->state) ||
2385	    test_bit(__IXGBEVF_RESETTING, &adapter->state))
2386		return;
2387
2388	adapter->tx_timeout_count++;
 
 
 
 
 
2389
2390	ixgbevf_reinit_locked(adapter);
2391}
2392
2393/**
2394 * ixgbevf_watchdog_task - worker thread to bring link up
2395 * @work: pointer to work_struct containing our data
2396 **/
2397static void ixgbevf_watchdog_task(struct work_struct *work)
2398{
2399	struct ixgbevf_adapter *adapter = container_of(work,
2400						       struct ixgbevf_adapter,
2401						       watchdog_task);
2402	struct net_device *netdev = adapter->netdev;
2403	struct ixgbe_hw *hw = &adapter->hw;
2404	u32 link_speed = adapter->link_speed;
2405	bool link_up = adapter->link_up;
2406	s32 need_reset;
2407
2408	if (IXGBE_REMOVED(hw->hw_addr)) {
2409		if (!test_bit(__IXGBEVF_DOWN, &adapter->state)) {
2410			rtnl_lock();
2411			ixgbevf_down(adapter);
2412			rtnl_unlock();
2413		}
2414		return;
2415	}
 
2416	ixgbevf_queue_reset_subtask(adapter);
 
 
 
2417
2418	adapter->flags |= IXGBE_FLAG_IN_WATCHDOG_TASK;
2419
2420	/*
2421	 * Always check the link on the watchdog because we have
2422	 * no LSC interrupt
2423	 */
2424	spin_lock_bh(&adapter->mbx_lock);
2425
2426	need_reset = hw->mac.ops.check_link(hw, &link_speed, &link_up, false);
2427
2428	spin_unlock_bh(&adapter->mbx_lock);
2429
2430	if (need_reset) {
2431		adapter->link_up = link_up;
2432		adapter->link_speed = link_speed;
2433		netif_carrier_off(netdev);
2434		netif_tx_stop_all_queues(netdev);
2435		schedule_work(&adapter->reset_task);
2436		goto pf_has_reset;
2437	}
2438	adapter->link_up = link_up;
2439	adapter->link_speed = link_speed;
2440
2441	if (link_up) {
2442		if (!netif_carrier_ok(netdev)) {
2443			char *link_speed_string;
2444			switch (link_speed) {
2445			case IXGBE_LINK_SPEED_10GB_FULL:
2446				link_speed_string = "10 Gbps";
2447				break;
2448			case IXGBE_LINK_SPEED_1GB_FULL:
2449				link_speed_string = "1 Gbps";
2450				break;
2451			case IXGBE_LINK_SPEED_100_FULL:
2452				link_speed_string = "100 Mbps";
2453				break;
2454			default:
2455				link_speed_string = "unknown speed";
2456				break;
2457			}
2458			dev_info(&adapter->pdev->dev,
2459				"NIC Link is Up, %s\n", link_speed_string);
2460			netif_carrier_on(netdev);
2461			netif_tx_wake_all_queues(netdev);
2462		}
2463	} else {
2464		adapter->link_up = false;
2465		adapter->link_speed = 0;
2466		if (netif_carrier_ok(netdev)) {
2467			dev_info(&adapter->pdev->dev, "NIC Link is Down\n");
2468			netif_carrier_off(netdev);
2469			netif_tx_stop_all_queues(netdev);
2470		}
2471	}
2472
2473	ixgbevf_update_stats(adapter);
2474
2475pf_has_reset:
2476	/* Reset the timer */
2477	if (!test_bit(__IXGBEVF_DOWN, &adapter->state) &&
2478	    !test_bit(__IXGBEVF_REMOVING, &adapter->state))
2479		mod_timer(&adapter->watchdog_timer,
2480			  round_jiffies(jiffies + (2 * HZ)));
2481
2482	adapter->flags &= ~IXGBE_FLAG_IN_WATCHDOG_TASK;
2483}
2484
2485/**
2486 * ixgbevf_free_tx_resources - Free Tx Resources per Queue
2487 * @tx_ring: Tx descriptor ring for a specific queue
2488 *
2489 * Free all transmit software resources
2490 **/
2491void ixgbevf_free_tx_resources(struct ixgbevf_ring *tx_ring)
2492{
2493	ixgbevf_clean_tx_ring(tx_ring);
2494
2495	vfree(tx_ring->tx_buffer_info);
2496	tx_ring->tx_buffer_info = NULL;
2497
2498	/* if not set, then don't free */
2499	if (!tx_ring->desc)
2500		return;
2501
2502	dma_free_coherent(tx_ring->dev, tx_ring->size, tx_ring->desc,
2503			  tx_ring->dma);
2504
2505	tx_ring->desc = NULL;
2506}
2507
2508/**
2509 * ixgbevf_free_all_tx_resources - Free Tx Resources for All Queues
2510 * @adapter: board private structure
2511 *
2512 * Free all transmit software resources
2513 **/
2514static void ixgbevf_free_all_tx_resources(struct ixgbevf_adapter *adapter)
2515{
2516	int i;
2517
2518	for (i = 0; i < adapter->num_tx_queues; i++)
2519		if (adapter->tx_ring[i]->desc)
2520			ixgbevf_free_tx_resources(adapter->tx_ring[i]);
 
 
 
2521}
2522
2523/**
2524 * ixgbevf_setup_tx_resources - allocate Tx resources (Descriptors)
2525 * @tx_ring:    tx descriptor ring (for a specific queue) to setup
2526 *
2527 * Return 0 on success, negative on failure
2528 **/
2529int ixgbevf_setup_tx_resources(struct ixgbevf_ring *tx_ring)
2530{
 
2531	int size;
2532
2533	size = sizeof(struct ixgbevf_tx_buffer) * tx_ring->count;
2534	tx_ring->tx_buffer_info = vzalloc(size);
2535	if (!tx_ring->tx_buffer_info)
2536		goto err;
2537
 
 
2538	/* round up to nearest 4K */
2539	tx_ring->size = tx_ring->count * sizeof(union ixgbe_adv_tx_desc);
2540	tx_ring->size = ALIGN(tx_ring->size, 4096);
2541
2542	tx_ring->desc = dma_alloc_coherent(tx_ring->dev, tx_ring->size,
2543					   &tx_ring->dma, GFP_KERNEL);
2544	if (!tx_ring->desc)
2545		goto err;
2546
2547	return 0;
2548
2549err:
2550	vfree(tx_ring->tx_buffer_info);
2551	tx_ring->tx_buffer_info = NULL;
2552	hw_dbg(&adapter->hw, "Unable to allocate memory for the transmit "
2553	       "descriptor ring\n");
2554	return -ENOMEM;
2555}
2556
2557/**
2558 * ixgbevf_setup_all_tx_resources - allocate all queues Tx resources
2559 * @adapter: board private structure
2560 *
2561 * If this function returns with an error, then it's possible one or
2562 * more of the rings is populated (while the rest are not).  It is the
2563 * callers duty to clean those orphaned rings.
2564 *
2565 * Return 0 on success, negative on failure
2566 **/
2567static int ixgbevf_setup_all_tx_resources(struct ixgbevf_adapter *adapter)
2568{
2569	int i, err = 0;
2570
2571	for (i = 0; i < adapter->num_tx_queues; i++) {
2572		err = ixgbevf_setup_tx_resources(adapter->tx_ring[i]);
2573		if (!err)
2574			continue;
2575		hw_dbg(&adapter->hw,
2576		       "Allocation for Tx Queue %u failed\n", i);
2577		break;
 
 
 
 
 
 
 
2578	}
2579
 
 
 
 
 
 
 
 
2580	return err;
2581}
2582
2583/**
2584 * ixgbevf_setup_rx_resources - allocate Rx resources (Descriptors)
2585 * @rx_ring:    rx descriptor ring (for a specific queue) to setup
 
2586 *
2587 * Returns 0 on success, negative on failure
2588 **/
2589int ixgbevf_setup_rx_resources(struct ixgbevf_ring *rx_ring)
 
2590{
2591	int size;
2592
2593	size = sizeof(struct ixgbevf_rx_buffer) * rx_ring->count;
2594	rx_ring->rx_buffer_info = vzalloc(size);
2595	if (!rx_ring->rx_buffer_info)
2596		goto err;
2597
 
 
2598	/* Round up to nearest 4K */
2599	rx_ring->size = rx_ring->count * sizeof(union ixgbe_adv_rx_desc);
2600	rx_ring->size = ALIGN(rx_ring->size, 4096);
2601
2602	rx_ring->desc = dma_alloc_coherent(rx_ring->dev, rx_ring->size,
2603					   &rx_ring->dma, GFP_KERNEL);
2604
2605	if (!rx_ring->desc)
2606		goto err;
2607
 
 
 
 
 
 
 
2608	return 0;
2609err:
2610	vfree(rx_ring->rx_buffer_info);
2611	rx_ring->rx_buffer_info = NULL;
2612	dev_err(rx_ring->dev, "Unable to allocate memory for the Rx descriptor ring\n");
2613	return -ENOMEM;
2614}
2615
2616/**
2617 * ixgbevf_setup_all_rx_resources - allocate all queues Rx resources
2618 * @adapter: board private structure
2619 *
2620 * If this function returns with an error, then it's possible one or
2621 * more of the rings is populated (while the rest are not).  It is the
2622 * callers duty to clean those orphaned rings.
2623 *
2624 * Return 0 on success, negative on failure
2625 **/
2626static int ixgbevf_setup_all_rx_resources(struct ixgbevf_adapter *adapter)
2627{
2628	int i, err = 0;
2629
2630	for (i = 0; i < adapter->num_rx_queues; i++) {
2631		err = ixgbevf_setup_rx_resources(adapter->rx_ring[i]);
2632		if (!err)
2633			continue;
2634		hw_dbg(&adapter->hw,
2635		       "Allocation for Rx Queue %u failed\n", i);
2636		break;
2637	}
 
 
 
 
 
 
2638	return err;
2639}
2640
2641/**
2642 * ixgbevf_free_rx_resources - Free Rx Resources
2643 * @rx_ring: ring to clean the resources from
2644 *
2645 * Free all receive software resources
2646 **/
2647void ixgbevf_free_rx_resources(struct ixgbevf_ring *rx_ring)
2648{
2649	ixgbevf_clean_rx_ring(rx_ring);
2650
 
 
2651	vfree(rx_ring->rx_buffer_info);
2652	rx_ring->rx_buffer_info = NULL;
2653
2654	dma_free_coherent(rx_ring->dev, rx_ring->size, rx_ring->desc,
2655			  rx_ring->dma);
2656
2657	rx_ring->desc = NULL;
2658}
2659
2660/**
2661 * ixgbevf_free_all_rx_resources - Free Rx Resources for All Queues
2662 * @adapter: board private structure
2663 *
2664 * Free all receive software resources
2665 **/
2666static void ixgbevf_free_all_rx_resources(struct ixgbevf_adapter *adapter)
2667{
2668	int i;
2669
2670	for (i = 0; i < adapter->num_rx_queues; i++)
2671		if (adapter->rx_ring[i]->desc)
2672			ixgbevf_free_rx_resources(adapter->rx_ring[i]);
2673}
2674
2675/**
2676 * ixgbevf_open - Called when a network interface is made active
2677 * @netdev: network interface device structure
2678 *
2679 * Returns 0 on success, negative value on failure
2680 *
2681 * The open entry point is called when a network interface is made
2682 * active by the system (IFF_UP).  At this point all resources needed
2683 * for transmit and receive operations are allocated, the interrupt
2684 * handler is registered with the OS, the watchdog timer is started,
2685 * and the stack is notified that the interface is ready.
2686 **/
2687static int ixgbevf_open(struct net_device *netdev)
2688{
2689	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
2690	struct ixgbe_hw *hw = &adapter->hw;
2691	int err;
2692
2693	/* A previous failure to open the device because of a lack of
2694	 * available MSIX vector resources may have reset the number
2695	 * of msix vectors variable to zero.  The only way to recover
2696	 * is to unload/reload the driver and hope that the system has
2697	 * been able to recover some MSIX vector resources.
2698	 */
2699	if (!adapter->num_msix_vectors)
2700		return -ENOMEM;
2701
2702	/* disallow open during test */
2703	if (test_bit(__IXGBEVF_TESTING, &adapter->state))
2704		return -EBUSY;
2705
2706	if (hw->adapter_stopped) {
2707		ixgbevf_reset(adapter);
2708		/* if adapter is still stopped then PF isn't up and
2709		 * the vf can't start. */
 
2710		if (hw->adapter_stopped) {
2711			err = IXGBE_ERR_MBX;
2712			pr_err("Unable to start - perhaps the PF Driver isn't "
2713			       "up yet\n");
2714			goto err_setup_reset;
2715		}
2716	}
2717
 
 
 
 
 
 
2718	/* allocate transmit descriptors */
2719	err = ixgbevf_setup_all_tx_resources(adapter);
2720	if (err)
2721		goto err_setup_tx;
2722
2723	/* allocate receive descriptors */
2724	err = ixgbevf_setup_all_rx_resources(adapter);
2725	if (err)
2726		goto err_setup_rx;
2727
2728	ixgbevf_configure(adapter);
2729
2730	/*
2731	 * Map the Tx/Rx rings to the vectors we were allotted.
2732	 * if request_irq will be called in this function map_rings
2733	 * must be called *before* up_complete
2734	 */
2735	ixgbevf_map_rings_to_vectors(adapter);
2736
2737	ixgbevf_up_complete(adapter);
 
 
 
2738
2739	/* clear any pending interrupts, may auto mask */
2740	IXGBE_READ_REG(hw, IXGBE_VTEICR);
2741	err = ixgbevf_request_irq(adapter);
2742	if (err)
2743		goto err_req_irq;
2744
2745	ixgbevf_irq_enable(adapter);
2746
2747	return 0;
2748
 
 
2749err_req_irq:
2750	ixgbevf_down(adapter);
2751err_setup_rx:
2752	ixgbevf_free_all_rx_resources(adapter);
2753err_setup_tx:
2754	ixgbevf_free_all_tx_resources(adapter);
2755	ixgbevf_reset(adapter);
2756
2757err_setup_reset:
2758
2759	return err;
2760}
2761
2762/**
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2763 * ixgbevf_close - Disables a network interface
2764 * @netdev: network interface device structure
2765 *
2766 * Returns 0, this is not allowed to fail
2767 *
2768 * The close entry point is called when an interface is de-activated
2769 * by the OS.  The hardware is still under the drivers control, but
2770 * needs to be disabled.  A global MAC reset is issued to stop the
2771 * hardware, and all transmit and receive resources are freed.
2772 **/
2773static int ixgbevf_close(struct net_device *netdev)
2774{
2775	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
2776
2777	ixgbevf_down(adapter);
2778	ixgbevf_free_irq(adapter);
2779
2780	ixgbevf_free_all_tx_resources(adapter);
2781	ixgbevf_free_all_rx_resources(adapter);
2782
2783	return 0;
2784}
2785
2786static void ixgbevf_queue_reset_subtask(struct ixgbevf_adapter *adapter)
2787{
2788	struct net_device *dev = adapter->netdev;
2789
2790	if (!(adapter->flags & IXGBEVF_FLAG_QUEUE_RESET_REQUESTED))
 
2791		return;
2792
2793	adapter->flags &= ~IXGBEVF_FLAG_QUEUE_RESET_REQUESTED;
2794
2795	/* if interface is down do nothing */
2796	if (test_bit(__IXGBEVF_DOWN, &adapter->state) ||
2797	    test_bit(__IXGBEVF_RESETTING, &adapter->state))
2798		return;
2799
2800	/* Hardware has to reinitialize queues and interrupts to
2801	 * match packet buffer alignment. Unfortunately, the
2802	 * hardware is not flexible enough to do this dynamically.
2803	 */
 
 
2804	if (netif_running(dev))
2805		ixgbevf_close(dev);
2806
2807	ixgbevf_clear_interrupt_scheme(adapter);
2808	ixgbevf_init_interrupt_scheme(adapter);
2809
2810	if (netif_running(dev))
2811		ixgbevf_open(dev);
 
 
2812}
2813
2814static void ixgbevf_tx_ctxtdesc(struct ixgbevf_ring *tx_ring,
2815				u32 vlan_macip_lens, u32 type_tucmd,
2816				u32 mss_l4len_idx)
2817{
2818	struct ixgbe_adv_tx_context_desc *context_desc;
2819	u16 i = tx_ring->next_to_use;
2820
2821	context_desc = IXGBEVF_TX_CTXTDESC(tx_ring, i);
2822
2823	i++;
2824	tx_ring->next_to_use = (i < tx_ring->count) ? i : 0;
2825
2826	/* set bits to identify this as an advanced context descriptor */
2827	type_tucmd |= IXGBE_TXD_CMD_DEXT | IXGBE_ADVTXD_DTYP_CTXT;
2828
2829	context_desc->vlan_macip_lens	= cpu_to_le32(vlan_macip_lens);
2830	context_desc->seqnum_seed	= 0;
2831	context_desc->type_tucmd_mlhl	= cpu_to_le32(type_tucmd);
2832	context_desc->mss_l4len_idx	= cpu_to_le32(mss_l4len_idx);
2833}
2834
2835static int ixgbevf_tso(struct ixgbevf_ring *tx_ring,
2836		       struct ixgbevf_tx_buffer *first,
2837		       u8 *hdr_len)
 
2838{
 
2839	struct sk_buff *skb = first->skb;
2840	u32 vlan_macip_lens, type_tucmd;
2841	u32 mss_l4len_idx, l4len;
 
 
 
 
 
 
 
 
 
2842	int err;
2843
2844	if (skb->ip_summed != CHECKSUM_PARTIAL)
2845		return 0;
2846
2847	if (!skb_is_gso(skb))
2848		return 0;
2849
2850	err = skb_cow_head(skb, 0);
2851	if (err < 0)
2852		return err;
2853
 
 
 
 
 
 
2854	/* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */
2855	type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP;
2856
2857	if (skb->protocol == htons(ETH_P_IP)) {
2858		struct iphdr *iph = ip_hdr(skb);
2859		iph->tot_len = 0;
2860		iph->check = 0;
2861		tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr,
2862							 iph->daddr, 0,
2863							 IPPROTO_TCP,
2864							 0);
 
 
 
 
 
2865		type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4;
 
 
2866		first->tx_flags |= IXGBE_TX_FLAGS_TSO |
2867				   IXGBE_TX_FLAGS_CSUM |
2868				   IXGBE_TX_FLAGS_IPV4;
2869	} else if (skb_is_gso_v6(skb)) {
2870		ipv6_hdr(skb)->payload_len = 0;
2871		tcp_hdr(skb)->check =
2872		    ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
2873				     &ipv6_hdr(skb)->daddr,
2874				     0, IPPROTO_TCP, 0);
2875		first->tx_flags |= IXGBE_TX_FLAGS_TSO |
2876				   IXGBE_TX_FLAGS_CSUM;
2877	}
2878
2879	/* compute header lengths */
2880	l4len = tcp_hdrlen(skb);
2881	*hdr_len += l4len;
2882	*hdr_len = skb_transport_offset(skb) + l4len;
 
 
 
 
 
2883
2884	/* update gso size and bytecount with header size */
2885	first->gso_segs = skb_shinfo(skb)->gso_segs;
2886	first->bytecount += (first->gso_segs - 1) * *hdr_len;
2887
2888	/* mss_l4len_id: use 1 as index for TSO */
2889	mss_l4len_idx = l4len << IXGBE_ADVTXD_L4LEN_SHIFT;
2890	mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT;
2891	mss_l4len_idx |= 1 << IXGBE_ADVTXD_IDX_SHIFT;
 
 
 
2892
2893	/* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */
2894	vlan_macip_lens = skb_network_header_len(skb);
2895	vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT;
2896	vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK;
2897
2898	ixgbevf_tx_ctxtdesc(tx_ring, vlan_macip_lens,
2899			    type_tucmd, mss_l4len_idx);
2900
2901	return 1;
2902}
2903
2904static void ixgbevf_tx_csum(struct ixgbevf_ring *tx_ring,
2905			    struct ixgbevf_tx_buffer *first)
 
2906{
2907	struct sk_buff *skb = first->skb;
2908	u32 vlan_macip_lens = 0;
2909	u32 mss_l4len_idx = 0;
2910	u32 type_tucmd = 0;
2911
2912	if (skb->ip_summed == CHECKSUM_PARTIAL) {
2913		u8 l4_hdr = 0;
2914		switch (skb->protocol) {
2915		case htons(ETH_P_IP):
2916			vlan_macip_lens |= skb_network_header_len(skb);
2917			type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4;
2918			l4_hdr = ip_hdr(skb)->protocol;
2919			break;
2920		case htons(ETH_P_IPV6):
2921			vlan_macip_lens |= skb_network_header_len(skb);
2922			l4_hdr = ipv6_hdr(skb)->nexthdr;
2923			break;
2924		default:
2925			if (unlikely(net_ratelimit())) {
2926				dev_warn(tx_ring->dev,
2927				 "partial checksum but proto=%x!\n",
2928				 first->protocol);
2929			}
2930			break;
2931		}
2932
2933		switch (l4_hdr) {
2934		case IPPROTO_TCP:
2935			type_tucmd |= IXGBE_ADVTXD_TUCMD_L4T_TCP;
2936			mss_l4len_idx = tcp_hdrlen(skb) <<
2937					IXGBE_ADVTXD_L4LEN_SHIFT;
2938			break;
2939		case IPPROTO_SCTP:
2940			type_tucmd |= IXGBE_ADVTXD_TUCMD_L4T_SCTP;
2941			mss_l4len_idx = sizeof(struct sctphdr) <<
2942					IXGBE_ADVTXD_L4LEN_SHIFT;
2943			break;
2944		case IPPROTO_UDP:
2945			mss_l4len_idx = sizeof(struct udphdr) <<
2946					IXGBE_ADVTXD_L4LEN_SHIFT;
2947			break;
2948		default:
2949			if (unlikely(net_ratelimit())) {
2950				dev_warn(tx_ring->dev,
2951				 "partial checksum but l4 proto=%x!\n",
2952				 l4_hdr);
2953			}
2954			break;
2955		}
 
 
 
 
 
2956
2957		/* update TX checksum flag */
2958		first->tx_flags |= IXGBE_TX_FLAGS_CSUM;
2959	}
2960
 
 
 
 
 
2961	/* vlan_macip_lens: MACLEN, VLAN tag */
2962	vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT;
2963	vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK;
2964
 
 
 
2965	ixgbevf_tx_ctxtdesc(tx_ring, vlan_macip_lens,
2966			    type_tucmd, mss_l4len_idx);
2967}
2968
2969static __le32 ixgbevf_tx_cmd_type(u32 tx_flags)
2970{
2971	/* set type for advanced descriptor with frame checksum insertion */
2972	__le32 cmd_type = cpu_to_le32(IXGBE_ADVTXD_DTYP_DATA |
2973				      IXGBE_ADVTXD_DCMD_IFCS |
2974				      IXGBE_ADVTXD_DCMD_DEXT);
2975
2976	/* set HW vlan bit if vlan is present */
2977	if (tx_flags & IXGBE_TX_FLAGS_VLAN)
2978		cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_VLE);
2979
2980	/* set segmentation enable bits for TSO/FSO */
2981	if (tx_flags & IXGBE_TX_FLAGS_TSO)
2982		cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_TSE);
2983
2984	return cmd_type;
2985}
2986
2987static void ixgbevf_tx_olinfo_status(union ixgbe_adv_tx_desc *tx_desc,
2988				     u32 tx_flags, unsigned int paylen)
2989{
2990	__le32 olinfo_status = cpu_to_le32(paylen << IXGBE_ADVTXD_PAYLEN_SHIFT);
2991
2992	/* enable L4 checksum for TSO and TX checksum offload */
2993	if (tx_flags & IXGBE_TX_FLAGS_CSUM)
2994		olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_TXSM);
2995
2996	/* enble IPv4 checksum for TSO */
2997	if (tx_flags & IXGBE_TX_FLAGS_IPV4)
2998		olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_IXSM);
2999
3000	/* use index 1 context for TSO/FSO/FCOE */
3001	if (tx_flags & IXGBE_TX_FLAGS_TSO)
3002		olinfo_status |= cpu_to_le32(1 << IXGBE_ADVTXD_IDX_SHIFT);
 
 
 
 
3003
3004	/* Check Context must be set if Tx switch is enabled, which it
3005	 * always is for case where virtual functions are running
3006	 */
3007	olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_CC);
3008
3009	tx_desc->read.olinfo_status = olinfo_status;
3010}
3011
3012static void ixgbevf_tx_map(struct ixgbevf_ring *tx_ring,
3013			   struct ixgbevf_tx_buffer *first,
3014			   const u8 hdr_len)
3015{
3016	dma_addr_t dma;
3017	struct sk_buff *skb = first->skb;
3018	struct ixgbevf_tx_buffer *tx_buffer;
3019	union ixgbe_adv_tx_desc *tx_desc;
3020	struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0];
3021	unsigned int data_len = skb->data_len;
3022	unsigned int size = skb_headlen(skb);
3023	unsigned int paylen = skb->len - hdr_len;
3024	u32 tx_flags = first->tx_flags;
3025	__le32 cmd_type;
3026	u16 i = tx_ring->next_to_use;
3027
3028	tx_desc = IXGBEVF_TX_DESC(tx_ring, i);
3029
3030	ixgbevf_tx_olinfo_status(tx_desc, tx_flags, paylen);
3031	cmd_type = ixgbevf_tx_cmd_type(tx_flags);
 
 
3032
3033	dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);
3034	if (dma_mapping_error(tx_ring->dev, dma))
3035		goto dma_error;
3036
3037	/* record length, and DMA address */
3038	dma_unmap_len_set(first, len, size);
3039	dma_unmap_addr_set(first, dma, dma);
 
 
 
 
 
 
3040
3041	tx_desc->read.buffer_addr = cpu_to_le64(dma);
3042
3043	for (;;) {
3044		while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) {
3045			tx_desc->read.cmd_type_len =
3046				cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD);
3047
3048			i++;
3049			tx_desc++;
3050			if (i == tx_ring->count) {
3051				tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
3052				i = 0;
3053			}
 
3054
3055			dma += IXGBE_MAX_DATA_PER_TXD;
3056			size -= IXGBE_MAX_DATA_PER_TXD;
3057
3058			tx_desc->read.buffer_addr = cpu_to_le64(dma);
3059			tx_desc->read.olinfo_status = 0;
3060		}
3061
3062		if (likely(!data_len))
3063			break;
3064
3065		tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size);
3066
3067		i++;
3068		tx_desc++;
3069		if (i == tx_ring->count) {
3070			tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
3071			i = 0;
3072		}
 
3073
3074		size = skb_frag_size(frag);
3075		data_len -= size;
3076
3077		dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size,
3078				       DMA_TO_DEVICE);
3079		if (dma_mapping_error(tx_ring->dev, dma))
3080			goto dma_error;
3081
3082		tx_buffer = &tx_ring->tx_buffer_info[i];
3083		dma_unmap_len_set(tx_buffer, len, size);
3084		dma_unmap_addr_set(tx_buffer, dma, dma);
3085
3086		tx_desc->read.buffer_addr = cpu_to_le64(dma);
3087		tx_desc->read.olinfo_status = 0;
3088
3089		frag++;
3090	}
3091
3092	/* write last descriptor with RS and EOP bits */
3093	cmd_type |= cpu_to_le32(size) | cpu_to_le32(IXGBE_TXD_CMD);
3094	tx_desc->read.cmd_type_len = cmd_type;
3095
3096	/* set the timestamp */
3097	first->time_stamp = jiffies;
3098
 
 
3099	/* Force memory writes to complete before letting h/w know there
3100	 * are new descriptors to fetch.  (Only applicable for weak-ordered
3101	 * memory model archs, such as IA-64).
3102	 *
3103	 * We also need this memory barrier (wmb) to make certain all of the
3104	 * status bits have been updated before next_to_watch is written.
3105	 */
3106	wmb();
3107
3108	/* set next_to_watch value indicating a packet is present */
3109	first->next_to_watch = tx_desc;
3110
3111	i++;
3112	if (i == tx_ring->count)
3113		i = 0;
3114
3115	tx_ring->next_to_use = i;
3116
3117	/* notify HW of packet */
3118	ixgbevf_write_tail(tx_ring, i);
3119
3120	return;
3121dma_error:
3122	dev_err(tx_ring->dev, "TX DMA map failed\n");
 
3123
3124	/* clear dma mappings for failed tx_buffer_info map */
3125	for (;;) {
 
 
 
 
 
 
 
 
 
3126		tx_buffer = &tx_ring->tx_buffer_info[i];
3127		ixgbevf_unmap_and_free_tx_resource(tx_ring, tx_buffer);
3128		if (tx_buffer == first)
3129			break;
3130		if (i == 0)
3131			i = tx_ring->count;
3132		i--;
3133	}
3134
 
 
 
 
 
 
 
 
 
 
3135	tx_ring->next_to_use = i;
3136}
3137
3138static int __ixgbevf_maybe_stop_tx(struct ixgbevf_ring *tx_ring, int size)
3139{
3140	netif_stop_subqueue(tx_ring->netdev, tx_ring->queue_index);
3141	/* Herbert's original patch had:
3142	 *  smp_mb__after_netif_stop_queue();
3143	 * but since that doesn't exist yet, just open code it. */
 
3144	smp_mb();
3145
3146	/* We need to check again in a case another CPU has just
3147	 * made room available. */
 
3148	if (likely(ixgbevf_desc_unused(tx_ring) < size))
3149		return -EBUSY;
3150
3151	/* A reprieve! - use start_queue because it doesn't call schedule */
3152	netif_start_subqueue(tx_ring->netdev, tx_ring->queue_index);
3153	++tx_ring->tx_stats.restart_queue;
3154
3155	return 0;
3156}
3157
3158static int ixgbevf_maybe_stop_tx(struct ixgbevf_ring *tx_ring, int size)
3159{
3160	if (likely(ixgbevf_desc_unused(tx_ring) >= size))
3161		return 0;
3162	return __ixgbevf_maybe_stop_tx(tx_ring, size);
3163}
3164
3165static int ixgbevf_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
 
3166{
3167	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3168	struct ixgbevf_tx_buffer *first;
3169	struct ixgbevf_ring *tx_ring;
3170	int tso;
3171	u32 tx_flags = 0;
3172	u16 count = TXD_USE_COUNT(skb_headlen(skb));
 
3173#if PAGE_SIZE > IXGBE_MAX_DATA_PER_TXD
3174	unsigned short f;
3175#endif
3176	u8 hdr_len = 0;
3177	u8 *dst_mac = skb_header_pointer(skb, 0, 0, NULL);
3178
3179	if (!dst_mac || is_link_local_ether_addr(dst_mac)) {
3180		dev_kfree_skb(skb);
3181		return NETDEV_TX_OK;
3182	}
3183
3184	tx_ring = adapter->tx_ring[skb->queue_mapping];
3185
3186	/*
3187	 * need: 1 descriptor per page * PAGE_SIZE/IXGBE_MAX_DATA_PER_TXD,
3188	 *       + 1 desc for skb_headlen/IXGBE_MAX_DATA_PER_TXD,
3189	 *       + 2 desc gap to keep tail from touching head,
3190	 *       + 1 desc for context descriptor,
3191	 * otherwise try next time
3192	 */
3193#if PAGE_SIZE > IXGBE_MAX_DATA_PER_TXD
3194	for (f = 0; f < skb_shinfo(skb)->nr_frags; f++)
3195		count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size);
 
 
 
3196#else
3197	count += skb_shinfo(skb)->nr_frags;
3198#endif
3199	if (ixgbevf_maybe_stop_tx(tx_ring, count + 3)) {
3200		tx_ring->tx_stats.tx_busy++;
3201		return NETDEV_TX_BUSY;
3202	}
3203
3204	/* record the location of the first descriptor for this packet */
3205	first = &tx_ring->tx_buffer_info[tx_ring->next_to_use];
3206	first->skb = skb;
3207	first->bytecount = skb->len;
3208	first->gso_segs = 1;
3209
3210	if (vlan_tx_tag_present(skb)) {
3211		tx_flags |= vlan_tx_tag_get(skb);
3212		tx_flags <<= IXGBE_TX_FLAGS_VLAN_SHIFT;
3213		tx_flags |= IXGBE_TX_FLAGS_VLAN;
3214	}
3215
3216	/* record initial flags and protocol */
3217	first->tx_flags = tx_flags;
3218	first->protocol = vlan_get_protocol(skb);
3219
3220	tso = ixgbevf_tso(tx_ring, first, &hdr_len);
 
 
 
 
3221	if (tso < 0)
3222		goto out_drop;
3223	else if (!tso)
3224		ixgbevf_tx_csum(tx_ring, first);
3225
3226	ixgbevf_tx_map(tx_ring, first, hdr_len);
3227
3228	ixgbevf_maybe_stop_tx(tx_ring, DESC_NEEDED);
3229
3230	return NETDEV_TX_OK;
3231
3232out_drop:
3233	dev_kfree_skb_any(first->skb);
3234	first->skb = NULL;
3235
3236	return NETDEV_TX_OK;
3237}
3238
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3239/**
3240 * ixgbevf_set_mac - Change the Ethernet Address of the NIC
3241 * @netdev: network interface device structure
3242 * @p: pointer to an address structure
3243 *
3244 * Returns 0 on success, negative on failure
3245 **/
3246static int ixgbevf_set_mac(struct net_device *netdev, void *p)
3247{
3248	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3249	struct ixgbe_hw *hw = &adapter->hw;
3250	struct sockaddr *addr = p;
 
3251
3252	if (!is_valid_ether_addr(addr->sa_data))
3253		return -EADDRNOTAVAIL;
3254
3255	memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
3256	memcpy(hw->mac.addr, addr->sa_data, netdev->addr_len);
3257
3258	spin_lock_bh(&adapter->mbx_lock);
3259
3260	hw->mac.ops.set_rar(hw, 0, hw->mac.addr, 0);
3261
3262	spin_unlock_bh(&adapter->mbx_lock);
3263
 
 
 
 
 
 
 
3264	return 0;
3265}
3266
3267/**
3268 * ixgbevf_change_mtu - Change the Maximum Transfer Unit
3269 * @netdev: network interface device structure
3270 * @new_mtu: new value for maximum frame size
3271 *
3272 * Returns 0 on success, negative on failure
3273 **/
3274static int ixgbevf_change_mtu(struct net_device *netdev, int new_mtu)
3275{
3276	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
 
3277	int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
3278	int max_possible_frame = MAXIMUM_ETHERNET_VLAN_SIZE;
3279
3280	switch (adapter->hw.api_version) {
3281	case ixgbe_mbox_api_11:
3282		max_possible_frame = IXGBE_MAX_JUMBO_FRAME_SIZE;
3283		break;
3284	default:
3285		if (adapter->hw.mac.type == ixgbe_mac_X540_vf)
3286			max_possible_frame = IXGBE_MAX_JUMBO_FRAME_SIZE;
3287		break;
3288	}
3289
3290	/* MTU < 68 is an error and causes problems on some kernels */
3291	if ((new_mtu < 68) || (max_frame > max_possible_frame))
 
 
 
3292		return -EINVAL;
3293
3294	hw_dbg(&adapter->hw, "changing MTU from %d to %d\n",
3295	       netdev->mtu, new_mtu);
 
3296	/* must set new MTU before calling down or up */
3297	netdev->mtu = new_mtu;
3298
3299	if (netif_running(netdev))
3300		ixgbevf_reinit_locked(adapter);
3301
3302	return 0;
3303}
3304
3305static int ixgbevf_suspend(struct pci_dev *pdev, pm_message_t state)
3306{
3307	struct net_device *netdev = pci_get_drvdata(pdev);
3308	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3309#ifdef CONFIG_PM
3310	int retval = 0;
3311#endif
3312
 
3313	netif_device_detach(netdev);
3314
3315	if (netif_running(netdev)) {
3316		rtnl_lock();
3317		ixgbevf_down(adapter);
3318		ixgbevf_free_irq(adapter);
3319		ixgbevf_free_all_tx_resources(adapter);
3320		ixgbevf_free_all_rx_resources(adapter);
3321		rtnl_unlock();
3322	}
3323
3324	ixgbevf_clear_interrupt_scheme(adapter);
3325
3326#ifdef CONFIG_PM
3327	retval = pci_save_state(pdev);
3328	if (retval)
3329		return retval;
3330
3331#endif
3332	if (!test_and_set_bit(__IXGBEVF_DISABLED, &adapter->state))
3333		pci_disable_device(pdev);
3334
3335	return 0;
3336}
3337
3338#ifdef CONFIG_PM
3339static int ixgbevf_resume(struct pci_dev *pdev)
3340{
 
3341	struct net_device *netdev = pci_get_drvdata(pdev);
3342	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3343	u32 err;
3344
3345	pci_restore_state(pdev);
3346	/*
3347	 * pci_restore_state clears dev->state_saved so call
3348	 * pci_save_state to restore it.
3349	 */
3350	pci_save_state(pdev);
3351
3352	err = pci_enable_device_mem(pdev);
3353	if (err) {
3354		dev_err(&pdev->dev, "Cannot enable PCI device from suspend\n");
3355		return err;
3356	}
3357	smp_mb__before_clear_bit();
3358	clear_bit(__IXGBEVF_DISABLED, &adapter->state);
3359	pci_set_master(pdev);
3360
3361	ixgbevf_reset(adapter);
3362
3363	rtnl_lock();
3364	err = ixgbevf_init_interrupt_scheme(adapter);
 
 
3365	rtnl_unlock();
3366	if (err) {
3367		dev_err(&pdev->dev, "Cannot initialize interrupts\n");
3368		return err;
3369	}
3370
3371	if (netif_running(netdev)) {
3372		err = ixgbevf_open(netdev);
3373		if (err)
3374			return err;
3375	}
3376
3377	netif_device_attach(netdev);
3378
3379	return err;
3380}
3381
3382#endif /* CONFIG_PM */
3383static void ixgbevf_shutdown(struct pci_dev *pdev)
3384{
3385	ixgbevf_suspend(pdev, PMSG_SUSPEND);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3386}
3387
3388static struct rtnl_link_stats64 *ixgbevf_get_stats(struct net_device *netdev,
3389						struct rtnl_link_stats64 *stats)
3390{
3391	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3392	unsigned int start;
3393	u64 bytes, packets;
3394	const struct ixgbevf_ring *ring;
3395	int i;
3396
3397	ixgbevf_update_stats(adapter);
3398
3399	stats->multicast = adapter->stats.vfmprc - adapter->stats.base_vfmprc;
3400
 
3401	for (i = 0; i < adapter->num_rx_queues; i++) {
3402		ring = adapter->rx_ring[i];
3403		do {
3404			start = u64_stats_fetch_begin_irq(&ring->syncp);
3405			bytes = ring->stats.bytes;
3406			packets = ring->stats.packets;
3407		} while (u64_stats_fetch_retry_irq(&ring->syncp, start));
3408		stats->rx_bytes += bytes;
3409		stats->rx_packets += packets;
3410	}
3411
3412	for (i = 0; i < adapter->num_tx_queues; i++) {
3413		ring = adapter->tx_ring[i];
3414		do {
3415			start = u64_stats_fetch_begin_irq(&ring->syncp);
3416			bytes = ring->stats.bytes;
3417			packets = ring->stats.packets;
3418		} while (u64_stats_fetch_retry_irq(&ring->syncp, start));
3419		stats->tx_bytes += bytes;
3420		stats->tx_packets += packets;
3421	}
3422
3423	return stats;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3424}
3425
3426static const struct net_device_ops ixgbevf_netdev_ops = {
3427	.ndo_open		= ixgbevf_open,
3428	.ndo_stop		= ixgbevf_close,
3429	.ndo_start_xmit		= ixgbevf_xmit_frame,
3430	.ndo_set_rx_mode	= ixgbevf_set_rx_mode,
3431	.ndo_get_stats64	= ixgbevf_get_stats,
3432	.ndo_validate_addr	= eth_validate_addr,
3433	.ndo_set_mac_address	= ixgbevf_set_mac,
3434	.ndo_change_mtu		= ixgbevf_change_mtu,
3435	.ndo_tx_timeout		= ixgbevf_tx_timeout,
3436	.ndo_vlan_rx_add_vid	= ixgbevf_vlan_rx_add_vid,
3437	.ndo_vlan_rx_kill_vid	= ixgbevf_vlan_rx_kill_vid,
3438#ifdef CONFIG_NET_RX_BUSY_POLL
3439	.ndo_busy_poll		= ixgbevf_busy_poll_recv,
3440#endif
3441};
3442
3443static void ixgbevf_assign_netdev_ops(struct net_device *dev)
3444{
3445	dev->netdev_ops = &ixgbevf_netdev_ops;
3446	ixgbevf_set_ethtool_ops(dev);
3447	dev->watchdog_timeo = 5 * HZ;
3448}
3449
3450/**
3451 * ixgbevf_probe - Device Initialization Routine
3452 * @pdev: PCI device information struct
3453 * @ent: entry in ixgbevf_pci_tbl
3454 *
3455 * Returns 0 on success, negative on failure
3456 *
3457 * ixgbevf_probe initializes an adapter identified by a pci_dev structure.
3458 * The OS initialization, configuring of the adapter private structure,
3459 * and a hardware reset occur.
3460 **/
3461static int ixgbevf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
3462{
3463	struct net_device *netdev;
3464	struct ixgbevf_adapter *adapter = NULL;
3465	struct ixgbe_hw *hw = NULL;
3466	const struct ixgbevf_info *ii = ixgbevf_info_tbl[ent->driver_data];
3467	static int cards_found;
3468	int err, pci_using_dac;
3469
3470	err = pci_enable_device(pdev);
3471	if (err)
3472		return err;
3473
3474	if (!dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64))) {
3475		pci_using_dac = 1;
3476	} else {
3477		err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
3478		if (err) {
3479			dev_err(&pdev->dev, "No usable DMA "
3480				"configuration, aborting\n");
3481			goto err_dma;
3482		}
3483		pci_using_dac = 0;
3484	}
3485
3486	err = pci_request_regions(pdev, ixgbevf_driver_name);
3487	if (err) {
3488		dev_err(&pdev->dev, "pci_request_regions failed 0x%x\n", err);
3489		goto err_pci_reg;
3490	}
3491
3492	pci_set_master(pdev);
3493
3494	netdev = alloc_etherdev_mq(sizeof(struct ixgbevf_adapter),
3495				   MAX_TX_QUEUES);
3496	if (!netdev) {
3497		err = -ENOMEM;
3498		goto err_alloc_etherdev;
3499	}
3500
3501	SET_NETDEV_DEV(netdev, &pdev->dev);
3502
3503	pci_set_drvdata(pdev, netdev);
3504	adapter = netdev_priv(netdev);
3505
3506	adapter->netdev = netdev;
3507	adapter->pdev = pdev;
3508	hw = &adapter->hw;
3509	hw->back = adapter;
3510	adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE);
3511
3512	/*
3513	 * call save state here in standalone driver because it relies on
3514	 * adapter struct to exist, and needs to call netdev_priv
3515	 */
3516	pci_save_state(pdev);
3517
3518	hw->hw_addr = ioremap(pci_resource_start(pdev, 0),
3519			      pci_resource_len(pdev, 0));
3520	adapter->io_addr = hw->hw_addr;
3521	if (!hw->hw_addr) {
3522		err = -EIO;
3523		goto err_ioremap;
3524	}
3525
3526	ixgbevf_assign_netdev_ops(netdev);
3527
3528	adapter->bd_number = cards_found;
3529
3530	/* Setup hw api */
3531	memcpy(&hw->mac.ops, ii->mac_ops, sizeof(hw->mac.ops));
3532	hw->mac.type  = ii->mac;
3533
3534	memcpy(&hw->mbx.ops, &ixgbevf_mbx_ops,
3535	       sizeof(struct ixgbe_mbx_operations));
3536
3537	/* setup the private structure */
3538	err = ixgbevf_sw_init(adapter);
3539	if (err)
3540		goto err_sw_init;
3541
3542	/* The HW MAC address was set and/or determined in sw_init */
3543	if (!is_valid_ether_addr(netdev->dev_addr)) {
3544		pr_err("invalid MAC address\n");
3545		err = -EIO;
3546		goto err_sw_init;
3547	}
3548
3549	netdev->hw_features = NETIF_F_SG |
3550			   NETIF_F_IP_CSUM |
3551			   NETIF_F_IPV6_CSUM |
3552			   NETIF_F_TSO |
3553			   NETIF_F_TSO6 |
3554			   NETIF_F_RXCSUM;
3555
3556	netdev->features = netdev->hw_features |
3557			   NETIF_F_HW_VLAN_CTAG_TX |
3558			   NETIF_F_HW_VLAN_CTAG_RX |
3559			   NETIF_F_HW_VLAN_CTAG_FILTER;
3560
3561	netdev->vlan_features |= NETIF_F_TSO;
3562	netdev->vlan_features |= NETIF_F_TSO6;
3563	netdev->vlan_features |= NETIF_F_IP_CSUM;
3564	netdev->vlan_features |= NETIF_F_IPV6_CSUM;
3565	netdev->vlan_features |= NETIF_F_SG;
3566
3567	if (pci_using_dac)
3568		netdev->features |= NETIF_F_HIGHDMA;
 
 
 
 
 
 
 
 
 
 
 
 
3569
3570	netdev->priv_flags |= IFF_UNICAST_FLT;
 
3571
3572	init_timer(&adapter->watchdog_timer);
3573	adapter->watchdog_timer.function = ixgbevf_watchdog;
3574	adapter->watchdog_timer.data = (unsigned long)adapter;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3575
3576	if (IXGBE_REMOVED(hw->hw_addr)) {
3577		err = -EIO;
3578		goto err_sw_init;
3579	}
3580	INIT_WORK(&adapter->reset_task, ixgbevf_reset_task);
3581	INIT_WORK(&adapter->watchdog_task, ixgbevf_watchdog_task);
3582	set_bit(__IXGBEVF_WORK_INIT, &adapter->state);
 
 
 
3583
3584	err = ixgbevf_init_interrupt_scheme(adapter);
3585	if (err)
3586		goto err_sw_init;
3587
3588	strcpy(netdev->name, "eth%d");
3589
3590	err = register_netdev(netdev);
3591	if (err)
3592		goto err_register;
3593
 
3594	netif_carrier_off(netdev);
 
3595
3596	ixgbevf_init_last_counter_stats(adapter);
3597
3598	/* print the MAC address */
3599	hw_dbg(hw, "%pM\n", netdev->dev_addr);
3600
3601	hw_dbg(hw, "MAC: %d\n", hw->mac.type);
 
 
 
 
 
 
 
 
 
 
 
 
3602
3603	hw_dbg(hw, "Intel(R) 82599 Virtual Function\n");
3604	cards_found++;
3605	return 0;
3606
3607err_register:
3608	ixgbevf_clear_interrupt_scheme(adapter);
3609err_sw_init:
3610	ixgbevf_reset_interrupt_capability(adapter);
3611	iounmap(adapter->io_addr);
 
3612err_ioremap:
 
3613	free_netdev(netdev);
3614err_alloc_etherdev:
3615	pci_release_regions(pdev);
3616err_pci_reg:
3617err_dma:
3618	if (!test_and_set_bit(__IXGBEVF_DISABLED, &adapter->state))
3619		pci_disable_device(pdev);
3620	return err;
3621}
3622
3623/**
3624 * ixgbevf_remove - Device Removal Routine
3625 * @pdev: PCI device information struct
3626 *
3627 * ixgbevf_remove is called by the PCI subsystem to alert the driver
3628 * that it should release a PCI device.  The could be caused by a
3629 * Hot-Plug event, or because the driver is going to be removed from
3630 * memory.
3631 **/
3632static void ixgbevf_remove(struct pci_dev *pdev)
3633{
3634	struct net_device *netdev = pci_get_drvdata(pdev);
3635	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
 
3636
3637	set_bit(__IXGBEVF_REMOVING, &adapter->state);
 
3638
3639	del_timer_sync(&adapter->watchdog_timer);
3640
3641	cancel_work_sync(&adapter->reset_task);
3642	cancel_work_sync(&adapter->watchdog_task);
3643
3644	if (netdev->reg_state == NETREG_REGISTERED)
3645		unregister_netdev(netdev);
3646
 
3647	ixgbevf_clear_interrupt_scheme(adapter);
3648	ixgbevf_reset_interrupt_capability(adapter);
3649
3650	iounmap(adapter->io_addr);
3651	pci_release_regions(pdev);
3652
3653	hw_dbg(&adapter->hw, "Remove complete\n");
3654
 
 
3655	free_netdev(netdev);
3656
3657	if (!test_and_set_bit(__IXGBEVF_DISABLED, &adapter->state))
3658		pci_disable_device(pdev);
3659}
3660
3661/**
3662 * ixgbevf_io_error_detected - called when PCI error is detected
3663 * @pdev: Pointer to PCI device
3664 * @state: The current pci connection state
3665 *
3666 * This function is called after a PCI bus error affecting
3667 * this device has been detected.
3668 */
3669static pci_ers_result_t ixgbevf_io_error_detected(struct pci_dev *pdev,
3670						  pci_channel_state_t state)
3671{
3672	struct net_device *netdev = pci_get_drvdata(pdev);
3673	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3674
3675	if (!test_bit(__IXGBEVF_WORK_INIT, &adapter->state))
3676		return PCI_ERS_RESULT_DISCONNECT;
3677
3678	rtnl_lock();
3679	netif_device_detach(netdev);
3680
 
 
 
3681	if (state == pci_channel_io_perm_failure) {
3682		rtnl_unlock();
3683		return PCI_ERS_RESULT_DISCONNECT;
3684	}
3685
3686	if (netif_running(netdev))
3687		ixgbevf_down(adapter);
3688
3689	if (!test_and_set_bit(__IXGBEVF_DISABLED, &adapter->state))
3690		pci_disable_device(pdev);
3691	rtnl_unlock();
3692
3693	/* Request a slot slot reset. */
3694	return PCI_ERS_RESULT_NEED_RESET;
3695}
3696
3697/**
3698 * ixgbevf_io_slot_reset - called after the pci bus has been reset.
3699 * @pdev: Pointer to PCI device
3700 *
3701 * Restart the card from scratch, as if from a cold-boot. Implementation
3702 * resembles the first-half of the ixgbevf_resume routine.
3703 */
3704static pci_ers_result_t ixgbevf_io_slot_reset(struct pci_dev *pdev)
3705{
3706	struct net_device *netdev = pci_get_drvdata(pdev);
3707	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3708
3709	if (pci_enable_device_mem(pdev)) {
3710		dev_err(&pdev->dev,
3711			"Cannot re-enable PCI device after reset.\n");
3712		return PCI_ERS_RESULT_DISCONNECT;
3713	}
3714
3715	smp_mb__before_clear_bit();
 
3716	clear_bit(__IXGBEVF_DISABLED, &adapter->state);
3717	pci_set_master(pdev);
3718
3719	ixgbevf_reset(adapter);
3720
3721	return PCI_ERS_RESULT_RECOVERED;
3722}
3723
3724/**
3725 * ixgbevf_io_resume - called when traffic can start flowing again.
3726 * @pdev: Pointer to PCI device
3727 *
3728 * This callback is called when the error recovery driver tells us that
3729 * its OK to resume normal operation. Implementation resembles the
3730 * second-half of the ixgbevf_resume routine.
3731 */
3732static void ixgbevf_io_resume(struct pci_dev *pdev)
3733{
3734	struct net_device *netdev = pci_get_drvdata(pdev);
3735	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3736
 
3737	if (netif_running(netdev))
3738		ixgbevf_up(adapter);
3739
3740	netif_device_attach(netdev);
 
3741}
3742
3743/* PCI Error Recovery (ERS) */
3744static const struct pci_error_handlers ixgbevf_err_handler = {
3745	.error_detected = ixgbevf_io_error_detected,
3746	.slot_reset = ixgbevf_io_slot_reset,
3747	.resume = ixgbevf_io_resume,
3748};
3749
 
 
3750static struct pci_driver ixgbevf_driver = {
3751	.name     = ixgbevf_driver_name,
3752	.id_table = ixgbevf_pci_tbl,
3753	.probe    = ixgbevf_probe,
3754	.remove   = ixgbevf_remove,
3755#ifdef CONFIG_PM
3756	/* Power Management Hooks */
3757	.suspend  = ixgbevf_suspend,
3758	.resume   = ixgbevf_resume,
3759#endif
3760	.shutdown = ixgbevf_shutdown,
3761	.err_handler = &ixgbevf_err_handler
3762};
3763
3764/**
3765 * ixgbevf_init_module - Driver Registration Routine
3766 *
3767 * ixgbevf_init_module is the first routine called when the driver is
3768 * loaded. All it does is register with the PCI subsystem.
3769 **/
3770static int __init ixgbevf_init_module(void)
3771{
3772	int ret;
3773	pr_info("%s - version %s\n", ixgbevf_driver_string,
3774		ixgbevf_driver_version);
3775
 
3776	pr_info("%s\n", ixgbevf_copyright);
 
 
 
 
 
 
 
 
 
 
 
3777
3778	ret = pci_register_driver(&ixgbevf_driver);
3779	return ret;
3780}
3781
3782module_init(ixgbevf_init_module);
3783
3784/**
3785 * ixgbevf_exit_module - Driver Exit Cleanup Routine
3786 *
3787 * ixgbevf_exit_module is called just before the driver is removed
3788 * from memory.
3789 **/
3790static void __exit ixgbevf_exit_module(void)
3791{
3792	pci_unregister_driver(&ixgbevf_driver);
 
 
 
 
3793}
3794
3795#ifdef DEBUG
3796/**
3797 * ixgbevf_get_hw_dev_name - return device name string
3798 * used by hardware layer to print debugging information
 
3799 **/
3800char *ixgbevf_get_hw_dev_name(struct ixgbe_hw *hw)
3801{
3802	struct ixgbevf_adapter *adapter = hw->back;
 
3803	return adapter->netdev->name;
3804}
3805
3806#endif
3807module_exit(ixgbevf_exit_module);
3808
3809/* ixgbevf_main.c */