Netdev List
 help / color / mirror / Atom feed
* Re: [PATCH net-next-2.6 2/2] bonding: allow user-controlled output slave selection
From: Jay Vosburgh @ 2010-05-18  1:21 UTC (permalink / raw)
  To: Neil Horman; +Cc: Andy Gospodarek, netdev
In-Reply-To: <17188.1274124341@death.nxdomain.ibm.com>

Jay Vosburgh <fubar@us.ibm.com> wrote:
[...]
>	For your patch, I'm exploring the idea of not setting
>IFF_SLAVE_INACTIVE on "inactive" slaves for an "all_slaves_active"
>option (I think that's a more descriptive name than "keep_all") instead
>of adding a new KEEP_ALL flag bit to priv_flags.  Did you consider this
>methodology and exclude it for some reason?

	Following up to myself, I coded up approximately what I was
talking about.  This doesn't require the extra priv_flag, and the sysfs
_store is a little more complicated, but this appears to work (testing
with ping -f after clearing the switch's MAC table to induce traffic
flooding).  I didn't change the option name from "keep_all" here, but as
far as the functionality goes, this seems to do what I think you want it
to.

	-J

diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 5e12462..c80d2ff 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -106,6 +106,7 @@ static int arp_interval = BOND_LINK_ARP_INTERV;
 static char *arp_ip_target[BOND_MAX_ARP_TARGETS];
 static char *arp_validate;
 static char *fail_over_mac;
+static int keep_all	= 0;
 static struct bond_params bonding_defaults;
 
 module_param(max_bonds, int, 0);
@@ -155,6 +156,9 @@ module_param(arp_validate, charp, 0);
 MODULE_PARM_DESC(arp_validate, "validate src/dst of ARP probes: none (default), active, backup or all");
 module_param(fail_over_mac, charp, 0);
 MODULE_PARM_DESC(fail_over_mac, "For active-backup, do not set all slaves to the same MAC.  none (default), active or follow");
+module_param(keep_all, int, 0);
+MODULE_PARM_DESC(keep_all, "Keep all frames received on an interface"
+			   "0 for never (default), 1 for always.");
 
 /*----------------------------- Global variables ----------------------------*/
 
@@ -4756,6 +4760,13 @@ static int bond_check_params(struct bond_params *params)
 		}
 	}
 
