diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igc/igc_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/igc/igc_main.c | 16 | 
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index 5024f8dc98f9..90d8e4355f43 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -419,7 +419,7 @@ void igc_free_rx_resources(struct igc_ring *rx_ring)  {  	igc_clean_rx_ring(rx_ring); -	igc_xdp_unregister_rxq_info(rx_ring); +	xdp_rxq_info_unreg(&rx_ring->xdp_rxq);  	vfree(rx_ring->rx_buffer_info);  	rx_ring->rx_buffer_info = NULL; @@ -458,11 +458,16 @@ int igc_setup_rx_resources(struct igc_ring *rx_ring)  {  	struct net_device *ndev = rx_ring->netdev;  	struct device *dev = rx_ring->dev; +	u8 index = rx_ring->queue_index;  	int size, desc_len, res; -	res = igc_xdp_register_rxq_info(rx_ring); -	if (res < 0) +	res = xdp_rxq_info_reg(&rx_ring->xdp_rxq, ndev, index, +			       rx_ring->q_vector->napi.napi_id); +	if (res < 0) { +		netdev_err(ndev, "Failed to register xdp_rxq index %u\n", +			   index);  		return res; +	}  	size = sizeof(struct igc_rx_buffer) * rx_ring->count;  	rx_ring->rx_buffer_info = vzalloc(size); @@ -488,7 +493,7 @@ int igc_setup_rx_resources(struct igc_ring *rx_ring)  	return 0;  err: -	igc_xdp_unregister_rxq_info(rx_ring); +	xdp_rxq_info_unreg(&rx_ring->xdp_rxq);  	vfree(rx_ring->rx_buffer_info);  	rx_ring->rx_buffer_info = NULL;  	netdev_err(ndev, "Unable to allocate memory for Rx descriptor ring\n"); @@ -536,6 +541,9 @@ static void igc_configure_rx_ring(struct igc_adapter *adapter,  	u32 srrctl = 0, rxdctl = 0;  	u64 rdba = ring->dma; +	WARN_ON(xdp_rxq_info_reg_mem_model(&ring->xdp_rxq, +					   MEM_TYPE_PAGE_SHARED, NULL)); +  	if (igc_xdp_is_enabled(adapter))  		set_ring_uses_large_buffer(ring);  | 
