Netdev List
 help / color / mirror / Atom feed
* [PATCH net-next 0/6] netem patches
From: Stephen Hemminger @ 2011-02-23 23:04 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev

These have been resting in a moldy place for far to long.
The most important is the integration of a better packet
loss model for netem


^ permalink raw reply

* [PATCH net-next 2/6] netem: use vmalloc for distribution table
From: Stephen Hemminger @ 2011-02-23 23:04 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev
In-Reply-To: <20110223230416.532009518@vyatta.com>

[-- Attachment #1: netem-vmalloc.patch --]
[-- Type: text/plain, Size: 1760 bytes --]

The netem probability table can be large (up to 64K bytes)
which may be too large to allocate in one contiguous chunk.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>

--- a/net/sched/sch_netem.c	2011-02-23 14:43:27.000000000 -0800
+++ b/net/sched/sch_netem.c	2011-02-23 14:49:07.228646202 -0800
@@ -308,6 +308,16 @@ static void netem_reset(struct Qdisc *sc
 	qdisc_watchdog_cancel(&q->watchdog);
 }
 
+static void dist_free(struct disttable *d)
+{
+	if (d) {
+		if (is_vmalloc_addr(d))
+			vfree(d);
+		else
+			kfree(d);
+	}
+}
+
 /*
  * Distribution data is a variable size payload containing
  * signed 16 bit values.
@@ -315,16 +325,20 @@ static void netem_reset(struct Qdisc *sc
 static int get_dist_table(struct Qdisc *sch, const struct nlattr *attr)
 {
 	struct netem_sched_data *q = qdisc_priv(sch);
-	unsigned long n = nla_len(attr)/sizeof(__s16);
+	size_t n = nla_len(attr)/sizeof(__s16);
 	const __s16 *data = nla_data(attr);
 	spinlock_t *root_lock;
 	struct disttable *d;
 	int i;
+	size_t s;
 
 	if (n > 65536)
 		return -EINVAL;
 
-	d = kmalloc(sizeof(*d) + n*sizeof(d->table[0]), GFP_KERNEL);
+	s = sizeof(struct disttable) + n * sizeof(s16);
+	d = kmalloc(s, GFP_KERNEL);
+	if (!d)
+		d = vmalloc(s);
 	if (!d)
 		return -ENOMEM;
 
@@ -335,7 +349,7 @@ static int get_dist_table(struct Qdisc *
 	root_lock = qdisc_root_sleeping_lock(sch);
 
 	spin_lock_bh(root_lock);
-	kfree(q->delay_dist);
+	dist_free(q->delay_dist);
 	q->delay_dist = d;
 	spin_unlock_bh(root_lock);
 	return 0;
@@ -556,7 +570,7 @@ static void netem_destroy(struct Qdisc *
 
 	qdisc_watchdog_cancel(&q->watchdog);
 	qdisc_destroy(q->qdisc);
-	kfree(q->delay_dist);
+	dist_free(q->delay_dist);
 }
 
 static int netem_dump(struct Qdisc *sch, struct sk_buff *skb)



^ permalink raw reply

* [PATCH net-next 1/6] [PATCH 5/9] netem: cleanup dump code
From: Stephen Hemminger @ 2011-02-23 23:04 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev
In-Reply-To: <20110223230416.532009518@vyatta.com>

[-- Attachment #1: netem-dump.patch --]
[-- Type: text/plain, Size: 1115 bytes --]

Use nla_put_nested to update netlink attribute value.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>

---
 net/sched/sch_netem.c |    9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

--- a/net/sched/sch_netem.c	2011-02-23 14:43:09.114302606 -0800
+++ b/net/sched/sch_netem.c	2011-02-23 14:43:27.598650361 -0800
@@ -562,8 +562,7 @@ static void netem_destroy(struct Qdisc *
 static int netem_dump(struct Qdisc *sch, struct sk_buff *skb)
 {
 	const struct netem_sched_data *q = qdisc_priv(sch);
-	unsigned char *b = skb_tail_pointer(skb);
-	struct nlattr *nla = (struct nlattr *) b;
+	struct nlattr *nla = (struct nlattr *) skb_tail_pointer(skb);
 	struct tc_netem_qopt qopt;
 	struct tc_netem_corr cor;
 	struct tc_netem_reorder reorder;
@@ -590,12 +589,10 @@ static int netem_dump(struct Qdisc *sch,
 	corrupt.correlation = q->corrupt_cor.rho;
 	NLA_PUT(skb, TCA_NETEM_CORRUPT, sizeof(corrupt), &corrupt);
 
-	nla->nla_len = skb_tail_pointer(skb) - b;
-
-	return skb->len;
+	return nla_nest_end(skb, nla);
 
 nla_put_failure:
-	nlmsg_trim(skb, b);
+	nlmsg_trim(skb, nla);
 	return -1;
 }
 



^ permalink raw reply

* [PATCH net-next 3/6] netem: define NETEM_DIST_MAX
From: Stephen Hemminger @ 2011-02-23 23:04 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev
In-Reply-To: <20110223230416.532009518@vyatta.com>

[-- Attachment #1: netem-maxsize.patch --]
[-- Type: text/plain, Size: 930 bytes --]

Rather than magic constant in code, expose the maximum size of
packet distribution table in API. In iproute2, q_netem defines
MAX_DIST as 16K already.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>

---
 include/linux/pkt_sched.h |    1 +
 net/sched/sch_netem.c     |    2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

--- a/include/linux/pkt_sched.h	2011-02-23 14:43:08.838297372 -0800
+++ b/include/linux/pkt_sched.h	2011-02-23 14:50:10.329760558 -0800
@@ -495,6 +495,7 @@ struct tc_netem_corrupt {
 };
 
 #define NETEM_DIST_SCALE	8192
+#define NETEM_DIST_MAX		16384
 
 /* DRR */
 
--- a/net/sched/sch_netem.c	2011-02-23 14:50:09.445745344 -0800
+++ b/net/sched/sch_netem.c	2011-02-23 14:50:10.329760558 -0800
@@ -332,7 +332,7 @@ static int get_dist_table(struct Qdisc *
 	int i;
 	size_t s;
 
-	if (n > 65536)
+	if (n > NETEM_DIST_MAX)
 		return -EINVAL;
 
 	s = sizeof(struct disttable) + n * sizeof(s16);



^ permalink raw reply

* Re: pull request: r8169 driver fixes
From: David Miller @ 2011-02-23 23:05 UTC (permalink / raw)
  To: romieu; +Cc: netdev, hayeswang, shemminger
In-Reply-To: <20110223225357.GA12821@electric-eye.fr.zoreil.com>

From: Francois Romieu <romieu@fr.zoreil.com>
Date: Wed, 23 Feb 2011 23:53:57 +0100

> Please pull from branch 'r8169-davem' in repository
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/romieu/netdev-2.6.git r8169-davem
> 
> to get the changes below.

Pulled, thanks a lot.

^ permalink raw reply

* Re: [v3 RFC PATCH 0/4] Implement multiqueue virtio-net
From: Simon Horman @ 2011-02-23 22:59 UTC (permalink / raw)
  To: Krishna Kumar2
  Cc: anthony, arnd, avi, davem, eric.dumazet, kvm, mst, netdev, rusty
In-Reply-To: <OFAAA32513.A5D0FB9F-ON65257840.001ACE50-65257840.001D5B76@in.ibm.com>

On Wed, Feb 23, 2011 at 10:52:09AM +0530, Krishna Kumar2 wrote:
> Simon Horman <horms@verge.net.au> wrote on 02/22/2011 01:17:09 PM:
> 
> Hi Simon,
> 
> 
> > I have a few questions about the results below:
> >
> > 1. Are the (%) comparisons between non-mq and mq virtio?
> 
> Yes - mainline kernel with transmit-only MQ patch.
> 
> > 2. Was UDP or TCP used?
> 
> TCP. I had done some initial testing on UDP, but don't have
> the results now as it is really old. But I will be running
> it again.
> 
> > 3. What was the transmit size (-m option to netperf)?
> 
> I didn't use the -m option, so it defaults to 16K. The
> script does:
> 
> netperf -t TCP_STREAM -c -C -l 60 -H $SERVER
> 
> > Also, I'm interested to know what the status of these patches is.
> > Are you planing a fresh series?
> 
> Yes. Michael Tsirkin had wanted to see how the MQ RX patch
> would look like, so I was in the process of getting the two
> working together. The patch is ready and is being tested.
> Should I send a RFC patch at this time?
> 
> The TX-only patch helped the guest TX path but didn't help
> host->guest much (as tested using TCP_MAERTS from the guest).
> But with the TX+RX patch, both directions are getting
> improvements. Remote testing is still to be done.

Hi Krishna,

thanks for clarifying the test results.
I'm looking forward to the forthcoming RFC patches.

^ permalink raw reply

* pull request: r8169 driver fixes
From: Francois Romieu @ 2011-02-23 22:53 UTC (permalink / raw)
  To: davem; +Cc: netdev, Hayes Wang, Stephen Hemminger

Please pull from branch 'r8169-davem' in repository

git://git.kernel.org/pub/scm/linux/kernel/git/romieu/netdev-2.6.git r8169-davem

to get the changes below.

Short pktgen regression test (45M 64 bytes packets incoming + ping -f -q ...
outgoing). No crash, link ok, system responsive with :
- RTL_GIGA_MAC_VER_09 (RTL8102E-VB-GR)
- RTL_GIGA_MAC_VER_09 (RTL8103E-GR)
- RTL_GIGA_MAC_VER_12
- RTL_GIGA_MAC_VER_25 (RTL8168D-GR)
- RTL_GIGA_MAC_VER_26 (RTL8111D-VB-GR)
  It does not crash but it resets a lot and slows the emitter.

RTL_GIGA_MAC_VER_06 does not recover the link very well when stressed but
it is unrelated.

Distance from 'davem' (d3bd1b4c89cceca42211cd5bd30508b903267229)
-----------------------------------------------------------------

5d2e19572a66be1e349faba289b7bd049b85bc98
d24e9aafe5d5dfdf6d114b29e67f8afd5fae5ef0
fac5b3caa1f5bc07ecfb4f5ce98f8112638dc8fb

Diffstat
--------

 drivers/net/r8169.c |   42 +++++++++++++++++++++++-------------------
 1 files changed, 23 insertions(+), 19 deletions(-)

Shortlog
--------

Hayes Wang (3):
      r8169: fix incorrect args to oob notify.
      r8169: correct settings of rtl8102e.
      r8169: fix RTL8168DP power off issue.

Patch
-----

diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index 469ab0b..ef2133b 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -617,8 +617,9 @@ static void ocp_write(struct rtl8169_private *tp, u8 mask, u16 reg, u32 data)
 	}
 }
 
