diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igb/igb_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/igb/igb_main.c | 190 | 
1 files changed, 8 insertions, 182 deletions
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index ed79a1c53b5..64f75291e3a 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -1923,10 +1923,6 @@ void igb_set_fw_version(struct igb_adapter *adapter)  	return;  } -static const struct i2c_board_info i350_sensor_info = { -	I2C_BOARD_INFO("i350bb", 0Xf8), -}; -  /*  igb_init_i2c - Init I2C interface   *  @adapter: pointer to adapter structure   * @@ -2546,8 +2542,8 @@ static void igb_probe_vfs(struct igb_adapter *adapter)  	if ((hw->mac.type == e1000_i210) || (hw->mac.type == e1000_i211))  		return; -	igb_enable_sriov(pdev, max_vfs);  	pci_sriov_set_totalvfs(pdev, 7); +	igb_enable_sriov(pdev, max_vfs);  #endif /* CONFIG_PCI_IOV */  } @@ -2656,7 +2652,7 @@ static int igb_sw_init(struct igb_adapter *adapter)  		if (max_vfs > 7) {  			dev_warn(&pdev->dev,  				 "Maximum of 7 VFs per PF, using max\n"); -			adapter->vfs_allocated_count = 7; +			max_vfs = adapter->vfs_allocated_count = 7;  		} else  			adapter->vfs_allocated_count = max_vfs;  		if (adapter->vfs_allocated_count) @@ -3354,20 +3350,6 @@ void igb_configure_rx_ring(struct igb_adapter *adapter,  	wr32(E1000_RXDCTL(reg_idx), rxdctl);  } -static void igb_set_rx_buffer_len(struct igb_adapter *adapter, -				  struct igb_ring *rx_ring) -{ -#define IGB_MAX_BUILD_SKB_SIZE \ -	(SKB_WITH_OVERHEAD(IGB_RX_BUFSZ) - \ -	 (NET_SKB_PAD + NET_IP_ALIGN + IGB_TS_HDR_LEN)) - -	/* set build_skb flag */ -	if (adapter->max_frame_size <= IGB_MAX_BUILD_SKB_SIZE) -		set_ring_build_skb_enabled(rx_ring); -	else -		clear_ring_build_skb_enabled(rx_ring); -} -  /**   * igb_configure_rx - Configure receive Unit after Reset   * @adapter: board private structure @@ -3387,11 +3369,8 @@ static void igb_configure_rx(struct igb_adapter *adapter)  	/* Setup the HW Rx Head and Tail Descriptor Pointers and  	 * the Base and Length of the Rx Descriptor Ring */ -	for (i = 0; i < adapter->num_rx_queues; i++) { -		struct igb_ring *rx_ring = adapter->rx_ring[i]; -		igb_set_rx_buffer_len(adapter, rx_ring); -		igb_configure_rx_ring(adapter, rx_ring); -	} +	for (i = 0; i < adapter->num_rx_queues; i++) +		igb_configure_rx_ring(adapter, adapter->rx_ring[i]);  }  /** @@ -6207,85 +6186,6 @@ static bool igb_add_rx_frag(struct igb_ring *rx_ring,  	return igb_can_reuse_rx_page(rx_buffer, page, truesize);  } -static struct sk_buff *igb_build_rx_buffer(struct igb_ring *rx_ring, -					   union e1000_adv_rx_desc *rx_desc) -{ -	struct igb_rx_buffer *rx_buffer; -	struct sk_buff *skb; -	struct page *page; -	void *page_addr; -	unsigned int size = le16_to_cpu(rx_desc->wb.upper.length); -#if (PAGE_SIZE < 8192) -	unsigned int truesize = IGB_RX_BUFSZ; -#else -	unsigned int truesize = SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) + -				SKB_DATA_ALIGN(NET_SKB_PAD + -					       NET_IP_ALIGN + -					       size); -#endif - -	/* If we spanned a buffer we have a huge mess so test for it */ -	BUG_ON(unlikely(!igb_test_staterr(rx_desc, E1000_RXD_STAT_EOP))); - -	/* Guarantee this function can be used by verifying buffer sizes */ -	BUILD_BUG_ON(SKB_WITH_OVERHEAD(IGB_RX_BUFSZ) < (NET_SKB_PAD + -							NET_IP_ALIGN + -							IGB_TS_HDR_LEN + -							ETH_FRAME_LEN + -							ETH_FCS_LEN)); - -	rx_buffer = &rx_ring->rx_buffer_info[rx_ring->next_to_clean]; -	page = rx_buffer->page; -	prefetchw(page); - -	page_addr = page_address(page) + rx_buffer->page_offset; - -	/* prefetch first cache line of first page */ -	prefetch(page_addr + NET_SKB_PAD + NET_IP_ALIGN); -#if L1_CACHE_BYTES < 128 -	prefetch(page_addr + L1_CACHE_BYTES + NET_SKB_PAD + NET_IP_ALIGN); -#endif - -	/* build an skb to around the page buffer */ -	skb = build_skb(page_addr, truesize); -	if (unlikely(!skb)) { -		rx_ring->rx_stats.alloc_failed++; -		return NULL; -	} - -	/* we are reusing so sync this buffer for CPU use */ -	dma_sync_single_range_for_cpu(rx_ring->dev, -				      rx_buffer->dma, -				      rx_buffer->page_offset, -				      IGB_RX_BUFSZ, -				      DMA_FROM_DEVICE); - -	/* update pointers within the skb to store the data */ -	skb_reserve(skb, NET_IP_ALIGN + NET_SKB_PAD); -	__skb_put(skb, size); - -	/* pull timestamp out of packet data */ -	if (igb_test_staterr(rx_desc, E1000_RXDADV_STAT_TSIP)) { -		igb_ptp_rx_pktstamp(rx_ring->q_vector, skb->data, skb); -		__skb_pull(skb, IGB_TS_HDR_LEN); -	} - -	if (igb_can_reuse_rx_page(rx_buffer, page, truesize)) { -		/* hand second half of page back to the ring */ -		igb_reuse_rx_page(rx_ring, rx_buffer); -	} else { -		/* we are not reusing the buffer so unmap it */ -		dma_unmap_page(rx_ring->dev, rx_buffer->dma, -			       PAGE_SIZE, DMA_FROM_DEVICE); -	} - -	/* clear contents of buffer_info */ -	rx_buffer->dma = 0; -	rx_buffer->page = NULL; - -	return skb; -} -  static struct sk_buff *igb_fetch_rx_buffer(struct igb_ring *rx_ring,  					   union e1000_adv_rx_desc *rx_desc,  					   struct sk_buff *skb) @@ -6701,10 +6601,7 @@ static bool igb_clean_rx_irq(struct igb_q_vector *q_vector, const int budget)  		rmb();  		/* retrieve a buffer from the ring */ -		if (ring_uses_build_skb(rx_ring)) -			skb = igb_build_rx_buffer(rx_ring, rx_desc); -		else -			skb = igb_fetch_rx_buffer(rx_ring, rx_desc, skb); +		skb = igb_fetch_rx_buffer(rx_ring, rx_desc, skb);  		/* exit if we failed to retrieve a buffer */  		if (!skb) @@ -6791,14 +6688,6 @@ static bool igb_alloc_mapped_page(struct igb_ring *rx_ring,  	return true;  } -static inline unsigned int igb_rx_offset(struct igb_ring *rx_ring) -{ -	if (ring_uses_build_skb(rx_ring)) -		return NET_SKB_PAD + NET_IP_ALIGN; -	else -		return 0; -} -  /**   * igb_alloc_rx_buffers - Replace used receive buffers; packet split   * @adapter: address of board private structure @@ -6825,9 +6714,7 @@ void igb_alloc_rx_buffers(struct igb_ring *rx_ring, u16 cleaned_count)  		 * Refresh the desc even if buffer_addrs didn't change  		 * because each write-back erases this info.  		 */ -		rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + -						     bi->page_offset + -						     igb_rx_offset(rx_ring)); +		rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);  		rx_desc++;  		bi++; @@ -7724,67 +7611,6 @@ static void igb_init_dmac(struct igb_adapter *adapter, u32 pba)  	}  } -static DEFINE_SPINLOCK(i2c_clients_lock); - -/*  igb_get_i2c_client - returns matching client - *  in adapters's client list. - *  @adapter: adapter struct - *  @dev_addr: device address of i2c needed. - */ -static struct i2c_client * -igb_get_i2c_client(struct igb_adapter *adapter, u8 dev_addr) -{ -	ulong flags; -	struct igb_i2c_client_list *client_list; -	struct i2c_client *client = NULL; -	struct i2c_board_info client_info = { -		I2C_BOARD_INFO("igb", 0x00), -	}; - -	spin_lock_irqsave(&i2c_clients_lock, flags); -	client_list = adapter->i2c_clients; - -	/* See if we already have an i2c_client */ -	while (client_list) { -		if (client_list->client->addr == (dev_addr >> 1)) { -			client = client_list->client; -			goto exit; -		} else { -			client_list = client_list->next; -		} -	} - -	/* no client_list found, create a new one */ -	client_list = kzalloc(sizeof(*client_list), GFP_ATOMIC); -	if (client_list == NULL) -		goto exit; - -	/* dev_addr passed to us is left-shifted by 1 bit -	 * i2c_new_device call expects it to be flush to the right. -	 */ -	client_info.addr = dev_addr >> 1; -	client_info.platform_data = adapter; -	client_list->client = i2c_new_device(&adapter->i2c_adap, &client_info); -	if (client_list->client == NULL) { -		dev_info(&adapter->pdev->dev, -			"Failed to create new i2c device..\n"); -		goto err_no_client; -	} - -	/* insert new client at head of list */ -	client_list->next = adapter->i2c_clients; -	adapter->i2c_clients = client_list; - -	client = client_list->client; -	goto exit; - -err_no_client: -	kfree(client_list); -exit: -	spin_unlock_irqrestore(&i2c_clients_lock, flags); -	return client; -} -  /*  igb_read_i2c_byte - Reads 8 bit word over I2C   *  @hw: pointer to hardware structure   *  @byte_offset: byte offset to read @@ -7798,7 +7624,7 @@ s32 igb_read_i2c_byte(struct e1000_hw *hw, u8 byte_offset,  				u8 dev_addr, u8 *data)  {  	struct igb_adapter *adapter = container_of(hw, struct igb_adapter, hw); -	struct i2c_client *this_client = igb_get_i2c_client(adapter, dev_addr); +	struct i2c_client *this_client = adapter->i2c_client;  	s32 status;  	u16 swfw_mask = 0; @@ -7835,7 +7661,7 @@ s32 igb_write_i2c_byte(struct e1000_hw *hw, u8 byte_offset,  				 u8 dev_addr, u8 data)  {  	struct igb_adapter *adapter = container_of(hw, struct igb_adapter, hw); -	struct i2c_client *this_client = igb_get_i2c_client(adapter, dev_addr); +	struct i2c_client *this_client = adapter->i2c_client;  	s32 status;  	u16 swfw_mask = E1000_SWFW_PHY0_SM;  |