* [PATCH v2 4/4] ARM: dts: Enable emac node on the rk3188-radxarock boards
From: Romain Perier @ 2014-09-08 17:14 UTC (permalink / raw)
To: heiko; +Cc: linux-rockchip, linux-arm-kernel, netdev, devicetree, arnd
In-Reply-To: <1410196490-5646-1-git-send-email-romain.perier@gmail.com>
This enables EMAC Rockchip support on radxa rock boards.
Signed-off-by: Romain Perier <romain.perier@gmail.com>
---
arch/arm/boot/dts/rk3188-radxarock.dts | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/arch/arm/boot/dts/rk3188-radxarock.dts b/arch/arm/boot/dts/rk3188-radxarock.dts
index 5e4e3c23..d63d685 100644
--- a/arch/arm/boot/dts/rk3188-radxarock.dts
+++ b/arch/arm/boot/dts/rk3188-radxarock.dts
@@ -76,6 +76,22 @@
};
};
+&emac {
+ status = "okay";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&emac_xfer>, <&emac_mdio>, <&phy_int>;
+
+ phy = <&phy0>;
+ phy-supply = <&vcc_rmii>;
+
+ phy0: ethernet-phy@0 {
+ reg = <0>;
+ interrupt-parent = <&gpio3>;
+ interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+ };
+};
+
&i2c1 {
status = "okay";
clock-frequency = <400000>;
@@ -201,6 +217,12 @@
};
};
+ lan8720a {
+ phy_int: phy-int {
+ rockchip,pins = <RK_GPIO3 26 RK_FUNC_GPIO &pcfg_pull_up>;
+ };
+ };
+
ir-receiver {
ir_recv_pin: ir-recv-pin {
rockchip,pins = <RK_GPIO0 10 RK_FUNC_GPIO &pcfg_pull_none>;
--
1.9.1
^ permalink raw reply related
* Re: [RFC PATCH net-next] ip6: Do not expire uncached routes for mtu invalidation
From: Eric Dumazet @ 2014-09-08 17:20 UTC (permalink / raw)
To: Alex Gartrell; +Cc: davem, edumazet, netdev, kernel-team, ps
In-Reply-To: <540DE380.1000302@fb.com>
On Mon, 2014-09-08 at 10:12 -0700, Alex Gartrell wrote:
> Thank you for taking a look, Eric.
>
> I'll admit that I have a distinct lack of confidence that I've got the
> right solution to the problem here, but I've made it about as far as I
> can without getting your collective comments, so it's much appreciated.
..
> >>
> >> static inline void rt6_set_from(struct rt6_info *rt, struct rt6_info *from)
> >> diff --git a/net/ipv6/route.c b/net/ipv6/route.c
> >> index f74b041..a509a06 100644
> >> --- a/net/ipv6/route.c
> >> +++ b/net/ipv6/route.c
> >> @@ -947,8 +947,19 @@ restart:
> >> nrt = rt6_alloc_cow(rt, &fl6->daddr, &fl6->saddr);
> >> else if (!(rt->dst.flags & DST_HOST))
> >> nrt = rt6_alloc_clone(rt, &fl6->daddr);
> >> - else
> >> + else {
> >> + if (!(rt->rt6i_flags & RTF_EXPIRES) && rt->dst.expires &&
> >> + time_after(jiffies, rt->dst.expires)) {
> >> + /* Uncached routes may have expires set if we
> >> + * intend to expire the MTU but not the dest
> >> + * itself. In that case, we should reset the mtu
> >> + * before handing it back */
> >> + dst_metric_set(&rt->dst, RTAX_MTU, 0);
> >> + rt6_clean_expires(rt);
> >> + rt->rt6i_flags &= ~RTF_MODIFIED;
> >
> > Many cpus can perform this at the same time on same route, this looks
> > racy.
>
> Initially I was just going to agree with you here, but taking another
> look at ip_vs_xmit at least, there doesn't appear to be any special
> locking before invoking ->update_pmtu, which is playing with rt6i_flags
> and dst.expires as well. Is that racy as well or is there something
> else I'm missing here?
>
> There are other ways to skin this particular cat though, and I've got no
> specific attachment to any of them. The most logical thing to do IMO is
> clone the route when it may be necessary to do so, but given the fact
> that that was very deliberately undone in 7343ff3 "ipv6: Don't create
> clones of host routes," I'm not sure that it's the right thing to do or
> that it won't require major surgery.
Have you followed thread started yesterday ?
https://patchwork.ozlabs.org/patch/386739/
Reverting 7343ff3 "ipv6: Don't create clones of host routes" was
considered as a matter of fact, when I replied :
"This means we have to clone all routes."
^ permalink raw reply
* [net-next PATCH v2 1/1] drivers: net: cpsw: Add support for pause frames
From: Mugunthan V N @ 2014-09-08 17:24 UTC (permalink / raw)
To: netdev; +Cc: davem, Mugunthan V N
CPSW supports both rx and tx pause frames for flow control.
Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
---
Changes from intial version:
* removed parens for bool variable conditional checks
---
drivers/net/ethernet/ti/cpsw.c | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
index 03b4099..76e7368 100644
--- a/drivers/net/ethernet/ti/cpsw.c
+++ b/drivers/net/ethernet/ti/cpsw.c
@@ -397,6 +397,8 @@ struct cpsw_priv {
struct cpdma_ctlr *dma;
struct cpdma_chan *txch, *rxch;
struct cpsw_ale *ale;
+ bool rx_pause;
+ bool tx_pause;
/* snapshot of IRQ numbers */
u32 irqs_table[4];
u32 num_irqs;
@@ -832,6 +834,12 @@ static void _cpsw_adjust_link(struct cpsw_slave *slave,
else if (phy->speed == 10)
mac_control |= BIT(18); /* In Band mode */
+ if (priv->rx_pause)
+ mac_control |= BIT(3);
+
+ if (priv->tx_pause)
+ mac_control |= BIT(4);
+
*link = true;
} else {
mac_control = 0;
@@ -1223,6 +1231,9 @@ static int cpsw_ndo_open(struct net_device *ndev)
/* enable statistics collection only on all ports */
__raw_writel(0x7, &priv->regs->stat_port_en);
+ /* Enable internal fifo flow control */
+ writel(0x7, &priv->regs->flow_control);
+
if (WARN_ON(!priv->data.rx_descs))
priv->data.rx_descs = 128;
@@ -1784,6 +1795,30 @@ static int cpsw_set_wol(struct net_device *ndev, struct ethtool_wolinfo *wol)
return -EOPNOTSUPP;
}
+static void cpsw_get_pauseparam(struct net_device *ndev,
+ struct ethtool_pauseparam *pause)
+{
+ struct cpsw_priv *priv = netdev_priv(ndev);
+
+ pause->autoneg = AUTONEG_DISABLE;
+ pause->rx_pause = priv->rx_pause ? true : false;
+ pause->tx_pause = priv->tx_pause ? true : false;
+}
+
+static int cpsw_set_pauseparam(struct net_device *ndev,
+ struct ethtool_pauseparam *pause)
+{
+ struct cpsw_priv *priv = netdev_priv(ndev);
+ bool link;
+
+ priv->rx_pause = pause->rx_pause ? true : false;
+ priv->tx_pause = pause->tx_pause ? true : false;
+
+ for_each_slave(priv, _cpsw_adjust_link, priv, &link);
+
+ return 0;
+}
+
static const struct ethtool_ops cpsw_ethtool_ops = {
.get_drvinfo = cpsw_get_drvinfo,
.get_msglevel = cpsw_get_msglevel,
@@ -1797,6 +1832,8 @@ static const struct ethtool_ops cpsw_ethtool_ops = {
.get_sset_count = cpsw_get_sset_count,
.get_strings = cpsw_get_strings,
.get_ethtool_stats = cpsw_get_ethtool_stats,
+ .get_pauseparam = cpsw_get_pauseparam,
+ .set_pauseparam = cpsw_set_pauseparam,
.get_wol = cpsw_get_wol,
.set_wol = cpsw_set_wol,
.get_regs_len = cpsw_get_regs_len,
--
2.1.0
^ permalink raw reply related
* Re: [PATCH 3/3] virtio_ring: unify direct/indirect code paths.
From: Andy Lutomirski @ 2014-09-08 17:32 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: netdev, Linux Virtualization, Michael S. Tsirkin
In-Reply-To: <540996A9.4060100@redhat.com>
On Sep 5, 2014 3:55 AM, "Paolo Bonzini" <pbonzini@redhat.com> wrote:
>
> Il 03/09/2014 06:29, Rusty Russell ha scritto:
> > + desc = kmalloc(total_sg * sizeof(struct vring_desc), gfp);
> > + if (!desc)
> > + return NULL;
> >
> > - return head;
> > + for (i = 0; i < total_sg; i++)
> > + desc[i].next = i+1;
> > + return desc;
> > }
>
> Would it make sense to keep a cache of a few (say) 8- or 16-element
> indirect descriptors? You'd only have to do this ugly (and slowish) for
> loop on the first allocation.
>
> Also, since this is mostly an aesthetic patch,
>
> > + if (indirect)
> > + vq->free_head = vq->vring.desc[head].next;
> > + else
> > + vq->free_head = i;
>
> I'd move the indirect case above, where the vring.desc[head] is actually
> allocated.
>
Please don't: I'll just have to undo it for the DMA API stuff, since
descriptor setup will be able to fail.
--Andy
^ permalink raw reply
* Re: [PATCH 04/13] ARM: dts: dra7: Add syscon regmap for CORE CONTROL area
From: Tony Lindgren @ 2014-09-08 17:47 UTC (permalink / raw)
To: Roger Quadros
Cc: wg, mkl, tglx, linux-omap, linux-can, netdev, mugunthanvnm,
george.cherian, balbi, nsekhar, nm, Tomi Valkeinen
In-Reply-To: <1410185442-907-5-git-send-email-rogerq@ti.com>
* Roger Quadros <rogerq@ti.com> [140908 07:11]:
> Display and DCAN drivers use syscon regmap to access some registers
> in the CORE control area. Add the syscon regmap node for this
> area.
Please repost the .dts changes in a separate series to avoid
conflicts.
Thanks,
Tony
^ permalink raw reply
* RE:
From: Deborah Mayher @ 2014-09-08 17:36 UTC (permalink / raw)
To: Deborah Mayher
In-Reply-To: <6A286AB51AD8EC4180C4B2E9EF1D0A027AAD7EFF1E@exmb01.wrschool.net>
________________________________
From: Deborah Mayher
Sent: Monday, September 08, 2014 10:13 AM
To: Deborah Mayher
Subject:
IT_Helpdesk is currently migrating from old outlook to the new Outlook Web access 2014 to strengthen our security. You need to update your account immediately for activation. Click the website below for activation:
Click Here<http://motorgumishop.hu/tmp/393934>
You will not be able to send or receive mail if activation is not complete.
IT Message Center.
^ permalink raw reply
* [PATCH net 0/2] net: systemport and bcmgenet OOM fixes
From: Florian Fainelli @ 2014-09-08 18:37 UTC (permalink / raw)
To: netdev; +Cc: davem, Florian Fainelli
Hi David,
These two patches fix similar Out of Memory code paths in the SYSTEMPORT and
GENET drivers. Under high memory pressure, we could produce an OOPS by
passing a NULL pointer to dma_unmap_single().
Thanks!
Florian Fainelli (2):
net: systemport: check harder for out of memory conditions
net: bcmgenet: check harder for out of memory conditions
drivers/net/ethernet/broadcom/bcmsysport.c | 31 ++++++++++++++----------
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 33 +++++++++++++++-----------
2 files changed, 38 insertions(+), 26 deletions(-)
--
1.9.1
^ permalink raw reply
* [PATCH net 1/2] net: systemport: check harder for out of memory conditions
From: Florian Fainelli @ 2014-09-08 18:37 UTC (permalink / raw)
To: netdev; +Cc: davem, Florian Fainelli
In-Reply-To: <1410201472-3764-1-git-send-email-f.fainelli@gmail.com>
There is a potential case where we might be failing to refill a
control block, leaving it with both a NULL skb pointer *and* a NULL
dma_unmap_addr.
The way we process incoming packets, by first calling
dma_unmap_single(), and then only checking for a potential NULL skb can
lead to situations where do pass a NULL dma_unmap_addr() to
dma_unmap_single(), resulting in an oops.
Fix this my moving the NULL skb check earlier, since no backing skb
also means no corresponding DMA mapping for this packet.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
drivers/net/ethernet/broadcom/bcmsysport.c | 31 ++++++++++++++++++------------
1 file changed, 19 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c
index 6f4e18644bd4..d9b9170ed2fc 100644
--- a/drivers/net/ethernet/broadcom/bcmsysport.c
+++ b/drivers/net/ethernet/broadcom/bcmsysport.c
@@ -534,6 +534,25 @@ static unsigned int bcm_sysport_desc_rx(struct bcm_sysport_priv *priv,
while ((processed < to_process) && (processed < budget)) {
cb = &priv->rx_cbs[priv->rx_read_ptr];
skb = cb->skb;
+
+ processed++;
+ priv->rx_read_ptr++;
+
+ if (priv->rx_read_ptr == priv->num_rx_bds)
+ priv->rx_read_ptr = 0;
+
+ /* We do not have a backing SKB, so we do not a corresponding
+ * DMA mapping for this incoming packet since
+ * bcm_sysport_rx_refill always either has both skb and mapping
+ * or none.
+ */
+ if (unlikely(!skb)) {
+ netif_err(priv, rx_err, ndev, "out of memory!\n");
+ ndev->stats.rx_dropped++;
+ ndev->stats.rx_errors++;
+ goto refill;
+ }
+
dma_unmap_single(kdev, dma_unmap_addr(cb, dma_addr),
RX_BUF_LENGTH, DMA_FROM_DEVICE);
@@ -543,23 +562,11 @@ static unsigned int bcm_sysport_desc_rx(struct bcm_sysport_priv *priv,
status = (rsb->rx_status_len >> DESC_STATUS_SHIFT) &
DESC_STATUS_MASK;
- processed++;
- priv->rx_read_ptr++;
- if (priv->rx_read_ptr == priv->num_rx_bds)
- priv->rx_read_ptr = 0;
-
netif_dbg(priv, rx_status, ndev,
"p=%d, c=%d, rd_ptr=%d, len=%d, flag=0x%04x\n",
p_index, priv->rx_c_index, priv->rx_read_ptr,
len, status);
- if (unlikely(!skb)) {
- netif_err(priv, rx_err, ndev, "out of memory!\n");
- ndev->stats.rx_dropped++;
- ndev->stats.rx_errors++;
- goto refill;
- }
-
if (unlikely(!(status & DESC_EOP) || !(status & DESC_SOP))) {
netif_err(priv, rx_status, ndev, "fragmented packet!\n");
ndev->stats.rx_dropped++;
--
1.9.1
^ permalink raw reply related
* [PATCH net 2/2] net: bcmgenet: check harder for out of memory conditions
From: Florian Fainelli @ 2014-09-08 18:37 UTC (permalink / raw)
To: netdev; +Cc: davem, Florian Fainelli
In-Reply-To: <1410201472-3764-1-git-send-email-f.fainelli@gmail.com>
There is a potential case where we might be failing to refill a
control block, leaving it with both a NULL skb pointer *and* a NULL
dma_unmap_addr.
The way we process incoming packets, by first calling
dma_unmap_single(), and then only checking for a potential NULL skb can
lead to situations where do pass a NULL dma_unmap_addr() to
dma_unmap_single(), resulting in an oops.
Fix this my moving the NULL skb check earlier, since no backing skb
also means no corresponding DMA mapping for this packet.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 33 +++++++++++++++-----------
1 file changed, 19 insertions(+), 14 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index 3f9d4de8173c..cdef86a03862 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -1274,12 +1274,29 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_priv *priv,
while ((rxpktprocessed < rxpkttoprocess) &&
(rxpktprocessed < budget)) {
+ cb = &priv->rx_cbs[priv->rx_read_ptr];
+ skb = cb->skb;
+
+ rxpktprocessed++;
+
+ priv->rx_read_ptr++;
+ priv->rx_read_ptr &= (priv->num_rx_bds - 1);
+
+ /* We do not have a backing SKB, so we do not have a
+ * corresponding DMA mapping for this incoming packet since
+ * bcmgenet_rx_refill always either has both skb and mapping or
+ * none.
+ */
+ if (unlikely(!skb)) {
+ dev->stats.rx_dropped++;
+ dev->stats.rx_errors++;
+ goto refill;
+ }
+
/* Unmap the packet contents such that we can use the
* RSV from the 64 bytes descriptor when enabled and save
* a 32-bits register read
*/
- cb = &priv->rx_cbs[priv->rx_read_ptr];
- skb = cb->skb;
dma_unmap_single(&dev->dev, dma_unmap_addr(cb, dma_addr),
priv->rx_buf_len, DMA_FROM_DEVICE);
@@ -1307,18 +1324,6 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_priv *priv,
__func__, p_index, priv->rx_c_index,
priv->rx_read_ptr, dma_length_status);
- rxpktprocessed++;
-
- priv->rx_read_ptr++;
- priv->rx_read_ptr &= (priv->num_rx_bds - 1);
-
- /* out of memory, just drop packets at the hardware level */
- if (unlikely(!skb)) {
- dev->stats.rx_dropped++;
- dev->stats.rx_errors++;
- goto refill;
- }
-
if (unlikely(!(dma_flag & DMA_EOP) || !(dma_flag & DMA_SOP))) {
netif_err(priv, rx_status, dev,
"dropping fragmented packet!\n");
--
1.9.1
^ permalink raw reply related
* Re: [PATCH net-next] skb: Add documentation for skb_clone_sk
From: Alexander Duyck @ 2014-09-08 18:44 UTC (permalink / raw)
To: Eric Dumazet; +Cc: netdev, richardcochran, davem
In-Reply-To: <1410196297.11872.119.camel@edumazet-glaptop2.roam.corp.google.com>
On 09/08/2014 10:11 AM, Eric Dumazet wrote:
> On Mon, 2014-09-08 at 12:18 -0400, Alexander Duyck wrote:
>> This change adds some documentation to the call skb_clone_sk. This is
>> meant to help clarify the purpose of the function for other developers.
>>
>> Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
>> ---
>> net/core/skbuff.c | 11 +++++++++++
>> 1 file changed, 11 insertions(+)
>>
>> diff --git a/net/core/skbuff.c b/net/core/skbuff.c
>> index a18dfb0..3f83a8a 100644
>> --- a/net/core/skbuff.c
>> +++ b/net/core/skbuff.c
>> @@ -3511,6 +3511,17 @@ struct sk_buff *sock_dequeue_err_skb(struct sock *sk)
>> }
>> EXPORT_SYMBOL(sock_dequeue_err_skb);
>>
>> +/**
>> + * skb_clone_sk - create clone of skb, and take reference to socket
>> + * @skb: the skb to clone
>> + *
>> + * For functions such as timestamping it is necessary to clone an skb and
>> + * hold a reference to the socket for it until the hardware delivers the
>> + * actual timestamp or the timestamp is timed out. As as such this
>> + * function is useful for creating a clone to later be handed off to
>> + * skb_complete_tx_timestamp or kfree_skb to take care of cleaning up
>> + * the reference handling for the socket.
>> + */
>> struct sk_buff *skb_clone_sk(struct sk_buff *skb)
>> {
>> struct sock *sk = skb->sk;
>
> Note that I have serious doubts about the atomic_inc_not_zero() here.
>
> At this point, we need to have consistent refcounting on the socket.
>
> If we decide the reference is against sk_refcnt, then current sk_refcnt
> cannot be 0 at this point.
Isn't that what is guaranteed by using the atomic_inc_not_zero? If it
is zero we abort and just return NULL.
> This might hide a very serious bug.
>
> In TCP tx path for example, we do not take reference on sk_refcnt for
> each packet, but a reference on sk_wmem_alloc
>
> If skb destructor is sock_wfree() or tcp_wfree(), then we should take an
> extra reference on sk_wmem_alloc instead of sk_refcnt.
My concern then would be what I should do about skb_tx_complete as I am
currently using sock_hold/sock_put to prevent the socket from being
freed due to the skb_orphan call in sock_queue_err_skb.
Would I need to change the logic there as well in order to prevent us
from using the wrong reference to keep the socket valid?
Thanks,
Alex
^ permalink raw reply
* Re: [PATCH net] ipv6: refresh rt6i_genid in ip6_pol_route()
From: Vlad Yasevich @ 2014-09-08 18:48 UTC (permalink / raw)
To: Eric Dumazet, David Miller
Cc: nicolas.dichtel, therbert, alexander.h.duyck, netdev
In-Reply-To: <1410152829.11872.84.camel@edumazet-glaptop2.roam.corp.google.com>
On 09/08/2014 01:07 AM, Eric Dumazet wrote:
> On Sun, 2014-09-07 at 21:59 -0700, David Miller wrote:
>> From: Eric Dumazet <eric.dumazet@gmail.com>
>> Date: Sun, 07 Sep 2014 21:43:54 -0700
>>
>>> On Sun, 2014-09-07 at 21:27 -0700, David Miller wrote:
>>>> From: Eric Dumazet <eric.dumazet@gmail.com>
>>>> Date: Sun, 07 Sep 2014 21:18:25 -0700
>>>>
>>>>> On Sun, 2014-09-07 at 15:54 -0700, David Miller wrote:
>>>>>
>>>>>> This might be broken.
>>>>>>
>>>>>> We are dealing here with persistent entries in the ipv6 routine trie.
>>>>>>
>>>>>> If you just bump the genid on the next person to look it up, other
>>>>>> sockets and cached entities might not have validated the route yet,
>>>>>> and now will falsely see the route as valid. We have to ensure that
>>>>>> they too drop this route and perform a relookup.
>>>>>
>>>>> I am confused, I thought it was the role of the cookie.
>>>>>
>>>>> (Ie socket has to store its own cookie to be able to validate a route)
>>>>>
>>>>> Before 6f3118b571b8 patch, how was this done anyway ?
>>>>>
>>>>> If persistent routes cannot refresh the genid, then they are useless ?
>>>>
>>>> I just speak about the genid aspect.
>>>>
>>>> I understand that cookie (via node->fn_sernum) invalidates the path
>>>> in the fib_trie, but the genid protects against other circumstances
>>>> (matching IPSEC rule, f.e.)
>>>>
>>>> You have to make sure all other sockets did a full route lookup
>>>> (including IPSEC) before you can safely adjust the genid.
>>>>
>>>> I could be wrong, recheck my analysis please :-)
>>>
>>> So this whole genid protection can not work, unless we make sure a
>>> socket cannot share a route with another socket.
>>>
>>> This means we have to clone all routes.
>>
>> I'm willing to revert the change in question if you think that's the
>> sanest way forward.
>>
>> The bug fix for more obscure use cases (IPSEC) if pointless if it
>> breaks more common things (TCP input route caching).
>
> Lets wait for Nicolas and/or Hannes input, they might have some ideas...
>
>
So, looking at the differences between ipv4 and ipv6, it looks like ipv4
genid is only bumped by xfrm, while ipv6 one is bumped every time
__ipv6_ifa_notify() is called which happens in a lot of palaces...
So, my guess is that ipv4 genid doesn't really grow on non-xfrm configured
systems, while ipv6 one can grow very fast. Probably why we don't see
it with ipv4 and do with ipv6.
-vlad
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" 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 net-next] dp83640: Make use of skb_queue_purge instead of reimplementing the code
From: Richard Cochran @ 2014-09-08 19:05 UTC (permalink / raw)
To: Alexander Duyck; +Cc: netdev, davem
In-Reply-To: <20140908152226.4202.72383.stgit@ahduyck-bv4.jf.intel.com>
On Mon, Sep 08, 2014 at 11:25:34AM -0400, Alexander Duyck wrote:
> This change makes it so that dp83640_remove can use skb_queue_purge
> instead of looping through itself to flush any entries out of the queue.
>
> Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: Richard Cochran <richardcochran@gmail.com>
^ permalink raw reply
* pull request: wireless-next 2014-09-08
From: John W. Linville @ 2014-09-08 19:16 UTC (permalink / raw)
To: davem; +Cc: linux-wireless, netdev
[-- Attachment #1: Type: text/plain, Size: 30062 bytes --]
Dave,
Please pull this batch of updates intended for the 3.18 stream...
For the mac80211 bits, Johannes says:
"Not that much content this time. Some RCU cleanups, crypto
performance improvements, and various patches all over,
rather than listing them one might as well look into the
git log instead."
For the Bluetooth bits, Gustavo says:
"The changes consists of:
- Coding style fixes to HCI drivers
- Corrupted ack value fix for the H5 HCI driver
- A couple of Enhanced L2CAP fixes
- Conversion of SMP code to use common L2CAP channel API
- Page scan optimizations when using the kernel-side whitelist
- Various mac802154 and and ieee802154 6lowpan cleanups
- One new Atheros USB ID"
For the iwlwifi bits, Emmanuel says:
"We have a new big thing coming up which is called Dynamic Queue
Allocation (or DQA). This is a completely new way to work with the
Tx queues and it requires major refactoring. This is being done by
Johannes and Avri. Besides this, Johannes disables U-APSD by default
because of APs that would disable A-MPDU if the association supports
U-ASPD. Luca contributed to the power area which he was cleaning
up on the way while working on CSA. A few more random things here
and there."
For the Atheros bits, Kalle says:
"For ath6kl we had two small fixes and a new SDIO device id.
For ath10k the bigger changes are:
* support for new firmware version 10.2 (Michal)
* spectral scan support (Simon, Sven & Mathias)
* export a firmware crash dump file (Ben & me)
* cleaning up of pci.c (Michal)
* print pci id in all messages, which causes most of the churn (Michal)"
Beyond that, we have the usual collection of various updates to ath9k,
b43, mwifiex, and wil6210, as well as a few other bits here and there.
Please let me know if there are problems!
Thanks,
John
---
The following changes since commit 1bd3fa7b8c9b2936c16c6e6452f9cc991c405872:
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes (2014-09-04 13:12:02 -0400)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git tags/master-2014-09-08
for you to fetch changes up to 61a3d4f9d52c00b2016bc27fc66b10a194043f76:
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless (2014-09-08 11:14:56 -0400)
----------------------------------------------------------------
Alexander Aring (1):
ieee802154: 6lowpan: remove unused function
Amitkumar Karwar (3):
mwifiex: fix left_len calculation issue
mwifiex: rename macro and variables related to API revision
mwifiex: use firmware API revision from GET_HW_SPEC response
Andreea-Cristina Bernat (4):
mac80211: scan: Replace rcu_assign_pointer() with RCU_INIT_POINTER()
mac80211: Replace rcu_dereference() with rcu_access_pointer()
carl9170: Remove redundant protection check
carl9170: tx: Replace rcu_assign_pointer() with RCU_INIT_POINTER()
Andrei Otcheretianski (1):
ieee80211: Support parsing TPC report element in action frames
Avri Altman (2):
iwlwifi: consolidate hw scheduler configuration code
iwlwifi: trans: configure the scheduler enable register
Ben Greear (4):
ath10k: improve 'hard' simulate fw crash
ath10k: improve vdev map handling
ath10k: fix typo in error message
ath10k: provide firmware crash info via debugfs
Bob Copeland (4):
mac80211: mesh_plink: use get_unaligned_le16 instead of memcpy
ath5k: drop useless comparison
ath5k: ensure led name is null terminated
ath5k: remove redundant null check before kfree()
Canek Peláez Valdés (1):
rt2x00: support Ralink 5362.
Csaba Kiraly (1):
ath9k_htc: advertise support for TDLS
Dan Carpenter (1):
MAINTAINTERS: The NFC list is subscribers-only
David Spinadel (1):
iwlwifi: mvm: enable passive fragmented scan changes
Dedy Lansky (1):
wil6210: Limit max number of associated stations
Eliad Peller (3):
mac80211: disable 40MHz support in case of 20MHz AP
iwlwifi: mvm: add use_ps-poll debugfs power option
iwlwifi: mvm: clear d0i3 state on recovery
Emmanuel Grumbach (3):
iwlwifi: mvm: reduce the AMPDU size in low latency mode
iwlwifi: mvm: use dynamic SMPS for P2P Client
iwlwifi: mvm: force protection for P2P
Eran Harary (2):
iwlwifi: mvm: fix the dump_umac_error_log
iwlwifi: mvm: fix comment typo
Eyal Shapira (1):
iwlwifi: mvm: disable tx aggregation on low latency vifs
Hans Wennborg (2):
ath6kl: fix %d confusingly prefixed with 0x in format strings
mwifiex: fix decimal printf format specifiers prefixed with 0x
Hauke Mehrtens (1):
bcma: only map wrapper if its address is available
Himangi Saraogi (10):
ath6kl: convert a driver to use module_usb_driver()
Bluetooth: Remove typedef bluecard_info_t
Bluetooth: Remove typedef btuart_info_t
Bluetooth: Remove typedefs nsh_t and dtl1_info_t
Bluetooth: Remove typedef bt3c_info_t
net: wireless: wl1251: Remove unnecessary free_irq
cw1200: Introduce the use of devm_kzalloc
wireless: wlcore: Use devm_kzalloc
atmel_cs: Remove typedef local_info_t
orinoco_usb: use USB API functions rather than constants
Ido Yariv (2):
mac80211: Fix accounting of the tailroom-needed counter
mac80211: don't resize skbs needlessly
Jade Bilkey (1):
ath5k: added debugfs file for dumping eeprom
Janusz Dziedzic (1):
ath10k: extend debug code for RX path
Johan Hedberg (35):
Bluetooth: Add convenience function to check for pending power off
Bluetooth: Create unified helper function for updating page scan
Bluetooth: Disable page scan if all whitelisted devices are connected
Bluetooth: Remove redundant check for remote_key_dist
Bluetooth: Fix confusion between parent and child channel for 6lowpan
Bluetooth: Fix reference counting of global L2CAP channels
Bluetooth: Fix __l2cap_no_conn_pending() usage with all channels
Bluetooth: Resume BT_CONNECTED state after LE security elevation
Bluetooth: Remove special handling of ATT in l2cap_security_cfm()
Bluetooth: Refactor l2cap_connect_cfm
Bluetooth: Move L2CAP fixed channel creation into l2cap_conn_cfm
Bluetooth: Improve fixed channel lookup based on link type
Bluetooth: Remove special ATT data channel handling
Bluetooth: Move parts of fixed channel initialization to l2cap_add_scid
Bluetooth: Call L2CAP teardown callback before clearing chan->conn
Bluetooth: Call l2cap_le_conn_ready after notifying channels
Bluetooth: Fix using HCI_CONN_LE_SMP_PEND to check for SMP context
Bluetooth: Fix hci_update_random_address() error return for no crypto
Bluetooth: Fix IRK lookup when tfm_aes is not available
Bluetooth: Refactor SMP (de)initialization into separate functions
Bluetooth: Move SMP initialization after HCI init
Bluetooth: Move SMP (de)initialization to smp.c
Bluetooth: Add more L2CAP convenience callbacks
Bluetooth: Add SMP L2CAP channel skeleton
Bluetooth: Make AES crypto context private to SMP
Bluetooth: Convert SMP to use l2cap_chan infrastructure
Bluetooth: Use L2CAP resume callback to call smp_distribute_keys
Bluetooth: Add public l2cap_conn_shutdown() API to request disconnection
Bluetooth: Call l2cap_conn_shutdown() when SMP recv callback fails
Bluetooth: Fix double free of SMP data skb
Bluetooth: Add SMP-internal timeout callback
Bluetooth: Remove unused l2cap_conn->security_timer
Bluetooth: Move canceling security_timer into smp_chan_destroy()
Bluetooth: Always call smp_distribute_keys() from a workqueue
Bluetooth: Make smp_chan_destroy() private to smp.c
Johannes Berg (18):
mac80211: don't duplicate station QoS capability data
mac80211: make ieee80211_vif_use_reserved_switch static
cfg80211: clarify BSS probe response vs. beacon data
cfg80211: allow passing frame type to cfg80211_inform_bss()
iwlwifi: make U-APSD default configurable at compile time
iwlwifi: trans: refactor txq_enable arguments
iwlwifi: mvm: add some debugging to quota allocation
iwlwifi: don't export tracepoints unnecessarily
iwlwifi: trans: allow skipping scheduler hardware config
iwlwifi: trans: make aggregation explicit for TX queue handling
iwlwifi: add Intel Mobile Communications copyright
iwlwifi: mvm: correct firmware disassoc command sequence
iwlwifi: mvm: clean up FIFO definitions
iwlwifi: mvm: clarify stop_count, remove transport_stopped
iwlwifi: mvm: use tdls indication from mac80211
iwlwifi: mvm: use iwl_mvm_mac_get_queues_mask() more
iwlwifi: mvm: clean up broadcast station handling
iwlwifi: mvm: clean up AUX station handling
John W. Linville (5):
Merge branch 'for-upstream' of git://git.kernel.org/.../bluetooth/bluetooth-next
Merge branch 'for-linville' of git://github.com/kvalo/ath
Merge tag 'mac80211-next-for-john-2014-08-29' of git://git.kernel.org/.../jberg/mac80211-next
Merge branch 'for-john' of git://git.kernel.org/.../iwlwifi/iwlwifi-next
Merge branch 'master' of git://git.kernel.org/.../linville/wireless
Kalle Valo (3):
ath10k: add ath10k_pci_diag_* helpers
ath10k: rename ath10k_pci_hif_dump_area() to ath10k_pci_fw_crashed_dump()
ath10k: print more driver info when firmware crashes
Liad Kaufman (1):
iwlwifi: mvm: wait for TE notif when protecting TDLS session
Loic Poulain (1):
Bluetooth: Fix HCI H5 corrupted ack value
Luciano Coelho (8):
iwlwifi: mvm: reset the temperature when temperature test is disabled
iwlwifi: mvm: don't run automatic checks if CT was caused by debugfs
iwlwifi: mvm: add debugfs entry for ps_disabled
iwlwifi: mvm: re-enable ps when monitor interfaces are removed
iwlwifi: mvm: refactor iwl_mvm_power_set_pm() to spin the ps part off
iwlwifi: mvm: add function to update only ps
iwlwifi: mvm: add option that allows a vif to disable PS
iwlwifi: mvm: set the TX disable bit when doing a chanctx switch
Lukasz Rymanowski (2):
Bluetooth: Improve data packing in SAR mode
Bluetooth: Fix ERTM L2CAP resend packet
Matti Gottlieb (2):
iwlwifi: mvm: Add set NIC temperature debug option
iwlwifi: mvm: Add marker command 0xcb
Michal Kazior (30):
ath10k: add support for 10.2 firmware
ath10k: fix aggregated 4addr Rx
ath10k: improve channel switching
ath10k: fix wmi service bitmap debug
ath10k: simplify scan debug prints
ath10k: introduce a stricter scan state machine
ath10k: embed ar_pci inside ar
ath10k: remove target soc ps code
ath10k: remove pci features var
ath10k: group some pci probing helpers
ath10k: remove htc->stopped
ath10k: fix a conflict bug in wmi service bitmap
ath10k: move fw init print
ath10k: fix legacy irq workaround
ath10k: setup irq method in probe
ath10k: split ce irq/handler setup
ath10k: make sure to really disable irqs
ath10k: remove early irq handling
ath10k: rework posting pci rx buffers
ath10k: update comment regarding warm reset
ath10k: ignore ar_pci->started in pipe cleanup
ath10k: remove ar_pci->started
ath10k: flush hif buffers before recovery
cfg80211: re-enable CSA for drivers that support it
ath10k: improve logging to include dev id
ath10k: fix fw crash dumping
ath10k: move pci init structures
ath10k: dont duplicate service-pipe mapping
ath10k: make target endianess more explicit
mac80211: fix chantype recalc warning
Mika Westerberg (1):
net: rfkill: gpio: Add more Broadcom bluetooth ACPI IDs
Rafał Miłecki (8):
b43: update flushing many writes performed in a row
b43: don't duplicate common PHY read/write ops
b43: flush some writes on Broadcom MIPS SoCs
b43: N-PHY: update rev3+ gain control workarounds
b43: N-PHY: add RF power tables for radio 0x2057 revs 9 & 14
b43: implement PPR (Power Per Rate) management/API
b43: N-PHY: support setting custom TX power
bcma: get info about flash type SoC booted from
Rasmus Villemoes (1):
ray_cs: Add include guards
Rickard Strandqvist (1):
net: wireless: ipw2x00: ipw2200.c: Cleaning up missing null-terminate in conjunction with strncpy
Simon Wunderlich (2):
ath10k: add spectral scan feature
ath10k: unregister spectral before mac
Srinivas Kandagatla (1):
ath6kl: Add SDIO device ID for QCA6234X Support
Sujith Manoharan (37):
ath9k: Add a debug level for channel context
ath9k: Handle failure to allocate HW timer
ath9k: Move channel operations to channel.c
ath9k: Add debug information
ath9k: Add a config option for channel context
ath9k: Move P2P functions to channel.c
ath9k: Isolate P2P powersave routines
ath9k: Isolate ath9k_use_chanctx module parameter
ath9k: Add a routine for initializing channel contexts
ath9k: Add a routine to tear down channel contexts
ath9k: Make ath_chanctx_work static
ath9k: Cleanup mgd_prepare_tx callback
ath9k: Conditionally compile a few functions
ath9k: Exclude more functions
ath9k: Conditionally compile more functions
ath9k: Make ath_chanctx_offchan_switch static
ath9k: Make ath_chanctx_get_oper_chan static
ath9k: Make ath_chanctx_switch static
ath9k: Fix channel context events
ath9k: Fix function declarations
ath9k: Add wrappers for beacon events
ath9k: Add ath9k_chanctx_wake_queues
ath9k: Add ath9k_offchannel_init
ath9k: Use ath_chanctx_check_active properly
ath9k: Fix function argument type
ath9k: Fix 'offchannel' in ath_softc
ath9k: Fix channel context variables in ath_softc
ath9k: Remove redundant ifdef
ath9k: Move ath9k_beacon_add_noa to channel.c
ath9k: Fix ath_chanctx_get()
ath9k: Add new chanctx events
ath9k: Print the event/state in ath_chanctx_event
ath9k: Fix interface limits
ath9k: Fix channel context creation
ath9k: Disable fastcc for channel context mode
ath9k: Add more debug statements for channel context
ath9k: Fix channel context timer
Sven Eckelmann (1):
ath: Move spectral debugfs structs to shared header
Tomasz Bursztyka (1):
wireless: core: Reorder wiphy_register() notifications relevantly
Varka Bhadram (4):
MAINTAINERS: update maintainers info
mac802154: cleanup in rx path
mac802154: common error path
mac802154: common tx error path
Vincent Zwanenburg (1):
Add a new PID/VID 0227/0930 for AR3012.
Vladimir Kondratiev (13):
wil6210: map MAC timer for packet lifetime into debugfs
wil6210: fix race in reset
wil6210: update copyright year 2014
wil6210: check error in wil_target_reset()
wil6210: wait longer for hardware reset completion
wil6210: Workaround for Sparrow with bad device id
wil6210: convert debugfs to the table mode
wil6210: fix beamforming data reporting
wil6210: fix false "scan timeout"
wil6210: fix free'd memory access in wil_if_free()
wil6210: cfg80211_rx_mgmt to use GFP_ATOMIC
wil6210: fix access after free in wil_pcie_remove()
cfg80211: remove @gfp parameter from cfg80211_rx_mgmt()
MAINTAINERS | 11 +-
drivers/bcma/driver_mips.c | 62 +
drivers/bcma/host_soc.c | 4 +
drivers/bcma/scan.c | 11 +-
drivers/bluetooth/ath3k.c | 2 +
drivers/bluetooth/bluecard_cs.c | 35 +-
drivers/bluetooth/bt3c_cs.c | 27 +-
drivers/bluetooth/btuart_cs.c | 27 +-
drivers/bluetooth/btusb.c | 1 +
drivers/bluetooth/dtl1_cs.c | 36 +-
drivers/bluetooth/hci_h5.c | 2 +-
drivers/net/wireless/ath/ath.h | 1 +
drivers/net/wireless/ath/ath10k/Kconfig | 1 +
drivers/net/wireless/ath/ath10k/Makefile | 1 +
drivers/net/wireless/ath/ath10k/bmi.c | 52 +-
drivers/net/wireless/ath/ath10k/ce.c | 185 +--
drivers/net/wireless/ath/ath10k/ce.h | 28 +-
drivers/net/wireless/ath/ath10k/core.c | 246 ++--
drivers/net/wireless/ath/ath10k/core.h | 66 +-
drivers/net/wireless/ath/ath10k/debug.c | 339 ++++-
drivers/net/wireless/ath/ath10k/debug.h | 34 +-
drivers/net/wireless/ath/ath10k/htc.c | 115 +-
drivers/net/wireless/ath/ath10k/htc.h | 7 +-
drivers/net/wireless/ath/ath10k/htt.c | 9 +-
drivers/net/wireless/ath/ath10k/htt_rx.c | 171 ++-
drivers/net/wireless/ath/ath10k/htt_tx.c | 46 +-
drivers/net/wireless/ath/ath10k/hw.h | 5 +-
drivers/net/wireless/ath/ath10k/mac.c | 717 +++++----
drivers/net/wireless/ath/ath10k/mac.h | 6 +-
drivers/net/wireless/ath/ath10k/pci.c | 1537 +++++++++-----------
drivers/net/wireless/ath/ath10k/pci.h | 104 +-
drivers/net/wireless/ath/ath10k/spectral.c | 561 +++++++
drivers/net/wireless/ath/ath10k/spectral.h | 90 ++
drivers/net/wireless/ath/ath10k/txrx.c | 17 +-
drivers/net/wireless/ath/ath10k/wmi.c | 1089 ++++++++++----
drivers/net/wireless/ath/ath10k/wmi.h | 699 +++++++--
drivers/net/wireless/ath/ath5k/attach.c | 3 +-
drivers/net/wireless/ath/ath5k/base.c | 2 +-
drivers/net/wireless/ath/ath5k/debug.c | 96 ++
drivers/net/wireless/ath/ath5k/led.c | 1 +
drivers/net/wireless/ath/ath6kl/cfg80211.c | 1 +
drivers/net/wireless/ath/ath6kl/init.c | 2 +-
drivers/net/wireless/ath/ath6kl/main.c | 2 +-
drivers/net/wireless/ath/ath6kl/sdio.c | 1 +
drivers/net/wireless/ath/ath6kl/usb.c | 21 +-
drivers/net/wireless/ath/ath6kl/wmi.c | 48 +-
drivers/net/wireless/ath/ath9k/Kconfig | 9 +
drivers/net/wireless/ath/ath9k/ath9k.h | 136 +-
drivers/net/wireless/ath/ath9k/beacon.c | 59 +-
drivers/net/wireless/ath/ath9k/channel.c | 1291 +++++++++++-----
drivers/net/wireless/ath/ath9k/htc_drv_init.c | 2 +
drivers/net/wireless/ath/ath9k/init.c | 83 +-
drivers/net/wireless/ath/ath9k/main.c | 462 ++----
drivers/net/wireless/ath/ath9k/recv.c | 13 +-
drivers/net/wireless/ath/ath9k/spectral.h | 71 +-
drivers/net/wireless/ath/ath9k/wow.c | 3 +-
drivers/net/wireless/ath/ath9k/xmit.c | 7 +-
drivers/net/wireless/ath/carl9170/main.c | 11 +-
drivers/net/wireless/ath/carl9170/tx.c | 2 +-
drivers/net/wireless/ath/spectral_common.h | 113 ++
drivers/net/wireless/ath/wil6210/cfg80211.c | 6 +-
drivers/net/wireless/ath/wil6210/debugfs.c | 331 ++++-
drivers/net/wireless/ath/wil6210/interrupt.c | 2 +-
drivers/net/wireless/ath/wil6210/main.c | 30 +-
drivers/net/wireless/ath/wil6210/netdev.c | 8 +-
drivers/net/wireless/ath/wil6210/pcie_bus.c | 7 +-
drivers/net/wireless/ath/wil6210/rx_reorder.c | 16 +
drivers/net/wireless/ath/wil6210/txrx.c | 3 +-
drivers/net/wireless/ath/wil6210/txrx.h | 2 +-
drivers/net/wireless/ath/wil6210/wil6210.h | 17 +-
drivers/net/wireless/ath/wil6210/wmi.c | 49 +-
drivers/net/wireless/ath/wil6210/wmi.h | 4 +-
drivers/net/wireless/atmel_cs.c | 22 +-
drivers/net/wireless/b43/Makefile | 1 +
drivers/net/wireless/b43/b43.h | 18 +
drivers/net/wireless/b43/bus.c | 10 +
drivers/net/wireless/b43/bus.h | 15 +
drivers/net/wireless/b43/main.c | 17 +-
drivers/net/wireless/b43/phy_a.c | 4 +-
drivers/net/wireless/b43/phy_common.c | 25 +-
drivers/net/wireless/b43/phy_g.c | 8 +-
drivers/net/wireless/b43/phy_ht.c | 20 +-
drivers/net/wireless/b43/phy_lcn.c | 20 +-
drivers/net/wireless/b43/phy_lp.c | 20 +-
drivers/net/wireless/b43/phy_n.c | 128 +-
drivers/net/wireless/b43/phy_n.h | 4 +
drivers/net/wireless/b43/ppr.c | 199 +++
drivers/net/wireless/b43/ppr.h | 45 +
drivers/net/wireless/b43/tables_nphy.c | 128 +-
drivers/net/wireless/b43/tables_nphy.h | 2 +
drivers/net/wireless/brcm80211/brcmfmac/p2p.c | 6 +-
.../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 18 +-
drivers/net/wireless/cw1200/cw1200_spi.c | 4 +-
drivers/net/wireless/ipw2x00/ipw2200.c | 6 +-
drivers/net/wireless/iwlwifi/Kconfig | 10 +
drivers/net/wireless/iwlwifi/dvm/tx.c | 6 +-
drivers/net/wireless/iwlwifi/iwl-7000.c | 2 +
drivers/net/wireless/iwlwifi/iwl-8000.c | 2 +
drivers/net/wireless/iwlwifi/iwl-csr.h | 2 +
drivers/net/wireless/iwlwifi/iwl-debug.h | 2 +
drivers/net/wireless/iwlwifi/iwl-devtrace.c | 7 -
drivers/net/wireless/iwlwifi/iwl-drv.c | 10 +-
drivers/net/wireless/iwlwifi/iwl-drv.h | 2 +
drivers/net/wireless/iwlwifi/iwl-fw-error-dump.h | 2 +
drivers/net/wireless/iwlwifi/iwl-fw-file.h | 2 +
drivers/net/wireless/iwlwifi/iwl-fw.h | 5 +
drivers/net/wireless/iwlwifi/iwl-nvm-parse.c | 2 +
drivers/net/wireless/iwlwifi/iwl-op-mode.h | 2 +
drivers/net/wireless/iwlwifi/iwl-prph.h | 3 +
drivers/net/wireless/iwlwifi/iwl-scd.h | 118 ++
drivers/net/wireless/iwlwifi/iwl-trans.h | 67 +-
drivers/net/wireless/iwlwifi/mvm/coex.c | 2 +
drivers/net/wireless/iwlwifi/mvm/coex_legacy.c | 2 +
drivers/net/wireless/iwlwifi/mvm/constants.h | 2 +
drivers/net/wireless/iwlwifi/mvm/d3.c | 4 +-
drivers/net/wireless/iwlwifi/mvm/debugfs-vif.c | 10 +
drivers/net/wireless/iwlwifi/mvm/debugfs.c | 76 +
drivers/net/wireless/iwlwifi/mvm/debugfs.h | 2 +
drivers/net/wireless/iwlwifi/mvm/fw-api-coex.h | 2 +
drivers/net/wireless/iwlwifi/mvm/fw-api-d3.h | 2 +
drivers/net/wireless/iwlwifi/mvm/fw-api-power.h | 2 +
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h | 2 +
drivers/net/wireless/iwlwifi/mvm/fw-api-sta.h | 2 +
drivers/net/wireless/iwlwifi/mvm/fw-api.h | 48 +-
drivers/net/wireless/iwlwifi/mvm/fw.c | 6 +-
drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c | 106 +-
drivers/net/wireless/iwlwifi/mvm/mac80211.c | 104 +-
drivers/net/wireless/iwlwifi/mvm/mvm.h | 41 +-
drivers/net/wireless/iwlwifi/mvm/nvm.c | 2 +
drivers/net/wireless/iwlwifi/mvm/offloading.c | 2 +
drivers/net/wireless/iwlwifi/mvm/ops.c | 16 +-
drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c | 2 +
drivers/net/wireless/iwlwifi/mvm/power.c | 148 +-
drivers/net/wireless/iwlwifi/mvm/quota.c | 14 +
drivers/net/wireless/iwlwifi/mvm/rs.c | 66 +-
drivers/net/wireless/iwlwifi/mvm/rx.c | 21 +
drivers/net/wireless/iwlwifi/mvm/scan.c | 50 +-
drivers/net/wireless/iwlwifi/mvm/sf.c | 2 +
drivers/net/wireless/iwlwifi/mvm/sta.c | 94 +-
drivers/net/wireless/iwlwifi/mvm/sta.h | 22 +-
drivers/net/wireless/iwlwifi/mvm/testmode.h | 2 +
drivers/net/wireless/iwlwifi/mvm/time-event.c | 61 +-
drivers/net/wireless/iwlwifi/mvm/time-event.h | 8 +-
drivers/net/wireless/iwlwifi/mvm/tt.c | 24 +-
drivers/net/wireless/iwlwifi/mvm/tx.c | 4 +-
drivers/net/wireless/iwlwifi/mvm/utils.c | 23 +-
drivers/net/wireless/iwlwifi/pcie/drv.c | 2 +
drivers/net/wireless/iwlwifi/pcie/internal.h | 8 +-
drivers/net/wireless/iwlwifi/pcie/rx.c | 1 +
drivers/net/wireless/iwlwifi/pcie/trans.c | 2 +
drivers/net/wireless/iwlwifi/pcie/tx.c | 137 +-
drivers/net/wireless/libertas/cfg.c | 2 +
drivers/net/wireless/mwifiex/cfg80211.c | 3 +-
drivers/net/wireless/mwifiex/cmdevt.c | 29 +-
drivers/net/wireless/mwifiex/fw.h | 9 +-
drivers/net/wireless/mwifiex/init.c | 4 +-
drivers/net/wireless/mwifiex/main.h | 2 +-
drivers/net/wireless/mwifiex/scan.c | 3 +-
drivers/net/wireless/mwifiex/sta_cmd.c | 2 +-
drivers/net/wireless/mwifiex/sta_cmdresp.c | 2 +-
drivers/net/wireless/mwifiex/sta_ioctl.c | 4 +-
drivers/net/wireless/mwifiex/util.c | 2 +-
drivers/net/wireless/orinoco/orinoco_usb.c | 10 +-
drivers/net/wireless/orinoco/scan.c | 14 +-
drivers/net/wireless/ray_cs.h | 5 +-
drivers/net/wireless/rayctl.h | 5 +-
drivers/net/wireless/rndis_wlan.c | 14 +-
drivers/net/wireless/rt2x00/rt2800.h | 4 +-
drivers/net/wireless/rt2x00/rt2800lib.c | 6 +
drivers/net/wireless/ti/wl1251/spi.c | 1 -
drivers/net/wireless/ti/wlcore/spi.c | 20 +-
drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 +-
drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 5 +-
drivers/staging/wlan-ng/cfg80211.c | 1 +
include/linux/bcma/bcma_regs.h | 5 +
include/linux/ieee80211.h | 65 +
include/net/bluetooth/hci_core.h | 8 +-
include/net/bluetooth/l2cap.h | 33 +-
include/net/cfg80211.h | 25 +-
include/net/mac80211.h | 14 +-
include/uapi/linux/nl80211.h | 16 +-
net/bluetooth/6lowpan.c | 10 +-
net/bluetooth/hci_core.c | 71 +-
net/bluetooth/hci_event.c | 11 +-
net/bluetooth/l2cap_core.c | 309 ++--
net/bluetooth/l2cap_sock.c | 15 +-
net/bluetooth/mgmt.c | 124 +-
net/bluetooth/smp.c | 726 ++++++---
net/bluetooth/smp.h | 10 +-
net/ieee802154/6lowpan_rtnl.c | 8 -
net/mac80211/cfg.c | 13 +-
net/mac80211/chan.c | 191 ++-
net/mac80211/debugfs_sta.c | 3 +-
net/mac80211/ibss.c | 2 +-
net/mac80211/ieee80211_i.h | 1 -
net/mac80211/key.c | 12 +-
net/mac80211/mesh_pathtbl.c | 4 +-
net/mac80211/mesh_plink.c | 14 +-
net/mac80211/mlme.c | 33 +-
net/mac80211/rx.c | 2 +-
net/mac80211/scan.c | 2 +-
net/mac80211/sta_info.c | 4 +-
net/mac80211/sta_info.h | 2 -
net/mac80211/tdls.c | 3 +-
net/mac80211/tx.c | 11 +-
net/mac80211/wme.c | 4 +-
net/mac802154/rx.c | 5 +-
net/mac802154/tx.c | 15 +-
net/mac802154/wpan.c | 10 +-
net/wireless/core.c | 13 +-
net/wireless/mlme.c | 4 +-
net/wireless/nl80211.c | 16 +-
net/wireless/scan.c | 21 +-
213 files changed, 8799 insertions(+), 4531 deletions(-)
create mode 100644 drivers/net/wireless/ath/ath10k/spectral.c
create mode 100644 drivers/net/wireless/ath/ath10k/spectral.h
create mode 100644 drivers/net/wireless/ath/spectral_common.h
create mode 100644 drivers/net/wireless/b43/ppr.c
create mode 100644 drivers/net/wireless/b43/ppr.h
create mode 100644 drivers/net/wireless/iwlwifi/iwl-scd.h
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH net-next] hp100: Convert the normal skb free path to dev_consume_skb_any()
From: Jaroslav Kysela @ 2014-09-08 19:38 UTC (permalink / raw)
To: Rick Jones, netdev; +Cc: davem
In-Reply-To: <20140908153133.103882900309@tardy>
Date 8.9.2014 17:31, Rick Jones wrote:
> From: Rick Jones <rick.jones2@hp.com>
>
> A bit of floor sweeping in a dusty old corner. Convert the "normal"
> skb free calls to dev_consume_skb_any() so packet drop tracing will
> be more sane.
>
> Signed-off-by: Rick Jones <rick.jones2@hp.com>
Acked-by: Jaroslav Kysela <perex@perex.cz>
>
> ---
>
> Compile tested only. I wonder how many of these cards are still in
> operation?-)
It's really old hw..
>
> diff --git a/drivers/net/ethernet/hp/hp100.c b/drivers/net/ethernet/hp/hp100.c
> index ed7916f..76a6e0c 100644
> --- a/drivers/net/ethernet/hp/hp100.c
> +++ b/drivers/net/ethernet/hp/hp100.c
> @@ -1627,7 +1627,7 @@ static void hp100_clean_txring(struct net_device *dev)
> #endif
> /* Conversion to new PCI API : NOP */
> pci_unmap_single(lp->pci_dev, (dma_addr_t) lp->txrhead->pdl[1], lp->txrhead->pdl[2], PCI_DMA_TODEVICE);
> - dev_kfree_skb_any(lp->txrhead->skb);
> + dev_consume_skb_any(lp->txrhead->skb);
> lp->txrhead->skb = NULL;
> lp->txrhead = lp->txrhead->next;
> lp->txrcommit--;
> @@ -1745,7 +1745,7 @@ static netdev_tx_t hp100_start_xmit(struct sk_buff *skb,
> hp100_ints_on();
> spin_unlock_irqrestore(&lp->lock, flags);
>
> - dev_kfree_skb_any(skb);
> + dev_consume_skb_any(skb);
>
> #ifdef HP100_DEBUG_TX
> printk("hp100: %s: start_xmit: end\n", dev->name);
>
--
Jaroslav Kysela <perex@perex.cz>
Linux Kernel Sound Maintainer
ALSA Project; Red Hat, Inc.
^ permalink raw reply
* Re: [PATCH net-next] skb: Add documentation for skb_clone_sk
From: Eric Dumazet @ 2014-09-08 20:14 UTC (permalink / raw)
To: Alexander Duyck; +Cc: netdev, richardcochran, davem
In-Reply-To: <540DF91E.7040005@intel.com>
On Mon, 2014-09-08 at 11:44 -0700, Alexander Duyck wrote:
> On 09/08/2014 10:11 AM, Eric Dumazet wrote:
> > On Mon, 2014-09-08 at 12:18 -0400, Alexander Duyck wrote:
> >> This change adds some documentation to the call skb_clone_sk. This is
> >> meant to help clarify the purpose of the function for other developers.
> >>
> >> Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
> >> ---
> >> net/core/skbuff.c | 11 +++++++++++
> >> 1 file changed, 11 insertions(+)
> >>
> >> diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> >> index a18dfb0..3f83a8a 100644
> >> --- a/net/core/skbuff.c
> >> +++ b/net/core/skbuff.c
> >> @@ -3511,6 +3511,17 @@ struct sk_buff *sock_dequeue_err_skb(struct sock *sk)
> >> }
> >> EXPORT_SYMBOL(sock_dequeue_err_skb);
> >>
> >> +/**
> >> + * skb_clone_sk - create clone of skb, and take reference to socket
> >> + * @skb: the skb to clone
> >> + *
> >> + * For functions such as timestamping it is necessary to clone an skb and
> >> + * hold a reference to the socket for it until the hardware delivers the
> >> + * actual timestamp or the timestamp is timed out. As as such this
> >> + * function is useful for creating a clone to later be handed off to
> >> + * skb_complete_tx_timestamp or kfree_skb to take care of cleaning up
> >> + * the reference handling for the socket.
> >> + */
> >> struct sk_buff *skb_clone_sk(struct sk_buff *skb)
> >> {
> >> struct sock *sk = skb->sk;
> >
> > Note that I have serious doubts about the atomic_inc_not_zero() here.
> >
> > At this point, we need to have consistent refcounting on the socket.
> >
> > If we decide the reference is against sk_refcnt, then current sk_refcnt
> > cannot be 0 at this point.
>
> Isn't that what is guaranteed by using the atomic_inc_not_zero? If it
> is zero we abort and just return NULL.
>
Point is : the skb we clone here must have a reference on the socket.
How sk_refcnt could be 0 here ?
If it was 0, then something was broken before skb_clone_sk() call.
> > This might hide a very serious bug.
> >
> > In TCP tx path for example, we do not take reference on sk_refcnt for
> > each packet, but a reference on sk_wmem_alloc
> >
> > If skb destructor is sock_wfree() or tcp_wfree(), then we should take an
> > extra reference on sk_wmem_alloc instead of sk_refcnt.
>
> My concern then would be what I should do about skb_tx_complete as I am
> currently using sock_hold/sock_put to prevent the socket from being
> freed due to the skb_orphan call in sock_queue_err_skb.
>
> Would I need to change the logic there as well in order to prevent us
> from using the wrong reference to keep the socket valid?
We certainly have to think again and clean this.
^ permalink raw reply
* [PATCH net] sunvnet - add missing rmb() for sunvnet driver
From: David L Stevens @ 2014-09-08 20:23 UTC (permalink / raw)
To: David Miller; +Cc: Sowmini Varadhan, raghuram.kothakota, netdev
The sunvnet driver does not have an rmb() in the ring consumer corresponding
to the wmb() in the producer. According to Documentation/memory-barriers.txt:
"When dealing with CPU-CPU interactions, certain types of memory barrier should
always be paired. A lack of appropriate pairing is almost certainly an error."
In cases where an rmb() is not a no-op and a consumer is removing data from
the ring while a producer is adding new entries, a load reorder would allow
CPU1 CPU2
---- ----
LOAD desc.size [e.g]
STORE desc.size
<wmb>
set desc.hdr.state = VIO_DESC_READY
LOAD desc.hdr.state
[because VIO_DESC_READY, use
old desc.size, already loaded
out of order]
[CPU2 has reordered apparently unrelated LOADs]
To ensure other desc fields are not loaded before checking VIO_DESC_READY, we
need an rmb() between the check and desc data accesses.
I've also moved the viodbg() call to after the rmb() so that it, too, has
current descriptor data even with reordering, which has the side effect that
it won't print anything for descriptors that are not VIO_DESC_READY as before.
That's a) probably a good thing, since the fields are not necessarily set and,
b) better than adding another rmb() just for viodbg().
This would not be possible if strict-ordering is enforced, but then the
memory barriers should be no-ops in that case.
Signed-off-by: David L Stevens <david.stevens@oracle.com>
---
drivers/net/ethernet/sun/sunvnet.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/sun/sunvnet.c b/drivers/net/ethernet/sun/sunvnet.c
index 23c89ab..f675396 100644
--- a/drivers/net/ethernet/sun/sunvnet.c
+++ b/drivers/net/ethernet/sun/sunvnet.c
@@ -350,14 +350,17 @@ static int vnet_walk_rx_one(struct vnet_port *port,
if (IS_ERR(desc))
return PTR_ERR(desc);
+ if (desc->hdr.state != VIO_DESC_READY)
+ return 1;
+
+ rmb();
+
viodbg(DATA, "vio_walk_rx_one desc[%02x:%02x:%08x:%08x:%llx:%llx]\n",
desc->hdr.state, desc->hdr.ack,
desc->size, desc->ncookies,
desc->cookies[0].cookie_addr,
desc->cookies[0].cookie_size);
- if (desc->hdr.state != VIO_DESC_READY)
- return 1;
err = vnet_rx_one(port, desc->size, desc->cookies, desc->ncookies);
if (err == -ECONNRESET)
return err;
--
1.7.1
^ permalink raw reply related
* Re: [PATCH net] sunvnet - add missing rmb() for sunvnet driver
From: David Miller @ 2014-09-08 21:07 UTC (permalink / raw)
To: david.stevens; +Cc: sowmini.varadhan, raghuram.kothakota, netdev
In-Reply-To: <1410207781.24238.5.camel@phoenix>
From: David L Stevens <david.stevens@oracle.com>
Date: Mon, 08 Sep 2014 16:23:01 -0400
> The sunvnet driver does not have an rmb() in the ring consumer corresponding
> to the wmb() in the producer. According to Documentation/memory-barriers.txt:
...
> Signed-off-by: David L Stevens <david.stevens@oracle.com>
I'll apply this, but I just remembered that the kernel always runs in
the TSO memory model these days and thus all the memory barriers are
NOPs.
^ permalink raw reply
* [PATCH ipvs] Added simple weighted failover scheduler to ipvs
From: Kenny Mathis @ 2014-09-08 21:08 UTC (permalink / raw)
To: netdev; +Cc: Wensong Zhang, Simon Horman, Julian Anastasov
Please consider this patch for addition in 3.17
Creates net/netfilter/ipvs/ip_vs_fo.c
Added simple weighted IPVS failover support to the Linux kernel. All
other scheduling modules implement some form of load balancing, while
this offers a simple failover solution. Connections are directed to the
appropriate server based solely on highest weight value and server
availability. Tested functionality with keepalived.
---
net/netfilter/ipvs/Kconfig | 10 ++++++
net/netfilter/ipvs/Makefile | 1 +
net/netfilter/ipvs/ip_vs_fo.c | 79 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 90 insertions(+)
create mode 100644 net/netfilter/ipvs/ip_vs_fo.c
diff --git a/net/netfilter/ipvs/Kconfig b/net/netfilter/ipvs/Kconfig
index 0c3b167..3b6929d 100644
--- a/net/netfilter/ipvs/Kconfig
+++ b/net/netfilter/ipvs/Kconfig
@@ -152,6 +152,16 @@ config IP_VS_WLC
If you want to compile it in kernel, say Y. To compile it as a
module, choose M here. If unsure, say N.
+config IP_VS_FO
+ tristate "weighted failover scheduling"
+ ---help---
+ The weighted failover scheduling algorithm directs network
+ connections to the server with the highest weight that is
+ currently available.
+
+ If you want to compile it in kernel, say Y. To compile it as a
+ module, choose M here. If unsure, say N.
+
config IP_VS_LBLC
tristate "locality-based least-connection scheduling"
---help---
diff --git a/net/netfilter/ipvs/Makefile b/net/netfilter/ipvs/Makefile
index 34ee602..38b2723 100644
--- a/net/netfilter/ipvs/Makefile
+++ b/net/netfilter/ipvs/Makefile
@@ -26,6 +26,7 @@ obj-$(CONFIG_IP_VS_RR) += ip_vs_rr.o
obj-$(CONFIG_IP_VS_WRR) += ip_vs_wrr.o
obj-$(CONFIG_IP_VS_LC) += ip_vs_lc.o
obj-$(CONFIG_IP_VS_WLC) += ip_vs_wlc.o
+obj-$(CONFIG_IP_VS_FO) += ip_vs_fo.o
obj-$(CONFIG_IP_VS_LBLC) += ip_vs_lblc.o
obj-$(CONFIG_IP_VS_LBLCR) += ip_vs_lblcr.o
obj-$(CONFIG_IP_VS_DH) += ip_vs_dh.o
diff --git a/net/netfilter/ipvs/ip_vs_fo.c b/net/netfilter/ipvs/ip_vs_fo.c
new file mode 100644
index 0000000..e72c702
--- /dev/null
+++ b/net/netfilter/ipvs/ip_vs_fo.c
@@ -0,0 +1,79 @@
+/*
+ * IPVS: Weighted Fail Over module
+ *
+ * Authors: Kenny Mathis <kmathis@chokepoint.net>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ *
+ * Changes:
+ * Kenny Mathis : added initial functionality based on weight
+ *
+ */
+
+#define KMSG_COMPONENT "IPVS"
+#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+
+#include <net/ip_vs.h>
+
+/* Weighted Fail Over Module */
+static struct ip_vs_dest *
+ip_vs_fo_schedule(struct ip_vs_service *svc, const struct sk_buff *skb,
+ struct ip_vs_iphdr *iph)
+{
+ struct ip_vs_dest *dest = NULL, *hweight = NULL;
+ int hw = 0; /* Track highest weight */
+
+ IP_VS_DBG(6, "ip_vs_fo_schedule(): Scheduling...\n");
+
+ /* Basic failover functionality
+ * Find virtual server with highest weight and send it traffic
+ */
+ list_for_each_entry_rcu(dest, &svc->destinations, n_list) {
+ if (!(dest->flags & IP_VS_DEST_F_OVERLOAD) &&
+ atomic_read(&dest->weight) > hw) {
+ hweight = dest;
+ hw = atomic_read(&dest->weight);
+ }
+ }
+
+ if (hweight) {
+ IP_VS_DBG_BUF(6, "FO: server %s:%u activeconns %d weight %d\n",
+ IP_VS_DBG_ADDR(svc->af, &hweight->addr),
+ ntohs(hweight->port),
+ atomic_read(&hweight->activeconns),
+ atomic_read(&hweight->weight));
+ return hweight;
+ }
+
+ ip_vs_scheduler_err(svc, "no destination available");
+ return NULL;
+}
+
+static struct ip_vs_scheduler ip_vs_fo_scheduler = {
+ .name = "fo",
+ .refcnt = ATOMIC_INIT(0),
+ .module = THIS_MODULE,
+ .n_list = LIST_HEAD_INIT(ip_vs_fo_scheduler.n_list),
+ .schedule = ip_vs_fo_schedule,
+};
+
+static int __init ip_vs_fo_init(void)
+{
+ return register_ip_vs_scheduler(&ip_vs_fo_scheduler);
+}
+
+static void __exit ip_vs_fo_cleanup(void)
+{
+ unregister_ip_vs_scheduler(&ip_vs_fo_scheduler);
+ synchronize_rcu();
+}
+
+module_init(ip_vs_fo_init);
+module_exit(ip_vs_fo_cleanup);
+MODULE_LICENSE("GPL");
--
1.7.9.5
^ permalink raw reply related
* Re: [PATCH v2] irda: vlsi_ir: use %*ph specifier
From: David Miller @ 2014-09-08 21:10 UTC (permalink / raw)
To: andriy.shevchenko; +Cc: samuel, netdev, sergei.shtylyov
In-Reply-To: <1410161923-24783-1-git-send-email-andriy.shevchenko@linux.intel.com>
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: Mon, 8 Sep 2014 10:38:43 +0300
> Instead of looping in the code let's use kernel extension to dump small
> buffers.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Try again:
drivers/net/irda/vlsi_ir.c: In function ‘vlsi_proc_ring’:
drivers/net/irda/vlsi_ir.c:327:39: warning: comparison of distinct pointer types lacks a cast [enabled by default]
The types on each side of the min() expression are different, so the
compiler warns. You probably need to use min_t() or similar, and
carefuly examine the possible effects of signed overflow etc.
^ permalink raw reply
* Re: [PATCH net] net: fix skb_page_frag_refill() kerneldoc
From: David Miller @ 2014-09-08 21:12 UTC (permalink / raw)
To: eric.dumazet; +Cc: netdev
In-Reply-To: <1410174000.11872.94.camel@edumazet-glaptop2.roam.corp.google.com>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Mon, 08 Sep 2014 04:00:00 -0700
> From: Eric Dumazet <edumazet@google.com>
>
> In commit d9b2938aabf7 ("net: attempt a single high order allocation)
> I forgot to update kerneldoc, as @prio parameter was renamed to @gfp
>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH net] net: fix skb_page_frag_refill() kerneldoc
From: David Miller @ 2014-09-08 21:13 UTC (permalink / raw)
To: sergei.shtylyov; +Cc: eric.dumazet, netdev
In-Reply-To: <540D8D3C.9080202@cogentembedded.com>
From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date: Mon, 08 Sep 2014 15:04:28 +0400
>> - * @prio: priority for memory allocation
>> + * @gfp: priority for memory allocation
>
> 'gfp' is not priority, it's just flags.
It is an allocation priority, and I've seen that terminology used for
2 decades.
^ permalink raw reply
* Re: [PATCH v2 net-next] tcp: remove dst refcount false sharing for prequeue mode
From: David Miller @ 2014-09-08 21:21 UTC (permalink / raw)
To: eric.dumazet; +Cc: therbert, alexander.h.duyck, netdev
In-Reply-To: <1410188767.11872.110.camel@edumazet-glaptop2.roam.corp.google.com>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Mon, 08 Sep 2014 08:06:07 -0700
> @@ -1559,7 +1559,17 @@ bool tcp_prequeue(struct sock *sk, struct sk_buff *skb)
> skb_queue_len(&tp->ucopy.prequeue) == 0)
> return false;
>
> - skb_dst_force(skb);
> + /* Before escaping RCU protected region, we need to take care of skb
> + * dst. Prequeue is only enabled for established sockets.
> + * For such sockets, we might need the skb dst only to set sk->sk_rx_dst
> + * Instead of doing full sk_rx_dst validity here, let's perform
> + * an optimistic check.
> + */
> + if (likely(sk->sk_rx_dst))
> + skb_dst_drop(skb);
> + else
> + skb_dst_force(skb);
> +
This might not be a strong enough test.
We have to also make all of the checks that would cause the input
path to invalidate sk->sk_rx_dst too.
Otherwise, if it does, we'll crash when we try to do a dst_hold()
on skb_dst(skb) in sk->sk_rx_dst_set().
^ permalink raw reply
* Re: [PATCH] drivers: net: ethernet: octeon_mgmt: fix a compiler warning
From: David Miller @ 2014-09-08 21:24 UTC (permalink / raw)
To: aaro.koskinen; +Cc: netdev, david.daney
In-Reply-To: <1410188513-2541-1-git-send-email-aaro.koskinen@nsn.com>
From: Aaro Koskinen <aaro.koskinen@nsn.com>
Date: Mon, 8 Sep 2014 18:01:53 +0300
> Fix the following compiler warning:
>
> drivers/net/ethernet/octeon/octeon_mgmt.c: In function 'octeon_mgmt_clean_tx_buffers':
> drivers/net/ethernet/octeon/octeon_mgmt.c:295:4: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
> u64 ns = cvmx_read_csr(CVMX_MIXX_TSTAMP(p->port));
> ^
>
> Signed-off-by: Aaro Koskinen <aaro.koskinen@nsn.com>
Applied, thank you.
^ permalink raw reply
* Re: [PATCH net-next] dp83640: Make use of skb_queue_purge instead of reimplementing the code
From: David Miller @ 2014-09-08 21:24 UTC (permalink / raw)
To: alexander.h.duyck; +Cc: netdev, richardcochran
In-Reply-To: <20140908152226.4202.72383.stgit@ahduyck-bv4.jf.intel.com>
From: Alexander Duyck <alexander.h.duyck@intel.com>
Date: Mon, 08 Sep 2014 11:25:34 -0400
> This change makes it so that dp83640_remove can use skb_queue_purge
> instead of looping through itself to flush any entries out of the queue.
>
> Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Applied, thanks Alex.
^ permalink raw reply
* Macvlan WARNiNGS about duplicate sysfs filenames (Was [GIT] Networking)
From: Andres Freund, Alexander Y. Fomichev @ 2014-09-08 21:25 UTC (permalink / raw)
To: David Miller; +Cc: torvalds, akpm, netdev, linux-kernel
In-Reply-To: <20140907.164109.1944849896872238507.davem@davemloft.net>
Hi,
(don't have netdev archived, thus answering here, sorry)
On 2014-09-07 16:41:09 -0700, David Miller wrote:
> Alexander Y. Fomichev (1):
> net: prevent of emerging cross-namespace symlinks
I'm seeing WARNINGs like:
[ 1005.269134] ------------[ cut here ]------------
[ 1005.269148] WARNING: CPU: 6 PID: 4213 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x64/0x80()
[ 1005.269150] sysfs: cannot create duplicate filename '/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0/upper_mv-eth0'
[ 1005.269152] Modules linked in: nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ipt_REJECT iptable_filter ip_tables snd_hda_code
c_ca0110 snd_hda_codec_realtek snd_hda_codec_generic snd_hda_codec_hdmi snd_hda_intel snd_hda_controller snd_hda_codec snd_hwdep snd_pcm acpi
_cpufreq w83793 jc42 e1000e ptp pps_core
[ 1005.269175] CPU: 6 PID: 4213 Comm: systemd-nspawn Tainted: G W I 3.17.0-rc4-andres-00135-g35af256 #216
[ 1005.269178] Hardware name: empty empty/S7020, BIOS 'V1.03 ' 03/09/2010
[ 1005.269180] 0000000000000009 ffff8803300b3738 ffffffff81cc0ca2 ffff8803300b3780
[ 1005.269183] ffff8803300b3770 ffffffff8111434d ffff88062ce1a000 ffff8803300b3851
[ 1005.269186] ffff88032e5d4c30 ffff88032e5d4c30 ffffffffffffffef ffff8803300b37d0
[ 1005.269190] Call Trace:
[ 1005.269198] [<ffffffff81cc0ca2>] dump_stack+0x45/0x56
[ 1005.269203] [<ffffffff8111434d>] warn_slowpath_common+0x7d/0xa0
[ 1005.269206] [<ffffffff811143bc>] warn_slowpath_fmt+0x4c/0x50
[ 1005.269209] [<ffffffff812c5dc8>] ? kernfs_path+0x48/0x60
[ 1005.269213] [<ffffffff812c9464>] sysfs_warn_dup+0x64/0x80
[ 1005.269216] [<ffffffff812c97be>] sysfs_do_create_link_sd.isra.2+0x9e/0xb0
[ 1005.269219] [<ffffffff812c97f5>] sysfs_create_link+0x25/0x50
[ 1005.269227] [<ffffffff81b73238>] netdev_adjacent_sysfs_add+0x58/0x70
[ 1005.269232] [<ffffffff81b75ebd>] __netdev_adjacent_dev_insert+0x15d/0x1b0
[ 1005.269236] [<ffffffff81b75f41>] __netdev_adjacent_dev_link_lists+0x31/0x80
[ 1005.269240] [<ffffffff81b760e6>] __netdev_upper_dev_link+0x156/0x480
[ 1005.269245] [<ffffffff81b70cb5>] ? call_netdevice_notifiers_info+0x35/0x60
[ 1005.269250] [<ffffffff81b76422>] netdev_upper_dev_link+0x12/0x20
[ 1005.269257] [<ffffffff819b7822>] macvlan_common_newlink+0x182/0x3f0
[ 1005.269261] [<ffffffff819b7a9e>] macvlan_newlink+0xe/0x10
[ 1005.269267] [<ffffffff81b87cf4>] rtnl_newlink+0x6d4/0x790
[ 1005.269270] [<ffffffff81b8779f>] ? rtnl_newlink+0x17f/0x790
[ 1005.269278] [<ffffffff81b86722>] rtnetlink_rcv_msg+0x92/0x260
[ 1005.269284] [<ffffffff81247e71>] ? __kmalloc_node_track_caller+0x181/0x210
[ 1005.269294] [<ffffffff8160e556>] ? rhashtable_lookup_compare+0x36/0x70
[ 1005.269299] [<ffffffff81b86690>] ? rtnetlink_rcv+0x30/0x30
[ 1005.269307] [<ffffffff81ba5679>] netlink_rcv_skb+0xa9/0xd0
[ 1005.269312] [<ffffffff81b86688>] rtnetlink_rcv+0x28/0x30
[ 1005.269316] [<ffffffff81ba4bda>] netlink_unicast+0x10a/0x1a0
[ 1005.269321] [<ffffffff81ba508c>] netlink_sendmsg+0x34c/0x780
[ 1005.269328] [<ffffffff811fc2c6>] ? free_hot_cold_page_list+0x46/0xa0
[ 1005.269334] [<ffffffff81b5bb03>] sock_sendmsg+0x73/0x90
[ 1005.269343] [<ffffffff812228c3>] ? unmap_region+0xd3/0x110
[ 1005.269350] [<ffffffff81271703>] ? __fdget+0x13/0x20
[ 1005.269355] [<ffffffff81b5d381>] ? move_addr_to_kernel+0x31/0x90
[ 1005.269360] [<ffffffff81b5dd23>] SyS_sendto+0x113/0x150
[ 1005.269366] [<ffffffff81607eab>] ? trace_hardirqs_on_thunk+0x3a/0x3c
[ 1005.269374] [<ffffffff81cceb56>] system_call_fastpath+0x1a/0x1f
[ 1005.269377] ---[ end trace 00724f5b901e5d10 ]---
which are quite justified:
# readlink -f /sys/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0/upper_mv-eth0
/sys/devices/virtual/net/mv-eth0
# ls -l /sys/devices/virtual/net/mv-eth0
ls: cannot access /sys/devices/virtual/net/mv-eth0: No such file or directory
That happened after bringing up mv-eth0 up once, then down, and then up
again. There apparently is a dangling symlink somewhere. I'd done this
via:
systemd-nspawn -b -j -D /home/andres/chroot/sid-amd64 --private-network --network-macvlan=eth0
I haven't used macvlan before, so it's not impossible that the bug has
existed for longer. It's also possible that this bug isn't the fault of
this patch. I think both aren't terribly likely though.
Greetings,
Andres Freund
^ 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