diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-09-11 10:46:53 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-09-11 10:46:53 -0400 |
commit | e4cb04074c5f5593f98ba2a89a011034f57604e4 (patch) | |
tree | bea628194dd7d7481338b954b592ca56477e4429 /drivers | |
parent | cabe456902e709095ebf1481342ea89910887d60 (diff) | |
parent | 0a9c73014415d2a84dac346c1e12169142a6ad37 (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
[INET_DIAG]: Fix oops in netlink_rcv_skb
[IPv6]: Fix NULL pointer dereference in ip6_flush_pending_frames
[NETFILTER]: Fix/improve deadlock condition on module removal netfilter
[NETFILTER]: nf_conntrack_ipv4: fix "Frag of proto ..." messages
[NET] DOC: Update networking/multiqueue.txt with correct information.
[IPV6]: Freeing alive inet6 address
[DECNET]: Fix interface address listing regression.
[IPV4] devinet: show all addresses assigned to interface
[NET]: Do not dereference iov if length is zero
[TG3]: Workaround MSI bug on 5714/5780.
[Bluetooth] Fix parameter list for event filter command
[Bluetooth] Update security filter for Bluetooth 2.1
[Bluetooth] Add compat handling for timestamp structure
[Bluetooth] Add missing stat.byte_rx counter modification
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/bluetooth/hci_usb.c | 5 | ||||
-rw-r--r-- | drivers/net/tg3.c | 13 |
2 files changed, 15 insertions, 3 deletions
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c index 59b054810ed0..98a9cdeaffb6 100644 --- a/drivers/bluetooth/hci_usb.c +++ b/drivers/bluetooth/hci_usb.c | |||
@@ -691,15 +691,18 @@ static void hci_usb_rx_complete(struct urb *urb) | |||
691 | urb->iso_frame_desc[i].offset, | 691 | urb->iso_frame_desc[i].offset, |
692 | urb->iso_frame_desc[i].actual_length); | 692 | urb->iso_frame_desc[i].actual_length); |
693 | 693 | ||
694 | if (!urb->iso_frame_desc[i].status) | 694 | if (!urb->iso_frame_desc[i].status) { |
695 | husb->hdev->stat.byte_rx += urb->iso_frame_desc[i].actual_length; | ||
695 | hci_recv_fragment(husb->hdev, _urb->type, | 696 | hci_recv_fragment(husb->hdev, _urb->type, |
696 | urb->transfer_buffer + urb->iso_frame_desc[i].offset, | 697 | urb->transfer_buffer + urb->iso_frame_desc[i].offset, |
697 | urb->iso_frame_desc[i].actual_length); | 698 | urb->iso_frame_desc[i].actual_length); |
699 | } | ||
698 | } | 700 | } |
699 | #else | 701 | #else |
700 | ; | 702 | ; |
701 | #endif | 703 | #endif |
702 | } else { | 704 | } else { |
705 | husb->hdev->stat.byte_rx += count; | ||
703 | err = hci_recv_fragment(husb->hdev, _urb->type, urb->transfer_buffer, count); | 706 | err = hci_recv_fragment(husb->hdev, _urb->type, urb->transfer_buffer, count); |
704 | if (err < 0) { | 707 | if (err < 0) { |
705 | BT_ERR("%s corrupted packet: type %d count %d", | 708 | BT_ERR("%s corrupted packet: type %d count %d", |
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 58740428dd07..9034a05734ef 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -64,8 +64,8 @@ | |||
64 | 64 | ||
65 | #define DRV_MODULE_NAME "tg3" | 65 | #define DRV_MODULE_NAME "tg3" |
66 | #define PFX DRV_MODULE_NAME ": " | 66 | #define PFX DRV_MODULE_NAME ": " |
67 | #define DRV_MODULE_VERSION "3.80" | 67 | #define DRV_MODULE_VERSION "3.81" |
68 | #define DRV_MODULE_RELDATE "August 2, 2007" | 68 | #define DRV_MODULE_RELDATE "September 5, 2007" |
69 | 69 | ||
70 | #define TG3_DEF_MAC_MODE 0 | 70 | #define TG3_DEF_MAC_MODE 0 |
71 | #define TG3_DEF_RX_MODE 0 | 71 | #define TG3_DEF_RX_MODE 0 |
@@ -7127,6 +7127,10 @@ static int tg3_open(struct net_device *dev) | |||
7127 | } else if (pci_enable_msi(tp->pdev) == 0) { | 7127 | } else if (pci_enable_msi(tp->pdev) == 0) { |
7128 | u32 msi_mode; | 7128 | u32 msi_mode; |
7129 | 7129 | ||
7130 | /* Hardware bug - MSI won't work if INTX disabled. */ | ||
7131 | if (tp->tg3_flags2 & TG3_FLG2_5780_CLASS) | ||
7132 | pci_intx(tp->pdev, 1); | ||
7133 | |||
7130 | msi_mode = tr32(MSGINT_MODE); | 7134 | msi_mode = tr32(MSGINT_MODE); |
7131 | tw32(MSGINT_MODE, msi_mode | MSGINT_MODE_ENABLE); | 7135 | tw32(MSGINT_MODE, msi_mode | MSGINT_MODE_ENABLE); |
7132 | tp->tg3_flags2 |= TG3_FLG2_USING_MSI; | 7136 | tp->tg3_flags2 |= TG3_FLG2_USING_MSI; |
@@ -12172,6 +12176,11 @@ static int tg3_resume(struct pci_dev *pdev) | |||
12172 | if (err) | 12176 | if (err) |
12173 | return err; | 12177 | return err; |
12174 | 12178 | ||
12179 | /* Hardware bug - MSI won't work if INTX disabled. */ | ||
12180 | if ((tp->tg3_flags2 & TG3_FLG2_5780_CLASS) && | ||
12181 | (tp->tg3_flags2 & TG3_FLG2_USING_MSI)) | ||
12182 | pci_intx(tp->pdev, 1); | ||
12183 | |||
12175 | netif_device_attach(dev); | 12184 | netif_device_attach(dev); |
12176 | 12185 | ||
12177 | tg3_full_lock(tp, 0); | 12186 | tg3_full_lock(tp, 0); |