-static void rtl8168_oob_notify(void __iomem *ioaddr, u8 cmd)
+static void rtl8168_oob_notify(struct rtl8169_private *tp, u8 cmd)
 {
+	void __iomem *ioaddr = tp->mmio_addr;
 	int i;
 
 	RTL_W8(ERIDR, cmd);
@@ -630,7 +631,7 @@ static void rtl8168_oob_notify(void __iomem *ioaddr, u8 cmd)
 			break;
 	}
 
-	ocp_write(ioaddr, 0x1, 0x30, 0x00000001);
+	ocp_write(tp, 0x1, 0x30, 0x00000001);
 }
 
 #define OOB_CMD_RESET		0x00
@@ -2868,8 +2869,11 @@ static void r8168_pll_power_down(struct rtl8169_private *tp)
 {
 	void __iomem *ioaddr = tp->mmio_addr;
 
-	if (tp->mac_version == RTL_GIGA_MAC_VER_27)
+	if (((tp->mac_version == RTL_GIGA_MAC_VER_27) ||
+	     (tp->mac_version == RTL_GIGA_MAC_VER_28)) &&
+	    (ocp_read(tp, 0x0f, 0x0010) & 0x00008000)) {
 		return;
+	}
 
 	if (((tp->mac_version == RTL_GIGA_MAC_VER_23) ||
 	     (tp->mac_version == RTL_GIGA_MAC_VER_24)) &&
@@ -2891,6 +2895,8 @@ static void r8168_pll_power_down(struct rtl8169_private *tp)
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_25:
 	case RTL_GIGA_MAC_VER_26:
+	case RTL_GIGA_MAC_VER_27:
+	case RTL_GIGA_MAC_VER_28:
 		RTL_W8(PMCH, RTL_R8(PMCH) & ~0x80);
 		break;
 	}
@@ -2900,12 +2906,17 @@ static void r8168_pll_power_up(struct rtl8169_private *tp)
 {
 	void __iomem *ioaddr = tp->mmio_addr;
 
-	if (tp->mac_version == RTL_GIGA_MAC_VER_27)
+	if (((tp->mac_version == RTL_GIGA_MAC_VER_27) ||
+	     (tp->mac_version == RTL_GIGA_MAC_VER_28)) &&
+	    (ocp_read(tp, 0x0f, 0x0010) & 0x00008000)) {
 		return;
+	}
 
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_25:
 	case RTL_GIGA_MAC_VER_26:
+	case RTL_GIGA_MAC_VER_27:
+	case RTL_GIGA_MAC_VER_28:
 		RTL_W8(PMCH, RTL_R8(PMCH) | 0x80);
 		break;
 	}
@@ -3042,7 +3053,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 		goto err_out_mwi_2;
 	}
 
-	tp->cp_cmd = PCIMulRW | RxChkSum;
+	tp->cp_cmd = RxChkSum;
 
 	if ((sizeof(dma_addr_t) > 4) &&
 	    !pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) && use_dac) {
@@ -3318,7 +3329,8 @@ static void rtl8169_hw_reset(struct rtl8169_private *tp)
 	/* Disable interrupts */
 	rtl8169_irq_mask_and_ack(ioaddr);
 
-	if (tp->mac_version == RTL_GIGA_MAC_VER_28) {
+	if (tp->mac_version == RTL_GIGA_MAC_VER_27 ||
+	    tp->mac_version == RTL_GIGA_MAC_VER_28) {
 		while (RTL_R8(TxPoll) & NPQ)
 			udelay(20);
 
@@ -3847,8 +3859,7 @@ static void rtl_hw_start_8168(struct net_device *dev)
 	Cxpl_dbg_sel | \
 	ASF | \
 	PktCntrDisable | \
-	PCIDAC | \
-	PCIMulRW)
+	Mac_dbgo_sel)
 
 static void rtl_hw_start_8102e_1(void __iomem *ioaddr, struct pci_dev *pdev)
 {
@@ -3878,8 +3889,6 @@ static void rtl_hw_start_8102e_1(void __iomem *ioaddr, struct pci_dev *pdev)
 	if ((cfg1 & LEDS0) && (cfg1 & LEDS1))
 		RTL_W8(Config1, cfg1 & ~LEDS0);
 
-	RTL_W16(CPlusCmd, RTL_R16(CPlusCmd) & ~R810X_CPCMD_QUIRK_MASK);
-
 	rtl_ephy_init(ioaddr, e_info_8102e_1, ARRAY_SIZE(e_info_8102e_1));
 }
 
@@ -3891,8 +3900,6 @@ static void rtl_hw_start_8102e_2(void __iomem *ioaddr, struct pci_dev *pdev)
 
 	RTL_W8(Config1, MEMMAP | IOMAP | VPD | PMEnable);
 	RTL_W8(Config3, RTL_R8(Config3) & ~Beacon_en);
-
-	RTL_W16(CPlusCmd, RTL_R16(CPlusCmd) & ~R810X_CPCMD_QUIRK_MASK);
 }
 
 static void rtl_hw_start_8102e_3(void __iomem *ioaddr, struct pci_dev *pdev)
@@ -3918,6 +3925,8 @@ static void rtl_hw_start_8101(struct net_device *dev)
 		}
 	}
 
+	RTL_W8(Cfg9346, Cfg9346_Unlock);
+
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_07:
 		rtl_hw_start_8102e_1(ioaddr, pdev);
@@ -3932,14 +3941,13 @@ static void rtl_hw_start_8101(struct net_device *dev)
 		break;
 	}
 
-	RTL_W8(Cfg9346, Cfg9346_Unlock);
+	RTL_W8(Cfg9346, Cfg9346_Lock);
 
 	RTL_W8(MaxTxPacketSize, TxPacketMax);
 
 	rtl_set_rx_max_size(ioaddr, rx_buf_sz);
 
-	tp->cp_cmd |= rtl_rw_cpluscmd(ioaddr) | PCIMulRW;
-
+	tp->cp_cmd &= ~R810X_CPCMD_QUIRK_MASK;
 	RTL_W16(CPlusCmd, tp->cp_cmd);
 
 	RTL_W16(IntrMitigate, 0x0000);
@@ -3949,14 +3957,10 @@ static void rtl_hw_start_8101(struct net_device *dev)
 	RTL_W8(ChipCmd, CmdTxEnb | CmdRxEnb);
 	rtl_set_rx_tx_config_registers(tp);
 
-	RTL_W8(Cfg9346, Cfg9346_Lock);
-
 	RTL_R8(IntrMask);
 
 	rtl_set_rx_mode(dev);
 
-	RTL_W8(ChipCmd, CmdTxEnb | CmdRxEnb);
-
 	RTL_W16(MultiIntr, RTL_R16(MultiIntr) & 0xf000);
 
 	RTL_W16(IntrMask, tp->intr_event);
-- 
Ueimor

^ permalink raw reply related

* Re: [PATCH v2] ipvs: unify the formula to estimate the overhead of processing connections
From: Simon Horman @ 2011-02-23 22:46 UTC (permalink / raw)
  To: Wensong Zhang
  Cc: Changli Gao, David S. Miller, Patrick McHardy, Julian Anastasov,
	netdev, lvs-devel, netfilter-devel
In-Reply-To: <AANLkTini6JkOQenO+bzF3AbzePPe1vMtMK_5pqfLifzz@mail.gmail.com>

Thanks, I will send a pull request to Patrick.

