- add netmap-libpcap
- add netmap (FreeBSD header files need to be updated with this) - move prototype perl scripts to prototype/ folder - create basic structure for sipcap app (no code yet)
This commit is contained in:
		
							
								
								
									
										113
									
								
								netmap/LINUX/final-patches/diff--igb--30b00--99999
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								netmap/LINUX/final-patches/diff--igb--30b00--99999
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,113 @@ | ||||
| diff --git a/igb/igb_main.c b/igb/igb_main.c | ||||
| index c1d72c0..9815796 100644 | ||||
| --- a/igb/igb_main.c | ||||
| +++ b/igb/igb_main.c | ||||
| @@ -255,6 +255,10 @@ static int debug = -1; | ||||
|  module_param(debug, int, 0); | ||||
|  MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)"); | ||||
|   | ||||
| +#if defined(CONFIG_NETMAP) || defined(CONFIG_NETMAP_MODULE) | ||||
| +#include <if_igb_netmap.h> | ||||
| +#endif | ||||
| + | ||||
|  struct igb_reg_info { | ||||
|  	u32 ofs; | ||||
|  	char *name; | ||||
| @@ -1633,6 +1637,10 @@ int igb_up(struct igb_adapter *adapter) | ||||
|   | ||||
|  	netif_tx_start_all_queues(adapter->netdev); | ||||
|   | ||||
| +#ifdef DEV_NETMAP | ||||
| +	netmap_enable_all_rings(adapter->netdev); | ||||
| +#endif /* DEV_NETMAP */ | ||||
| + | ||||
|  	/* start the watchdog. */ | ||||
|  	hw->mac.get_link_status = 1; | ||||
|  	schedule_work(&adapter->watchdog_task); | ||||
| @@ -1674,6 +1682,9 @@ void igb_down(struct igb_adapter *adapter) | ||||
|  		napi_disable(&(adapter->q_vector[i]->napi)); | ||||
|  	} | ||||
|   | ||||
| +#ifdef DEV_NETMAP | ||||
| +	netmap_disable_all_rings(netdev); | ||||
| +#endif /* DEV_NETMAP */ | ||||
|   | ||||
|  	del_timer_sync(&adapter->watchdog_timer); | ||||
|  	del_timer_sync(&adapter->phy_info_timer); | ||||
| @@ -2295,6 +2306,10 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | ||||
|  	/* carrier off reporting is important to ethtool even BEFORE open */ | ||||
|  	netif_carrier_off(netdev); | ||||
|   | ||||
| +#ifdef DEV_NETMAP | ||||
| +	igb_netmap_attach(adapter); | ||||
| +#endif /* DEV_NETMAP */ | ||||
| + | ||||
|  #ifdef CONFIG_IGB_DCA | ||||
|  	if (dca_add_requester(&pdev->dev) == 0) { | ||||
|  		adapter->flags |= IGB_FLAG_DCA_ENABLED; | ||||
| @@ -2536,6 +2551,10 @@ static void igb_remove(struct pci_dev *pdev) | ||||
|  		wr32(E1000_DCA_CTRL, E1000_DCA_CTRL_DCA_MODE_DISABLE); | ||||
|  	} | ||||
|  #endif | ||||
| +#ifdef DEV_NETMAP | ||||
| +	netmap_detach(netdev); | ||||
| +#endif /* DEV_NETMAP */ | ||||
| + | ||||
|   | ||||
|  	/* Release control of h/w to f/w.  If f/w is AMT enabled, this | ||||
|  	 * would have already happened in close and is redundant. | ||||
| @@ -2814,6 +2833,10 @@ static int __igb_open(struct net_device *netdev, bool resuming) | ||||
|   | ||||
|  	netif_tx_start_all_queues(netdev); | ||||
|   | ||||
| +#ifdef DEV_NETMAP | ||||
| +	netmap_enable_all_rings(netdev); | ||||
| +#endif /* DEV_NETMAP */ | ||||
| + | ||||
|  	if (!resuming) | ||||
|  		pm_runtime_put(&pdev->dev); | ||||
|   | ||||
| @@ -3007,6 +3030,9 @@ void igb_configure_tx_ring(struct igb_adapter *adapter, | ||||
|   | ||||
|  	txdctl |= E1000_TXDCTL_QUEUE_ENABLE; | ||||
|  	wr32(E1000_TXDCTL(reg_idx), txdctl); | ||||
| +#ifdef DEV_NETMAP | ||||
| +	igb_netmap_configure_tx_ring(adapter, reg_idx); | ||||
| +#endif /* DEV_NETMAP */ | ||||
|  } | ||||
|   | ||||
|  /** | ||||
| @@ -5991,6 +6017,10 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector) | ||||
|   | ||||
|  	if (test_bit(__IGB_DOWN, &adapter->state)) | ||||
|  		return true; | ||||
| +#ifdef DEV_NETMAP | ||||
| +        if (netmap_tx_irq(tx_ring->netdev, tx_ring->queue_index)) | ||||
| +                return 1; /* cleaned ok */ | ||||
| +#endif /* DEV_NETMAP */ | ||||
|   | ||||
|  	tx_buffer = &tx_ring->tx_buffer_info[i]; | ||||
|  	tx_desc = IGB_TX_DESC(tx_ring, i); | ||||
| @@ -6650,6 +6680,10 @@ static bool igb_clean_rx_irq(struct igb_q_vector *q_vector, const int budget) | ||||
|  	unsigned int total_bytes = 0, total_packets = 0; | ||||
|  	u16 cleaned_count = igb_desc_unused(rx_ring); | ||||
|   | ||||
| +#ifdef DEV_NETMAP | ||||
| +	if (netmap_rx_irq(rx_ring->netdev, rx_ring->queue_index, &total_packets)) | ||||
| +		return true; | ||||
| +#endif /* DEV_NETMAP */ | ||||
|  	do { | ||||
|  		union e1000_adv_rx_desc *rx_desc; | ||||
|   | ||||
| @@ -6767,6 +6801,11 @@ void igb_alloc_rx_buffers(struct igb_ring *rx_ring, u16 cleaned_count) | ||||
|  	struct igb_rx_buffer *bi; | ||||
|  	u16 i = rx_ring->next_to_use; | ||||
|   | ||||
| +#ifdef DEV_NETMAP | ||||
| +	if (igb_netmap_configure_rx_ring(rx_ring)) | ||||
| +		return; | ||||
| +#endif /* DEV_NETMAP */ | ||||
| + | ||||
|  	/* nothing to do */ | ||||
|  	if (!cleaned_count) | ||||
|  		return; | ||||
		Reference in New Issue
	
	Block a user