From: Alex,Shi on
The listed benchmark using loopback mode netio and all hang in 35-rc3
testing. Yanmin and I found it is due to the commit
597a264b1a9c7e36d1728f677c66c5c1f7e3b837.
After revert this patch, all benchmarks can be recovered. Seems the
following line is the suspicious.



+ /*
+ * bonding note: skbs received on inactive slaves should only
+ * be delivered to pkt handlers that are exact matches. Also
+ * the deliver_no_wcard flag will be set. If packet handlers
+ * are sensitive to duplicate packets these skbs will need to
+ * be dropped at the handler. The vlan accel path may have
+ * already set the deliver_no_wcard flag.
+ */
null_or_orig = NULL;
orig_dev = skb->dev;
master = ACCESS_ONCE(orig_dev->master);
- if (master) {
- if (skb_bond_should_drop(skb, master))
+ if (skb->deliver_no_wcard)
+ null_or_orig = orig_dev;
+ else if (master) {
+ if (skb_bond_should_drop(skb, master)) {
+ skb->deliver_no_wcard = 1;
null_or_orig = orig_dev; /* deliver only exact
match */
- else
+ } else
skb->dev = master;
}

Thanks
Alex

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Zhang, Yanmin on
On Sun, 2010-06-13 at 14:14 +0800, Alex,Shi wrote:
> The listed benchmark using loopback mode netio and all hang in 35-rc3
> testing. Yanmin and I found it is due to the commit
> 597a264b1a9c7e36d1728f677c66c5c1f7e3b837.
All these benchmark stops at network io reading to wait for data.

>
> After revert this patch, all benchmarks can be recovered. Seems the
> following line is the suspicious.
>
>
>
> + /*
> + * bonding note: skbs received on inactive slaves should only
> + * be delivered to pkt handlers that are exact matches. Also
> + * the deliver_no_wcard flag will be set. If packet handlers
> + * are sensitive to duplicate packets these skbs will need to
> + * be dropped at the handler. The vlan accel path may have
> + * already set the deliver_no_wcard flag.
> + */
> null_or_orig = NULL;
> orig_dev = skb->dev;
> master = ACCESS_ONCE(orig_dev->master);
> - if (master) {
> - if (skb_bond_should_drop(skb, master))
> + if (skb->deliver_no_wcard)
> + null_or_orig = orig_dev;
> + else if (master) {
> + if (skb_bond_should_drop(skb, master)) {
> + skb->deliver_no_wcard = 1;
> null_or_orig = orig_dev; /* deliver only exact
> match */
> - else
> + } else
> skb->dev = master;
> }
>
> Thanks
> Alex
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo(a)vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/