On Wed, Feb 23, 2011 at 09:56:54AM +0800, Wensong Zhang wrote:
> Sure, I am ok with this patch. Thanks!
> 
> On Tue, Feb 22, 2011 at 1:56 PM, Simon Horman <horms@verge.net.au> wrote:
> > On Sat, Feb 19, 2011 at 05:32:28PM +0800, Changli Gao wrote:
> >> lc and wlc use the same formula, but lblc and lblcr use another one. There
> >> is no reason for using two different formulas for the lc variants.
> >>
> >> The formula used by lc is used by all the lc variants in this patch.
> >
> > Wensong, are you ok with this version of the patch?
> >
> >>
> >> Signed-off-by: Changli Gao <xiaosuo@gmail.com>
> >> ---
> >> v2: use ip_vs_dest_conn_overhead() instead.
> >>  include/net/ip_vs.h              |   14 ++++++++++++++
> >>  net/netfilter/ipvs/ip_vs_lblc.c  |   13 +++----------
> >>  net/netfilter/ipvs/ip_vs_lblcr.c |   25 +++++++------------------
> >>  net/netfilter/ipvs/ip_vs_lc.c    |   18 +-----------------
> >>  net/netfilter/ipvs/ip_vs_wlc.c   |   20 ++------------------
> >>  5 files changed, 27 insertions(+), 63 deletions(-)
> >> diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
> >> index 5d75fea..e80ffb7 100644
> >> --- a/include/net/ip_vs.h
> >> +++ b/include/net/ip_vs.h
> >> @@ -1241,6 +1241,20 @@ static inline void ip_vs_conn_drop_conntrack(struct ip_vs_conn *cp)
> >>  /* CONFIG_IP_VS_NFCT */
> >>  #endif
> >>
> >> +static inline unsigned int
> >> +ip_vs_dest_conn_overhead(struct ip_vs_dest *dest)
> >> +{
> >> +     /*
> >> +      * We think the overhead of processing active connections is 256
> >> +      * times higher than that of inactive connections in average. (This
> >> +      * 256 times might not be accurate, we will change it later) We
> >> +      * use the following formula to estimate the overhead now:
> >> +      *                dest->activeconns*256 + dest->inactconns
> >> +      */
> >> +     return (atomic_read(&dest->activeconns) << 8) +
> >> +             atomic_read(&dest->inactconns);
> >> +}
> >> +
> >>  #endif /* __KERNEL__ */
> >>
> >>  #endif       /* _NET_IP_VS_H */
> >> diff --git a/net/netfilter/ipvs/ip_vs_lblc.c b/net/netfilter/ipvs/ip_vs_lblc.c
> >> index 00b5ffa..58ae403 100644
> >> --- a/net/netfilter/ipvs/ip_vs_lblc.c
> >> +++ b/net/netfilter/ipvs/ip_vs_lblc.c
> >> @@ -389,12 +389,7 @@ __ip_vs_lblc_schedule(struct ip_vs_service *svc)
> >>       int loh, doh;
> >>
> >>       /*
> >> -      * We think the overhead of processing active connections is fifty
> >> -      * times higher than that of inactive connections in average. (This
> >> -      * fifty times might not be accurate, we will change it later.) We
> >> -      * use the following formula to estimate the overhead:
> >> -      *                dest->activeconns*50 + dest->inactconns
> >> -      * and the load:
> >> +      * We use the following formula to estimate the load:
> >>        *                (dest overhead) / dest->weight
> >>        *
> >>        * Remember -- no floats in kernel mode!!!
> >> @@ -410,8 +405,7 @@ __ip_vs_lblc_schedule(struct ip_vs_service *svc)
> >>                       continue;
> >>               if (atomic_read(&dest->weight) > 0) {
> >>                       least = dest;
> >> -                     loh = atomic_read(&least->activeconns) * 50
> >> -                             + atomic_read(&least->inactconns);
> >> +                     loh = ip_vs_dest_conn_overhead(least);
> >>                       goto nextstage;
> >>               }
> >>       }
> >> @@ -425,8 +419,7 @@ __ip_vs_lblc_schedule(struct ip_vs_service *svc)
> >>               if (dest->flags & IP_VS_DEST_F_OVERLOAD)
> >>                       continue;
> >>
> >> -             doh = atomic_read(&dest->activeconns) * 50
> >> -                     + atomic_read(&dest->inactconns);
> >> +             doh = ip_vs_dest_conn_overhead(dest);
> >>               if (loh * atomic_read(&dest->weight) >
> >>                   doh * atomic_read(&least->weight)) {
> >>                       least = dest;
> >> diff --git a/net/netfilter/ipvs/ip_vs_lblcr.c b/net/netfilter/ipvs/ip_vs_lblcr.c
> >> index bfa25f1..2ddefe8 100644
> >> --- a/net/netfilter/ipvs/ip_vs_lblcr.c
> >> +++ b/net/netfilter/ipvs/ip_vs_lblcr.c
> >> @@ -178,8 +178,7 @@ static inline struct ip_vs_dest *ip_vs_dest_set_min(struct ip_vs_dest_set *set)
> >>
> >>               if ((atomic_read(&least->weight) > 0)
> >>                   && (least->flags & IP_VS_DEST_F_AVAILABLE)) {
> >> -                     loh = atomic_read(&least->activeconns) * 50
> >> -                             + atomic_read(&least->inactconns);
> >> +                     loh = ip_vs_dest_conn_overhead(least);
> >>                       goto nextstage;
> >>               }
> >>       }
> >> @@ -192,8 +191,7 @@ static inline struct ip_vs_dest *ip_vs_dest_set_min(struct ip_vs_dest_set *set)
> >>               if (dest->flags & IP_VS_DEST_F_OVERLOAD)
> >>                       continue;
> >>
> >> -             doh = atomic_read(&dest->activeconns) * 50
> >> -                     + atomic_read(&dest->inactconns);
> >> +             doh = ip_vs_dest_conn_overhead(dest);
> >>               if ((loh * atomic_read(&dest->weight) >
> >>                    doh * atomic_read(&least->weight))
> >>                   && (dest->flags & IP_VS_DEST_F_AVAILABLE)) {
> >> @@ -228,8 +226,7 @@ static inline struct ip_vs_dest *ip_vs_dest_set_max(struct ip_vs_dest_set *set)
> >>       list_for_each_entry(e, &set->list, list) {
> >>               most = e->dest;
> >>               if (atomic_read(&most->weight) > 0) {
> >> -                     moh = atomic_read(&most->activeconns) * 50
> >> -                             + atomic_read(&most->inactconns);
> >> +                     moh = ip_vs_dest_conn_overhead(most);
> >>                       goto nextstage;
> >>               }
> >>       }
> >> @@ -239,8 +236,7 @@ static inline struct ip_vs_dest *ip_vs_dest_set_max(struct ip_vs_dest_set *set)
> >>    nextstage:
> >>       list_for_each_entry(e, &set->list, list) {
> >>               dest = e->dest;
> >> -             doh = atomic_read(&dest->activeconns) * 50
> >> -                     + atomic_read(&dest->inactconns);
> >> +             doh = ip_vs_dest_conn_overhead(dest);
> >>               /* moh/mw < doh/dw ==> moh*dw < doh*mw, where mw,dw>0 */
> >>               if ((moh * atomic_read(&dest->weight) <
> >>                    doh * atomic_read(&most->weight))
> >> @@ -563,12 +559,7 @@ __ip_vs_lblcr_schedule(struct ip_vs_service *svc)
> >>       int loh, doh;
> >>
> >>       /*
> >> -      * We think the overhead of processing active connections is fifty
> >> -      * times higher than that of inactive connections in average. (This
> >> -      * fifty times might not be accurate, we will change it later.) We
> >> -      * use the following formula to estimate the overhead:
> >> -      *                dest->activeconns*50 + dest->inactconns
> >> -      * and the load:
> >> +      * We use the following formula to estimate the load:
> >>        *                (dest overhead) / dest->weight
> >>        *
> >>        * Remember -- no floats in kernel mode!!!
> >> @@ -585,8 +576,7 @@ __ip_vs_lblcr_schedule(struct ip_vs_service *svc)
> >>
> >>               if (atomic_read(&dest->weight) > 0) {
> >>                       least = dest;
> >> -                     loh = atomic_read(&least->activeconns) * 50
> >> -                             + atomic_read(&least->inactconns);
> >> +                     loh = ip_vs_dest_conn_overhead(least);
> >>                       goto nextstage;
> >>               }
> >>       }
> >> @@ -600,8 +590,7 @@ __ip_vs_lblcr_schedule(struct ip_vs_service *svc)
> >>               if (dest->flags & IP_VS_DEST_F_OVERLOAD)
> >>                       continue;
> >>
> >> -             doh = atomic_read(&dest->activeconns) * 50
> >> -                     + atomic_read(&dest->inactconns);
> >> +             doh = ip_vs_dest_conn_overhead(dest);
> >>               if (loh * atomic_read(&dest->weight) >
> >>                   doh * atomic_read(&least->weight)) {
> >>                       least = dest;
> >> diff --git a/net/netfilter/ipvs/ip_vs_lc.c b/net/netfilter/ipvs/ip_vs_lc.c
> >> index 4f69db1..160cb80 100644
> >> --- a/net/netfilter/ipvs/ip_vs_lc.c
> >> +++ b/net/netfilter/ipvs/ip_vs_lc.c
> >> @@ -22,22 +22,6 @@
> >>
> >>  #include <net/ip_vs.h>
> >>
> >> -
> >> -static inline unsigned int
> >> -ip_vs_lc_dest_overhead(struct ip_vs_dest *dest)
> >> -{
> >> -     /*
> >> -      * We think the overhead of processing active connections is 256
> >> -      * times higher than that of inactive connections in average. (This
> >> -      * 256 times might not be accurate, we will change it later) We
> >> -      * use the following formula to estimate the overhead now:
> >> -      *                dest->activeconns*256 + dest->inactconns
> >> -      */
> >> -     return (atomic_read(&dest->activeconns) << 8) +
> >> -             atomic_read(&dest->inactconns);
> >> -}
> >> -
> >> -
> >>  /*
> >>   *   Least Connection scheduling
> >>   */
> >> @@ -62,7 +46,7 @@ ip_vs_lc_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
> >>               if ((dest->flags & IP_VS_DEST_F_OVERLOAD) ||
> >>                   atomic_read(&dest->weight) == 0)
> >>                       continue;
> >> -             doh = ip_vs_lc_dest_overhead(dest);
> >> +             doh = ip_vs_dest_conn_overhead(dest);
> >>               if (!least || doh < loh) {
> >>                       least = dest;
> >>                       loh = doh;
> >> diff --git a/net/netfilter/ipvs/ip_vs_wlc.c b/net/netfilter/ipvs/ip_vs_wlc.c
> >> index bbddfdb..db751f5 100644
> >> --- a/net/netfilter/ipvs/ip_vs_wlc.c
> >> +++ b/net/netfilter/ipvs/ip_vs_wlc.c
> >> @@ -27,22 +27,6 @@
> >>
> >>  #include <net/ip_vs.h>
> >>
> >> -
> >> -static inline unsigned int
> >> -ip_vs_wlc_dest_overhead(struct ip_vs_dest *dest)
> >> -{
> >> -     /*
> >> -      * We think the overhead of processing active connections is 256
> >> -      * times higher than that of inactive connections in average. (This
> >> -      * 256 times might not be accurate, we will change it later) We
> >> -      * use the following formula to estimate the overhead now:
> >> -      *                dest->activeconns*256 + dest->inactconns
> >> -      */
> >> -     return (atomic_read(&dest->activeconns) << 8) +
> >> -             atomic_read(&dest->inactconns);
> >> -}
> >> -
> >> -
> >>  /*
> >>   *   Weighted Least Connection scheduling
> >>   */
> >> @@ -71,7 +55,7 @@ ip_vs_wlc_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
> >>               if (!(dest->flags & IP_VS_DEST_F_OVERLOAD) &&
> >>                   atomic_read(&dest->weight) > 0) {
> >>                       least = dest;
> >> -                     loh = ip_vs_wlc_dest_overhead(least);
> >> +                     loh = ip_vs_dest_conn_overhead(least);
> >>                       goto nextstage;
> >>               }
> >>       }
> >> @@ -85,7 +69,7 @@ ip_vs_wlc_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
> >>       list_for_each_entry_continue(dest, &svc->destinations, n_list) {
> >>               if (dest->flags & IP_VS_DEST_F_OVERLOAD)
> >>                       continue;
> >> -             doh = ip_vs_wlc_dest_overhead(dest);
> >> +             doh = ip_vs_dest_conn_overhead(dest);
> >>               if (loh * atomic_read(&dest->weight) >
> >>                   doh * atomic_read(&least->weight)) {
> >>                       least = dest;
> >>
> >
> 
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [PATCH 1/2 net-next-2.6] r6040: fix multicast operations
From: David Miller @ 2011-02-23 22:35 UTC (permalink / raw)
  To: florian; +Cc: netdev
In-Reply-To: <201102232332.40712.florian@openwrt.org>

From: Florian Fainelli <florian@openwrt.org>
Date: Wed, 23 Feb 2011 23:32:40 +0100

> It is appropriate for kernel versions including e1d44477 (net: convert 
> multiple drivers to use netdev_for_each_mc_addr). The patch was generated from 
> a net-next-2.6 tree, thus the mention in the subject, which was certainly 
> misleading, sorry about that.

There is no disconnect between those two things, what tree a patch
applies cleanly against and what tree it is meant to be applied to.

They are always equal.

There is therefore no confusion, and it was not misleading.

^ permalink raw reply

* Re: [PATCH-v2] Added support for usb ethernet (0x0fe6, 0x9700)
From: David Miller @ 2011-02-23 22:32 UTC (permalink / raw)
  To: jacmet; +Cc: shaharh, linux-usb, linux-kernel, gregkh, netdev
In-Reply-To: <87hbbwqein.fsf@macbook.be.48ers.dk>

From: Peter Korsgaard <jacmet@sunsite.dk>
Date: Tue, 22 Feb 2011 16:23:44 +0100

>>>>>> "Shahar" == Shahar Havivi <shaharh@redhat.com> writes:
> 
>  Shahar> The device is very similar to (0x0fe6, 0x8101),
>  Shahar> And works well with dm9601 driver.
> 
>  Shahar> Signed-off-by: Shahar Havivi <shaharh@redhat.com>
> 
> Acked-by: Peter Korsgaard <jacmet@sunsite.dk>

Applied.

^ permalink raw reply

* Re: [PATCH 1/2 net-next-2.6] r6040: fix multicast operations
From: Florian Fainelli @ 2011-02-23 22:32 UTC (permalink / raw)
  To: David Miller; +Cc: netdev
In-Reply-To: <20110223.142254.59671988.davem@davemloft.net>

Hello David,

On Wednesday 23 February 2011 23:22:54 David Miller wrote:
> From: Florian Fainelli <florian@openwrt.org>
> Date: Wed, 23 Feb 2011 15:32:34 +0100
> 
> > From: Shawn Lin <shawn@dmp.com.tw>
> > 
> > The original code does not work well when the number of mulitcast
> > address to handle is greater than MCAST_MAX. It only enable promiscous
> > mode instead of multicast hash table mode, so the hash table function
> > will not be activated and all multicast frames will be recieved in this
> > condition.
> > 
> > This patch fixes the following issues with the r6040 NIC operating in
> > multicast:
> > 
> > 1) When the IFF_ALLMULTI flag is set, we should write 0xffff to the NIC
> > hash table registers to make it process multicast traffic.
> > 
> > 2) When the number of multicast address to handle is smaller than
> > MCAST_MAX, we should use the NIC multicast registers MID1_{L,M,H}.
> > 
> > 3) The hashing of the address was not correct, due to an invalid
> > substraction (15 - (crc & 0x0f)) instead of (crc & 0x0f) and an
> > incorrect crc algorithm (ether_crc_le) instead of (ether_crc).
> > 
> > 4) If necessary, we should set HASH_EN flag in MCR0 to enable multicast
> > hash table function.
> > 
> > CC: stable@kernel.org
> 
> If it's not appropriate for net-2.6, it's not appropriate for -stable
> either.
> 
> I'm applying this to net-next-2.6, as you requested, and removing the
> stable CC: tag from the commit message.