+	if ((keep_all != 0) && (keep_all != 1)) {
+		pr_warning("Warning: keep_all module parameter (%d), "
+			   "not of valid value (0/1), so it was set to "
+			   "0\n", keep_all);
+		keep_all = 0;
+	}
+
 	/* reset values for TLB/ALB */
 	if ((bond_mode == BOND_MODE_TLB) ||
 	    (bond_mode == BOND_MODE_ALB)) {
@@ -4926,6 +4937,7 @@ static int bond_check_params(struct bond_params *params)
 	params->primary[0] = 0;
 	params->primary_reselect = primary_reselect_value;
 	params->fail_over_mac = fail_over_mac_value;
+	params->keep_all = keep_all;
 
 	if (primary) {
 		strncpy(params->primary, primary, IFNAMSIZ);
diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
index b8bec08..73b3c03 100644
--- a/drivers/net/bonding/bond_sysfs.c
+++ b/drivers/net/bonding/bond_sysfs.c
@@ -339,7 +339,6 @@ out:
 
 static DEVICE_ATTR(slaves, S_IRUGO | S_IWUSR, bonding_show_slaves,
 		   bonding_store_slaves);
-
 /*
  * Show and set the bonding mode.  The bond interface must be down to
  * change the mode.
@@ -1472,6 +1471,59 @@ static ssize_t bonding_show_ad_partner_mac(struct device *d,
 }
 static DEVICE_ATTR(ad_partner_mac, S_IRUGO, bonding_show_ad_partner_mac, NULL);
 
+/*
+ * Show and set the keep_all flag.
+ */
+static ssize_t bonding_show_keep(struct device *d,
+				 struct device_attribute *attr,
+				 char *buf)
+{
+	struct bonding *bond = to_bond(d);
+
+	return sprintf(buf, "%d\n", bond->params.keep_all);
+}
+
+static ssize_t bonding_store_keep(struct device *d,
+				  struct device_attribute *attr,
+				  const char *buf, size_t count)
+{
+	int i, new_value, ret = count;
+	struct bonding *bond = to_bond(d);
+	struct slave *slave;
+
+	if (sscanf(buf, "%d", &new_value) != 1) {
+		pr_err("%s: no keep_all value specified.\n",
+		       bond->dev->name);
+		ret = -EINVAL;
+		goto out;
+	}
+
+	if (new_value == bond->params.keep_all)
+		goto out;
+
+	if ((new_value == 0) || (new_value == 1)) {
+		bond->params.keep_all = new_value;
+	} else {
+		pr_info("%s: Ignoring invalid keep_all value %d.\n",
+			bond->dev->name, new_value);
+		ret = -EINVAL;
+		goto out;
+	}
+
+	bond_for_each_slave(bond, slave, i) {
+		if (slave->state == BOND_STATE_BACKUP) {
+			if (new_value)
+				slave->dev->priv_flags &= ~IFF_SLAVE_INACTIVE;
+			else
+				slave->dev->priv_flags |= IFF_SLAVE_INACTIVE;
+		}
+	}
+out:
+	return count;
+}
+static DEVICE_ATTR(keep_all, S_IRUGO | S_IWUSR,
+		   bonding_show_keep, bonding_store_keep);
+
 
 
 static struct attribute *per_bond_attrs[] = {
@@ -1499,6 +1551,7 @@ static struct attribute *per_bond_attrs[] = {
 	&dev_attr_ad_actor_key.attr,
 	&dev_attr_ad_partner_key.attr,
 	&dev_attr_ad_partner_mac.attr,
+	&dev_attr_keep_all.attr,
 	NULL,
 };
 
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
index 2aa3367..ef7969b 100644
--- a/drivers/net/bonding/bonding.h
+++ b/drivers/net/bonding/bonding.h
@@ -131,6 +131,7 @@ struct bond_params {
 	char primary[IFNAMSIZ];
 	int primary_reselect;
 	__be32 arp_targets[BOND_MAX_ARP_TARGETS];
+	int keep_all;
 };
 
 struct bond_parm_tbl {
@@ -291,7 +292,8 @@ static inline void bond_set_slave_inactive_flags(struct slave *slave)
 	struct bonding *bond = netdev_priv(slave->dev->master);
 	if (!bond_is_lb(bond))
 		slave->state = BOND_STATE_BACKUP;
-	slave->dev->priv_flags |= IFF_SLAVE_INACTIVE;
+	if (!bond->params.keep_all)
+		slave->dev->priv_flags |= IFF_SLAVE_INACTIVE;
 	if (slave_do_arp_validate(bond, slave))
 		slave->dev->priv_flags |= IFF_SLAVE_NEEDARP;
 }


---
	-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com

^ permalink raw reply related

* [PATCH net-next] ipv6: fix the bug of address check
From: Stephen Hemminger @ 2010-05-18  1:02 UTC (permalink / raw)
  To: Shan Wei, David Miller; +Cc: netdev@vger.kernel.org
In-Reply-To: <4BF1E45D.5000409@cn.fujitsu.com>

The duplicate address check code got broken in the conversion
to hlist (2.6.35).  The earlier patch did not fix the case where
two addresses match same hash value. Use two exit paths,
rather than depending on state of loop variables (from macro).

Based on earlier fix by Shan Wei.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Reviewed-by: Shan Wei <shanwei@cn.fujitsu.com>

--- a/net/ipv6/addrconf.c	2010-05-17 10:27:58.218628126 -0700
+++ b/net/ipv6/addrconf.c	2010-05-17 10:29:46.012198338 -0700
@@ -1274,7 +1274,7 @@ static int ipv6_count_addresses(struct i
 int ipv6_chk_addr(struct net *net, struct in6_addr *addr,
 		  struct net_device *dev, int strict)
 {
-	struct inet6_ifaddr *ifp = NULL;
+	struct inet6_ifaddr *ifp;
 	struct hlist_node *node;
 	unsigned int hash = ipv6_addr_hash(addr);
 
@@ -1283,15 +1283,16 @@ int ipv6_chk_addr(struct net *net, struc
 		if (!net_eq(dev_net(ifp->idev->dev), net))
 			continue;
 		if (ipv6_addr_equal(&ifp->addr, addr) &&
-		    !(ifp->flags&IFA_F_TENTATIVE)) {
-			if (dev == NULL || ifp->idev->dev == dev ||
-			    !(ifp->scope&(IFA_LINK|IFA_HOST) || strict))
-				break;
+		    !(ifp->flags&IFA_F_TENTATIVE) &&
+		    (dev == NULL || ifp->idev->dev == dev ||
+		     !(ifp->scope&(IFA_LINK|IFA_HOST) || strict))) {
+			rcu_read_unlock_bh();
+			return 1;
 		}
 	}
-	rcu_read_unlock_bh();
 
-	return ifp != NULL;
+	rcu_read_unlock_bh();
+	return 0;
 }
 EXPORT_SYMBOL(ipv6_chk_addr);
 

^ permalink raw reply

* [PATCH] virtio: put last seen used index into ring itself
From: Michael S. Tsirkin @ 2010-05-18  0:47 UTC (permalink / raw)
  To: Rusty Russell, Jiri Pirko, Shirley Ma, Amit Shah, Mark McLoughlin,
	netdev

Generally, the Host end of the virtio ring doesn't need to see where
Guest is up to in consuming the ring.  However, to completely understand
what's going on from the outside, this information must be exposed.
For example, host can reduce the number of interrupts by detecting
that the guest is currently handling previous buffers.

Fortunately, we have room to expand: the ring is always a whole number
of pages and there's hundreds of bytes of padding after the avail ring
and the used ring, whatever the number of descriptors (which must be a
power of 2).

We add a feature bit so the guest can tell the host that it's writing
out the current value there, if it wants to use that.

This is based on a patch by Rusty Russell, with the main difference
being that we dedicate a feature bit to guest to tell the host it is
writing the used index.  This way we don't need to force host to publish
the last available index until we have a use for it.

Another difference is that while the feature helps virtio-net,
there have been conflicting reports wrt virtio-blk.
The reason is unknown, it could be due to the fact that
virtio-blk does not bother to disable interrupts at all.
So for now, this patch only acks this feature for -net.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---

Rusty, this is on top of your tree. Works well for me,
I hope it can get in, in time for 2.6.35.

 drivers/net/virtio_net.c     |    1 +
 drivers/virtio/virtio_ring.c |   21 ++++++++++++---------
 include/linux/virtio_ring.h  |   12 ++++++++++++
 3 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index c0cab7a..f567751 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1056,6 +1056,7 @@ static unsigned int features[] = {
 	VIRTIO_NET_F_GUEST_ECN, VIRTIO_NET_F_GUEST_UFO,
 	VIRTIO_NET_F_MRG_RXBUF, VIRTIO_NET_F_STATUS, VIRTIO_NET_F_CTRL_VQ,
 	VIRTIO_NET_F_CTRL_RX, VIRTIO_NET_F_CTRL_VLAN,
+	VIRTIO_RING_F_PUBLISH_USED,
 };
 
 static struct virtio_driver virtio_net_driver = {
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 1ca8890..fb06570 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -89,9 +89,6 @@ struct vring_virtqueue
 	/* Number we've added since last sync. */
 	unsigned int num_added;
 
-	/* Last used index we've seen. */
-	u16 last_used_idx;
-
 	/* How to notify other side. FIXME: commonalize hcalls! */
 	void (*notify)(struct virtqueue *vq);
 
@@ -285,12 +282,13 @@ static void detach_buf(struct vring_virtqueue *vq, unsigned int head)
 
 static inline bool more_used(const struct vring_virtqueue *vq)
 {
-	return vq->last_used_idx != vq->vring.used->idx;
+	return *vq->vring.last_used_idx != vq->vring.used->idx;
 }
 
 void *virtqueue_get_buf(struct virtqueue *_vq, unsigned int *len)
 {
 	struct vring_virtqueue *vq = to_vvq(_vq);
+	struct vring_used_elem *u;
 	void *ret;
 	unsigned int i;
 
@@ -310,9 +308,9 @@ void *virtqueue_get_buf(struct virtqueue *_vq, unsigned int *len)
 	/* Only get used array entries after they have been exposed by host. */
 	virtio_rmb();
 
-	i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
-	*len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
-
+	u = &vq->vring.used->ring[*vq->vring.last_used_idx % vq->vring.num];
+	i = u->id;
+	*len = u->len;
 	if (unlikely(i >= vq->vring.num)) {
 		BAD_RING(vq, "id %u out of range\n", i);
 		return NULL;
@@ -325,7 +323,8 @@ void *virtqueue_get_buf(struct virtqueue *_vq, unsigned int *len)
 	/* detach_buf clears data, so grab it now. */
 	ret = vq->data[i];
 	detach_buf(vq, i);
-	vq->last_used_idx++;
+	(*vq->vring.last_used_idx)++;
+
 	END_USE(vq);
 	return ret;
 }
@@ -348,6 +347,8 @@ bool virtqueue_enable_cb(struct virtqueue *_vq)
 	/* We optimistically turn back on interrupts, then check if there was
 	 * more to do. */
 	vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
+	/* Besides flags write, this barrier also flushes out
+	 * last available index write. */
 	virtio_mb();
 	if (unlikely(more_used(vq))) {
 		END_USE(vq);
@@ -431,7 +432,7 @@ struct virtqueue *vring_new_virtqueue(unsigned int num,
 	vq->vq.name = name;
 	vq->notify = notify;
 	vq->broken = false;
-	vq->last_used_idx = 0;
+	*vq->vring.last_used_idx = 0;
 	vq->num_added = 0;
 	list_add_tail(&vq->vq.list, &vdev->vqs);
 #ifdef DEBUG
@@ -473,6 +474,8 @@ void vring_transport_features(struct virtio_device *vdev)
 		switch (i) {
 		case VIRTIO_RING_F_INDIRECT_DESC:
 			break;
+		case VIRTIO_RING_F_PUBLISH_USED:
+			break;
 		default:
 			/* We don't understand this bit. */
 			clear_bit(i, vdev->features);
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
index e4d144b..0968702 100644
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -29,6 +29,9 @@
 /* We support indirect buffer descriptors */
 #define VIRTIO_RING_F_INDIRECT_DESC	28
 
+/* The Guest publishes last-seen used index at the end of the avail ring. */
+#define VIRTIO_RING_F_PUBLISH_USED	29
+
 /* Virtio ring descriptors: 16 bytes.  These can chain together via "next". */
 struct vring_desc {
 	/* Address (guest-physical). */
@@ -69,6 +72,8 @@ struct vring {
 	struct vring_avail *avail;
 
 	struct vring_used *used;
+	/* Last used index seen by the Guest. */
+	__u16 *last_used_idx;
 };
 
 /* The standard layout for the ring is a continuous chunk of memory which looks
@@ -83,6 +88,7 @@ struct vring {
  *	__u16 avail_flags;
  *	__u16 avail_idx;
  *	__u16 available[num];
+ *	__u16 last_used_idx;
  *
  *	// Padding to the next align boundary.
  *	char pad[];
@@ -101,6 +107,12 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p,
 	vr->avail = p + num*sizeof(struct vring_desc);
 	vr->used = (void *)(((unsigned long)&vr->avail->ring[num] + align-1)
 			    & ~(align - 1));
+	/* We publish the last-seen used index at the end of the available ring.
+	 * It is at the end for backwards compatibility. */
+	vr->last_used_idx = &(vr)->avail->ring[num];
+	/* Verify that last used index does not spill over the used ring. */
+	BUG_ON((void *)vr->last_used_idx +
+	       sizeof *vr->last_used_idx > (void *)vr->used);
 }
 
 static inline unsigned vring_size(unsigned int num, unsigned long align)
-- 
1.7.1.12.g42b7f

^ permalink raw reply related

* Re: [PATCH BUGFIX ] ipv6: fix the bug of address check
From: Shan Wei @ 2010-05-18  0:50 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: David Miller, netdev@vger.kernel.org
In-Reply-To: <20100517103134.06160257@nehalam>

Stephen Hemminger wrote, at 05/18/2010 01:31 AM:
> 
> Why not this instead. I don't like depending on the value of the
> loop variable in the hlist_for_each()
> 
> --- a/net/ipv6/addrconf.c	2010-05-17 10:27:58.218628126 -0700
> +++ b/net/ipv6/addrconf.c	2010-05-17 10:29:46.012198338 -0700
> @@ -1274,7 +1274,7 @@ static int ipv6_count_addresses(struct i
>  int ipv6_chk_addr(struct net *net, struct in6_addr *addr,
>  		  struct net_device *dev, int strict)
>  {
> -	struct inet6_ifaddr *ifp = NULL;
> +	struct inet6_ifaddr *ifp;
>  	struct hlist_node *node;
>  	unsigned int hash = ipv6_addr_hash(addr);
>  
> @@ -1283,15 +1283,16 @@ int ipv6_chk_addr(struct net *net, struc
>  		if (!net_eq(dev_net(ifp->idev->dev), net))
>  			continue;
>  		if (ipv6_addr_equal(&ifp->addr, addr) &&
> -		    !(ifp->flags&IFA_F_TENTATIVE)) {
> -			if (dev == NULL || ifp->idev->dev == dev ||
> -			    !(ifp->scope&(IFA_LINK|IFA_HOST) || strict))
> -				break;
> +		    !(ifp->flags&IFA_F_TENTATIVE) &&
> +		    (dev == NULL || ifp->idev->dev == dev ||
> +		     !(ifp->scope&(IFA_LINK|IFA_HOST) || strict))) {
> +			rcu_read_unlock_bh();
> +			return 1;
>  		}
>  	}
> -	rcu_read_unlock_bh();
>  
> -	return ifp != NULL;
> +	rcu_read_unlock_bh();
> +	return 0;
>  }
>  EXPORT_SYMBOL(ipv6_chk_addr);
>  
> 
> 

This looks good to me.
Can you send a intact patch to David with my Report-by or Review-by ?

-- 
Best Regards
-----
Shan Wei

^ permalink raw reply

* Re: [PATCH v3] net-next: remove useless union keyword
From: David Miller @ 2010-05-18  0:48 UTC (permalink / raw)
  To: xiaosuo; +Cc: eric.dumazet, netdev
In-Reply-To: <1274071108-5142-1-git-send-email-xiaosuo@gmail.com>

From: Changli Gao <xiaosuo@gmail.com>
Date: Mon, 17 May 2010 12:38:28 +0800

> remove useless union keyword in rtable, rt6_info and dn_route.
> 
> Since there is only one member in a union, the union keyword isn't useful.
> 
> Signed-off-by: Changli Gao <xiaosuo@gmail.com>

Applied, thank you.

^ permalink raw reply

* Re: [net-next-2.6 V8 PATCH 1/2] Add netlink support for virtual port management
From: David Miller @ 2010-05-18  0:47 UTC (permalink / raw)
  To: arnd; +Cc: chrisw, scofeldm, netdev, kaber
In-Reply-To: <201005151107.51522.arnd@arndb.de>


From: Arnd Bergmann <arnd@arndb.de>
Date: Sat, 15 May 2010 11:07:51 +0200

> On Saturday 15 May 2010 05:11:30 Chris Wright wrote:
>> * Scott Feldman (scofeldm@cisco.com) wrote:
>> > From: Scott Feldman <scofeldm@cisco.com>
>> > 
>> > Add new netdev ops ndo_{set|get}_vf_port to allow setting of
>> > port-profile on a netdev interface.  Extends netlink socket RTM_SETLINK/
>> > RTM_GETLINK with two new sub msgs called IFLA_VF_PORTS and IFLA_PORT_SELF
>> > (added to end of IFLA_cmd list).  These are both nested atrtibutes
>> > using this layout:
>> > 
>> >               [IFLA_NUM_VF]
>> >               [IFLA_VF_PORTS]
>> >                       [IFLA_VF_PORT]
>> >                               [IFLA_PORT_*], ...
>> >                       [IFLA_VF_PORT]
>> >                               [IFLA_PORT_*], ...
>> >                       ...
>> >               [IFLA_PORT_SELF]
>> >                       [IFLA_PORT_*], ...
>> > 
>> > These attributes are design to be set and get symmetrically.  VF_PORTS
>> > is a list of VF_PORTs, one for each VF, when dealing with an SR-IOV
>> > device.  PORT_SELF is for the PF of the SR-IOV device, in case it wants
>> > to also have a port-profile, or for the case where the VF==PF, like in
>> > enic patch 2/2 of this patch set.
>> > 
>> > A port-profile is used to configure/enable the external switch virtual port
>> > backing the netdev interface, not to configure the host-facing side of the
>> > netdev.  A port-profile is an identifier known to the switch.  How port-
>> > profiles are installed on the switch or how available port-profiles are
>> > made know to the host is outside the scope of this patch.
>> > 
>> > There are two types of port-profiles specs in the netlink msg.  The first spec
>> > is for 802.1Qbg (pre-)standard, VDP protocol.  The second spec is for devices
>> > that run a similar protocol as VDP but in firmware, thus hiding the protocol
>> > details.  In either case, the specs have much in common and makes sense to
>> > define the netlink msg as the union of the two specs.  For example, both specs
>> > have a notition of associating/deassociating a port-profile.  And both specs
>> > require some information from the hypervisor manager, such as client port
>> > instance ID.
>> > 
>> > The general flow is the port-profile is applied to a host netdev interface
>> > using RTM_SETLINK, the receiver of the RTM_SETLINK msg communicates with the
>> > switch, and the switch virtual port backing the host netdev interface is
>> > configured/enabled based on the settings defined by the port-profile.  What
>> > those settings comprise, and how those settings are managed is again
>> > outside the scope of this patch, since this patch only deals with the
>> > first step in the flow.
>> > 
>> > Signed-off-by: Scott Feldman <scofeldm@cisco.com>
>> > Signed-off-by: Roopa Prabhu<roprabhu@cisco.com>
>> 
>> Assuming the SR-IOV VFINFO changes go in there will be some minor patch
>> conflicts to be sorted out.
> 
> Right, I assume the best resolution then would be drop IFLA_VF_PORTS and
> put the IFLA_VF_PORT attribute inside IFLA_VF_INFO, correct?
> 
>> Acked-by: Chris Wright <chrisw@redhat.com>
> 
> Acked-by: Arnd Bergmann <arnd@arndb.de>

Hey guys, please respin these patches now that the SR-IOV VF patch is in
the tree.

Thanks!

^ permalink raw reply

* Re: [PATCH 4/4] X25: Remove bkl in sockopts
From: David Miller @ 2010-05-18  0:39 UTC (permalink / raw)
  To: andrew.hendry; +Cc: netdev
In-Reply-To: <1274086835.4104.55.camel@ibex>

From: Andrew Hendry <andrew.hendry@gmail.com>
Date: Mon, 17 May 2010 19:00:35 +1000

> 
> Removes the BKL in x25 setsock and getsockopts.
> 
> Signed-off-by: Andrew Hendry <andrew.hendry@gmail.com>

Applied.

^ permalink raw reply

* Re: [PATCH 3/4] X25: Move accept approve flag to bitfield
From: David Miller @ 2010-05-18  0:39 UTC (permalink / raw)
  To: andrew.hendry; +Cc: netdev
In-Reply-To: <1274086827.4104.54.camel@ibex>

From: Andrew Hendry <andrew.hendry@gmail.com>
Date: Mon, 17 May 2010 19:00:27 +1000

> 
> Moves the x25 accept approve flag from char into bitfield.
> 
> Signed-off-by: Andrew Hendry <andrew.hendry@gmail.com>

Applied.

^ permalink raw reply

* Re: [PATCH 2/4] X25: Move interrupt flag to bitfield
From: David Miller @ 2010-05-18  0:39 UTC (permalink / raw)
  To: andrew.hendry; +Cc: netdev
In-Reply-To: <1274086802.4104.53.camel@ibex>

From: Andrew Hendry <andrew.hendry@gmail.com>
Date: Mon, 17 May 2010 19:00:02 +1000

> Moves the x25 interrupt flag from char into bitfield.
> 
> Signed-off-by: Andrew Hendry <andrew.hendry@gmail.com>

Applied.

^ permalink raw reply

* Re: [PATCH 1/4] X25: Move qbit flag to bitfield
From: David Miller @ 2010-05-18  0:39 UTC (permalink / raw)
  To: andrew.hendry; +Cc: netdev
In-Reply-To: <1274086781.4104.52.camel@ibex>

From: Andrew Hendry <andrew.hendry@gmail.com>
Date: Mon, 17 May 2010 18:59:41 +1000

> Moves the X25 q bit flag from char into a bitfield to allow BKL cleanup.
> 
> Signed-off-by: Andrew Hendry <andrew.hendry@gmail.com>

Applied.

^ permalink raw reply

* Re: [PATCH resend] bnx2x: avoid TX timeout when stopping device
From: David Miller @ 2010-05-18  0:35 UTC (permalink / raw)
  To: sgruszka; +Cc: netdev, eilong, vladz, dmitry
In-Reply-To: <20100517123406.GA2504@dhcp-lab-161.englab.brq.redhat.com>

From: Stanislaw Gruszka <sgruszka@redhat.com>
Date: Mon, 17 May 2010 14:34:06 +0200

> When stop device call netif_carrier_off() just after disabling TX queue to
> avoid possibility of netdev watchdog warning and ->ndo_tx_timeout() invocation.
> 
> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
> Acked-by: Eilon Greenstein <eilong@broadcom.com>

Applied, thank you.

^ permalink raw reply

* Re: [PATCH -next] bnx2: Use netif_carrier_off() to prevent timeout.
From: David Miller @ 2010-05-18  0:34 UTC (permalink / raw)
  To: mchan; +Cc: sgruszka, netdev
In-Reply-To: <1273762115-13412-1-git-send-email-mchan@broadcom.com>

From: "Michael Chan" <mchan@broadcom.com>
Date: Thu, 13 May 2010 07:48:35 -0700

> Based on original patch from Stanislaw Gruszka <sgruszka@redhat.com>.
> 
> Using netif_carrier_off() is better than updating all the ->trans_start
> on all the tx queues.
> 
> netif_carrier_off() needs to be called after bnx2_disable_int_sync()
> to guarantee no race conditions with the serdes timers that can
> modify the carrier state.
> 
> If the chip or phy is reset, carrier will turn back on when we get the
> link interrupt.  If there is no reset, we need to turn carrier back on
> in bnx2_netif_start().  Again, the phy_lock prevents race conditions with
> the serdes timers.
> 
> Signed-off-by: Michael Chan <mchan@broadcom.com>
> Signed-off-by: Matt Carlson <mcarlson@broadcom.com>

Applied, thanks.

^ permalink raw reply

* Re: [PATCH -next 2/2] bnx2: Update 5709 MIPS firmware and version to 2.0.15.
From: David Miller @ 2010-05-18  0:33 UTC (permalink / raw)
  To: mchan; +Cc: netdev
In-Reply-To: <1273533539-8646-2-git-send-email-mchan@broadcom.com>

From: "Michael Chan" <mchan@broadcom.com>
Date: Mon, 10 May 2010 16:18:59 -0700

> New firmware fixes a performance regression on small packets.
> 
> Signed-off-by: Michael Chan <mchan@broadcom.com>

Also applied, thanks!

^ permalink raw reply

* Re: [PATCH -next 1/2] bnx2: Fix register printouts during NETEV_WATCHDOG.
From: David Miller @ 2010-05-18  0:33 UTC (permalink / raw)
  To: mchan; +Cc: netdev
In-Reply-To: <1273533539-8646-1-git-send-email-mchan@broadcom.com>

From: "Michael Chan" <mchan@broadcom.com>
Date: Mon, 10 May 2010 16:18:58 -0700

> From: Eddie Wai <waie@broadcom.com>
> 
> Dump the correct MCP registers and add EMAC_RX_STATUS register during
> NETDEV_WATCHDOG for debugging.
> 
> Signed-off-by: Eddie Wai <waie@broadcom.com>
> Signed-off-by: Benjamin Li <benli@broadcom.com>
> Signed-off-by: Michael Chan <mchan@broadcom.com>

Applied.

^ permalink raw reply

* Re: [PATCH NEXT 0/7]qlcnic: bug fixes
From: David Miller @ 2010-05-18  0:31 UTC (permalink / raw)
  To: amit.salecha; +Cc: netdev, ameen.rahman
In-Reply-To: <1274095334-32362-1-git-send-email-amit.salecha@qlogic.com>

From: Amit Kumar Salecha <amit.salecha@qlogic.com>
Date: Mon, 17 May 2010 04:22:07 -0700

>   Series of 7 patches to fix minor bugs. Please apply them on
>   net-next.

All applied, thank you.


^ permalink raw reply

* Re: [PATCH net-next-2.6] rps: avoid one atomic in enqueue_to_backlog
From: David Miller @ 2010-05-18  0:22 UTC (permalink / raw)
  To: eric.dumazet; +Cc: netdev, therbert
In-Reply-To: <1273225881.2261.39.camel@edumazet-laptop>

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Fri, 07 May 2010 11:51:21 +0200

> Le vendredi 07 mai 2010 à 07:16 +0200, Eric Dumazet a écrit :
>> Le jeudi 06 mai 2010 à 22:07 -0700, David Miller a écrit :
>> 
>> > Looks great, applied, thanks Eric.
>> 
>> Thanks, I have a followup to avoid one atomic in enqueue phase too ;)
>> 
> 
> [PATCH net-next-2.6] rps: avoid one atomic in enqueue_to_backlog
> 
> If CONFIG_SMP=y, then we own a queue spinlock, we can avoid the atomic
> test_and_set_bit() from napi_schedule_prep().
> 
> We now have same number of atomic ops per netif_rx() calls than with
> pre-RPS kernel.
> 
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>

Also applied, thanks Eric.

^ permalink raw reply

* Re: [PATCH V4 0/4] net: relax dst refcnt for net-next-2.6
From: David Miller @ 2010-05-18  0:22 UTC (permalink / raw)
  To: eric.dumazet; +Cc: netdev
In-Reply-To: <1273525716.2590.313.camel@edumazet-laptop>


All applied, thanks Eric.

I made sure to use the updated version of patch 1/4

^ permalink raw reply

* Re: [PATCH 9/9] netdev: bfin_mac: check for mii_bus platform data
From: David Miller @ 2010-05-18  0:22 UTC (permalink / raw)
  To: vapier; +Cc: netdev, uclinux-dist-devel, sonic.zhang
In-Reply-To: <1273505954-32588-9-git-send-email-vapier@gentoo.org>

From: Mike Frysinger <vapier@gentoo.org>
Date: Mon, 10 May 2010 11:39:14 -0400

> From: Sonic Zhang <sonic.zhang@analog.com>
> 
> If the platform data for the mii_bus is missing, gracefully error out
> rather than deference NULL pointers.
> 
> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>

Applied.

^ permalink raw reply

* Re: [PATCH 8/9] netdev: bfin_mac: handle timeouts with the MDIO registers gracefully
From: David Miller @ 2010-05-18  0:22 UTC (permalink / raw)
  To: vapier; +Cc: netdev, uclinux-dist-devel
In-Reply-To: <1273505954-32588-8-git-send-email-vapier@gentoo.org>

From: Mike Frysinger <vapier@gentoo.org>
Date: Mon, 10 May 2010 11:39:13 -0400

> Have the low level MDIO functions pass back up timeout information so we
> don't waste time polling them multiple times when there is a problem, and
> so we don't let higher layers think the device is available when it isn't.
> 
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>

Applied.

^ permalink raw reply

* Re: [PATCH 7/9] netdev: bfin_mac: use promiscuous flag for promiscuous mode
From: David Miller @ 2010-05-18  0:22 UTC (permalink / raw)
  To: vapier; +Cc: netdev, uclinux-dist-devel, sonic.zhang
In-Reply-To: <1273505954-32588-7-git-send-email-vapier@gentoo.org>

From: Mike Frysinger <vapier@gentoo.org>
Date: Mon, 10 May 2010 11:39:12 -0400

> From: Sonic Zhang <sonic.zhang@analog.com>
> 
> Rather than using the Receive All Frames (RAF) bit to enable promiscuous
> mode, use the Promiscuous (PR) bit.  This lowers overhead at runtime as
> we let the hardware process the packets that should actually be checked.
> 
> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>

Applied.

^ permalink raw reply

* Re: [PATCH 6/9] netdev: bfin_mac: add support for wake-on-lan magic packets
From: David Miller @ 2010-05-18  0:21 UTC (permalink / raw)
  To: vapier; +Cc: netdev, uclinux-dist-devel, michael.hennerich
In-Reply-To: <1273505954-32588-6-git-send-email-vapier@gentoo.org>

From: Mike Frysinger <vapier@gentoo.org>
Date: Mon, 10 May 2010 11:39:11 -0400

> From: Michael Hennerich <michael.hennerich@analog.com>
> 
> Note that WOL works only in PM Suspend Standby Mode (Sleep Mode).
> 
> Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>

Applied.

^ permalink raw reply

* Re: [PATCH 4/9 v2] netdev: bfin_mac: deduce Ethernet FCS from hardware IP payload checksum
From: David Miller @ 2010-05-18  0:21 UTC (permalink / raw)
  To: vapier-aBrp7R+bbdUdnm+yROfE0A
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA, jon.kowal-obo422lQt0aqq+TXWfNVuQ,
	uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b
In-Reply-To: <1273505954-32588-4-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>

From: Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
Date: Mon, 10 May 2010 11:39:09 -0400

> From: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
> 
> IP checksum is based on 16-bit one's complement algorithm, so to deduce a
> value from checksum is equal to add its complement.
> 
> Unfortunately, the Blackfin on-chip MAC checksum logic only works when the
> IP packet has a header length of 20 bytes.  This is true for most IPv4
> packets, but not for IPv6 packets or IPv4 packets which use header options.
> So only use the hardware checksum when appropriate.
> 
> Signed-off-by: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
> Signed-off-by: Jon Kowal <jon.kowal-obo422lQt0aqq+TXWfNVuQ@public.gmane.org>
> Signed-off-by: Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>

Applied.

^ permalink raw reply

* Re: [PATCH 5/9] netdev: bfin_mac: clear RXCKS if hardware generated checksum is not enabled
From: David Miller @ 2010-05-18  0:21 UTC (permalink / raw)
  To: vapier; +Cc: netdev, uclinux-dist-devel, sonic.zhang
In-Reply-To: <1273505954-32588-5-git-send-email-vapier@gentoo.org>

From: Mike Frysinger <vapier@gentoo.org>
Date: Mon, 10 May 2010 11:39:10 -0400

> From: Sonic Zhang <sonic.zhang@analog.com>
> 
> Otherwise we might be get a setting mismatch from a previous module or
> bootloader and what the driver currently expects.
> 
> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>

Applied.

^ permalink raw reply

* Re: [PATCH 3/9] netdev: bfin_mac: invalid data cache only once for each new rx skb buffer
From: David Miller @ 2010-05-18  0:21 UTC (permalink / raw)
  To: vapier; +Cc: netdev, uclinux-dist-devel, sonic.zhang
In-Reply-To: <1273505954-32588-3-git-send-email-vapier@gentoo.org>

From: Mike Frysinger <vapier@gentoo.org>
Date: Mon, 10 May 2010 11:39:08 -0400

> From: Sonic Zhang <sonic.zhang@analog.com>
> 
> The skb buffer isn't actually used until we finish transferring and pass
> it up to higher layers, so only invalidate the range once before we start
> receiving actual data.  This also avoids the problem with data invalidating
> on Blackfin systems -- there is no invalidate-only, just invalidate+flush.
> So when running in writeback mode, there is the small (but not uncommon)
> possibility of the flush overwriting valid DMA-ed data from the cache.
> 
> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>

Applied.

^ permalink raw reply

* Re: [PATCH 2/9] netdev: bfin_mac: handler RX status errors
From: David Miller @ 2010-05-18  0:21 UTC (permalink / raw)
  To: vapier; +Cc: netdev, uclinux-dist-devel, pmeerw, graf.yang
In-Reply-To: <1273505954-32588-2-git-send-email-vapier@gentoo.org>

From: Mike Frysinger <vapier@gentoo.org>
Date: Mon, 10 May 2010 11:39:07 -0400

> From: Peter Meerwald <pmeerw@pmeerw.net>
> 
> Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
> Signed-off-by: Graf Yang <graf.yang@analog.com>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>

Applied.

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox