* Re: [PATCH v2 net-next 1/1] net: fec: fix build error at m68k platform
From: David Miller @ 2014-10-06 4:22 UTC (permalink / raw)
To: Frank.Li; +Cc: lznuaa, netdev, b38611
In-Reply-To: <1412371754-60384-1-git-send-email-Frank.Li@freescale.com>
From: Frank Li <Frank.Li@freescale.com>
Date: Fri, 3 Oct 2014 14:29:14 -0700
> reproduce:
> wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> git checkout 1b7bde6d659d30f171259cc2dfba8e5dab34e735
>
> make.cross ARCH=m68k m5275evb_defconfig
> make.cross ARCH=m68k
>
> All error/warnings:
>
> drivers/net/ethernet/freescale/fec_main.c: In function 'fec_enet_rx_queue':
>>> drivers/net/ethernet/freescale/fec_main.c:1470:3: error: implicit declaration of function 'prefetch' [-Werror=implicit-function-declaration]
> prefetch(skb->data - NET_IP_ALIGN);
> ^
> cc1: some warnings being treated as errors
>
> missed included prefetch.h
>
> Reported-by: kbuild test robot <fengguang.wu@intel.com>
> Signed-off-by: Frank Li <Frank.Li@freescale.com>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH net-next 1/1] net: fec: fix build error at m68k platform
From: David Miller @ 2014-10-06 4:19 UTC (permalink / raw)
To: Frank.Li; +Cc: lznuaa, netdev, b38611
In-Reply-To: <1412362831-59318-1-git-send-email-Frank.Li@freescale.com>
From: Frank Li <Frank.Li@freescale.com>
Date: Fri, 3 Oct 2014 12:00:31 -0700
> reproduce:
> wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> git checkout 1b7bde6d659d30f171259cc2dfba8e5dab34e735
> # save the attached .config to linux build tree
> make.cross ARCH=m68k
>
> All error/warnings:
>
> drivers/net/ethernet/freescale/fec_main.c: In function 'fec_enet_rx_queue':
>>> drivers/net/ethernet/freescale/fec_main.c:1470:3: error: implicit declaration of function 'prefetch' [-Werror=implicit-function-declaration]
> prefetch(skb->data - NET_IP_ALIGN);
> ^
> cc1: some warnings being treated as errors
>
> missed included prefetch.h
>
> Signed-off-by: Frank Li <Frank.Li@freescale.com>
Applied, thanks Frank.
^ permalink raw reply
* Re: [PATCH net-next] net: bcmgenet: improve bcmgenet_mii_setup()
From: David Miller @ 2014-10-06 4:18 UTC (permalink / raw)
To: pgynther; +Cc: netdev, f.fainelli
In-Reply-To: <20141003192501.C79311004A1@puck.mtv.corp.google.com>
From: Petri Gynther <pgynther@google.com>
Date: Fri, 3 Oct 2014 12:25:01 -0700 (PDT)
> bcmgenet_mii_setup() is called from the PHY state machine every 1-2 seconds
> when the PHYs are in PHY_POLL mode.
>
> Improve bcmgenet_mii_setup() so that it touches the MAC registers only when
> the link is up and there was a change to link, speed, duplex, or pause status.
>
> Signed-off-by: Petri Gynther <pgynther@google.com>
Yeah that's ugly reprogramming so much stuff unnecessarily every
second or two, applied thanks.
^ permalink raw reply
* Re: netlink NETLINK_ROUTE failure & Can the kernel really handle IPv6 properly
From: Gao feng @ 2014-10-06 3:35 UTC (permalink / raw)
To: Ulf Samuelsson, Linux Netdev List
In-Reply-To: <542C63FE.9080807@emagii.com>
On 10/02/2014 04:28 AM, Ulf Samuelsson wrote:
>
> nls = netlink_kernel_create( &init_net, NETLINK_ROUTE, 0, my_rcv, NULL, THIS_MODULE);
Kernel already creates NETLINK_ROUTE type netlink,
you can not create another kernel side NETLINK_ROUTE netlink socket.
^ permalink raw reply
* RE: r8168 is needed to enter P-state: Package State 6 (pc6)onHaswell hardware
From: Hayes Wang @ 2014-10-06 3:06 UTC (permalink / raw)
To: Francois Romieu, Ceriel Jacobs; +Cc: nic_swsd, netdev@vger.kernel.org
In-Reply-To: <20141005165920.GA21926@electric-eye.fr.zoreil.com>
Francois Romieu [mailto:romieu@fr.zoreil.com]
> Sent: Monday, October 06, 2014 12:59 AM
[...]
> > With in-kernel r8169 module, only P-state package C3 (pc3)
> > can be reached
> > when enabling ASPM.
> >
> > Only after installing r8168 driver (and enabling ASPM), a
> > Haswell Celeron
> > G1820/G1840 processer will enter package C6 state (pc6).
>
> Vanilla kernel r8169 driver logs a message that contains an
> "XID" string.
> Please grep for it in your dmesg so that I can narrow the search for
> meaningful differences in Realtek's r8168 driver.
I don't sure if the following information is helpful. Besides, I remember the rtl_init_one()
would disable it.
http://git.kernel.org/cgit/linux/kernel/git/davem/net-next.git/commit/?id=d64ec841517a25f6d468bde9f67e5b4cffdc67c7
http://git.kernel.org/cgit/linux/kernel/git/davem/net-next.git/commit/?id=4521e1a94279ce610d3f9b7945c17d581f804242
Best Regards,
Hayes
^ permalink raw reply
* Re: [Patch net-next] net_sched: refactor out tcf_exts
From: John Fastabend @ 2014-10-06 3:04 UTC (permalink / raw)
To: Cong Wang; +Cc: netdev, Jamal Hadi Salim, John Fastabend, David S. Miller
In-Reply-To: <5431F4A1.3040107@gmail.com>
On 10/05/2014 06:47 PM, John Fastabend wrote:
> On 10/03/2014 03:51 PM, Cong Wang wrote:
>> As Jamal pointed it out, tcf_exts is really unnecessary,
>> we can definitely refactor it out without losing any functionality.
>> This could also remove an indirect layer which makes the code
>> much easier to read.
>>
>> This patch:
>>
>> 1) moves exts->action and exts->police into tp->ops, since they
>> are statically assigned
>>
>> 2) moves exts->actions list head out
>>
>> 3) removes exts->type, act->type does the same thing
>>
>> 4) renames tcf_exts_*() functions to tcf_act_*()
>>
>> Cc: Jamal Hadi Salim <jhs@mojatatu.com>
>> Cc: John Fastabend <john.r.fastabend@intel.com>
>> Cc: "David S. Miller" <davem@davemloft.net>
>> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
>> ---
>
> Looks OK to me and removes a layer of abstraction without changing
> the code much. This is going to conflict with my series so I'll hold
> off resubmitting it until this is dealt with. I need to respin that
> ematch fix up to drop the ingress lock.
>
> Acked-by: John Fastabend <john.r.fastabend@intel.com>
>
> [...]
>
But after running my test kit I see a null pointer dereference
in cls_cgroup in tcf_act_change().
Looks like you dropped an initializer...
@@ -116,7 +116,6 @@ static int cls_cgroup_change(struct net *net, struct
sk_buff *in_skb,
if (!new)
return -ENOBUFS;
- tcf_exts_init(&new->exts, TCA_CGROUP_ACT, TCA_CGROUP_POLICE);
if (head)
new->handle = head->handle;
else
>>
>> -void tcf_exts_change(struct tcf_proto *tp, struct tcf_exts *dst,
>> - struct tcf_exts *src)
>> +void tcf_act_change(struct tcf_proto *tp, struct list_head *dst,
>> + struct list_head *src)
>> {
>> #ifdef CONFIG_NET_CLS_ACT
>> LIST_HEAD(tmp);
>> tcf_tree_lock(tp);
>> - list_splice_init(&dst->actions, &tmp);
>> - list_splice(&src->actions, &dst->actions);
>> + list_splice_init(dst, &tmp);
>> + list_splice(src, dst);
>> tcf_tree_unlock(tp);
>> tcf_action_destroy(&tmp, TCA_ACT_UNBIND);
>
>
> This is overly complex now that tcf_act_change only
> occurs on null lists. And unattached ones because of the
> RCU semantics so I'm fairly sure we can drop the lock and
> double splice.
>
>
> [...]
>
--
John Fastabend Intel Corporation
^ permalink raw reply
* [PATCH net-next v2] r8152: nway reset after setting eee
From: Hayes Wang @ 2014-10-06 2:36 UTC (permalink / raw)
To: netdev-u79uwXL29TY76Z2rM5mHXA
Cc: nic_swsd-Rasf1IRRPZFBDgjK7y7TUQ,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-usb-u79uwXL29TY76Z2rM5mHXA, Hayes Wang
In-Reply-To: <1394712342-15778-54-Taiwan-albertk-Rasf1IRRPZFBDgjK7y7TUQ@public.gmane.org>
Restart autonegotiation is necessary after setting EEE.
Signed-off-by: Hayes Wang <hayeswang-Rasf1IRRPZFBDgjK7y7TUQ@public.gmane.org>
---
drivers/net/usb/r8152.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index b9a9815..6532620 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -3471,6 +3471,8 @@ rtl_ethtool_set_eee(struct net_device *net, struct ethtool_eee *edata)
goto out;
ret = tp->rtl_ops.eee_set(tp, edata);
+ if (!ret)
+ ret = mii_nway_restart(&tp->mii);
usb_autopm_put_interface(tp->intf);
--
1.9.3
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" 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 related
* Re: [PATCH] net: sched: cls_cgroup tear down exts and ematch from rcu callback
From: John Fastabend @ 2014-10-06 1:48 UTC (permalink / raw)
To: David Miller; +Cc: xiyou.wangcong, netdev, jhs, eric.dumazet
In-Reply-To: <20141005.213146.1400362219156302379.davem@davemloft.net>
On 10/05/2014 06:31 PM, David Miller wrote:
> From: John Fastabend <john.fastabend@gmail.com>
> Date: Fri, 03 Oct 2014 09:33:35 -0700
>
>> It is not RCU safe to destroy the action chain while there
>> is a possibility of readers accessing it. Move this code
>> into the rcu callback using the same rcu callback used in the
>> code patch to make a change to head.
>>
>> Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
> ...
>> @@ -156,10 +156,8 @@ static void cls_cgroup_destroy(struct tcf_proto *tp)
>> struct cls_cgroup_head *head = rtnl_dereference(tp->root);
>>
>> if (head) {
>> - tcf_exts_destroy(&head->exts);
>> - tcf_em_tree_destroy(head->net, &head->ematches);
>> RCU_INIT_POINTER(tp->root, NULL);
>> - kfree_rcu(head, rcu);
>> + call_rcu(&head->rcu, cls_cgroup_destroy_rcu);
>> }
>
> tcf_em_tree_destroy() takes head->tp as it's first argument in my
> net-next tree, maybe you need to respin this?
>
Yep, I'll respin this now sorry about that got a bit out of sync.
Thanks!
--
John Fastabend Intel Corporation
^ permalink raw reply
* Re: [Patch net-next] net_sched: refactor out tcf_exts
From: John Fastabend @ 2014-10-06 1:47 UTC (permalink / raw)
To: Cong Wang; +Cc: netdev, Jamal Hadi Salim, John Fastabend, David S. Miller
In-Reply-To: <1412376709-25564-1-git-send-email-xiyou.wangcong@gmail.com>
On 10/03/2014 03:51 PM, Cong Wang wrote:
> As Jamal pointed it out, tcf_exts is really unnecessary,
> we can definitely refactor it out without losing any functionality.
> This could also remove an indirect layer which makes the code
> much easier to read.
>
> This patch:
>
> 1) moves exts->action and exts->police into tp->ops, since they
> are statically assigned
>
> 2) moves exts->actions list head out
>
> 3) removes exts->type, act->type does the same thing
>
> 4) renames tcf_exts_*() functions to tcf_act_*()
>
> Cc: Jamal Hadi Salim <jhs@mojatatu.com>
> Cc: John Fastabend <john.r.fastabend@intel.com>
> Cc: "David S. Miller" <davem@davemloft.net>
> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
> ---
Looks OK to me and removes a layer of abstraction without changing
the code much. This is going to conflict with my series so I'll hold
off resubmitting it until this is dealt with. I need to respin that
ematch fix up to drop the ingress lock.
Acked-by: John Fastabend <john.r.fastabend@intel.com>
[...]
>
> -void tcf_exts_change(struct tcf_proto *tp, struct tcf_exts *dst,
> - struct tcf_exts *src)
> +void tcf_act_change(struct tcf_proto *tp, struct list_head *dst,
> + struct list_head *src)
> {
> #ifdef CONFIG_NET_CLS_ACT
> LIST_HEAD(tmp);
> tcf_tree_lock(tp);
> - list_splice_init(&dst->actions, &tmp);
> - list_splice(&src->actions, &dst->actions);
> + list_splice_init(dst, &tmp);
> + list_splice(src, dst);
> tcf_tree_unlock(tp);
> tcf_action_destroy(&tmp, TCA_ACT_UNBIND);
This is overly complex now that tcf_act_change only
occurs on null lists. And unattached ones because of the
RCU semantics so I'm fairly sure we can drop the lock and
double splice.
[...]
--
John Fastabend Intel Corporation
^ permalink raw reply
* Re: [PATCH net-next 0/2] Altera TSE with no PHY
From: David Miller @ 2014-10-06 1:40 UTC (permalink / raw)
To: walter
Cc: netdev, tobias.klauser, vbridgers2013, f.fainelli, nios2-dev,
ezequiel, guido
In-Reply-To: <1412359741-8423-1-git-send-email-walter@vanguardiasur.com.ar>
From: Walter Lozano <walter@vanguardiasur.com.ar>
Date: Fri, 3 Oct 2014 15:08:59 -0300
> In some scenarios there is no PHY chip present, for example in optical links.
> This serie of patches moves PHY get addr and MDIO create to a new function and
> avoids PHY and MDIO probing in these cases.
Series applied, thanks Walter.
^ permalink raw reply
* Re: pull request: wireless-next 2014-10-03
From: David Miller @ 2014-10-06 1:38 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, netdev, linux-kernel
In-Reply-To: <20141005.213511.339356320070784471.davem@davemloft.net>
From: David Miller <davem@davemloft.net>
Date: Sun, 05 Oct 2014 21:35:11 -0400 (EDT)
> From: "John W. Linville" <linville@tuxdriver.com>
> Date: Fri, 3 Oct 2014 14:01:52 -0400
>
>> Please pull tihs batch of updates intended for the 3.18 stream!
>
> Pulled, thanks for the stellar pull request text, as always.
John, what's the deal with the following? Will it be resolved by the
driver being removed from the staging tree?
WARNING: drivers/staging/rtl8192ee/r8192ee: 'rtl_evm_dbm_jaguar' exported twice. Previous export was in drivers/net/wireless/rtlwifi/rtlwifi.ko
^ permalink raw reply
* [PATCH v2 net-next] net: better IFF_XMIT_DST_RELEASE support
From: Eric Dumazet @ 2014-10-06 1:38 UTC (permalink / raw)
To: David Miller; +Cc: netdev, Julian Anastasov
From: Eric Dumazet <edumazet@google.com>
Testing xmit_more support with netperf and connected UDP sockets,
I found strange dst refcount false sharing.
Current handling of IFF_XMIT_DST_RELEASE is not optimal.
Dropping dst in validate_xmit_skb() is certainly too late in case
packet was queued by cpu X but dequeued by cpu Y
The logical point to take care of drop/force is in __dev_queue_xmit()
before even taking qdisc lock.
As Julian Anastasov pointed out, need for skb_dst() might come from some
packet schedulers or classifiers.
This patch adds new helper to cleanly express needs of various drivers
or qdiscs/classifiers.
Drivers that need skb_dst() in their ndo_start_xmit() should call
following helper in their setup instead of the prior :
dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
->
netif_keep_dst(dev);
Instead of using a single bit, we use two bits, one being
eventually rebuilt in bonding/team drivers.
The other one, is permanent and blocks IFF_XMIT_DST_RELEASE being
rebuilt in bonding/team. Eventually, we could add something
smarter later.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Julian Anastasov <ja@ssi.bg>
---
drivers/infiniband/ulp/ipoib/ipoib_main.c | 2 +-
drivers/net/appletalk/ipddp.c | 2 +-
drivers/net/bonding/bond_main.c | 9 ++++++---
drivers/net/eql.c | 2 +-
drivers/net/ifb.c | 3 ++-
drivers/net/loopback.c | 2 +-
drivers/net/macvlan.c | 3 ++-
drivers/net/ppp/ppp_generic.c | 2 +-
drivers/net/team/team.c | 8 +++++---
drivers/net/vxlan.c | 2 +-
drivers/net/wan/hdlc_fr.c | 2 +-
drivers/s390/net/qeth_l3_main.c | 2 +-
include/linux/netdevice.h | 8 ++++++++
net/8021q/vlan_dev.c | 3 ++-
net/atm/clip.c | 2 +-
net/core/dev.c | 19 +++++++++----------
net/ipv4/ip_gre.c | 2 +-
net/ipv4/ip_vti.c | 2 +-
net/ipv4/ipip.c | 2 +-
net/ipv6/ip6_gre.c | 2 +-
net/ipv6/ip6_tunnel.c | 2 +-
net/ipv6/ip6_vti.c | 2 +-
net/ipv6/sit.c | 2 +-
net/sched/cls_flow.c | 2 ++
net/sched/cls_route.c | 1 +
net/sched/sch_generic.c | 3 ---
net/sched/sch_teql.c | 2 +-
27 files changed, 54 insertions(+), 39 deletions(-)
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 13e6e0431592..58b5aa3b6f2d 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -1364,7 +1364,7 @@ void ipoib_setup(struct net_device *dev)
dev->tx_queue_len = ipoib_sendq_size * 2;
dev->features = (NETIF_F_VLAN_CHALLENGED |
NETIF_F_HIGHDMA);
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
memcpy(dev->broadcast, ipv4_bcast_addr, INFINIBAND_ALEN);
diff --git a/drivers/net/appletalk/ipddp.c b/drivers/net/appletalk/ipddp.c
index 10d0dba572c2..e90c6a7333d7 100644
--- a/drivers/net/appletalk/ipddp.c
+++ b/drivers/net/appletalk/ipddp.c
@@ -74,7 +74,7 @@ static struct net_device * __init ipddp_init(void)
if (!dev)
return ERR_PTR(-ENOMEM);
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
strcpy(dev->name, "ipddp%d");
if (version_printed++ == 0)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index c2adc2755ff6..ff6df7b0c056 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1001,7 +1001,8 @@ static netdev_features_t bond_fix_features(struct net_device *dev,
static void bond_compute_features(struct bonding *bond)
{
- unsigned int flags, dst_release_flag = IFF_XMIT_DST_RELEASE;
+ unsigned int dst_release_flag = IFF_XMIT_DST_RELEASE |
+ IFF_XMIT_DST_RELEASE_PERM;
netdev_features_t vlan_features = BOND_VLAN_FEATURES;
netdev_features_t enc_features = BOND_ENC_FEATURES;
struct net_device *bond_dev = bond->dev;
@@ -1037,8 +1038,10 @@ done:
bond_dev->gso_max_segs = gso_max_segs;
netif_set_gso_max_size(bond_dev, gso_max_size);
- flags = bond_dev->priv_flags & ~IFF_XMIT_DST_RELEASE;
- bond_dev->priv_flags = flags | dst_release_flag;
+ bond_dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ if ((bond_dev->priv_flags & IFF_XMIT_DST_RELEASE_PERM) &&
+ dst_release_flag == (IFF_XMIT_DST_RELEASE | IFF_XMIT_DST_RELEASE_PERM))
+ bond_dev->priv_flags |= IFF_XMIT_DST_RELEASE;
netdev_change_features(bond_dev);
}
diff --git a/drivers/net/eql.c b/drivers/net/eql.c
index 957e5c0cede3..a10ad74cc8d2 100644
--- a/drivers/net/eql.c
+++ b/drivers/net/eql.c
@@ -199,7 +199,7 @@ static void __init eql_setup(struct net_device *dev)
dev->type = ARPHRD_SLIP;
dev->tx_queue_len = 5; /* Hands them off fast */
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
}
static int eql_open(struct net_device *dev)
diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
index d2d4a3d2237f..34f846b4bd05 100644
--- a/drivers/net/ifb.c
+++ b/drivers/net/ifb.c
@@ -185,7 +185,8 @@ static void ifb_setup(struct net_device *dev)
dev->flags |= IFF_NOARP;
dev->flags &= ~IFF_MULTICAST;
- dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE | IFF_TX_SKB_SHARING);
+ dev->priv_flags &= ~IFF_TX_SKB_SHARING;
+ netif_keep_dst(dev);
eth_hw_addr_random(dev);
}
diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c
index 8f2262540561..c76283c2f84a 100644
--- a/drivers/net/loopback.c
+++ b/drivers/net/loopback.c
@@ -169,7 +169,7 @@ static void loopback_setup(struct net_device *dev)
dev->type = ARPHRD_LOOPBACK; /* 0x0001*/
dev->flags = IFF_LOOPBACK;
dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
dev->hw_features = NETIF_F_ALL_TSO | NETIF_F_UFO;
dev->features = NETIF_F_SG | NETIF_F_FRAGLIST
| NETIF_F_ALL_TSO
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index e8a453f1b458..38b4fae61f04 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -1025,7 +1025,8 @@ void macvlan_common_setup(struct net_device *dev)
{
ether_setup(dev);
- dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE | IFF_TX_SKB_SHARING);
+ dev->priv_flags &= ~IFF_TX_SKB_SHARING;
+ netif_keep_dst(dev);
dev->priv_flags |= IFF_UNICAST_FLT;
dev->netdev_ops = &macvlan_netdev_ops;
dev->destructor = free_netdev;
diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
index fa0d71727894..80e6f3430f65 100644
--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
@@ -1103,7 +1103,7 @@ static void ppp_setup(struct net_device *dev)
dev->type = ARPHRD_PPP;
dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
dev->features |= NETIF_F_NETNS_LOCAL;
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
}
/*
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 2277c3679a51..a94a9df3e6bd 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -970,7 +970,8 @@ static void __team_compute_features(struct team *team)
struct team_port *port;
u32 vlan_features = TEAM_VLAN_FEATURES & NETIF_F_ALL_FOR_ALL;
unsigned short max_hard_header_len = ETH_HLEN;
- unsigned int flags, dst_release_flag = IFF_XMIT_DST_RELEASE;
+ unsigned int dst_release_flag = IFF_XMIT_DST_RELEASE |
+ IFF_XMIT_DST_RELEASE_PERM;
list_for_each_entry(port, &team->port_list, list) {
vlan_features = netdev_increment_features(vlan_features,
@@ -985,8 +986,9 @@ static void __team_compute_features(struct team *team)
team->dev->vlan_features = vlan_features;
team->dev->hard_header_len = max_hard_header_len;
- flags = team->dev->priv_flags & ~IFF_XMIT_DST_RELEASE;
- team->dev->priv_flags = flags | dst_release_flag;
+ team->dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ if (dst_release_flag == (IFF_XMIT_DST_RELEASE | IFF_XMIT_DST_RELEASE_PERM))
+ team->dev->priv_flags |= IFF_XMIT_DST_RELEASE;
netdev_change_features(team->dev);
}
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index 2af795d6ba05..2a51e6e48e1e 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -2193,7 +2193,7 @@ static void vxlan_setup(struct net_device *dev)
dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM;
dev->hw_features |= NETIF_F_GSO_SOFTWARE;
dev->hw_features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX;
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
INIT_LIST_HEAD(&vxlan->next);
diff --git a/drivers/net/wan/hdlc_fr.c b/drivers/net/wan/hdlc_fr.c
index e5c7e6165a4b..3ebed1c40abb 100644
--- a/drivers/net/wan/hdlc_fr.c
+++ b/drivers/net/wan/hdlc_fr.c
@@ -1047,7 +1047,7 @@ static void pvc_setup(struct net_device *dev)
dev->flags = IFF_POINTOPOINT;
dev->hard_header_len = 10;
dev->addr_len = 2;
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
}
static const struct net_device_ops pvc_ops = {
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
index f8427a2c4840..afebb9709763 100644
--- a/drivers/s390/net/qeth_l3_main.c
+++ b/drivers/s390/net/qeth_l3_main.c
@@ -3306,7 +3306,7 @@ static int qeth_l3_setup_netdev(struct qeth_card *card)
card->dev->features |= NETIF_F_HW_VLAN_CTAG_TX |
NETIF_F_HW_VLAN_CTAG_RX |
NETIF_F_HW_VLAN_CTAG_FILTER;
- card->dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(card->dev);
card->dev->gso_max_size = 15 * PAGE_SIZE;
SET_NETDEV_DEV(card->dev, &card->gdev->dev);
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 22d54b9b700d..d5680f6278d2 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1206,6 +1206,7 @@ enum netdev_priv_flags {
IFF_SUPP_NOFCS = 1<<19,
IFF_LIVE_ADDR_CHANGE = 1<<20,
IFF_MACVLAN = 1<<21,
+ IFF_XMIT_DST_RELEASE_PERM = 1<<22,
};
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
@@ -1230,6 +1231,7 @@ enum netdev_priv_flags {
#define IFF_SUPP_NOFCS IFF_SUPP_NOFCS
#define IFF_LIVE_ADDR_CHANGE IFF_LIVE_ADDR_CHANGE
#define IFF_MACVLAN IFF_MACVLAN
+#define IFF_XMIT_DST_RELEASE_PERM IFF_XMIT_DST_RELEASE_PERM
/**
* struct net_device - The DEVICE structure.
@@ -3586,6 +3588,12 @@ static inline bool netif_supports_nofcs(struct net_device *dev)
return dev->priv_flags & IFF_SUPP_NOFCS;
}
+/* This device needs to keep skb dst for qdisc enqueue or ndo_start_xmit() */
+static inline void netif_keep_dst(struct net_device *dev)
+{
+ dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE | IFF_XMIT_DST_RELEASE_PERM);
+}
+
extern struct pernet_operations __net_initdata loopback_net_ops;
/* Logging, debugging and troubleshooting/diagnostic helpers. */
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 35a6b6b15e8a..0d441ec8763e 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -799,7 +799,8 @@ void vlan_setup(struct net_device *dev)
ether_setup(dev);
dev->priv_flags |= IFF_802_1Q_VLAN;
- dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE | IFF_TX_SKB_SHARING);
+ dev->priv_flags &= ~IFF_TX_SKB_SHARING;
+ netif_keep_dst(dev);
dev->tx_queue_len = 0;
dev->netdev_ops = &vlan_netdev_ops;
diff --git a/net/atm/clip.c b/net/atm/clip.c
index 1d9eaa4f041a..17e55dfecbe2 100644
--- a/net/atm/clip.c
+++ b/net/atm/clip.c
@@ -501,7 +501,7 @@ static void clip_setup(struct net_device *dev)
/* without any more elaborate queuing. 100 is a reasonable */
/* compromise between decent burst-tolerance and protection */
/* against memory hogs. */
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
}
static int clip_create(int number)
diff --git a/net/core/dev.c b/net/core/dev.c
index 1a90530f83ff..3da8bac5cab9 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2662,12 +2662,6 @@ static struct sk_buff *validate_xmit_skb(struct sk_buff *skb, struct net_device
if (skb->next)
return skb;
- /* If device doesn't need skb->dst, release it right now while
- * its hot in this cpu cache
- */
- if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
- skb_dst_drop(skb);
-
features = netif_skb_features(skb);
skb = validate_xmit_vlan(skb, features);
if (unlikely(!skb))
@@ -2805,8 +2799,6 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q,
* waiting to be sent out; and the qdisc is not running -
* xmit the skb directly.
*/
- if (!(dev->priv_flags & IFF_XMIT_DST_RELEASE))
- skb_dst_force(skb);
qdisc_bstats_update(q, skb);
@@ -2821,7 +2813,6 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q,
rc = NET_XMIT_SUCCESS;
} else {
- skb_dst_force(skb);
rc = q->enqueue(skb, q) & NET_XMIT_MASK;
if (qdisc_run_begin(q)) {
if (unlikely(contended)) {
@@ -2918,6 +2909,14 @@ static int __dev_queue_xmit(struct sk_buff *skb, void *accel_priv)
skb_update_prio(skb);
+ /* If device/qdisc don't need skb->dst, release it right now while
+ * its hot in this cpu cache.
+ */
+ if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
+ skb_dst_drop(skb);
+ else
+ skb_dst_force(skb);
+
txq = netdev_pick_tx(dev, skb, accel_priv);
q = rcu_dereference_bh(txq->qdisc);
@@ -6667,7 +6666,7 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
INIT_LIST_HEAD(&dev->adj_list.lower);
INIT_LIST_HEAD(&dev->all_adj_list.upper);
INIT_LIST_HEAD(&dev->all_adj_list.lower);
- dev->priv_flags = IFF_XMIT_DST_RELEASE;
+ dev->priv_flags = IFF_XMIT_DST_RELEASE | IFF_XMIT_DST_RELEASE_PERM;
setup(dev);
dev->num_tx_queues = txqs;
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index 0485ef18d254..12055fdbe716 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -510,7 +510,7 @@ static int ipgre_tunnel_init(struct net_device *dev)
memcpy(dev->broadcast, &iph->daddr, 4);
dev->flags = IFF_NOARP;
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
dev->addr_len = 4;
if (iph->daddr) {
diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c
index e453cb724a95..3e861011e4a3 100644
--- a/net/ipv4/ip_vti.c
+++ b/net/ipv4/ip_vti.c
@@ -364,7 +364,7 @@ static int vti_tunnel_init(struct net_device *dev)
dev->iflink = 0;
dev->addr_len = 4;
dev->features |= NETIF_F_LLTX;
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
return ip_tunnel_init(dev);
}
diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c
index ea88ab3102a8..37096d64730e 100644
--- a/net/ipv4/ipip.c
+++ b/net/ipv4/ipip.c
@@ -289,7 +289,7 @@ static void ipip_tunnel_setup(struct net_device *dev)
dev->iflink = 0;
dev->addr_len = 4;
dev->features |= NETIF_F_LLTX;
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
dev->features |= IPIP_FEATURES;
dev->hw_features |= IPIP_FEATURES;
diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c
index 74b677916a70..de3b1c86b8d3 100644
--- a/net/ipv6/ip6_gre.c
+++ b/net/ipv6/ip6_gre.c
@@ -1242,7 +1242,7 @@ static void ip6gre_tunnel_setup(struct net_device *dev)
dev->flags |= IFF_NOARP;
dev->iflink = 0;
dev->addr_len = sizeof(struct in6_addr);
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
}
static int ip6gre_tunnel_init(struct net_device *dev)
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
index d3e8888ad611..9409887fb664 100644
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -1493,7 +1493,7 @@ static void ip6_tnl_dev_setup(struct net_device *dev)
dev->mtu -= 8;
dev->flags |= IFF_NOARP;
dev->addr_len = sizeof(struct in6_addr);
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
/* This perm addr will be used as interface identifier by IPv6 */
dev->addr_assign_type = NET_ADDR_RANDOM;
eth_random_addr(dev->perm_addr);
diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c
index 5833a2244467..d440bb585524 100644
--- a/net/ipv6/ip6_vti.c
+++ b/net/ipv6/ip6_vti.c
@@ -807,7 +807,7 @@ static void vti6_dev_setup(struct net_device *dev)
dev->mtu = ETH_DATA_LEN;
dev->flags |= IFF_NOARP;
dev->addr_len = sizeof(struct in6_addr);
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
}
/**
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
index 0d4e27466f82..6eab37cf5345 100644
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -1364,7 +1364,7 @@ static void ipip6_tunnel_setup(struct net_device *dev)
dev->hard_header_len = LL_MAX_HEADER + t_hlen;
dev->mtu = ETH_DATA_LEN - t_hlen;
dev->flags = IFF_NOARP;
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
dev->iflink = 0;
dev->addr_len = 4;
dev->features |= NETIF_F_LLTX;
diff --git a/net/sched/cls_flow.c b/net/sched/cls_flow.c
index f18d27f7b5f2..5f79e1174b55 100644
--- a/net/sched/cls_flow.c
+++ b/net/sched/cls_flow.c
@@ -493,6 +493,8 @@ static int flow_change(struct net *net, struct sk_buff *in_skb,
tcf_exts_change(tp, &fnew->exts, &e);
tcf_em_tree_change(tp, &fnew->ematches, &t);
+ netif_keep_dst(qdisc_dev(tp->q));
+
if (tb[TCA_FLOW_KEYS]) {
fnew->keymask = keymask;
fnew->nkeys = nkeys;
diff --git a/net/sched/cls_route.c b/net/sched/cls_route.c
index b665aee661f7..ea4aa1a4d8fd 100644
--- a/net/sched/cls_route.c
+++ b/net/sched/cls_route.c
@@ -524,6 +524,7 @@ static int route4_change(struct net *net, struct sk_buff *in_skb,
if (f->handle < f1->handle)
break;
+ netif_keep_dst(qdisc_dev(tp->q));
rcu_assign_pointer(f->next, f1);
rcu_assign_pointer(*fp, f);
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 2b349a4de3c8..38d58e6cef07 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -47,7 +47,6 @@ EXPORT_SYMBOL(default_qdisc_ops);
static inline int dev_requeue_skb(struct sk_buff *skb, struct Qdisc *q)
{
- skb_dst_force(skb);
q->gso_skb = skb;
q->qstats.requeues++;
q->q.qlen++; /* it's still part of the queue */
@@ -218,8 +217,6 @@ static inline int qdisc_restart(struct Qdisc *q)
if (unlikely(!skb))
return 0;
- WARN_ON_ONCE(skb_dst_is_noref(skb));
-
root_lock = qdisc_lock(q);
dev = qdisc_dev(q);
txq = skb_get_tx_queue(dev, skb);
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c
index 5cd291bd00e4..6ada42396a24 100644
--- a/net/sched/sch_teql.c
+++ b/net/sched/sch_teql.c
@@ -470,7 +470,7 @@ static __init void teql_master_setup(struct net_device *dev)
dev->tx_queue_len = 100;
dev->flags = IFF_NOARP;
dev->hard_header_len = LL_MAX_HEADER;
- dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
+ netif_keep_dst(dev);
}
static LIST_HEAD(master_dev_list);
^ permalink raw reply related
* Re: pull request: wireless-next 2014-10-03
From: David Miller @ 2014-10-06 1:35 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, netdev, linux-kernel
In-Reply-To: <20141003180151.GE27414@tuxdriver.com>
From: "John W. Linville" <linville@tuxdriver.com>
Date: Fri, 3 Oct 2014 14:01:52 -0400
> Please pull tihs batch of updates intended for the 3.18 stream!
Pulled, thanks for the stellar pull request text, as always.
^ permalink raw reply
* Re: [PATCH 0/9] Netfilter/IPVS updates for net-next
From: David Miller @ 2014-10-06 1:33 UTC (permalink / raw)
To: pablo; +Cc: netfilter-devel, netdev
In-Reply-To: <1412356824-6362-1-git-send-email-pablo@netfilter.org>
From: Pablo Neira Ayuso <pablo@netfilter.org>
Date: Fri, 3 Oct 2014 19:20:15 +0200
> The following patchset contains another batch with Netfilter/IPVS updates
> for net-next, they are:
...
> You can pull these changes from:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git
Pulled, thanks a lot Pablo.
^ permalink raw reply
* Re: [PATCH] net: sched: cls_cgroup tear down exts and ematch from rcu callback
From: David Miller @ 2014-10-06 1:31 UTC (permalink / raw)
To: john.fastabend; +Cc: xiyou.wangcong, netdev, jhs, eric.dumazet
In-Reply-To: <20141003163333.20118.59609.stgit@nitbit.x32>
From: John Fastabend <john.fastabend@gmail.com>
Date: Fri, 03 Oct 2014 09:33:35 -0700
> It is not RCU safe to destroy the action chain while there
> is a possibility of readers accessing it. Move this code
> into the rcu callback using the same rcu callback used in the
> code patch to make a change to head.
>
> Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
...
> @@ -156,10 +156,8 @@ static void cls_cgroup_destroy(struct tcf_proto *tp)
> struct cls_cgroup_head *head = rtnl_dereference(tp->root);
>
> if (head) {
> - tcf_exts_destroy(&head->exts);
> - tcf_em_tree_destroy(head->net, &head->ematches);
> RCU_INIT_POINTER(tp->root, NULL);
> - kfree_rcu(head, rcu);
> + call_rcu(&head->rcu, cls_cgroup_destroy_rcu);
> }
tcf_em_tree_destroy() takes head->tp as it's first argument in my
net-next tree, maybe you need to respin this?
^ permalink raw reply
* Re: [net 0/8] gianfar: ARM port driver updates (1/2)
From: David Miller @ 2014-10-06 1:27 UTC (permalink / raw)
To: claudiu.manoil; +Cc: netdev, Li.Xiubo, Shruti
In-Reply-To: <1412352169-14414-1-git-send-email-claudiu.manoil@freescale.com>
From: Claudiu Manoil <claudiu.manoil@freescale.com>
Date: Fri, 3 Oct 2014 19:02:41 +0300
> This is the first round of driver protability fixes and clean-up
> with the main purpose to make gianfar portable on ARM, for the ARM
> based SoC that integrates the eTSEC ethernet controller - "ls1021a".
> The patches primarily address compile time errors, when compiling
> gianfar on ARM. They replace PPC specific functions and macros
> with architecture independent ones, solve arch specific header
> inclusions, guard code that relates to PPC only, and even address
> some simple endianess issues (see MAC address setup patch).
> The patches addressing the bulk of remaining endianess issues,
> like handling DMA fields (BD and FCB), will follow with the sencond
> round.
> These patches were verified on the ls1021a SoC.
If more endianness fixes are necessary and "will follow with the
second round", I do not see how you could have verified specifically
these changes on the ls1021a.
^ permalink raw reply
* Re: [PATCH v4 net-next 0/3] bridge: Add vlan filtering support for default pvid
From: David Miller @ 2014-10-06 1:22 UTC (permalink / raw)
To: vyasevich; +Cc: vyasevic, bridge, netdev, stephen, cwang
In-Reply-To: <1412350158-19061-1-git-send-email-vyasevic@redhat.com>
From: Vladislav Yasevich <vyasevich@gmail.com>
Date: Fri, 3 Oct 2014 11:29:15 -0400
> This series adds default pvid support to vlan filtering in the bridge.
> VLAN 1 (as recommended by 802.1q spec) is used as default pvid on ports.
> The the user can over-ride this configuration by configuring their
> own vlan information.
> The user can additionally change the default value throught the
> sysfs interface (netlink comming shortly).
> The user can turn off default pvid functionality by setting default
> pvid to 0.
> This series changes the default behavior of the bridge when
> vlan filtering is turned on. Currently, ports without any vlan
> filtering configured will not recevie any traffic at all. This patch
> changes the behavior of the above ports to receive only untagged traffic.
Series applied, thanks Vlad.
^ permalink raw reply
* Re: [PATCH RESEND] net: pxa168_eth: avoid using signed char for bitops
From: David Miller @ 2014-10-06 1:19 UTC (permalink / raw)
To: antoine.tenart
Cc: dan.carpenter, sebastian.hesselbarth, alexandre.belloni,
thomas.petazzoni, zmxu, jszhang, netdev, linux-arm-kernel,
linux-kernel
In-Reply-To: <1412348899-20586-1-git-send-email-antoine.tenart@free-electrons.com>
From: Antoine Tenart <antoine.tenart@free-electrons.com>
Date: Fri, 3 Oct 2014 17:08:19 +0200
> Signedness bugs may occur when using signed char for bitops,
> depending on if the highest bit is ever used.
>
> Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Applied, thanks.
^ permalink raw reply
* Re: [net-next PATCH v1 1/3] net: sched: af_packet support for direct ring access
From: John Fastabend @ 2014-10-06 1:18 UTC (permalink / raw)
To: David Miller
Cc: fw, dborkman, gerlitz.or, hannes, netdev, john.ronciak, amirv,
eric.dumazet, danny.zhou
In-Reply-To: <20141005.210938.412085917241295226.davem@davemloft.net>
On 10/05/2014 06:09 PM, David Miller wrote:
> From: Florian Westphal <fw@strlen.de>
> Date: Mon, 6 Oct 2014 02:29:51 +0200
>
>> John Fastabend <john.fastabend@gmail.com> wrote:
>>> There is one critical difference when running with these interfaces
>>> vs running without them. In the normal case the af_packet module
>>> uses a standard descriptor format exported by the af_packet user
>>> space headers. In this model because we are working directly with
>>> driver queues the descriptor format maps to the descriptor format
>>> used by the device. User space applications can learn device
>>> information from the socket option PACKET_DEV_DESC_INFO which
>>> should provide enough details to extrapulate the descriptor formats.
>>> Although this adds some complexity to user space it removes the
>>> requirement to copy descriptor fields around.
>>
>> I find it very disappointing that we seem to have to expose such
>> hardware specific details to userspace via hw-independent interface.
>>
>> How big of a cost are we talking about when you say that it 'removes
>> the requirement to copy descriptor fields'?
>
> FWIW, it also avoids the domain switch (which is just a fancy way
> to refer to performing the system call), both in and out.
>
Right, my description could have been better and called this out.
Thanks.
--
John Fastabend Intel Corporation
^ permalink raw reply
* Re: [PATCH 0/4] ISDN patches for net-next
From: David Miller @ 2014-10-06 1:18 UTC (permalink / raw)
To: tilman; +Cc: netdev, hjlipp, isdn, isdn4linux
In-Reply-To: <cover.1412348612.git.tilman@imap.cc>
From: Tilman Schmidt <tilman@imap.cc>
Date: Fri, 3 Oct 2014 17:03:32 +0200
> Here's a series of patches for the ISDN CAPI subsystem and the
> Gigaset ISDN driver. Please merge via net-next.
Series applied, thanks.
^ permalink raw reply
* Re: [PATCH 0/2] net: spider_net: fix possible bitops errors
From: David Miller @ 2014-10-06 1:15 UTC (permalink / raw)
To: antoine.tenart
Cc: dan.carpenter, kou.ishizaki, jens, netdev, linux-arm-kernel,
linux-kernel
In-Reply-To: <1412348517-20352-1-git-send-email-antoine.tenart@free-electrons.com>
From: Antoine Tenart <antoine.tenart@free-electrons.com>
Date: Fri, 3 Oct 2014 17:01:53 +0200
> Dan reported a possible signedness issue on the pxa168_eth driver. While
> having a look at it, I came across a similar problem in the spider_net
> driver.
>
> Here is one proposal to fix it. The first patch rework the
> spider_net_set_mac() function by removing the spider_net_get_mac_address()
> call and using memcpy() to set netdev->dev_addr (which is what's done in
> lots of Ethernet drivers) and the second one fix the actual signedness
> issue.
>
> If for any reason you really want to keep a call to
> spider_net_get_mac_address() because the memcpy() is somehow not good
> enough here, we can also come up with a solution involving a temporary
> unsigned char variable.
Series applied, thanks.
^ permalink raw reply
* Re: [net-next PATCH v1 1/3] net: sched: af_packet support for direct ring access
From: John Fastabend @ 2014-10-06 1:12 UTC (permalink / raw)
To: Florian Westphal
Cc: dborkman, gerlitz.or, hannes, netdev, john.ronciak, amirv,
eric.dumazet, danny.zhou
In-Reply-To: <20141006002951.GA24376@breakpoint.cc>
On 10/05/2014 05:29 PM, Florian Westphal wrote:
> John Fastabend <john.fastabend@gmail.com> wrote:
>> There is one critical difference when running with these interfaces
>> vs running without them. In the normal case the af_packet module
>> uses a standard descriptor format exported by the af_packet user
>> space headers. In this model because we are working directly with
>> driver queues the descriptor format maps to the descriptor format
>> used by the device. User space applications can learn device
>> information from the socket option PACKET_DEV_DESC_INFO which
>> should provide enough details to extrapulate the descriptor formats.
>> Although this adds some complexity to user space it removes the
>> requirement to copy descriptor fields around.
>
> I find it very disappointing that we seem to have to expose such
> hardware specific details to userspace via hw-independent interface.
>
Well it was only for convenience if it doesn't fit as a socket
option we can remove it. We can look up the device using the netdev
name from the bind call. I see your point though so if there is
consensus that this is not needed that is fine.
> How big of a cost are we talking about when you say that it 'removes
> the requirement to copy descriptor fields'?
>
This was likely a poor description. If you want to let user space
poll on the ring (without using system calls or interrupts) then
I don't see how you can _not_ expose the ring directly complete with
the vendor descriptor formats.
> Thanks,
> Florian
>
--
John Fastabend Intel Corporation
^ permalink raw reply
* Re: [PATCH net 1/1] hyperv: Fix a bug in netvsc_send()
From: David Miller @ 2014-10-06 1:11 UTC (permalink / raw)
To: kys; +Cc: olaf, netdev, jasowang, linux-kernel, apw, devel
In-Reply-To: <1412530971-29897-1-git-send-email-kys@microsoft.com>
From: "K. Y. Srinivasan" <kys@microsoft.com>
Date: Sun, 5 Oct 2014 10:42:51 -0700
> After the packet is successfully sent, we should not touch the packet
> as it may have been freed. This patch is based on the work done by
> Long Li <longli@microsoft.com>.
>
> David, please queue this up for stable.
>
> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
> Reported-by: Sitsofe Wheeler <sitsofe@yahoo.com>
Applied and queued up for -stable.
^ permalink raw reply
* Re: [net-next PATCH v1 1/3] net: sched: af_packet support for direct ring access
From: David Miller @ 2014-10-06 1:09 UTC (permalink / raw)
To: fw
Cc: john.fastabend, dborkman, gerlitz.or, hannes, netdev,
john.ronciak, amirv, eric.dumazet, danny.zhou
In-Reply-To: <20141006002951.GA24376@breakpoint.cc>
From: Florian Westphal <fw@strlen.de>
Date: Mon, 6 Oct 2014 02:29:51 +0200
> John Fastabend <john.fastabend@gmail.com> wrote:
>> There is one critical difference when running with these interfaces
>> vs running without them. In the normal case the af_packet module
>> uses a standard descriptor format exported by the af_packet user
>> space headers. In this model because we are working directly with
>> driver queues the descriptor format maps to the descriptor format
>> used by the device. User space applications can learn device
>> information from the socket option PACKET_DEV_DESC_INFO which
>> should provide enough details to extrapulate the descriptor formats.
>> Although this adds some complexity to user space it removes the
>> requirement to copy descriptor fields around.
>
> I find it very disappointing that we seem to have to expose such
> hardware specific details to userspace via hw-independent interface.
>
> How big of a cost are we talking about when you say that it 'removes
> the requirement to copy descriptor fields'?
FWIW, it also avoids the domain switch (which is just a fancy way
to refer to performing the system call), both in and out.
^ permalink raw reply
* [PATCH net-next] ipvs: Avoid null-pointer deref in debug code
From: Alex Gartrell @ 2014-10-06 0:54 UTC (permalink / raw)
To: horms; +Cc: ja, dan.carpenter, lvs-devel, netdev, kernel-team, Alex Gartrell
In-Reply-To: <20141001174526.GA16206@mwanda>
Ensure that the pointer is non-NULL before dereferencing it for debugging
purposes.
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Alex Gartrell <agartrell@fb.com>
---
net/netfilter/ipvs/ip_vs_xmit.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c
index 91f17c1..06bba9b 100644
--- a/net/netfilter/ipvs/ip_vs_xmit.c
+++ b/net/netfilter/ipvs/ip_vs_xmit.c
@@ -316,7 +316,7 @@ __ip_vs_get_out_rt(int skb_af, struct sk_buff *skb, struct ip_vs_dest *dest,
if (unlikely(crosses_local_route_boundary(skb_af, skb, rt_mode,
local))) {
IP_VS_DBG_RL("We are crossing local and non-local addresses"
- " daddr=%pI4\n", &dest->addr.ip);
+ " daddr=%pI4\n", dest ? &dest->addr.ip : NULL);
goto err_put;
}
@@ -458,7 +458,7 @@ __ip_vs_get_out_rt_v6(int skb_af, struct sk_buff *skb, struct ip_vs_dest *dest,
if (unlikely(crosses_local_route_boundary(skb_af, skb, rt_mode,
local))) {
IP_VS_DBG_RL("We are crossing local and non-local addresses"
- " daddr=%pI6\n", &dest->addr.in6);
+ " daddr=%pI6\n", dest ? &dest->addr.in6 : NULL);
goto err_put;
}
--
Alex Gartrell <agartrell@fb.com>
^ permalink raw reply related
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