It is appropriate for kernel versions including e1d44477 (net: convert 
multiple drivers to use netdev_for_each_mc_addr). The patch was generated from 
a net-next-2.6 tree, thus the mention in the subject, which was certainly 
misleading, sorry about that.

I will submit a patch for the "older" stable kernel releases prior to that 
commit.
--
Florian

^ permalink raw reply

* Re: [PATCH] qla3xxx: add missing __iomem annotation
From: Ron Mercer @ 2011-02-23 21:47 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: David Miller, netdev@vger.kernel.org
In-Reply-To: <20110223095427.38a67186@nehalam>

On Wed, Feb 23, 2011 at 09:54:27AM -0800, Stephen Hemminger wrote:
> Add necessary annotations about pointer to io memory space
> that is checked by sparse.
> 
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
>

Thanks Stephen.  Looks good.

Acked-by: Ron Mercer <ron.mercer@qlogic.com>

^ permalink raw reply

* Re: [PATCHv2 2/2] DM9000B: Fix PHY power for network down/up
From: David Miller @ 2011-02-23 22:30 UTC (permalink / raw)
  To: henry.nestler; +Cc: netdev, akpm, linux-arm-kernel
In-Reply-To: <4D642AC6.6050101@henry.nestler.mail.gmail.com>

From: Henry Nestler <henry.nestler@gmail.com>
Date: Tue, 22 Feb 2011 22:29:42 +0100

