diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/net/ibmveth.c | 4 | ||||
| -rw-r--r-- | drivers/net/pcmcia/axnet_cs.c | 7 | ||||
| -rw-r--r-- | drivers/net/r8169.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/hif_usb.c | 8 | ||||
| -rw-r--r-- | drivers/net/wireless/hostap/hostap_pci.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-sta.h | 11 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00dev.c | 10 | ||||
| -rw-r--r-- | drivers/vhost/net.c | 13 |
8 files changed, 40 insertions, 16 deletions
diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c index 7acb3edc47ef..2602852cc55a 100644 --- a/drivers/net/ibmveth.c +++ b/drivers/net/ibmveth.c | |||
| @@ -677,7 +677,7 @@ static int ibmveth_close(struct net_device *netdev) | |||
| 677 | if (!adapter->pool_config) | 677 | if (!adapter->pool_config) |
| 678 | netif_stop_queue(netdev); | 678 | netif_stop_queue(netdev); |
| 679 | 679 | ||
| 680 | free_irq(netdev->irq, netdev); | 680 | h_vio_signal(adapter->vdev->unit_address, VIO_IRQ_DISABLE); |
| 681 | 681 | ||
| 682 | do { | 682 | do { |
| 683 | lpar_rc = h_free_logical_lan(adapter->vdev->unit_address); | 683 | lpar_rc = h_free_logical_lan(adapter->vdev->unit_address); |
| @@ -689,6 +689,8 @@ static int ibmveth_close(struct net_device *netdev) | |||
| 689 | lpar_rc); | 689 | lpar_rc); |
| 690 | } | 690 | } |
| 691 | 691 | ||
| 692 | free_irq(netdev->irq, netdev); | ||
| 693 | |||
| 692 | adapter->rx_no_buffer = *(u64*)(((char*)adapter->buffer_list_addr) + 4096 - 8); | 694 | adapter->rx_no_buffer = *(u64*)(((char*)adapter->buffer_list_addr) + 4096 - 8); |
| 693 | 695 | ||
| 694 | ibmveth_cleanup(adapter); | 696 | ibmveth_cleanup(adapter); |
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c index 5b3dfb4ab279..33525bf2a3d3 100644 --- a/drivers/net/pcmcia/axnet_cs.c +++ b/drivers/net/pcmcia/axnet_cs.c | |||
| @@ -1168,6 +1168,7 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id) | |||
| 1168 | int interrupts, nr_serviced = 0, i; | 1168 | int interrupts, nr_serviced = 0, i; |
| 1169 | struct ei_device *ei_local; | 1169 | struct ei_device *ei_local; |
| 1170 | int handled = 0; | 1170 | int handled = 0; |
| 1171 | unsigned long flags; | ||
| 1171 | 1172 | ||
| 1172 | e8390_base = dev->base_addr; | 1173 | e8390_base = dev->base_addr; |
| 1173 | ei_local = netdev_priv(dev); | 1174 | ei_local = netdev_priv(dev); |
| @@ -1176,7 +1177,7 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id) | |||
| 1176 | * Protect the irq test too. | 1177 | * Protect the irq test too. |
| 1177 | */ | 1178 | */ |
| 1178 | 1179 | ||
| 1179 | spin_lock(&ei_local->page_lock); | 1180 | spin_lock_irqsave(&ei_local->page_lock, flags); |
| 1180 | 1181 | ||
| 1181 | if (ei_local->irqlock) | 1182 | if (ei_local->irqlock) |
| 1182 | { | 1183 | { |
| @@ -1188,7 +1189,7 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id) | |||
| 1188 | dev->name, inb_p(e8390_base + EN0_ISR), | 1189 | dev->name, inb_p(e8390_base + EN0_ISR), |
| 1189 | inb_p(e8390_base + EN0_IMR)); | 1190 | inb_p(e8390_base + EN0_IMR)); |
| 1190 | #endif | 1191 | #endif |
| 1191 | spin_unlock(&ei_local->page_lock); | 1192 | spin_unlock_irqrestore(&ei_local->page_lock, flags); |
| 1192 | return IRQ_NONE; | 1193 | return IRQ_NONE; |
| 1193 | } | 1194 | } |
| 1194 | 1195 | ||
| @@ -1261,7 +1262,7 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id) | |||
| 1261 | ei_local->irqlock = 0; | 1262 | ei_local->irqlock = 0; |
| 1262 | outb_p(ENISR_ALL, e8390_base + EN0_IMR); | 1263 | outb_p(ENISR_ALL, e8390_base + EN0_IMR); |
| 1263 | 1264 | ||
| 1264 | spin_unlock(&ei_local->page_lock); | 1265 | spin_unlock_irqrestore(&ei_local->page_lock, flags); |
| 1265 | return IRQ_RETVAL(handled); | 1266 | return IRQ_RETVAL(handled); |
| 1266 | } | 1267 | } |
| 1267 | 1268 | ||
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index 96b6cfbf0a3a..cdc6a5c2e70d 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
| @@ -1316,7 +1316,7 @@ static void rtl8169_get_mac_version(struct rtl8169_private *tp, | |||
| 1316 | { 0x7c800000, 0x28000000, RTL_GIGA_MAC_VER_26 }, | 1316 | { 0x7c800000, 0x28000000, RTL_GIGA_MAC_VER_26 }, |
| 1317 | 1317 | ||
| 1318 | /* 8168C family. */ | 1318 | /* 8168C family. */ |
| 1319 | { 0x7cf00000, 0x3ca00000, RTL_GIGA_MAC_VER_24 }, | 1319 | { 0x7cf00000, 0x3cb00000, RTL_GIGA_MAC_VER_24 }, |
| 1320 | { 0x7cf00000, 0x3c900000, RTL_GIGA_MAC_VER_23 }, | 1320 | { 0x7cf00000, 0x3c900000, RTL_GIGA_MAC_VER_23 }, |
| 1321 | { 0x7cf00000, 0x3c800000, RTL_GIGA_MAC_VER_18 }, | 1321 | { 0x7cf00000, 0x3c800000, RTL_GIGA_MAC_VER_18 }, |
| 1322 | { 0x7c800000, 0x3c800000, RTL_GIGA_MAC_VER_24 }, | 1322 | { 0x7c800000, 0x3c800000, RTL_GIGA_MAC_VER_24 }, |
diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c index 77b359162d6c..23c15aa9fbd5 100644 --- a/drivers/net/wireless/ath/ath9k/hif_usb.c +++ b/drivers/net/wireless/ath/ath9k/hif_usb.c | |||
| @@ -730,13 +730,17 @@ static int ath9k_hif_usb_alloc_urbs(struct hif_device_usb *hif_dev) | |||
| 730 | 730 | ||
| 731 | /* RX */ | 731 | /* RX */ |
| 732 | if (ath9k_hif_usb_alloc_rx_urbs(hif_dev) < 0) | 732 | if (ath9k_hif_usb_alloc_rx_urbs(hif_dev) < 0) |
| 733 | goto err; | 733 | goto err_rx; |
| 734 | 734 | ||
| 735 | /* Register Read */ | 735 | /* Register Read */ |
| 736 | if (ath9k_hif_usb_alloc_reg_in_urb(hif_dev) < 0) | 736 | if (ath9k_hif_usb_alloc_reg_in_urb(hif_dev) < 0) |
| 737 | goto err; | 737 | goto err_reg; |
| 738 | 738 | ||
| 739 | return 0; | 739 | return 0; |
| 740 | err_reg: | ||
| 741 | ath9k_hif_usb_dealloc_rx_urbs(hif_dev); | ||
| 742 | err_rx: | ||
| 743 | ath9k_hif_usb_dealloc_tx_urbs(hif_dev); | ||
| 740 | err: | 744 | err: |
| 741 | return -ENOMEM; | 745 | return -ENOMEM; |
| 742 | } | 746 | } |
diff --git a/drivers/net/wireless/hostap/hostap_pci.c b/drivers/net/wireless/hostap/hostap_pci.c index d24dc7dc0723..972a9c3af39e 100644 --- a/drivers/net/wireless/hostap/hostap_pci.c +++ b/drivers/net/wireless/hostap/hostap_pci.c | |||
| @@ -330,6 +330,7 @@ static int prism2_pci_probe(struct pci_dev *pdev, | |||
| 330 | 330 | ||
| 331 | dev->irq = pdev->irq; | 331 | dev->irq = pdev->irq; |
| 332 | hw_priv->mem_start = mem; | 332 | hw_priv->mem_start = mem; |
| 333 | dev->base_addr = (unsigned long) mem; | ||
| 333 | 334 | ||
| 334 | prism2_pci_cor_sreset(local); | 335 | prism2_pci_cor_sreset(local); |
| 335 | 336 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.h b/drivers/net/wireless/iwlwifi/iwl-sta.h index c2a453a1a991..dc43ebd1f1fd 100644 --- a/drivers/net/wireless/iwlwifi/iwl-sta.h +++ b/drivers/net/wireless/iwlwifi/iwl-sta.h | |||
| @@ -97,6 +97,17 @@ static inline void iwl_clear_driver_stations(struct iwl_priv *priv) | |||
| 97 | spin_lock_irqsave(&priv->sta_lock, flags); | 97 | spin_lock_irqsave(&priv->sta_lock, flags); |
| 98 | memset(priv->stations, 0, sizeof(priv->stations)); | 98 | memset(priv->stations, 0, sizeof(priv->stations)); |
| 99 | priv->num_stations = 0; | 99 | priv->num_stations = 0; |
| 100 | |||
| 101 | /* | ||
| 102 | * Remove all key information that is not stored as part of station | ||
| 103 | * information since mac80211 may not have had a | ||
| 104 | * chance to remove all the keys. When device is reconfigured by | ||
| 105 | * mac80211 after an error all keys will be reconfigured. | ||
| 106 | */ | ||
| 107 | priv->ucode_key_table = 0; | ||
| 108 | priv->key_mapping_key = 0; | ||
| 109 | memset(priv->wep_keys, 0, sizeof(priv->wep_keys)); | ||
| 110 | |||
| 100 | spin_unlock_irqrestore(&priv->sta_lock, flags); | 111 | spin_unlock_irqrestore(&priv->sta_lock, flags); |
| 101 | } | 112 | } |
| 102 | 113 | ||
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index 3ae468c4d760..f20d3eeeea7f 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
| @@ -854,6 +854,11 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev) | |||
| 854 | BIT(NL80211_IFTYPE_WDS); | 854 | BIT(NL80211_IFTYPE_WDS); |
| 855 | 855 | ||
| 856 | /* | 856 | /* |
| 857 | * Initialize configuration work. | ||
| 858 | */ | ||
| 859 | INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled); | ||
| 860 | |||
| 861 | /* | ||
| 857 | * Let the driver probe the device to detect the capabilities. | 862 | * Let the driver probe the device to detect the capabilities. |
| 858 | */ | 863 | */ |
| 859 | retval = rt2x00dev->ops->lib->probe_hw(rt2x00dev); | 864 | retval = rt2x00dev->ops->lib->probe_hw(rt2x00dev); |
| @@ -863,11 +868,6 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev) | |||
| 863 | } | 868 | } |
| 864 | 869 | ||
| 865 | /* | 870 | /* |
| 866 | * Initialize configuration work. | ||
| 867 | */ | ||
| 868 | INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled); | ||
| 869 | |||
| 870 | /* | ||
| 871 | * Allocate queue array. | 871 | * Allocate queue array. |
| 872 | */ | 872 | */ |
| 873 | retval = rt2x00queue_allocate(rt2x00dev); | 873 | retval = rt2x00queue_allocate(rt2x00dev); |
diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c index 57a593c58cf4..d219070fed3d 100644 --- a/drivers/vhost/net.c +++ b/drivers/vhost/net.c | |||
| @@ -177,8 +177,8 @@ static void handle_tx(struct vhost_net *net) | |||
| 177 | break; | 177 | break; |
| 178 | } | 178 | } |
| 179 | if (err != len) | 179 | if (err != len) |
| 180 | pr_err("Truncated TX packet: " | 180 | pr_debug("Truncated TX packet: " |
| 181 | " len %d != %zd\n", err, len); | 181 | " len %d != %zd\n", err, len); |
| 182 | vhost_add_used_and_signal(&net->dev, vq, head, 0); | 182 | vhost_add_used_and_signal(&net->dev, vq, head, 0); |
| 183 | total_len += len; | 183 | total_len += len; |
| 184 | if (unlikely(total_len >= VHOST_NET_WEIGHT)) { | 184 | if (unlikely(total_len >= VHOST_NET_WEIGHT)) { |
| @@ -275,8 +275,8 @@ static void handle_rx(struct vhost_net *net) | |||
| 275 | } | 275 | } |
| 276 | /* TODO: Should check and handle checksum. */ | 276 | /* TODO: Should check and handle checksum. */ |
| 277 | if (err > len) { | 277 | if (err > len) { |
| 278 | pr_err("Discarded truncated rx packet: " | 278 | pr_debug("Discarded truncated rx packet: " |
| 279 | " len %d > %zd\n", err, len); | 279 | " len %d > %zd\n", err, len); |
| 280 | vhost_discard_vq_desc(vq); | 280 | vhost_discard_vq_desc(vq); |
| 281 | continue; | 281 | continue; |
| 282 | } | 282 | } |
| @@ -534,11 +534,16 @@ static long vhost_net_set_backend(struct vhost_net *n, unsigned index, int fd) | |||
| 534 | rcu_assign_pointer(vq->private_data, sock); | 534 | rcu_assign_pointer(vq->private_data, sock); |
| 535 | vhost_net_enable_vq(n, vq); | 535 | vhost_net_enable_vq(n, vq); |
| 536 | done: | 536 | done: |
| 537 | mutex_unlock(&vq->mutex); | ||
| 538 | |||
| 537 | if (oldsock) { | 539 | if (oldsock) { |
| 538 | vhost_net_flush_vq(n, index); | 540 | vhost_net_flush_vq(n, index); |
| 539 | fput(oldsock->file); | 541 | fput(oldsock->file); |
| 540 | } | 542 | } |
| 541 | 543 | ||
| 544 | mutex_unlock(&n->dev.mutex); | ||
| 545 | return 0; | ||
| 546 | |||
| 542 | err_vq: | 547 | err_vq: |
| 543 | mutex_unlock(&vq->mutex); | 548 | mutex_unlock(&vq->mutex); |
| 544 | err: | 549 | err: |
