Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37bed900 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (32 commits)
  wimax: fix oops in wimax_dev_get_by_genl_info() when looking up non-wimax iface
  net: 4 bytes kernel memory disclosure in SO_BSDCOMPAT gsopt try #2
  netxen: fix compile waring "label ‘set_32_bit_mask’ defined but not used" on IA64 platform
  bnx2: Update version to 1.9.2 and copyright.
  bnx2: Fix jumbo frames error handling.
  bnx2: Update 5709 firmware.
  bnx2: Update 5706/5708 firmware.
  3c505: do not set pcb->data.raw beyond its size
  Documentation/connector/cn_test.c: don't use gfp_any()
  net: don't use in_atomic() in gfp_any()
  IRDA: cnt is off by 1
  netxen: remove pcie workaround
  sun3: print when lance_open() fails
  qlge: bugfix: Add missing rx buf clean index on early exit.
  qlge: bugfix: Fix RX scaling values.
  qlge: bugfix: Fix TSO breakage.
  qlge: bugfix: Add missing dev_kfree_skb_any() call.
  qlge: bugfix: Add missing put_page() call.
  qlge: bugfix: Fix fatal error recovery hang.
  qlge: bugfix: Use netif_receive_skb() and vlan_hwaccel_receive_skb().
  ...
parents 071a0bc2 1d7b33f7
Loading
Loading
Loading
Loading
+2 −4
Original line number Original line Diff line number Diff line
@@ -137,7 +137,7 @@ static void cn_test_timer_func(unsigned long __data)


		memcpy(m + 1, data, m->len);
		memcpy(m + 1, data, m->len);


		cn_netlink_send(m, 0, gfp_any());
		cn_netlink_send(m, 0, GFP_ATOMIC);
		kfree(m);
		kfree(m);
	}
	}


@@ -160,10 +160,8 @@ static int cn_test_init(void)
		goto err_out;
		goto err_out;
	}
	}


	init_timer(&cn_test_timer);
	setup_timer(&cn_test_timer, cn_test_timer_func, 0);
	cn_test_timer.function = cn_test_timer_func;
	cn_test_timer.expires = jiffies + HZ;
	cn_test_timer.expires = jiffies + HZ;
	cn_test_timer.data = 0;
	add_timer(&cn_test_timer);
	add_timer(&cn_test_timer);


	return 0;
	return 0;
+2 −2
Original line number Original line Diff line number Diff line
@@ -2519,8 +2519,8 @@ fore200e_load_and_start_fw(struct fore200e* fore200e)
	return err;
	return err;


    sprintf(buf, "%s%s", fore200e->bus->proc_name, FW_EXT);
    sprintf(buf, "%s%s", fore200e->bus->proc_name, FW_EXT);
    if (request_firmware(&firmware, buf, device) == 1) {
    if ((err = request_firmware(&firmware, buf, device)) < 0) {
	printk(FORE200E "missing %s firmware image\n", fore200e->bus->model_name);
	printk(FORE200E "problem loading firmware image %s\n", fore200e->bus->model_name);
	return err;
	return err;
    }
    }


+16 −10
Original line number Original line Diff line number Diff line
@@ -493,21 +493,27 @@ static bool receive_pcb(struct net_device *dev, pcb_struct * pcb)
	}
	}
	/* read the data */
	/* read the data */
	spin_lock_irqsave(&adapter->lock, flags);
	spin_lock_irqsave(&adapter->lock, flags);
	i = 0;
	for (i = 0; i < MAX_PCB_DATA; i++) {
	do {
		for (j = 0; j < 20000; j++) {
		j = 0;
			stat = get_status(dev->base_addr);
		while (((stat = get_status(dev->base_addr)) & ACRF) == 0 && j++ < 20000);
			if (stat & ACRF)
		pcb->data.raw[i++] = inb_command(dev->base_addr);
				break;
		if (i > MAX_PCB_DATA)
		}
			INVALID_PCB_MSG(i);
		pcb->data.raw[i] = inb_command(dev->base_addr);
	} while ((stat & ASF_PCB_MASK) != ASF_PCB_END && j < 20000);
		if ((stat & ASF_PCB_MASK) == ASF_PCB_END || j >= 20000)
			break;
	}
	spin_unlock_irqrestore(&adapter->lock, flags);
	spin_unlock_irqrestore(&adapter->lock, flags);
	if (i >= MAX_PCB_DATA) {
		INVALID_PCB_MSG(i);
		return false;
	}
	if (j >= 20000) {
	if (j >= 20000) {
		TIMEOUT_MSG(__LINE__);
		TIMEOUT_MSG(__LINE__);
		return false;
		return false;
	}
	}
	/* woops, the last "data" byte was really the length! */
	/* the last "data" byte was really the length! */
	total_length = pcb->data.raw[--i];
	total_length = pcb->data.raw[i];


	/* safety check total length vs data length */
	/* safety check total length vs data length */
	if (total_length != (pcb->length + 2)) {
	if (total_length != (pcb->length + 2)) {
+22 −14
Original line number Original line Diff line number Diff line
/* bnx2.c: Broadcom NX2 network driver.
/* bnx2.c: Broadcom NX2 network driver.
 *
 *
 * Copyright (c) 2004-2008 Broadcom Corporation
 * Copyright (c) 2004-2009 Broadcom Corporation
 *
 *
 * This program is free software; you can redistribute it and/or modify
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * it under the terms of the GNU General Public License as published by
@@ -57,8 +57,8 @@


#define DRV_MODULE_NAME		"bnx2"
#define DRV_MODULE_NAME		"bnx2"
#define PFX DRV_MODULE_NAME	": "
#define PFX DRV_MODULE_NAME	": "
#define DRV_MODULE_VERSION	"1.9.0"
#define DRV_MODULE_VERSION	"1.9.2"
#define DRV_MODULE_RELDATE	"Dec 16, 2008"
#define DRV_MODULE_RELDATE	"Feb 11, 2009"


#define RUN_AT(x) (jiffies + (x))
#define RUN_AT(x) (jiffies + (x))


@@ -2910,18 +2910,8 @@ bnx2_rx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget)


		rx_hdr = (struct l2_fhdr *) skb->data;
		rx_hdr = (struct l2_fhdr *) skb->data;
		len = rx_hdr->l2_fhdr_pkt_len;
		len = rx_hdr->l2_fhdr_pkt_len;
		status = rx_hdr->l2_fhdr_status;


		if ((status = rx_hdr->l2_fhdr_status) &
			(L2_FHDR_ERRORS_BAD_CRC |
			L2_FHDR_ERRORS_PHY_DECODE |
			L2_FHDR_ERRORS_ALIGNMENT |
			L2_FHDR_ERRORS_TOO_SHORT |
			L2_FHDR_ERRORS_GIANT_FRAME)) {

			bnx2_reuse_rx_skb(bp, rxr, skb, sw_ring_cons,
					  sw_ring_prod);
			goto next_rx;
		}
		hdr_len = 0;
		hdr_len = 0;
		if (status & L2_FHDR_STATUS_SPLIT) {
		if (status & L2_FHDR_STATUS_SPLIT) {
			hdr_len = rx_hdr->l2_fhdr_ip_xsum;
			hdr_len = rx_hdr->l2_fhdr_ip_xsum;
@@ -2931,6 +2921,24 @@ bnx2_rx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget)
			pg_ring_used = 1;
			pg_ring_used = 1;
		}
		}


		if (unlikely(status & (L2_FHDR_ERRORS_BAD_CRC |
				       L2_FHDR_ERRORS_PHY_DECODE |
				       L2_FHDR_ERRORS_ALIGNMENT |
				       L2_FHDR_ERRORS_TOO_SHORT |
				       L2_FHDR_ERRORS_GIANT_FRAME))) {

			bnx2_reuse_rx_skb(bp, rxr, skb, sw_ring_cons,
					  sw_ring_prod);
			if (pg_ring_used) {
				int pages;

				pages = PAGE_ALIGN(len - hdr_len) >> PAGE_SHIFT;

				bnx2_reuse_rx_skb_pages(bp, rxr, NULL, pages);
			}
			goto next_rx;
		}

		len -= 4;
		len -= 4;


		if (len <= bp->rx_copy_thresh) {
		if (len <= bp->rx_copy_thresh) {
+1 −1
Original line number Original line Diff line number Diff line
/* bnx2.h: Broadcom NX2 network driver.
/* bnx2.h: Broadcom NX2 network driver.
 *
 *
 * Copyright (c) 2004-2007 Broadcom Corporation
 * Copyright (c) 2004-2009 Broadcom Corporation
 *
 *
 * This program is free software; you can redistribute it and/or modify
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * it under the terms of the GNU General Public License as published by
Loading