> DM9000 revision B needs 1 ms delay after PHY power-on.
> PHY must be powered on by writing 0 into register DM9000_GPR before
> all other settings will change (see Davicom spec and example code).
> 
> Remember, that register DM9000_GPR was not changed by reset sequence.
> 
> Without this fix the FIFO is out of sync and sends wrong data after
> sequence of "ifconfig ethX down ; ifconfig ethX up".

I've applied both of your patches, thanks.

^ permalink raw reply

* Re: [PATCH] bonding: fix sparse warning
From: Jay Vosburgh @ 2011-02-23 22:29 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: David Miller, netdev
In-Reply-To: <20110223094033.0c2268b4@nehalam>

Stephen Hemminger <shemminger@vyatta.com> wrote:

>Fix use of zero where NULL expected. And wrap long line.
>
>Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>

Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>


>--- a/drivers/net/bonding/bonding.h	2011-02-23 09:33:39.493248155 -0800
>+++ b/drivers/net/bonding/bonding.h	2011-02-23 09:33:48.825356637 -0800
>@@ -265,7 +265,8 @@ struct bonding {
>  *
>  * Caller must hold bond lock for read
>  */
>-static inline struct slave *bond_get_slave_by_dev(struct bonding *bond, struct net_device *slave_dev)
>+static inline struct slave *bond_get_slave_by_dev(struct bonding *bond,
>+						  struct net_device *slave_dev)
> {
> 	struct slave *slave = NULL;
> 	int i;
>@@ -276,7 +277,7 @@ static inline struct slave *bond_get_sla
> 		}
> 	}
>
>-	return 0;
>+	return NULL;
> }
>
> static inline struct bonding *bond_get_bond_by_slave(struct slave *slave)

^ permalink raw reply

* Re: [PATCH 0/4] Fixes for unified offload configuration
From: David Miller @ 2011-02-23 22:24 UTC (permalink / raw)
  To: mirq-linux; +Cc: netdev, bhutchings
In-Reply-To: <cover.1298429033.git.mirq-linux@rere.qmqm.pl>

