mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: rose: Socket lock was not released before returning to user space hci_usb: remove code obfuscation drivers/net/appletalk: use time_before, time_before_eq, etc drivers/atm: use time_before, time_before_eq, etc hci_usb: do not initialize static variables to 0 tg3: 5701 DMA corruption fix atm nicstar: Removal of debug code containing deprecated calls to cli()/sti() iwlwifi: Fix unconditional access to station->tidp[].agg. netfilter: Fix SIP conntrack build with NAT disabled. netfilter: Fix SCTP nat build.
This commit is contained in:
commit
529a41e366
12 changed files with 105 additions and 144 deletions
|
|
@ -69,6 +69,7 @@ static const char *version =
|
|||
#include <linux/atalk.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/jiffies.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
#include <asm/io.h>
|
||||
|
|
@ -503,7 +504,7 @@ static void cops_reset(struct net_device *dev, int sleep)
|
|||
long snap=jiffies;
|
||||
|
||||
/* Let card finish initializing, about 1/3 second */
|
||||
while(jiffies-snap<HZ/3)
|
||||
while (time_before(jiffies, snap + HZ/3))
|
||||
schedule();
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -64,8 +64,8 @@
|
|||
|
||||
#define DRV_MODULE_NAME "tg3"
|
||||
#define PFX DRV_MODULE_NAME ": "
|
||||
#define DRV_MODULE_VERSION "3.90"
|
||||
#define DRV_MODULE_RELDATE "April 12, 2008"
|
||||
#define DRV_MODULE_VERSION "3.91"
|
||||
#define DRV_MODULE_RELDATE "April 18, 2008"
|
||||
|
||||
#define TG3_DEF_MAC_MODE 0
|
||||
#define TG3_DEF_RX_MODE 0
|
||||
|
|
@ -4135,11 +4135,21 @@ static int tigon3_dma_hwbug_workaround(struct tg3 *tp, struct sk_buff *skb,
|
|||
u32 last_plus_one, u32 *start,
|
||||
u32 base_flags, u32 mss)
|
||||
{
|
||||
struct sk_buff *new_skb = skb_copy(skb, GFP_ATOMIC);
|
||||
struct sk_buff *new_skb;
|
||||
dma_addr_t new_addr = 0;
|
||||
u32 entry = *start;
|
||||
int i, ret = 0;
|
||||
|
||||
if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5701)
|
||||
new_skb = skb_copy(skb, GFP_ATOMIC);
|
||||
else {
|
||||
int more_headroom = 4 - ((unsigned long)skb->data & 3);
|
||||
|
||||
new_skb = skb_copy_expand(skb,
|
||||
skb_headroom(skb) + more_headroom,
|
||||
skb_tailroom(skb), GFP_ATOMIC);
|
||||
}
|
||||
|
||||
if (!new_skb) {
|
||||
ret = -1;
|
||||
} else {
|
||||
|
|
@ -4462,7 +4472,9 @@ static int tg3_start_xmit_dma_bug(struct sk_buff *skb, struct net_device *dev)
|
|||
|
||||
would_hit_hwbug = 0;
|
||||
|
||||
if (tg3_4g_overflow_test(mapping, len))
|
||||
if (tp->tg3_flags3 & TG3_FLG3_5701_DMA_BUG)
|
||||
would_hit_hwbug = 1;
|
||||
else if (tg3_4g_overflow_test(mapping, len))
|
||||
would_hit_hwbug = 1;
|
||||
|
||||
tg3_set_txd(tp, entry, mapping, len, base_flags,
|
||||
|
|
@ -11339,6 +11351,38 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
|
|||
}
|
||||
}
|
||||
|
||||
if ((GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5701)) {
|
||||
static struct tg3_dev_id {
|
||||
u32 vendor;
|
||||
u32 device;
|
||||
} bridge_chipsets[] = {
|
||||
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_0 },
|
||||
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_1 },
|
||||
{ },
|
||||
};
|
||||
struct tg3_dev_id *pci_id = &bridge_chipsets[0];
|
||||
struct pci_dev *bridge = NULL;
|
||||
|
||||
while (pci_id->vendor != 0) {
|
||||
bridge = pci_get_device(pci_id->vendor,
|
||||
pci_id->device,
|
||||
bridge);
|
||||
if (!bridge) {
|
||||
pci_id++;
|
||||
continue;
|
||||
}
|
||||
if (bridge->subordinate &&
|
||||
(bridge->subordinate->number <=
|
||||
tp->pdev->bus->number) &&
|
||||
(bridge->subordinate->subordinate >=
|
||||
tp->pdev->bus->number)) {
|
||||
tp->tg3_flags3 |= TG3_FLG3_5701_DMA_BUG;
|
||||
pci_dev_put(bridge);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* The EPB bridge inside 5714, 5715, and 5780 cannot support
|
||||
* DMA addresses > 40-bit. This bridge may have other additional
|
||||
* 57xx devices behind it in some 4-port NIC designs for example.
|
||||
|
|
|
|||
|
|
@ -2476,6 +2476,7 @@ struct tg3 {
|
|||
#define TG3_FLG3_NO_NVRAM_ADDR_TRANS 0x00000001
|
||||
#define TG3_FLG3_ENABLE_APE 0x00000002
|
||||
#define TG3_FLG3_5761_5784_AX_FIXES 0x00000004
|
||||
#define TG3_FLG3_5701_DMA_BUG 0x00000008
|
||||
|
||||
struct timer_list timer;
|
||||
u16 timer_counter;
|
||||
|
|
|
|||
|
|
@ -239,28 +239,34 @@ static ssize_t iwl_dbgfs_stations_read(struct file *file, char __user *user_buf,
|
|||
"ps_status: %u\n", station->ps_status);
|
||||
pos += scnprintf(buf + pos, bufsz - pos, "tid data:\n");
|
||||
pos += scnprintf(buf + pos, bufsz - pos,
|
||||
"seq_num\t\ttxq_id\t");
|
||||
"seq_num\t\ttxq_id");
|
||||
#ifdef CONFIG_IWL4965_HT
|
||||
pos += scnprintf(buf + pos, bufsz - pos,
|
||||
"frame_count\twait_for_ba\t");
|
||||
"\tframe_count\twait_for_ba\t");
|
||||
pos += scnprintf(buf + pos, bufsz - pos,
|
||||
"start_idx\tbitmap0\t");
|
||||
pos += scnprintf(buf + pos, bufsz - pos,
|
||||
"bitmap1\trate_n_flags\n");
|
||||
"bitmap1\trate_n_flags");
|
||||
#endif
|
||||
pos += scnprintf(buf + pos, bufsz - pos, "\n");
|
||||
|
||||
for (j = 0; j < MAX_TID_COUNT; j++) {
|
||||
pos += scnprintf(buf + pos, bufsz - pos,
|
||||
"[%d]:\t\t%u\t", j,
|
||||
"[%d]:\t\t%u", j,
|
||||
station->tid[j].seq_number);
|
||||
#ifdef CONFIG_IWL4965_HT
|
||||
pos += scnprintf(buf + pos, bufsz - pos,
|
||||
"%u\t\t%u\t\t%u\t\t",
|
||||
"\t%u\t\t%u\t\t%u\t\t",
|
||||
station->tid[j].agg.txq_id,
|
||||
station->tid[j].agg.frame_count,
|
||||
station->tid[j].agg.wait_for_ba);
|
||||
pos += scnprintf(buf + pos, bufsz - pos,
|
||||
"%u\t%llu\t%u\n",
|
||||
"%u\t%llu\t%u",
|
||||
station->tid[j].agg.start_idx,
|
||||
(unsigned long long)station->tid[j].agg.bitmap,
|
||||
station->tid[j].agg.rate_n_flags);
|
||||
#endif
|
||||
pos += scnprintf(buf + pos, bufsz - pos, "\n");
|
||||
}
|
||||
pos += scnprintf(buf + pos, bufsz - pos, "\n");
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue