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

Commit e4cb0407 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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
parents cabe4569 0a9c7301
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -58,9 +58,13 @@ software, so it's a straight round-robin qdisc. It uses the same syntax and
classification priomap that sch_prio uses, so it should be intuitive to
configure for people who've used sch_prio.

The PRIO qdisc naturally plugs into a multiqueue device.  If PRIO has been
built with NET_SCH_PRIO_MQ, then upon load, it will make sure the number of
bands requested is equal to the number of queues on the hardware.  If they
In order to utilitize the multiqueue features of the qdiscs, the network
device layer needs to enable multiple queue support.  This can be done by
selecting NETDEVICES_MULTIQUEUE under Drivers.

The PRIO qdisc naturally plugs into a multiqueue device.  If
NETDEVICES_MULTIQUEUE is selected, then on qdisc load, the number of
bands requested is compared to the number of queues on the hardware.  If they
are equal, it sets a one-to-one mapping up between the queues and bands.  If
they're not equal, it will not load the qdisc.  This is the same behavior
for RR.  Once the association is made, any skb that is classified will have
+4 −1
Original line number Diff line number Diff line
@@ -691,15 +691,18 @@ static void hci_usb_rx_complete(struct urb *urb)
					urb->iso_frame_desc[i].offset,
					urb->iso_frame_desc[i].actual_length);
	
			if (!urb->iso_frame_desc[i].status)
			if (!urb->iso_frame_desc[i].status) {
				husb->hdev->stat.byte_rx += urb->iso_frame_desc[i].actual_length;
				hci_recv_fragment(husb->hdev, _urb->type, 
					urb->transfer_buffer + urb->iso_frame_desc[i].offset,
					urb->iso_frame_desc[i].actual_length);
			}
		}
#else
		;
#endif
	} else {
		husb->hdev->stat.byte_rx += count;
		err = hci_recv_fragment(husb->hdev, _urb->type, urb->transfer_buffer, count);
		if (err < 0) { 
			BT_ERR("%s corrupted packet: type %d count %d",
+11 −2
Original line number Diff line number Diff line
@@ -64,8 +64,8 @@

#define DRV_MODULE_NAME		"tg3"
#define PFX DRV_MODULE_NAME	": "
#define DRV_MODULE_VERSION	"3.80"
#define DRV_MODULE_RELDATE	"August 2, 2007"
#define DRV_MODULE_VERSION	"3.81"
#define DRV_MODULE_RELDATE	"September 5, 2007"

#define TG3_DEF_MAC_MODE	0
#define TG3_DEF_RX_MODE		0
@@ -7127,6 +7127,10 @@ static int tg3_open(struct net_device *dev)
		} else if (pci_enable_msi(tp->pdev) == 0) {
			u32 msi_mode;

			/* Hardware bug - MSI won't work if INTX disabled. */
			if (tp->tg3_flags2 & TG3_FLG2_5780_CLASS)
				pci_intx(tp->pdev, 1);

			msi_mode = tr32(MSGINT_MODE);
			tw32(MSGINT_MODE, msi_mode | MSGINT_MODE_ENABLE);
			tp->tg3_flags2 |= TG3_FLG2_USING_MSI;
@@ -12172,6 +12176,11 @@ static int tg3_resume(struct pci_dev *pdev)
	if (err)
		return err;

	/* Hardware bug - MSI won't work if INTX disabled. */
	if ((tp->tg3_flags2 & TG3_FLG2_5780_CLASS) &&
	    (tp->tg3_flags2 & TG3_FLG2_USING_MSI))
		pci_intx(tp->pdev, 1);

	netif_device_attach(dev);

	tg3_full_lock(tp, 0);
+2 −3
Original line number Diff line number Diff line
@@ -88,9 +88,8 @@ struct nf_sockopt_ops
	int (*compat_get)(struct sock *sk, int optval,
			void __user *user, int *len);

	/* Number of users inside set() or get(). */
	unsigned int use;
	struct task_struct *cleanup_task;
	/* Use the module struct to lock set/get code in place */
	struct module *owner;
};

/* Each queued (to userspace) skbuff has one of these. */
+3 −5
Original line number Diff line number Diff line
@@ -183,6 +183,7 @@ static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
{
	struct sk_buff *skb;
	__le16 param;
	__u8 flt_type;

	BT_DBG("%s %ld", hdev->name, opt);

@@ -233,11 +234,8 @@ static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
	/* Optional initialization */

	/* Clear Event Filters */
	{
		struct hci_cp_set_event_flt cp;
		cp.flt_type  = HCI_FLT_CLEAR_ALL;
		hci_send_cmd(hdev, OGF_HOST_CTL, OCF_SET_EVENT_FLT, sizeof(cp), &cp);
	}
	flt_type = HCI_FLT_CLEAR_ALL;
	hci_send_cmd(hdev, OGF_HOST_CTL, OCF_SET_EVENT_FLT, 1, &flt_type);

	/* Page timeout ~20 secs */
	param = cpu_to_le16(0x8000);
Loading