From: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Date: Wed, 23 Feb 2011 03:52:28 +0100 (CET)

> this series contains couple of fixes to ethtool unification work in net-next.
> 
> patches 1 and 2 (resend):
> 	fix following message at device registration:
> 	(unregistered net_device): features changed: 0x00011065 -> 0x00015065
> 
> patches 3 and 4:
> 	implement compatibility fallback in ethtool_{g,s}features for drivers
> 	not converted to new offload setting scheme.
> 
> only compile tested for now as my test box has some hardware issues lately.

All applied, thanks.

^ permalink raw reply

* Re: [PATCHv2 NEXT 0/2]qlcnic: minor fixes
From: David Miller @ 2011-02-23 22:23 UTC (permalink / raw)
  To: amit.salecha; +Cc: netdev, ameen.rahman, anirban.chakraborty
In-Reply-To: <1298467285-7201-1-git-send-email-amit.salecha@qlogic.com>

From: Amit Kumar Salecha <amit.salecha@qlogic.com>
Date: Wed, 23 Feb 2011 05:21:23 -0800

> Hi
>   Series v2 of minor fixes. Apply them on net-next.
>   Now, patch 1 doesn't change module parameters name and its properties.

Both applied, thanks.

^ permalink raw reply

* Re: [PATCH 2/2 net-next-2.6] r6040: bump to version 0.27 and date 23Feb2011
From: David Miller @ 2011-02-23 22:23 UTC (permalink / raw)
  To: florian; +Cc: netdev
In-Reply-To: <201102231532.37179.florian@openwrt.org>

From: Florian Fainelli <florian@openwrt.org>
Date: Wed, 23 Feb 2011 15:32:37 +0100

> From: Florian Fainelli <florian@openwrt.org>
> 
> Signed-off-by: Florian Fainelli <florian@openwrt.org>

Applied.

^ permalink raw reply

* Re: [PATCH 1/2 net-next-2.6] r6040: fix multicast operations
From: David Miller @ 2011-02-23 22:22 UTC (permalink / raw)
  To: florian; +Cc: netdev
In-Reply-To: <201102231532.34849.florian@openwrt.org>

From: Florian Fainelli <florian@openwrt.org>
Date: Wed, 23 Feb 2011 15:32:34 +0100

> From: Shawn Lin <shawn@dmp.com.tw>
> 
> The original code does not work well when the number of mulitcast
> address to handle is greater than MCAST_MAX. It only enable promiscous
> mode instead of multicast hash table mode, so the hash table function
> will not be activated and all multicast frames will be recieved in this
> condition.
> 
> This patch fixes the following issues with the r6040 NIC operating in
> multicast:
> 
> 1) When the IFF_ALLMULTI flag is set, we should write 0xffff to the NIC
> hash table registers to make it process multicast traffic.
> 
> 2) When the number of multicast address to handle is smaller than
> MCAST_MAX, we should use the NIC multicast registers MID1_{L,M,H}.
> 
> 3) The hashing of the address was not correct, due to an invalid
> substraction (15 - (crc & 0x0f)) instead of (crc & 0x0f) and an
> incorrect crc algorithm (ether_crc_le) instead of (ether_crc).
> 
> 4) If necessary, we should set HASH_EN flag in MCR0 to enable multicast
> hash table function.
> 
> CC: stable@kernel.org

If it's not appropriate for net-2.6, it's not appropriate for -stable
either.

I'm applying this to net-next-2.6, as you requested, and removing the
stable CC: tag from the commit message.

> Reported-by: Marc Leclerc <marc-leclerc@signaturealpha.com>
> Tested-by: Marc Leclerc <marc-leclerc@signaturealpha.com>
> Signed-off-by: Shawn Lin <shawn@dmp.com.tw>
> Signed-off-by: Albert Chen <albert.chen@rdc.com.tw>
> Signed-off-by: Florian Fainelli <florian@openwrt.org>


^ permalink raw reply

* Re: [PATCH 1/2] bonding: fix incorrect transmit queue offset
From: Jay Vosburgh @ 2011-02-23 22:19 UTC (permalink / raw)
  To: Andy Gospodarek; +Cc: netdev, Phil Oester, Ben Hutchings
In-Reply-To: <1298490169-5224-1-git-send-email-andy@greyhouse.net>

Andy Gospodarek <andy@greyhouse.net> wrote:

>Users noticed the following messages:
>
>kernel: bond0 selects TX queue 16, but real number of TX queues is 16
>
>were filling their logs when frames received from a device that
>contained 16 input queues were being forwarded out of a bonded device.
>Ben pointed out that the contents of skb->queue_mapping cannot be
>directly mapped to a transmit queue, so I went with his suggestion for a
>solution to the offset problem.
>
>The function now also warns the user to increase the default value for
>tx_queues if needed and returns a valid tx queue to dev_pick_tx.
>
>Signed-off-by: Andy Gospodarek <andy@greyhouse.net>
>Reported-by: Phil Oester <kernel@linuxace.com>
>CC: Ben Hutchings <bhutchings@solarflare.com>
>---
> drivers/net/bonding/bond_main.c |   24 +++++++++++++++++-------
> 1 files changed, 17 insertions(+), 7 deletions(-)
>
>diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
>index 77e3c6a..1512c83 100644
>--- a/drivers/net/bonding/bond_main.c
>+++ b/drivers/net/bonding/bond_main.c
>@@ -4533,15 +4533,25 @@ out:
> 	return res;
> }
>
>+/*
>+ * This helper function exists to help dev_pick_tx get the correct
>+ * destination queue.  Using a helper function skips the a call to
>+ * skb_tx_hash and will put the skbs in the queue we expect on their
>+ * way down to the bonding driver.
>+ */
> static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb)
> {
>-	/*
>-	 * This helper function exists to help dev_pick_tx get the correct
>-	 * destination queue.  Using a helper function skips the a call to
>-	 * skb_tx_hash and will put the skbs in the queue we expect on their
>-	 * way down to the bonding driver.
>-	 */
>-	return skb->queue_mapping;
>+	u16 txq = skb_rx_queue_recorded(skb) ? skb_get_rx_queue(skb) : 0;
>+
>+	while (txq >= dev->real_num_tx_queues) {
>+		/* let the user know if we do not have enough tx queues */
>+		if (net_ratelimit())
>+			pr_warning("%s selects invalid tx queue %d.  Consider"
>+				   " setting module option tx_queues > %d.",
>+				   dev->name, txq, dev->real_num_tx_queues);
>+		txq -= dev->real_num_tx_queues;

	Would this be better as:

	if (txq >= dev->real_num_tx_queues) {
		/* let the user know if we do not have enough tx queues */
		if (net_ratelimit())
			pr_warning("%s selects invalid tx queue %d.  Consider"
				   " setting module option tx_queues > %d.",
				   dev->name, txq, dev->real_num_tx_queues);
		txq %= dev->real_num_tx_queues;
	}

	I.e., use one modulus instead of a looping subtraction?  If the
queue id in the packet is substantially out of range, the loop may
interate multiple times.  Presumably you want to distribute the out of
range queue mappings (not just assign them all to the same queue id).

	-J


>+	}
>+	return txq;
> }
>
> static netdev_tx_t bond_start_xmit(struct sk_buff *skb, struct net_device *dev)
>-- 
>1.7.4
>

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

