* Re: [PATCH] ath6kl: use list_move_tail instead of list_del/list_add_tail
From: Kalle Valo @ 2012-09-21 16:42 UTC (permalink / raw)
To: Wei Yongjun; +Cc: linville, yongjun_wei, linux-wireless, netdev, ath6kl-devel
In-Reply-To: <CAPgLHd-6RmrLpi9FPTFhXiA+BHywGknmvNAd-KCdHaM+tn0qgQ@mail.gmail.com>
On 09/05/2012 10:07 AM, Wei Yongjun wrote:
> From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
>
> Using list_move_tail() instead of list_del() + list_add_tail().
>
> spatch with a semantic match is used to found this problem.
> (http://coccinelle.lip6.fr/)
>
> Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Thanks, applied to ath6kl.git.
Kalle
^ permalink raw reply
* Re: [RFC] tcp: use order-3 pages in tcp_sendmsg()
From: Eric Dumazet @ 2012-09-21 16:51 UTC (permalink / raw)
To: David Miller; +Cc: rick.jones2, subramanian.vijay, netdev
In-Reply-To: <20120921.122705.1344923255084267186.davem@davemloft.net>
On Fri, 2012-09-21 at 12:27 -0400, David Miller wrote:
> From: Eric Dumazet <eric.dumazet@gmail.com>
> Date: Fri, 21 Sep 2012 17:48:31 +0200
>
> > There is probably a reason why lo default MTU is 16436 ?
>
> That's what fit into L1 caches back in 1999
I see ;)
Nowadays, we even have the NETIF_F_NOCACHE_COPY flag and
__copy_from_user_nocache()
Hmm, we can not toggle this flag on loopback yet
# ethtool -K lo tx-nocache-copy on
Could not change any device features
^ permalink raw reply
* [PATCH net-next 0/3] Two new PTP Hardware Clock features
From: Richard Cochran @ 2012-09-21 17:00 UTC (permalink / raw)
To: netdev
Cc: Ben Hutchings, David Miller, Jacob Keller, Jeff Kirsher,
John Stultz, Matthew Vick
This patch series adds two new features to the PHC code.
The first two patches let a user program find out the previously
dialed frequency adjustment. This is primarily useful when restarting
a PTP service, since without this information, the presumably correct
adjustment will bias the new frequency estimation.
The third patch makes the sysfs clock name come from the 'struct
device'. This idea was recently discussed on netdev as a way of taking
the guesswork out of the naming scheme.
Thanks,
Richard
Richard Cochran (3):
ptp: remember the adjusted frequency
ptp: provide the clock's adjusted frequency
ptp: derive the device name from the parent device
drivers/net/ethernet/freescale/gianfar_ptp.c | 3 +--
drivers/net/ethernet/intel/igb/igb_ptp.c | 7 ++-----
drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | 5 ++---
drivers/net/phy/dp83640.c | 3 +--
drivers/ptp/ptp_clock.c | 13 +++++++++++--
drivers/ptp/ptp_ixp46x.c | 3 +--
drivers/ptp/ptp_pch.c | 3 +--
drivers/ptp/ptp_private.h | 2 ++
drivers/ptp/ptp_sysfs.c | 2 +-
include/linux/ptp_clock_kernel.h | 8 +++++---
10 files changed, 27 insertions(+), 22 deletions(-)
--
1.7.2.5
^ permalink raw reply
* [PATCH net-next 1/3] ptp: remember the adjusted frequency
From: Richard Cochran @ 2012-09-21 17:00 UTC (permalink / raw)
To: netdev
Cc: Ben Hutchings, David Miller, Jacob Keller, Jeff Kirsher,
John Stultz, Matthew Vick
In-Reply-To: <cover.1348245523.git.richardcochran@gmail.com>
This patch adds a field to the representation of a PTP hardware clock in
order to remember the frequency adjustment value dialed by the user.
Adding this field will let us answer queries in the manner of adjtimex
in a follow on patch.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
---
drivers/ptp/ptp_clock.c | 1 +
drivers/ptp/ptp_private.h | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
index 1e528b5..fbd7104 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
@@ -147,6 +147,7 @@ static int ptp_clock_adjtime(struct posix_clock *pc, struct timex *tx)
} else if (tx->modes & ADJ_FREQUENCY) {
err = ops->adjfreq(ops, scaled_ppm_to_ppb(tx->freq));
+ ptp->dialed_frequency = tx->freq;
}
return err;
diff --git a/drivers/ptp/ptp_private.h b/drivers/ptp/ptp_private.h
index 4d5b508..69d3207 100644
--- a/drivers/ptp/ptp_private.h
+++ b/drivers/ptp/ptp_private.h
@@ -45,6 +45,7 @@ struct ptp_clock {
dev_t devid;
int index; /* index into clocks.map */
struct pps_device *pps_source;
+ long dialed_frequency; /* remembers the frequency adjustment */
struct timestamp_event_queue tsevq; /* simple fifo for time stamps */
struct mutex tsevq_mux; /* one process at a time reading the fifo */
wait_queue_head_t tsev_wq;
--
1.7.2.5
^ permalink raw reply related
* [PATCH net-next 2/3] ptp: provide the clock's adjusted frequency
From: Richard Cochran @ 2012-09-21 17:00 UTC (permalink / raw)
To: netdev
Cc: Ben Hutchings, David Miller, Jacob Keller, Jeff Kirsher,
John Stultz, Matthew Vick
In-Reply-To: <cover.1348245523.git.richardcochran@gmail.com>
If the timex.mode field indicates a query, then we provide the value of
the current frequency adjustment.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
---
drivers/ptp/ptp_clock.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
index fbd7104..6e47450 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
@@ -148,6 +148,11 @@ static int ptp_clock_adjtime(struct posix_clock *pc, struct timex *tx)
err = ops->adjfreq(ops, scaled_ppm_to_ppb(tx->freq));
ptp->dialed_frequency = tx->freq;
+
+ } else if (tx->modes == 0) {
+
+ tx->freq = ptp->dialed_frequency;
+ err = 0;
}
return err;
--
1.7.2.5
^ permalink raw reply related
* [PATCH net-next 3/3] ptp: derive the device name from the parent device
From: Richard Cochran @ 2012-09-21 17:00 UTC (permalink / raw)
To: netdev
Cc: Ben Hutchings, David Miller, Jacob Keller, Jeff Kirsher,
John Stultz, Matthew Vick
In-Reply-To: <cover.1348245523.git.richardcochran@gmail.com>
PTP Hardware Clock device have a name that appears under sysfs that should
identify the underlying device. Instead of leaving it up to the driver to
invent a name, this patch changes the registration to automatically use
the name from the parent device.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
---
drivers/net/ethernet/freescale/gianfar_ptp.c | 3 +--
drivers/net/ethernet/intel/igb/igb_ptp.c | 7 ++-----
drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | 5 ++---
drivers/net/phy/dp83640.c | 3 +--
drivers/ptp/ptp_clock.c | 7 +++++--
drivers/ptp/ptp_ixp46x.c | 3 +--
drivers/ptp/ptp_pch.c | 3 +--
drivers/ptp/ptp_private.h | 1 +
drivers/ptp/ptp_sysfs.c | 2 +-
include/linux/ptp_clock_kernel.h | 8 +++++---
10 files changed, 20 insertions(+), 22 deletions(-)
diff --git a/drivers/net/ethernet/freescale/gianfar_ptp.c b/drivers/net/ethernet/freescale/gianfar_ptp.c
index c08e5d4..a0eaafd 100644
--- a/drivers/net/ethernet/freescale/gianfar_ptp.c
+++ b/drivers/net/ethernet/freescale/gianfar_ptp.c
@@ -408,7 +408,6 @@ static int ptp_gianfar_enable(struct ptp_clock_info *ptp,
static struct ptp_clock_info ptp_gianfar_caps = {
.owner = THIS_MODULE,
- .name = "gianfar clock",
.max_adj = 512000,
.n_alarm = N_ALARM,
.n_ext_ts = N_EXT_TS,
@@ -510,7 +509,7 @@ static int gianfar_ptp_probe(struct platform_device *dev)
spin_unlock_irqrestore(&etsects->lock, flags);
- etsects->clock = ptp_clock_register(&etsects->caps);
+ etsects->clock = ptp_clock_register(&etsects->caps, &dev->dev);
if (IS_ERR(etsects->clock)) {
err = PTR_ERR(etsects->clock);
goto no_clock;
diff --git a/drivers/net/ethernet/intel/igb/igb_ptp.c b/drivers/net/ethernet/intel/igb/igb_ptp.c
index e13ba1d..546e9e2 100644
--- a/drivers/net/ethernet/intel/igb/igb_ptp.c
+++ b/drivers/net/ethernet/intel/igb/igb_ptp.c
@@ -665,11 +665,9 @@ int igb_ptp_hwtstamp_ioctl(struct net_device *netdev,
void igb_ptp_init(struct igb_adapter *adapter)
{
struct e1000_hw *hw = &adapter->hw;
- struct net_device *netdev = adapter->netdev;
switch (hw->mac.type) {
case e1000_82576:
- snprintf(adapter->ptp_caps.name, 16, "%pm", netdev->dev_addr);
adapter->ptp_caps.owner = THIS_MODULE;
adapter->ptp_caps.max_adj = 1000000000;
adapter->ptp_caps.n_ext_ts = 0;
@@ -688,7 +686,6 @@ void igb_ptp_init(struct igb_adapter *adapter)
break;
case e1000_82580:
case e1000_i350:
- snprintf(adapter->ptp_caps.name, 16, "%pm", netdev->dev_addr);
adapter->ptp_caps.owner = THIS_MODULE;
adapter->ptp_caps.max_adj = 62499999;
adapter->ptp_caps.n_ext_ts = 0;
@@ -707,7 +704,6 @@ void igb_ptp_init(struct igb_adapter *adapter)
break;
case e1000_i210:
case e1000_i211:
- snprintf(adapter->ptp_caps.name, 16, "%pm", netdev->dev_addr);
adapter->ptp_caps.owner = THIS_MODULE;
adapter->ptp_caps.max_adj = 62499999;
adapter->ptp_caps.n_ext_ts = 0;
@@ -752,7 +748,8 @@ void igb_ptp_init(struct igb_adapter *adapter)
wr32(E1000_IMS, E1000_IMS_TS);
}
- adapter->ptp_clock = ptp_clock_register(&adapter->ptp_caps);
+ adapter->ptp_clock = ptp_clock_register(&adapter->ptp_caps,
+ &adapter->pdev->dev);
if (IS_ERR(adapter->ptp_clock)) {
adapter->ptp_clock = NULL;
dev_err(&adapter->pdev->dev, "ptp_clock_register failed\n");
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
index 3456d56..6219c91 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
@@ -917,7 +917,6 @@ void ixgbe_ptp_init(struct ixgbe_adapter *adapter)
switch (adapter->hw.mac.type) {
case ixgbe_mac_X540:
- snprintf(adapter->ptp_caps.name, 16, "%pm", netdev->dev_addr);
adapter->ptp_caps.owner = THIS_MODULE;
adapter->ptp_caps.max_adj = 250000000;
adapter->ptp_caps.n_alarm = 0;
@@ -931,7 +930,6 @@ void ixgbe_ptp_init(struct ixgbe_adapter *adapter)
adapter->ptp_caps.enable = ixgbe_ptp_enable;
break;
case ixgbe_mac_82599EB:
- snprintf(adapter->ptp_caps.name, 16, "%pm", netdev->dev_addr);
adapter->ptp_caps.owner = THIS_MODULE;
adapter->ptp_caps.max_adj = 250000000;
adapter->ptp_caps.n_alarm = 0;
@@ -960,7 +958,8 @@ void ixgbe_ptp_init(struct ixgbe_adapter *adapter)
/* (Re)start the overflow check */
adapter->flags2 |= IXGBE_FLAG2_OVERFLOW_CHECK_ENABLED;
- adapter->ptp_clock = ptp_clock_register(&adapter->ptp_caps);
+ adapter->ptp_clock = ptp_clock_register(&adapter->ptp_caps,
+ &adapter->pdev->dev);
if (IS_ERR(adapter->ptp_clock)) {
adapter->ptp_clock = NULL;
e_dev_err("ptp_clock_register failed\n");
diff --git a/drivers/net/phy/dp83640.c b/drivers/net/phy/dp83640.c
index b0da022..12a4c4c 100644
--- a/drivers/net/phy/dp83640.c
+++ b/drivers/net/phy/dp83640.c
@@ -871,7 +871,6 @@ static void dp83640_clock_init(struct dp83640_clock *clock, struct mii_bus *bus)
mutex_init(&clock->clock_lock);
INIT_LIST_HEAD(&clock->phylist);
clock->caps.owner = THIS_MODULE;
- sprintf(clock->caps.name, "dp83640 timer");
clock->caps.max_adj = 1953124;
clock->caps.n_alarm = 0;
clock->caps.n_ext_ts = N_EXT_TS;
@@ -980,7 +979,7 @@ static int dp83640_probe(struct phy_device *phydev)
if (choose_this_phy(clock, phydev)) {
clock->chosen = dp83640;
- clock->ptp_clock = ptp_clock_register(&clock->caps);
+ clock->ptp_clock = ptp_clock_register(&clock->caps, &phydev->dev);
if (IS_ERR(clock->ptp_clock)) {
err = PTR_ERR(clock->ptp_clock);
goto no_register;
diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
index 6e47450..60fa259 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
@@ -186,7 +186,8 @@ static void delete_ptp_clock(struct posix_clock *pc)
/* public interface */
-struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info)
+struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
+ struct device *parent)
{
struct ptp_clock *ptp;
int err = 0, index, major = MAJOR(ptp_devt);
@@ -219,11 +220,13 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info)
init_waitqueue_head(&ptp->tsev_wq);
/* Create a new device in our class. */
- ptp->dev = device_create(ptp_class, NULL, ptp->devid, ptp,
+ ptp->dev = device_create(ptp_class, parent, ptp->devid, ptp,
"ptp%d", ptp->index);
if (IS_ERR(ptp->dev))
goto no_device;
+ ptp->name = parent ? dev_name(parent) : dev_name(ptp->dev);
+
dev_set_drvdata(ptp->dev, ptp);
err = ptp_populate_sysfs(ptp);
diff --git a/drivers/ptp/ptp_ixp46x.c b/drivers/ptp/ptp_ixp46x.c
index e03c406..c0939b1 100644
--- a/drivers/ptp/ptp_ixp46x.c
+++ b/drivers/ptp/ptp_ixp46x.c
@@ -241,7 +241,6 @@ static int ptp_ixp_enable(struct ptp_clock_info *ptp,
static struct ptp_clock_info ptp_ixp_caps = {
.owner = THIS_MODULE,
- .name = "IXP46X timer",
.max_adj = 66666655,
.n_ext_ts = N_EXT_TS,
.pps = 0,
@@ -298,7 +297,7 @@ static int __init ptp_ixp_init(void)
ixp_clock.caps = ptp_ixp_caps;
- ixp_clock.ptp_clock = ptp_clock_register(&ixp_clock.caps);
+ ixp_clock.ptp_clock = ptp_clock_register(&ixp_clock.caps, NULL);
if (IS_ERR(ixp_clock.ptp_clock))
return PTR_ERR(ixp_clock.ptp_clock);
diff --git a/drivers/ptp/ptp_pch.c b/drivers/ptp/ptp_pch.c
index 3a9c17e..0ae0c27 100644
--- a/drivers/ptp/ptp_pch.c
+++ b/drivers/ptp/ptp_pch.c
@@ -511,7 +511,6 @@ static int ptp_pch_enable(struct ptp_clock_info *ptp,
static struct ptp_clock_info ptp_pch_caps = {
.owner = THIS_MODULE,
- .name = "PCH timer",
.max_adj = 50000000,
.n_ext_ts = N_EXT_TS,
.pps = 0,
@@ -627,7 +626,7 @@ pch_probe(struct pci_dev *pdev, const struct pci_device_id *id)
}
chip->caps = ptp_pch_caps;
- chip->ptp_clock = ptp_clock_register(&chip->caps);
+ chip->ptp_clock = ptp_clock_register(&chip->caps, &pdev->dev);
if (IS_ERR(chip->ptp_clock))
return PTR_ERR(chip->ptp_clock);
diff --git a/drivers/ptp/ptp_private.h b/drivers/ptp/ptp_private.h
index 69d3207..a3bf959 100644
--- a/drivers/ptp/ptp_private.h
+++ b/drivers/ptp/ptp_private.h
@@ -42,6 +42,7 @@ struct ptp_clock {
struct posix_clock clock;
struct device *dev;
struct ptp_clock_info *info;
+ const char *name;
dev_t devid;
int index; /* index into clocks.map */
struct pps_device *pps_source;
diff --git a/drivers/ptp/ptp_sysfs.c b/drivers/ptp/ptp_sysfs.c
index 2f93926..f3c4519 100644
--- a/drivers/ptp/ptp_sysfs.c
+++ b/drivers/ptp/ptp_sysfs.c
@@ -25,7 +25,7 @@ static ssize_t clock_name_show(struct device *dev,
struct device_attribute *attr, char *page)
{
struct ptp_clock *ptp = dev_get_drvdata(dev);
- return snprintf(page, PAGE_SIZE-1, "%s\n", ptp->info->name);
+ return snprintf(page, PAGE_SIZE-1, "%s\n", ptp->name);
}
#define PTP_SHOW_INT(name) \
diff --git a/include/linux/ptp_clock_kernel.h b/include/linux/ptp_clock_kernel.h
index 945704c..e673de0 100644
--- a/include/linux/ptp_clock_kernel.h
+++ b/include/linux/ptp_clock_kernel.h
@@ -21,6 +21,7 @@
#ifndef _PTP_CLOCK_KERNEL_H_
#define _PTP_CLOCK_KERNEL_H_
+#include <linux/device.h>
#include <linux/ptp_clock.h>
@@ -73,7 +74,6 @@ struct ptp_clock_request {
struct ptp_clock_info {
struct module *owner;
- char name[16];
s32 max_adj;
int n_alarm;
int n_ext_ts;
@@ -92,10 +92,12 @@ struct ptp_clock;
/**
* ptp_clock_register() - register a PTP hardware clock driver
*
- * @info: Structure describing the new clock.
+ * @info: Structure describing the new clock.
+ * @parent: Pointer to the parent device of the new clock.
*/
-extern struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info);
+extern struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
+ struct device *parent);
/**
* ptp_clock_unregister() - unregister a PTP hardware clock driver
--
1.7.2.5
^ permalink raw reply related
* Re: [RFC] tcp: use order-3 pages in tcp_sendmsg()
From: David Miller @ 2012-09-21 17:04 UTC (permalink / raw)
To: eric.dumazet; +Cc: rick.jones2, subramanian.vijay, netdev
In-Reply-To: <1348246281.2669.755.camel@edumazet-glaptop>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Fri, 21 Sep 2012 18:51:21 +0200
> On Fri, 2012-09-21 at 12:27 -0400, David Miller wrote:
>> From: Eric Dumazet <eric.dumazet@gmail.com>
>> Date: Fri, 21 Sep 2012 17:48:31 +0200
>>
>> > There is probably a reason why lo default MTU is 16436 ?
>>
>> That's what fit into L1 caches back in 1999
>
> I see ;)
>
> Nowadays, we even have the NETIF_F_NOCACHE_COPY flag and
> __copy_from_user_nocache()
>
> Hmm, we can not toggle this flag on loopback yet
>
> # ethtool -K lo tx-nocache-copy on
> Could not change any device features
It's a silly limitation, in net/core/dev.c:
/* Turn on no cache copy if HW is doing checksum */
if (!(dev->flags & IFF_LOOPBACK)) {
dev->hw_features |= NETIF_F_NOCACHE_COPY;
if (dev->features & NETIF_F_ALL_CSUM) {
dev->wanted_features |= NETIF_F_NOCACHE_COPY;
dev->features |= NETIF_F_NOCACHE_COPY;
}
}
Maybe this is probably better done as:
/* Turn on no cache copy if HW is doing checksum */
dev->hw_features |= NETIF_F_NOCACHE_COPY;
if (!(dev->flags & IFF_LOOPBACK)) {
if (dev->features & NETIF_F_ALL_CSUM) {
dev->wanted_features |= NETIF_F_NOCACHE_COPY;
dev->features |= NETIF_F_NOCACHE_COPY;
}
}
And then the code matches more closely the comment. :-)
^ permalink raw reply
* Re: [RFC] tcp: use order-3 pages in tcp_sendmsg()
From: Eric Dumazet @ 2012-09-21 17:11 UTC (permalink / raw)
To: David Miller; +Cc: rick.jones2, subramanian.vijay, netdev
In-Reply-To: <20120921.130440.1881102470665263512.davem@davemloft.net>
On Fri, 2012-09-21 at 13:04 -0400, David Miller wrote:
> It's a silly limitation, in net/core/dev.c:
>
> /* Turn on no cache copy if HW is doing checksum */
> if (!(dev->flags & IFF_LOOPBACK)) {
> dev->hw_features |= NETIF_F_NOCACHE_COPY;
> if (dev->features & NETIF_F_ALL_CSUM) {
> dev->wanted_features |= NETIF_F_NOCACHE_COPY;
> dev->features |= NETIF_F_NOCACHE_COPY;
> }
> }
>
> Maybe this is probably better done as:
>
> /* Turn on no cache copy if HW is doing checksum */
> dev->hw_features |= NETIF_F_NOCACHE_COPY;
> if (!(dev->flags & IFF_LOOPBACK)) {
> if (dev->features & NETIF_F_ALL_CSUM) {
> dev->wanted_features |= NETIF_F_NOCACHE_COPY;
> dev->features |= NETIF_F_NOCACHE_COPY;
> }
> }
>
> And then the code matches more closely the comment. :-)
I did a test, and for various combinations (producer/consumer on same
core or not, same cpu or not...) and performance is divided by 2
So I guess we can leave the code as is
^ permalink raw reply
* Re: [PATCH] ipv6: release referenct of ip6_null_entry's dst entry in __ip6_del_rt
From: David Miller @ 2012-09-21 17:16 UTC (permalink / raw)
To: gaofeng; +Cc: netdev
In-Reply-To: <1348118734-2967-1-git-send-email-gaofeng@cn.fujitsu.com>
From: Gao feng <gaofeng@cn.fujitsu.com>
Date: Thu, 20 Sep 2012 13:25:34 +0800
> as we hold dst_entry before we call __ip6_del_rt,
> so we should alse call dst_release not only return
> -ENOENT when the rt6_info is ip6_null_entry.
>
> and we already hold the dst entry, so I think it's
> safe to call dst_release out of the write-read lock.
>
> Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
I cannot find a code path where we can actually end up
with an ip6_null_entry here and I'd much rather declare
this condition as a bug.
Patrick McHardy added this check back in 2006:
commit 6c813a7297e3af4cd7c3458e09e9ee3d161c6830
Author: Patrick McHardy <kaber@trash.net>
Date: Sun Aug 6 22:22:47 2006 -0700
[IPV6]: Fix crash in ip6_del_rt
But the ipv6 code has changed substantially since then.
^ permalink raw reply
* Re: [PATCH net-next 3/3] ptp: derive the device name from the parent device
From: Ben Hutchings @ 2012-09-21 17:19 UTC (permalink / raw)
To: Richard Cochran
Cc: netdev, David Miller, Jacob Keller, Jeff Kirsher, John Stultz,
Matthew Vick
In-Reply-To: <9f2ed4a62d52182eeab86ad3dca7f6feeb68368a.1348245523.git.richardcochran@gmail.com>
On Fri, 2012-09-21 at 19:00 +0200, Richard Cochran wrote:
> PTP Hardware Clock device have a name that appears under sysfs that should
> identify the underlying device. Instead of leaving it up to the driver to
> invent a name, this patch changes the registration to automatically use
> the name from the parent device.
I thought you wanted the driver name and not the parent device name?
[...]
> diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
> index 6e47450..60fa259 100644
> --- a/drivers/ptp/ptp_clock.c
> +++ b/drivers/ptp/ptp_clock.c
[...]
> @@ -219,11 +220,13 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info)
> init_waitqueue_head(&ptp->tsev_wq);
>
> /* Create a new device in our class. */
> - ptp->dev = device_create(ptp_class, NULL, ptp->devid, ptp,
> + ptp->dev = device_create(ptp_class, parent, ptp->devid, ptp,
> "ptp%d", ptp->index);
> if (IS_ERR(ptp->dev))
> goto no_device;
>
> + ptp->name = parent ? dev_name(parent) : dev_name(ptp->dev);
> +
The fallback of using dev_name(ptp->dev) is a bit sad, as that's the
same name userland already has when it reads this attribute.
[...]
> diff --git a/drivers/ptp/ptp_ixp46x.c b/drivers/ptp/ptp_ixp46x.c
> index e03c406..c0939b1 100644
> --- a/drivers/ptp/ptp_ixp46x.c
> +++ b/drivers/ptp/ptp_ixp46x.c
> @@ -241,7 +241,6 @@ static int ptp_ixp_enable(struct ptp_clock_info *ptp,
>
> static struct ptp_clock_info ptp_ixp_caps = {
> .owner = THIS_MODULE,
> - .name = "IXP46X timer",
> .max_adj = 66666655,
> .n_ext_ts = N_EXT_TS,
> .pps = 0,
> @@ -298,7 +297,7 @@ static int __init ptp_ixp_init(void)
>
> ixp_clock.caps = ptp_ixp_caps;
>
> - ixp_clock.ptp_clock = ptp_clock_register(&ixp_clock.caps);
> + ixp_clock.ptp_clock = ptp_clock_register(&ixp_clock.caps, NULL);
[...]
I think this should really register a platform driver and a platform
device to be the parent of the clock device. And then you don't need
the fallback for parent == NULL.
Since David has pulled the addition of PTP/PHC support to sfc, that will
need to be adjusted as well.
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [PATCH net-next v2] ipv6: remove unnecessary call rt6_clean_expires
From: David Miller @ 2012-09-21 17:19 UTC (permalink / raw)
To: roy.qing.li; +Cc: netdev, gaofeng
In-Reply-To: <1348119118-23416-1-git-send-email-roy.qing.li@gmail.com>
From: roy.qing.li@gmail.com
Date: Thu, 20 Sep 2012 13:31:58 +0800
> From: Li RongQing <roy.qing.li@gmail.com>
>
> the from of dst_entry and rt6i_flags of rt6_info have been zeroed out in
> ip6_blackhole_route or after calling ip6_dst_alloc, so it is unnecessary
> to call rt6_clean_expires again.
>
> Cc: Gao feng <gaofeng@cn.fujitsu.com>
> Signed-off-by: Li RongQing <roy.qing.li@gmail.com>
I still don't like this change.
The rt6_clean_expires() calls actually do some work (clear the
RTF_EXPIRES) bit in two of the cases you are changing.
And more importantly, having the rt6_clean_expires() call makes
it easier to audit and make sure this is handled in all the
necessary situations.
The whole point of having an abstracted helper function is so
that we don't have code directly manipulating RTF_EXPIRES.
I'm not applying this patch, sorry.
^ permalink raw reply
* Re: [PATCH] rds: Error on offset mismatch if not loopback
From: David Miller @ 2012-09-21 17:20 UTC (permalink / raw)
To: jjolly; +Cc: linux-kernel, venkat.x.venkatsubra, netdev
In-Reply-To: <20120920071134.GF14393@linux-tkdk.sfcn.org>
From: John Jolly <jjolly@suse.com>
Date: Thu, 20 Sep 2012 01:11:34 -0600
> Attempting an rds connection from the IP address of an IPoIB interface
> to itself causes a kernel panic due to a BUG_ON() being triggered. Making
> the test less strict allows rds-ping to work without crashing the machine.
>
> A local unprivileged user could use this flaw to crash the sytem.
Please read Documentation/SubmittingPatches to learn how to properly
submit a change, in particular your patch submission was missing a
proper signoff.
Thanks.
^ permalink raw reply
* Re: [PATCH net-next] net: qmi_wwan: adding Huawei E367, ZTE MF683 and Pantech P4200
From: David Miller @ 2012-09-21 17:22 UTC (permalink / raw)
To: bjorn; +Cc: netdev, linux-usb, fangxiaozhi, tschaefer, dcbw, shawn7400
In-Reply-To: <1348125485-3404-1-git-send-email-bjorn@mork.no>
From: Bjørn Mork <bjorn@mork.no>
Date: Thu, 20 Sep 2012 09:18:05 +0200
> This is the net-next version of the previously posted patch with the
> same title. I totally forgot that I had messed with the .driver_info
> fields, making it impossible to apply the same patch to both net and
> net-next.
>
> Sorry about that. Please apply this version to net-next. The other
> one should still be applied to net (if still possible) and stable.
Ok I applied this to net-next, and it should help with the merge
resolution between net and net-next, which BTW Stephen Rothwell
already had to deal with.
^ permalink raw reply
* Re: regression: tethering fails in 3.5 with iwlwifi
From: David Miller @ 2012-09-21 17:24 UTC (permalink / raw)
To: eric.dumazet-Re5JQEeQqe8AvxtiuMwx3w
Cc: artem.bityutskiy-VuQAYsv1563Yd54FQh9/CA,
edumazet-hpIqsD4AKlfQT0dZR+AlfA, johannes-cdvu00un1VgdHxzADdlk8Q,
linux-wireless-u79uwXL29TY76Z2rM5mHXA,
netdev-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1348151149.31352.109.camel@edumazet-glaptop>
From: Eric Dumazet <eric.dumazet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Date: Thu, 20 Sep 2012 16:25:49 +0200
> Please remove this hack and try the following bugfix in raw handler
>
> icmp_filter() should not modify skb, or else its caller should not
> assume ip_hdr() is unchanged.
Right, good catch.
Please submit this fix formally Eric, thanks a lot.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATCH net] bnx2x: remove false warning regarding interrupt number
From: David Miller @ 2012-09-21 17:27 UTC (permalink / raw)
To: ariele; +Cc: netdev, eilong
In-Reply-To: <1348154801-6592-1-git-send-email-ariele@broadcom.com>
From: "Ariel Elior" <ariele@broadcom.com>
Date: Thu, 20 Sep 2012 18:26:41 +0300
> Since version 7.4 the FW configures in the pci config space the max
> number of interrupts available to the physical function, instead of
> the exact number to use.
> This causes a false warning in driver when comparing the number of
> configured interrupts to the number about to be used.
>
> Signed-off-by: Ariel Elior <ariele@broadcom.com>
> Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH] tcp: sysctl for initial receive window
From: Jesper Dangaard Brouer @ 2012-09-21 17:34 UTC (permalink / raw)
To: Eric Dumazet; +Cc: netdev, Nandita Dukkipati
In-Reply-To: <1348241111.2669.580.camel@edumazet-glaptop>
On Fri, 2012-09-21 at 17:25 +0200, Eric Dumazet wrote:
> On Fri, 2012-09-21 at 10:55 +0200, Jesper Dangaard Brouer wrote:
> > Make it possible to adjust the TCP default initial advertised receive
> > window, via sysctl /proc/sys/net/ipv4/tcp_init_recv_window.
> >
> > The window size is this value multiplied by the MSS of the connection.
> > The default value is (still) 10, as descibed in commit 356f039822b
> > (TCP: increase default initial receive window.)
> >
> > Allow minimum value of 1, but recommend against setting value below 2
> > in the documentation.
> >
> > Its possible to control/override this value per route table entry via
> > the iproute2 option initrwnd. Having the global default exported via
> > sysctl, helps determine the default setting, and make is easier to
> > adjust.
>
> I was wondering why its not symmetric :
>
> If we add a sysctl for initial receive window, we need another one for
> initial send window ?
Yes, that was also part of my plan (I just didn't have time to complete
it). I'll implement the sysctl for initial congestion window, next
week.
Just wanted some initial feedback, on if this sysctl approach is
acceptable or not.
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Sr. Network Kernel Developer at Red Hat
Author of http://www.iptv-analyzer.org
LinkedIn: http://www.linkedin.com/in/brouer
^ permalink raw reply
* Re: [PATCH net-next] gianfar: Change default HW Tx queue scheduling mode
From: David Miller @ 2012-09-21 17:35 UTC (permalink / raw)
To: claudiu.manoil; +Cc: netdev, paul.gortmaker
In-Reply-To: <1348156674-31551-1-git-send-email-claudiu.manoil@freescale.com>
From: Claudiu Manoil <claudiu.manoil@freescale.com>
Date: Thu, 20 Sep 2012 18:57:54 +0300
> The TXSCHED setting may be changed at runtime, via sysfs, for devices
> using multiple H/W Tx queues. For single queue devices this config
> option is disabled, as the TXSCHED setting is superfluous in those cases.
Please, no special driver specific sysfs knobs.
Extend ethtool as necessary for your needs, so that any driver can
provide this kind of configurability in a consistent way for users..
^ permalink raw reply
* Re: New commands to configure IOV features
From: Ben Hutchings @ 2012-09-21 17:35 UTC (permalink / raw)
To: Yinghai Lu
Cc: Rose, Gregory V, Bjorn Helgaas, Yuval Mintz, davem@davemloft.net,
netdev@vger.kernel.org, Ariel Elior, Eilon Greenstein, linux-pci
In-Reply-To: <CAE9FiQXqFnrXT8ibD2zsmeTj-VzXb8sAOjUtryBOxEXj216pQQ@mail.gmail.com>
On Thu, 2012-09-20 at 22:50 -0700, Yinghai Lu wrote:
[...]
> Index: linux-2.6/include/linux/pci.h
> ===================================================================
> --- linux-2.6.orig/include/linux/pci.h
> +++ linux-2.6/include/linux/pci.h
> @@ -663,6 +663,7 @@ struct pci_driver {
> const struct pci_device_id *id_table; /* must be non-NULL for probe to be called */
> int (*probe) (struct pci_dev *dev, const struct pci_device_id *id); /* New device inserted */
> void (*remove) (struct pci_dev *dev); /* Device removed (NULL if not a hot-plug capable driver) */
> + void (*set_max_vfs) (struct pci_dev *dev); /* enable sriov */
> int (*suspend) (struct pci_dev *dev, pm_message_t state); /* Device suspended */
> int (*suspend_late) (struct pci_dev *dev, pm_message_t state);
> int (*resume_early) (struct pci_dev *dev);
Not sure about this; the driver may fail to enable those VFs and it
would be nice to be able to report that failure directly.
That said, this is 'max_vfs' (a limit) and if the driver fails to set up
all the VFs then the *limit* may still be changed.
> Subject: [PATCH] PCI: Add max_vfs in sysfs per pci device where supports
>
> driver later need to check dev->max_vfs in /sys
>
> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
[...]
> +static ssize_t
> +max_vfs_store(struct device *dev, struct device_attribute *attr,
> + const char *buf, size_t count)
> +{
> + unsigned long val;
> + struct pci_dev *pdev = to_pci_dev(dev);
> +
> + if (strict_strtoul(buf, 0, &val) < 0)
> + return -EINVAL;
> +
> + pdev->max_vfs = val;
> +
> + if (pdev->is_added) {
No locking required here?
> + int err;
> + err = device_schedule_callback(dev, max_vfs_callback);
Any particular reason this should be a callback?
[...]
> Index: linux-2.6/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> ===================================================================
> --- linux-2.6.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> +++ linux-2.6/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> @@ -129,13 +129,6 @@ static struct notifier_block dca_notifie
> };
> #endif
>
> -#ifdef CONFIG_PCI_IOV
> -static unsigned int max_vfs;
> -module_param(max_vfs, uint, 0);
> -MODULE_PARM_DESC(max_vfs,
> - "Maximum number of virtual functions to allocate per
> physical function - default is zero and maximum value is 63");
> -#endif /* CONFIG_PCI_IOV */
> -
> static unsigned int allow_unsupported_sfp;
> module_param(allow_unsupported_sfp, uint, 0);
> MODULE_PARM_DESC(allow_unsupported_sfp,
> @@ -4528,7 +4521,7 @@ static int __devinit ixgbe_sw_init(struc
> #ifdef CONFIG_PCI_IOV
> /* assign number of SR-IOV VFs */
> if (hw->mac.type != ixgbe_mac_82598EB)
> - adapter->num_vfs = (max_vfs > 63) ? 0 : max_vfs;
> + adapter->num_vfs = (pdev->max_vfs > 63) ? 0 : pdev->max_vfs;
We are trying to make all SR-IOV capable drivers work the same, so this
weird limiting behaviour should not be retained.
So I think the correct assignment is:
adapter->num_vfs = min(pdev->max_vfs, 63);
> #endif
> /* enable itr by default in dynamic mode */
> @@ -7249,8 +7242,9 @@ static int __devinit ixgbe_probe(struct
>
> #ifdef CONFIG_PCI_IOV
> ixgbe_enable_sriov(adapter, ii);
> -
> #endif
> + adapter->ixgbe_info = ii;
> +
> netdev->features = NETIF_F_SG |
> NETIF_F_IP_CSUM |
> NETIF_F_IPV6_CSUM |
> @@ -7720,11 +7714,42 @@ static const struct pci_error_handlers i
> .resume = ixgbe_io_resume,
> };
>
> +static void ixgbe_set_max_vfs(struct pci_dev *pdev)
> +{
> +#ifdef CONFIG_PCI_IOV
> + struct ixgbe_adapter *adapter = pci_get_drvdata(pdev);
> + struct net_device *netdev = adapter->netdev;
> + struct ixgbe_hw *hw = &adapter->hw;
> + int num_vfs = 0;
> +
> + /* assign number of SR-IOV VFs */
> + if (hw->mac.type != ixgbe_mac_82598EB)
> + num_vfs = (pdev->max_vfs > 63) ? 0 : pdev->max_vfs;
> +
> + /* no change */
> + if (adapter->num_vfs == num_vfs)
> + return;
> +
> + if (!num_vfs) {
> + /* disable sriov */
> + ixgbe_disable_sriov(adapter);
> + adapter->num_vfs = 0;
> + } else if (!adapter->num_vfs && num_vfs) {
> + /* enable sriov */
> + adapter->num_vfs = num_vfs;
> + ixgbe_enable_sriov(adapter, adapter->ixgbe_info);
> + } else {
> + /* increase or decrease */
Indeed, increase or decrease is not supported either in our PCI API or
in the SR-IOV spec. I think I would prefer the PCI core to filter out
unsupported changes (i.e. not call set_max_vfs and maybe report an
error), but I'm not sure about that.
Ben.
> + }
> +#endif
> +}
> +
[...]
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [PATCH net-next 3/3] ptp: derive the device name from the parent device
From: Richard Cochran @ 2012-09-21 17:37 UTC (permalink / raw)
To: Ben Hutchings
Cc: netdev, David Miller, Jacob Keller, Jeff Kirsher, John Stultz,
Matthew Vick
In-Reply-To: <1348247965.2521.11.camel@bwh-desktop.uk.solarflarecom.com>
On Fri, Sep 21, 2012 at 06:19:25PM +0100, Ben Hutchings wrote:
> On Fri, 2012-09-21 at 19:00 +0200, Richard Cochran wrote:
> > PTP Hardware Clock device have a name that appears under sysfs that should
> > identify the underlying device. Instead of leaving it up to the driver to
> > invent a name, this patch changes the registration to automatically use
> > the name from the parent device.
>
> I thought you wanted the driver name and not the parent device name?
Yes, I originally wanted the driver name, because it gives the user
information about the expected performance. But here I am bowing to
Jacob's suggestion that we really need to identify the device. Intel
cards with two ports have *two* clocks. Sad but true.
> > + ptp->name = parent ? dev_name(parent) : dev_name(ptp->dev);
> > +
>
> The fallback of using dev_name(ptp->dev) is a bit sad, as that's the
> same name userland already has when it reads this attribute.
This fallback only exists for the ixp46x, since that driver has no
proper platform or device tree device.
> > - ixp_clock.ptp_clock = ptp_clock_register(&ixp_clock.caps);
> > + ixp_clock.ptp_clock = ptp_clock_register(&ixp_clock.caps, NULL);
> [...]
>
> I think this should really register a platform driver and a platform
> device to be the parent of the clock device. And then you don't need
> the fallback for parent == NULL.
That chip is long past EOL, and its PTP capabilities are pretty poor,
and so it is not worth the trouble of fixing it up.
All other (and future) drivers must provide the pointer.
> Since David has pulled the addition of PTP/PHC support to sfc, that will
> need to be adjusted as well.
Okay, I will add that to the series.
Thanks,
Richard
^ permalink raw reply
* Re: [PATCH v2] ipconfig: add nameserver IPs to kernel-parameter ip=
From: David Miller @ 2012-09-21 17:37 UTC (permalink / raw)
To: chf.fritz
Cc: rob, kuznet, j.weitzel, jmorris, yoshfuji, kaber, linux-doc,
linux-kernel, netdev, hjk, daniel
In-Reply-To: <1348177730.3858.98.camel@mars>
From: Christoph Fritz <chf.fritz@googlemail.com>
Date: Thu, 20 Sep 2012 23:48:50 +0200
> diff --git a/Documentation/filesystems/nfs/nfsroot.txt b/Documentation/filesystems/nfs/nfsroot.txt
> index ffdd9d8..4ed7875 100644
> --- a/Documentation/filesystems/nfs/nfsroot.txt
> +++ b/Documentation/filesystems/nfs/nfsroot.txt
> @@ -158,6 +158,13 @@ ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
>
> Default: any
>
> + <dns0-ip> IP address of first nameserver.
> + Value gets exported by /proc/net/pnp which is often linked
> + on embedded systems by /etc/resolv.conf.
> +
> + <dns1-ip> IP address of secound nameserver.
> + Same as above.
> +
>
> nfsrootdebug
>
This documentation update is not sufficient.
You have to properly show, in the lines above where you made your change,
where the new settings are placed in the "ip=" option.
^ permalink raw reply
* RE: [PATCH net-next 3/3] ptp: derive the device name from the parent device
From: Keller, Jacob E @ 2012-09-21 17:39 UTC (permalink / raw)
To: Richard Cochran, Ben Hutchings
Cc: netdev@vger.kernel.org, David Miller, Kirsher, Jeffrey T,
John Stultz, Vick, Matthew
In-Reply-To: <20120921173709.GB6129@netboy.at.omicron.at>
> -----Original Message-----
> From: Richard Cochran [mailto:richardcochran@gmail.com]
> Sent: Friday, September 21, 2012 10:37 AM
> To: Ben Hutchings
> Cc: netdev@vger.kernel.org; David Miller; Keller, Jacob E; Kirsher,
> Jeffrey T; John Stultz; Vick, Matthew
> Subject: Re: [PATCH net-next 3/3] ptp: derive the device name from the
> parent device
>
> On Fri, Sep 21, 2012 at 06:19:25PM +0100, Ben Hutchings wrote:
> > On Fri, 2012-09-21 at 19:00 +0200, Richard Cochran wrote:
> > > PTP Hardware Clock device have a name that appears under sysfs that
> > > should identify the underlying device. Instead of leaving it up to
> > > the driver to invent a name, this patch changes the registration to
> > > automatically use the name from the parent device.
> >
> > I thought you wanted the driver name and not the parent device name?
>
> Yes, I originally wanted the driver name, because it gives the user
> information about the expected performance. But here I am bowing to
> Jacob's suggestion that we really need to identify the device. Intel cards
> with two ports have *two* clocks. Sad but true.
>
With the device, it is possible to lookup the driver.
- Jake
> Thanks,
> Richard
^ permalink raw reply
* RE: [PATCH net-next 3/3] ptp: derive the device name from the parent device
From: Ben Hutchings @ 2012-09-21 17:40 UTC (permalink / raw)
To: Keller, Jacob E
Cc: Richard Cochran, netdev@vger.kernel.org, David Miller,
Kirsher, Jeffrey T, John Stultz, Vick, Matthew
In-Reply-To: <02874ECE860811409154E81DA85FBB5818BFF5B4@ORSMSX105.amr.corp.intel.com>
On Fri, 2012-09-21 at 17:39 +0000, Keller, Jacob E wrote:
> > -----Original Message-----
> > From: Richard Cochran [mailto:richardcochran@gmail.com]
> > Sent: Friday, September 21, 2012 10:37 AM
> > To: Ben Hutchings
> > Cc: netdev@vger.kernel.org; David Miller; Keller, Jacob E; Kirsher,
> > Jeffrey T; John Stultz; Vick, Matthew
> > Subject: Re: [PATCH net-next 3/3] ptp: derive the device name from the
> > parent device
> >
> > On Fri, Sep 21, 2012 at 06:19:25PM +0100, Ben Hutchings wrote:
> > > On Fri, 2012-09-21 at 19:00 +0200, Richard Cochran wrote:
> > > > PTP Hardware Clock device have a name that appears under sysfs that
> > > > should identify the underlying device. Instead of leaving it up to
> > > > the driver to invent a name, this patch changes the registration to
> > > > automatically use the name from the parent device.
> > >
> > > I thought you wanted the driver name and not the parent device name?
> >
> > Yes, I originally wanted the driver name, because it gives the user
> > information about the expected performance. But here I am bowing to
> > Jacob's suggestion that we really need to identify the device. Intel cards
> > with two ports have *two* clocks. Sad but true.
> >
>
> With the device, it is possible to lookup the driver.
For PCI devices, yes. But there is really no guarantee that device
names (as in dev_name()) are globally unique either.
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [PATCH 1/3 V2] phy/micrel: Implement support for KSZ8021
From: David Miller @ 2012-09-21 17:42 UTC (permalink / raw)
To: marex; +Cc: netdev, david.choi, nobuhiro.iwamatsu.yj, fabio.estevam,
shawn.guo
In-Reply-To: <1348195976-31703-1-git-send-email-marex@denx.de>
From: Marek Vasut <marex@denx.de>
Date: Fri, 21 Sep 2012 04:52:54 +0200
> + phy_write(phydev, MII_KSZPHY_OMSO,
> + KSZPHY_OMSO_B_CAST_OFF | KSZPHY_OMSO_RMII_OVERRIDE);
This is not indented properly. The goal is not to exclusively use
TAB characters to indent code until it sort-of looks fine.
Rather, the goal is to properly line up function arguments with
the first column after the openning parenthesis on the previous
line. Using TAB and SPACE characters, as needed.
> + .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause
> + | SUPPORTED_Asym_Pause),
This is similarly not styled properly.
Besies being indented imporperly on the second line, the final "|"
character should be at the end of the first line, rather than
start the second line.
Resubmit this entire patch series, not just this one patch, once
you've made these corrections.
Thanks.
^ permalink raw reply
* Re: [PATCH] ipv6: fix return value check in fib6_add()
From: David Miller @ 2012-09-21 17:44 UTC (permalink / raw)
To: weiyj.lk; +Cc: kuznet, jmorris, yoshfuji, kaber, yongjun_wei, netdev
In-Reply-To: <CAPgLHd9vdKJfj1yUqU+zDaH6PiuqY8ZG_V5B1py--NiDwa+WkA@mail.gmail.com>
From: Wei Yongjun <weiyj.lk@gmail.com>
Date: Fri, 21 Sep 2012 12:29:56 +0800
> From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
>
> In case of error, the function fib6_add_1() returns ERR_PTR()
> or NULL pointer. The ERR_PTR() case check is missing in fib6_add().
>
> dpatch engine is used to generated this patch.
> (https://github.com/weiyj/dpatch)
>
> Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Applied, thanks.
Longer term fib6_add_1() should consistently return errno pointers,
rather than a mixture of NULL and errno pointers.
^ permalink raw reply
* Re: [PATCH 1/1] gianfar: fix phc index build failure
From: David Miller @ 2012-09-21 17:46 UTC (permalink / raw)
To: richardcochran; +Cc: netdev, stable
In-Reply-To: <24134c2d3a9bcbe65f1becd809b98d9c2559212d.1348203988.git.richardcochran@gmail.com>
From: Richard Cochran <richardcochran@gmail.com>
Date: Fri, 21 Sep 2012 07:11:12 +0200
> This patch fixes a build failure introduced in commit 66636287. Not only
> was a global variable inconsistently named, but also it was not exported
> as it should have been.
>
> This fix is also needed in stable version 3.5.
>
> Signed-off-by: Richard Cochran <richardcochran@gmail.com>
Applied and queued up for -stable, thanks.
> Cc: <stable@vger.kernel.org>
Do not add -stable CC:'s to networking patches, please instead simply
ask me to queue it up for -stable as I take care of networking stable
submissions myself rather than via the automated procedure.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox