diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2016-01-12 05:01:12 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2016-01-12 05:01:12 -0500 |
commit | 1f16f116b01c110db20ab808562c8b8bc3ee3d6e (patch) | |
tree | 44db563f64cf5f8d62af8f99a61e2b248c44ea3a /drivers/net/ethernet/intel | |
parent | 03724ac3d48f8f0e3caf1d30fa134f8fd96c94e2 (diff) | |
parent | f9eccf24615672896dc13251410c3f2f33a14f95 (diff) |
Merge branches 'clockevents/4.4-fixes' and 'clockevents/4.5-fixes' of http://git.linaro.org/people/daniel.lezcano/linux into timers/urgent
Pull in fixes from Daniel Lezcano:
- Fix the vt8500 timer leading to a system lock up when dealing with too
small delta (Roman Volkov)
- Select the CLKSRC_MMIO when the fsl_ftm_timer is enabled with COMPILE_TEST
(Daniel Lezcano)
- Prevent to compile timers using the 'iomem' API when the architecture has
not HAS_IOMEM set (Richard Weinberger)
Diffstat (limited to 'drivers/net/ethernet/intel')
-rw-r--r-- | drivers/net/ethernet/intel/fm10k/fm10k_netdev.c | 4 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_adminq.c | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_main.c | 11 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/i40evf/i40e_adminq.c | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/i40evf/i40evf_main.c | 10 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 3 |
6 files changed, 26 insertions, 14 deletions
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c index 639263d5e833..7781e80896a6 100644 --- a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c +++ b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c | |||
@@ -627,8 +627,10 @@ static netdev_tx_t fm10k_xmit_frame(struct sk_buff *skb, struct net_device *dev) | |||
627 | 627 | ||
628 | /* verify the skb head is not shared */ | 628 | /* verify the skb head is not shared */ |
629 | err = skb_cow_head(skb, 0); | 629 | err = skb_cow_head(skb, 0); |
630 | if (err) | 630 | if (err) { |
631 | dev_kfree_skb(skb); | ||
631 | return NETDEV_TX_OK; | 632 | return NETDEV_TX_OK; |
633 | } | ||
632 | 634 | ||
633 | /* locate vlan header */ | 635 | /* locate vlan header */ |
634 | vhdr = (struct vlan_hdr *)(skb->data + ETH_HLEN); | 636 | vhdr = (struct vlan_hdr *)(skb->data + ETH_HLEN); |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq.c b/drivers/net/ethernet/intel/i40e/i40e_adminq.c index 0ff8f01e57ee..1fd5ea82a9bc 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_adminq.c +++ b/drivers/net/ethernet/intel/i40e/i40e_adminq.c | |||
@@ -567,10 +567,6 @@ i40e_status i40e_init_adminq(struct i40e_hw *hw) | |||
567 | goto init_adminq_exit; | 567 | goto init_adminq_exit; |
568 | } | 568 | } |
569 | 569 | ||
570 | /* initialize locks */ | ||
571 | mutex_init(&hw->aq.asq_mutex); | ||
572 | mutex_init(&hw->aq.arq_mutex); | ||
573 | |||
574 | /* Set up register offsets */ | 570 | /* Set up register offsets */ |
575 | i40e_adminq_init_regs(hw); | 571 | i40e_adminq_init_regs(hw); |
576 | 572 | ||
@@ -664,8 +660,6 @@ i40e_status i40e_shutdown_adminq(struct i40e_hw *hw) | |||
664 | i40e_shutdown_asq(hw); | 660 | i40e_shutdown_asq(hw); |
665 | i40e_shutdown_arq(hw); | 661 | i40e_shutdown_arq(hw); |
666 | 662 | ||
667 | /* destroy the locks */ | ||
668 | |||
669 | if (hw->nvm_buff.va) | 663 | if (hw->nvm_buff.va) |
670 | i40e_free_virt_mem(hw, &hw->nvm_buff); | 664 | i40e_free_virt_mem(hw, &hw->nvm_buff); |
671 | 665 | ||
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index b825f978d441..4a9873ec28c7 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c | |||
@@ -10295,6 +10295,12 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
10295 | /* set up a default setting for link flow control */ | 10295 | /* set up a default setting for link flow control */ |
10296 | pf->hw.fc.requested_mode = I40E_FC_NONE; | 10296 | pf->hw.fc.requested_mode = I40E_FC_NONE; |
10297 | 10297 | ||
10298 | /* set up the locks for the AQ, do this only once in probe | ||
10299 | * and destroy them only once in remove | ||
10300 | */ | ||
10301 | mutex_init(&hw->aq.asq_mutex); | ||
10302 | mutex_init(&hw->aq.arq_mutex); | ||
10303 | |||
10298 | err = i40e_init_adminq(hw); | 10304 | err = i40e_init_adminq(hw); |
10299 | 10305 | ||
10300 | /* provide nvm, fw, api versions */ | 10306 | /* provide nvm, fw, api versions */ |
@@ -10697,7 +10703,6 @@ static void i40e_remove(struct pci_dev *pdev) | |||
10697 | set_bit(__I40E_DOWN, &pf->state); | 10703 | set_bit(__I40E_DOWN, &pf->state); |
10698 | del_timer_sync(&pf->service_timer); | 10704 | del_timer_sync(&pf->service_timer); |
10699 | cancel_work_sync(&pf->service_task); | 10705 | cancel_work_sync(&pf->service_task); |
10700 | i40e_fdir_teardown(pf); | ||
10701 | 10706 | ||
10702 | if (pf->flags & I40E_FLAG_SRIOV_ENABLED) { | 10707 | if (pf->flags & I40E_FLAG_SRIOV_ENABLED) { |
10703 | i40e_free_vfs(pf); | 10708 | i40e_free_vfs(pf); |
@@ -10740,6 +10745,10 @@ static void i40e_remove(struct pci_dev *pdev) | |||
10740 | "Failed to destroy the Admin Queue resources: %d\n", | 10745 | "Failed to destroy the Admin Queue resources: %d\n", |
10741 | ret_code); | 10746 | ret_code); |
10742 | 10747 | ||
10748 | /* destroy the locks only once, here */ | ||
10749 | mutex_destroy(&hw->aq.arq_mutex); | ||
10750 | mutex_destroy(&hw->aq.asq_mutex); | ||
10751 | |||
10743 | /* Clear all dynamic memory lists of rings, q_vectors, and VSIs */ | 10752 | /* Clear all dynamic memory lists of rings, q_vectors, and VSIs */ |
10744 | i40e_clear_interrupt_scheme(pf); | 10753 | i40e_clear_interrupt_scheme(pf); |
10745 | for (i = 0; i < pf->num_alloc_vsi; i++) { | 10754 | for (i = 0; i < pf->num_alloc_vsi; i++) { |
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_adminq.c b/drivers/net/ethernet/intel/i40evf/i40e_adminq.c index fd123ca60761..3f65e39b3fe4 100644 --- a/drivers/net/ethernet/intel/i40evf/i40e_adminq.c +++ b/drivers/net/ethernet/intel/i40evf/i40e_adminq.c | |||
@@ -551,10 +551,6 @@ i40e_status i40evf_init_adminq(struct i40e_hw *hw) | |||
551 | goto init_adminq_exit; | 551 | goto init_adminq_exit; |
552 | } | 552 | } |
553 | 553 | ||
554 | /* initialize locks */ | ||
555 | mutex_init(&hw->aq.asq_mutex); | ||
556 | mutex_init(&hw->aq.arq_mutex); | ||
557 | |||
558 | /* Set up register offsets */ | 554 | /* Set up register offsets */ |
559 | i40e_adminq_init_regs(hw); | 555 | i40e_adminq_init_regs(hw); |
560 | 556 | ||
@@ -596,8 +592,6 @@ i40e_status i40evf_shutdown_adminq(struct i40e_hw *hw) | |||
596 | i40e_shutdown_asq(hw); | 592 | i40e_shutdown_asq(hw); |
597 | i40e_shutdown_arq(hw); | 593 | i40e_shutdown_arq(hw); |
598 | 594 | ||
599 | /* destroy the locks */ | ||
600 | |||
601 | if (hw->nvm_buff.va) | 595 | if (hw->nvm_buff.va) |
602 | i40e_free_virt_mem(hw, &hw->nvm_buff); | 596 | i40e_free_virt_mem(hw, &hw->nvm_buff); |
603 | 597 | ||
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c index d962164dfb0f..99d2cffae0cd 100644 --- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c +++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c | |||
@@ -2476,6 +2476,12 @@ static int i40evf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
2476 | hw->bus.device = PCI_SLOT(pdev->devfn); | 2476 | hw->bus.device = PCI_SLOT(pdev->devfn); |
2477 | hw->bus.func = PCI_FUNC(pdev->devfn); | 2477 | hw->bus.func = PCI_FUNC(pdev->devfn); |
2478 | 2478 | ||
2479 | /* set up the locks for the AQ, do this only once in probe | ||
2480 | * and destroy them only once in remove | ||
2481 | */ | ||
2482 | mutex_init(&hw->aq.asq_mutex); | ||
2483 | mutex_init(&hw->aq.arq_mutex); | ||
2484 | |||
2479 | INIT_LIST_HEAD(&adapter->mac_filter_list); | 2485 | INIT_LIST_HEAD(&adapter->mac_filter_list); |
2480 | INIT_LIST_HEAD(&adapter->vlan_filter_list); | 2486 | INIT_LIST_HEAD(&adapter->vlan_filter_list); |
2481 | 2487 | ||
@@ -2629,6 +2635,10 @@ static void i40evf_remove(struct pci_dev *pdev) | |||
2629 | if (hw->aq.asq.count) | 2635 | if (hw->aq.asq.count) |
2630 | i40evf_shutdown_adminq(hw); | 2636 | i40evf_shutdown_adminq(hw); |
2631 | 2637 | ||
2638 | /* destroy the locks only once, here */ | ||
2639 | mutex_destroy(&hw->aq.arq_mutex); | ||
2640 | mutex_destroy(&hw->aq.asq_mutex); | ||
2641 | |||
2632 | iounmap(hw->hw_addr); | 2642 | iounmap(hw->hw_addr); |
2633 | pci_release_regions(pdev); | 2643 | pci_release_regions(pdev); |
2634 | 2644 | ||
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index 47395ff5d908..aed8d029b23d 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
@@ -7920,6 +7920,9 @@ int ixgbe_setup_tc(struct net_device *dev, u8 tc) | |||
7920 | */ | 7920 | */ |
7921 | if (netif_running(dev)) | 7921 | if (netif_running(dev)) |
7922 | ixgbe_close(dev); | 7922 | ixgbe_close(dev); |
7923 | else | ||
7924 | ixgbe_reset(adapter); | ||
7925 | |||
7923 | ixgbe_clear_interrupt_scheme(adapter); | 7926 | ixgbe_clear_interrupt_scheme(adapter); |
7924 | 7927 | ||
7925 | #ifdef CONFIG_IXGBE_DCB | 7928 | #ifdef CONFIG_IXGBE_DCB |