^ permalink raw reply

* Re: [PATCH] net_sched: long word align struct qdisc_skb_cb data
From: David Miller @ 2011-02-23 22:17 UTC (permalink / raw)
  To: shemminger
  Cc: eric.dumazet, kaber, Juliusz.Chroboczek, linville, netdev, andi
In-Reply-To: <20110223093001.28e1a8ef@nehalam>

From: Stephen Hemminger <shemminger@vyatta.com>
Date: Wed, 23 Feb 2011 09:30:01 -0800

> On Wed, 23 Feb 2011 18:05:07 +0100
> Eric Dumazet <eric.dumazet@gmail.com> wrote:
> 
>> Le mercredi 23 février 2011 à 17:24 +0100, Patrick McHardy a écrit :
>> > Am 23.02.2011 16:14, schrieb Eric Dumazet:
>> > > diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
>> > > index 16626a0..f40d32e 100644
>> > > --- a/include/net/sch_generic.h
>> > > +++ b/include/net/sch_generic.h
>> > > @@ -218,6 +218,7 @@ struct tcf_proto {
>> > >  
>> > >  struct qdisc_skb_cb {
>> > >  	unsigned int		pkt_len;
>> > > +	unsigned int		sfb_classid;
>> > >  	char			data[];
>> > >  };
>> > 
>> > This could be moved into a SFB specific cb, similar to what netem
>> > does.
>> 
>> Hmm... well... I want to be sure no other sch will destroy my values.
>> 
>> netem seems buggy then.
>> 
>> Probably following patch is needed ?
> 
> Yes, it was long word aligned when netem was written but
> we seem to have bit creep.

Applied to net-2.6, thanks!

^ permalink raw reply

* Re: [PATCH 0/5] sparse related patches
From: David Miller @ 2011-02-23 22:11 UTC (permalink / raw)
  To: shemminger; +Cc: netdev
In-Reply-To: <20110223190647.482444598@vyatta.com>


All applied, thanks Stephen.

^ permalink raw reply

* Re: [PATCH net-next-2.6 v4] net_sched: SFB flow scheduler
From: David Miller @ 2011-02-23 22:06 UTC (permalink / raw)
  To: eric.dumazet
  Cc: Juliusz.Chroboczek, linville, shemminger, kaber, netdev, andi
In-Reply-To: <1298494577.2898.9.camel@edumazet-laptop>

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Wed, 23 Feb 2011 21:56:17 +0100

> This is the Stochastic Fair Blue scheduler, based on work from :

Applied with the 'static' fix, thanks Eric!

^ permalink raw reply

* Re: [PATCH] connector: Convert char *name to const char *name
From: Greg KH @ 2011-02-23 21:22 UTC (permalink / raw)
  To: Evgeniy Polyakov
  Cc: Joe Perches, Javier Martinez Canillas, Greg Kroah-Hartman, devel,
	K. Y. Srinivasan, netdev
In-Reply-To: <20110220143259.GA19984@ioremap.net>

On Sun, Feb 20, 2011 at 05:32:59PM +0300, Evgeniy Polyakov wrote:
> Hi Joe.
> 
> On Sat, Feb 19, 2011 at 03:45:29PM -0800, Joe Perches (joe@perches.com) wrote:
> > Allow more const declarations.
> > 
> > Signed-off-by: Joe Perches <joe@perches.com>
> > 
> > ---
> > 
> > Better to change the declarations and uses as this argument
> > is not modified.
> 
> Looks good, thank you.
> Greg, please push it into your tree.
> 
> Acked-by: Evgeniy Polyakov <zbr@ioremap.net>

Now applied, thanks.

greg k-h

^ permalink raw reply

* Re: [PATCH net-next-2.6 v4] net_sched: SFB flow scheduler
From: David Miller @ 2011-02-23 21:30 UTC (permalink / raw)
  To: eric.dumazet
  Cc: shemminger, Juliusz.Chroboczek, linville, kaber, netdev, andi
In-Reply-To: <1298496516.2898.10.camel@edumazet-laptop>

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Wed, 23 Feb 2011 22:28:36 +0100

> Le mercredi 23 février 2011 à 13:11 -0800, Stephen Hemminger a écrit :
>> On Wed, 23 Feb 2011 21:56:17 +0100
>> Eric Dumazet <eric.dumazet@gmail.com> wrote:
>> 
>> > +struct Qdisc_ops sfb_qdisc_ops __read_mostly = {
>> 
>> Should be static?
>> 
>> 
> 
> Sure ! ;)

I can make this simple fixup when I apply the patch to net-next-2.6,
Eric you don't have to respin it just for this.

^ permalink raw reply

* Re: [PATCH net-next-2.6 v4] net_sched: SFB flow scheduler
From: Eric Dumazet @ 2011-02-23 21:28 UTC (permalink / raw)
  To: Stephen Hemminger
  Cc: David Miller, Juliusz Chroboczek, John W. Linville,
	Patrick McHardy, netdev, Andi Kleen
In-Reply-To: <20110223131158.632dc45c@nehalam>

Le mercredi 23 février 2011 à 13:11 -0800, Stephen Hemminger a écrit :
> On Wed, 23 Feb 2011 21:56:17 +0100
> Eric Dumazet <eric.dumazet@gmail.com> wrote:
> 
> > +struct Qdisc_ops sfb_qdisc_ops __read_mostly = {
> 
> Should be static?
> 
> 

Sure ! ;)



^ 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