* Re: [PATCH RFC 2/5] net:stmmac: fix rx buffer allocation.
From: Giuseppe CAVALLARO @ 2013-10-21 8:54 UTC (permalink / raw)
To: Jimmy Perchet; +Cc: netdev
In-Reply-To: <1381937052-8999-3-git-send-email-jimmy.perchet@parrot.com>
On 10/16/2013 5:24 PM, Jimmy Perchet wrote:
> Rx buffers used wrong size, because priv->dma_buf_sz was updated after allocation.
>
> Signed-off-by: Jimmy Perchet <jimmy.perchet@parrot.com>
Acked-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
> ---
> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index 170f043..0015175 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -998,6 +998,9 @@ static int init_dma_desc_rings(struct net_device *dev)
> if (bfsize < BUF_SIZE_16KiB)
> bfsize = stmmac_set_bfsize(dev->mtu, priv->dma_buf_sz);
>
> + priv->dma_buf_sz = bfsize;
> + buf_sz = bfsize;
> +
> if (netif_msg_probe(priv))
> pr_debug("%s: txsize %d, rxsize %d, bfsize %d\n", __func__,
> txsize, rxsize, bfsize);
> @@ -1087,8 +1090,6 @@ static int init_dma_desc_rings(struct net_device *dev)
> }
> priv->cur_rx = 0;
> priv->dirty_rx = (unsigned int)(i - rxsize);
> - priv->dma_buf_sz = bfsize;
> - buf_sz = bfsize;
>
> /* Setup the chained descriptor addresses */
> if (priv->mode == STMMAC_CHAIN_MODE) {
>
^ permalink raw reply
* [PATCH net-next 0/5] bonding: patchset for rcu use in bonding
From: Ding Tianhong @ 2013-10-21 8:58 UTC (permalink / raw)
To: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Veaceslav Falico, Netdev
Hi:
The Patch Set will remove the invalid lock for bond work queue and replace it
with rtnl lock, as read lock for bond could not protect slave list any more.
Ding Tianhong (5):
bonding: remove bond read lock for bond_mii_monitor()
bonding: remove bond read lock for bond_alb_monitor()
bonding: remove bond read lock for bond_loadbalance_arp_mon()
bonding: remove bond read lock for bond_activebackup_arp_mon()
bonding: remove bond read lock for bond_3ad_state_machine_handler()
drivers/net/bonding/bond_3ad.c | 9 ++--
drivers/net/bonding/bond_alb.c | 20 ++------
drivers/net/bonding/bond_main.c | 100 +++++++++++++---------------------------
3 files changed, 40 insertions(+), 89 deletions(-)
--
1.8.2.1
^ permalink raw reply
* [PATCH net-next 2/5] bonding: remove bond read lock for bond_alb_monitor()
From: Ding Tianhong @ 2013-10-21 8:58 UTC (permalink / raw)
To: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Veaceslav Falico, Netdev
the bond now only attach and detach slave in rtnl lock,
so read_lock for bond could not protect slave list,
replace bond read lock with rtnl lock for bond_alb_monitor().
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
---
drivers/net/bonding/bond_alb.c | 20 ++++----------------
1 file changed, 4 insertions(+), 16 deletions(-)
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index 0287240..5d79f5e 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -1495,11 +1495,13 @@ void bond_alb_monitor(struct work_struct *work)
struct list_head *iter;
struct slave *slave;
- read_lock(&bond->lock);
+ if (!rtnl_trylock())
+ goto re_arm;
if (!bond_has_slaves(bond)) {
bond_info->tx_rebalance_counter = 0;
bond_info->lp_counter = 0;
+ rtnl_unlock();
goto re_arm;
}
@@ -1548,16 +1550,6 @@ void bond_alb_monitor(struct work_struct *work)
if (bond_info->primary_is_promisc &&
(++bond_info->rlb_promisc_timeout_counter >= RLB_PROMISC_TIMEOUT)) {
- /*
- * dev_set_promiscuity requires rtnl and
- * nothing else. Avoid race with bond_close.
- */
- read_unlock(&bond->lock);
- if (!rtnl_trylock()) {
- read_lock(&bond->lock);
- goto re_arm;
- }
-
bond_info->rlb_promisc_timeout_counter = 0;
/* If the primary was set to promiscuous mode
@@ -1566,9 +1558,6 @@ void bond_alb_monitor(struct work_struct *work)
*/
dev_set_promiscuity(bond->curr_active_slave->dev, -1);
bond_info->primary_is_promisc = 0;
-
- rtnl_unlock();
- read_lock(&bond->lock);
}
if (bond_info->rlb_rebalance) {
@@ -1591,10 +1580,9 @@ void bond_alb_monitor(struct work_struct *work)
}
}
+ rtnl_unlock();
re_arm:
queue_delayed_work(bond->wq, &bond->alb_work, alb_delta_in_ticks);
-
- read_unlock(&bond->lock);
}
/* assumption: called before the slave is attached to the bond
--
1.8.2.1
^ permalink raw reply related
* [PATCH net-next 1/5] bonding: remove bond read lock for bond_mii_monitor()
From: Ding Tianhong @ 2013-10-21 8:58 UTC (permalink / raw)
To: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Veaceslav Falico, Netdev
the bond now only attach and detach slave in rtnl lock,
so read_lock for bond could not protect slave list,
replace bond read lock with rtnl lock for bond_mii_monitor().
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
---
drivers/net/bonding/bond_main.c | 44 +++++++++++------------------------------
1 file changed, 12 insertions(+), 32 deletions(-)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index d90734f..ba90f45 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -2155,49 +2155,29 @@ void bond_mii_monitor(struct work_struct *work)
struct bonding *bond = container_of(work, struct bonding,
mii_work.work);
bool should_notify_peers = false;
- unsigned long delay;
- read_lock(&bond->lock);
-
- delay = msecs_to_jiffies(bond->params.miimon);
+ if (!rtnl_trylock())
+ goto re_arm;
- if (!bond_has_slaves(bond))
+ if (!bond_has_slaves(bond)) {
+ rtnl_unlock();
goto re_arm;
+ }
should_notify_peers = bond_should_notify_peers(bond);
- if (bond_miimon_inspect(bond)) {
- read_unlock(&bond->lock);
-
- /* Race avoidance with bond_close cancel of workqueue */
- if (!rtnl_trylock()) {
- read_lock(&bond->lock);
- delay = 1;
- should_notify_peers = false;
- goto re_arm;
- }
-
- read_lock(&bond->lock);
-
+ if (bond_miimon_inspect(bond))
bond_miimon_commit(bond);
- read_unlock(&bond->lock);
- rtnl_unlock(); /* might sleep, hold no other locks */
- read_lock(&bond->lock);
- }
+ if (should_notify_peers)
+ call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, bond->dev);
+
+ rtnl_unlock();
re_arm:
if (bond->params.miimon)
- queue_delayed_work(bond->wq, &bond->mii_work, delay);
-
- read_unlock(&bond->lock);
-
- if (should_notify_peers) {
- if (!rtnl_trylock())
- return;
- call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, bond->dev);
- rtnl_unlock();
- }
+ queue_delayed_work(bond->wq, &bond->mii_work,
+ msecs_to_jiffies(bond->params.miimon));
}
static bool bond_has_this_ip(struct bonding *bond, __be32 ip)
--
1.8.2.1
^ permalink raw reply related
* [PATCH net-next 3/5] bonding: remove bond read lock for bond_loadbalance_arp_mon()
From: Ding Tianhong @ 2013-10-21 8:58 UTC (permalink / raw)
To: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Veaceslav Falico, Netdev
The bond now only attach and detach slave in rtnl lock,
so read_lock for bond could not protect slave list,
replace bond read lock with rtnl lock for bond_loadbalance_arp_mon().
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
---
drivers/net/bonding/bond_main.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index ba90f45..149f4b9 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -2433,10 +2433,13 @@ void bond_loadbalance_arp_mon(struct work_struct *work)
struct list_head *iter;
int do_failover = 0;
- read_lock(&bond->lock);
+ if (!rtnl_trylock())
+ goto re_arm;
- if (!bond_has_slaves(bond))
+ if (!bond_has_slaves(bond)) {
+ rtnl_unlock();
goto re_arm;
+ }
oldcurrent = bond->curr_active_slave;
/* see if any of the previous devices are up now (i.e. they have
@@ -2518,13 +2521,12 @@ void bond_loadbalance_arp_mon(struct work_struct *work)
write_unlock_bh(&bond->curr_slave_lock);
unblock_netpoll_tx();
}
+ rtnl_unlock();
re_arm:
if (bond->params.arp_interval)
queue_delayed_work(bond->wq, &bond->arp_work,
msecs_to_jiffies(bond->params.arp_interval));
-
- read_unlock(&bond->lock);
}
/*
--
1.8.2.1
^ permalink raw reply related
* [PATCH net-next 4/5] bonding: remove bond read lock for bond_activebackup_arp_mon()
From: Ding Tianhong @ 2013-10-21 8:59 UTC (permalink / raw)
To: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Veaceslav Falico, Netdev
The bond now only attach and detach slave in rtnl lock,
so read_lock for bond could not protect slave list,
replace bond read lock with rtnl lock for bond_activebackup_arp_mon().
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
---
drivers/net/bonding/bond_main.c | 46 ++++++++++++-----------------------------
1 file changed, 13 insertions(+), 33 deletions(-)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 149f4b9..f3df532 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -2763,51 +2763,31 @@ void bond_activebackup_arp_mon(struct work_struct *work)
struct bonding *bond = container_of(work, struct bonding,
arp_work.work);
bool should_notify_peers = false;
- int delta_in_ticks;
- read_lock(&bond->lock);
-
- delta_in_ticks = msecs_to_jiffies(bond->params.arp_interval);
+ if (!rtnl_trylock())
+ goto re_arm;
- if (!bond_has_slaves(bond))
+ if (!bond_has_slaves(bond)) {
+ rtnl_unlock();
goto re_arm;
+ }
should_notify_peers = bond_should_notify_peers(bond);
- if (bond_ab_arp_inspect(bond)) {
- read_unlock(&bond->lock);
-
- /* Race avoidance with bond_close flush of workqueue */
- if (!rtnl_trylock()) {
- read_lock(&bond->lock);
- delta_in_ticks = 1;
- should_notify_peers = false;
- goto re_arm;
- }
-
- read_lock(&bond->lock);
-
+ if (bond_ab_arp_inspect(bond))
bond_ab_arp_commit(bond);
- read_unlock(&bond->lock);
- rtnl_unlock();
- read_lock(&bond->lock);
- }
-
bond_ab_arp_probe(bond);
-re_arm:
- if (bond->params.arp_interval)
- queue_delayed_work(bond->wq, &bond->arp_work, delta_in_ticks);
+ if (should_notify_peers)
+ call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, bond->dev);
- read_unlock(&bond->lock);
+ rtnl_unlock();
- if (should_notify_peers) {
- if (!rtnl_trylock())
- return;
- call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, bond->dev);
- rtnl_unlock();
- }
+re_arm:
+ if (bond->params.arp_interval)
+ queue_delayed_work(bond->wq, &bond->arp_work,
+ msecs_to_jiffies(bond->params.arp_interval));
}
/*-------------------------- netdev event handling --------------------------*/
--
1.8.2.1
^ permalink raw reply related
* Re: [PATCH RFC 3/5] net:stmmac: ensure we reclaim all dirty descriptors.
From: Giuseppe CAVALLARO @ 2013-10-21 9:07 UTC (permalink / raw)
To: Jimmy Perchet; +Cc: netdev
In-Reply-To: <1381937052-8999-4-git-send-email-jimmy.perchet@parrot.com>
Hello Jimmy
On 10/16/2013 5:24 PM, Jimmy Perchet wrote:
> On low speed link (10MBit/s), some TX descriptors can remain dirty
> if the tx coalescence timer expires before they were treated. Re-arm timer
> in this case.
>
> Signed-off-by: Jimmy Perchet <jimmy.perchet@parrot.com>
> ---
> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index 0015175..af04b5d 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -1284,8 +1284,12 @@ static void stmmac_tx_clean(struct stmmac_priv *priv)
> p = priv->dma_tx + entry;
>
> /* Check if the descriptor is owned by the DMA. */
> - if (priv->hw->desc->get_tx_owner(p))
> + if (priv->hw->desc->get_tx_owner(p)) {
> + /* Be sure to harvest remaining descriptor. */
> + mod_timer(&priv->txtimer,
> + STMMAC_COAL_TIMER(priv->tx_coal_timer));
> break;
> + }
why should we reload the timer when clean the tx resource?
This is done in the xmit where as soon as a frame has to be
transmitted it makes sense to reload the timer.
Also I have not clear why the problem happens on 10MBit/s speed
Maybe there is an hidden problem (lock protection)
that should be fixed.
How did you get this problem? Just on low speed and stress the net?
I have never seen it.
peppe
>
> /* Verify tx error by looking at the last segment. */
> last = priv->hw->desc->get_tx_ls(p);
>
^ permalink raw reply
* [PATCH net-next 5/5] bonding: remove bond read lock for bond_3ad_state_machine_handler()
From: Ding Tianhong @ 2013-10-21 8:59 UTC (permalink / raw)
To: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Veaceslav Falico, Netdev
The bond now only attach and detach slave in rtnl lock,
so read_lock for bond could not protect slave list,
replace bond read lock with rtnl lock for bond_3ad_state_machine_handler().
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
---
drivers/net/bonding/bond_3ad.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
index 187b1b7..d6fe00b 100644
--- a/drivers/net/bonding/bond_3ad.c
+++ b/drivers/net/bonding/bond_3ad.c
@@ -2068,8 +2068,10 @@ void bond_3ad_state_machine_handler(struct work_struct *work)
struct slave *slave;
struct port *port;
- read_lock(&bond->lock);
-
+ if (!rtnl_trylock()) {
+ queue_delayed_work(bond->wq, &bond->ad_work, ad_delta_in_ticks);
+ return;
+ }
//check if there are any slaves
if (!bond_has_slaves(bond))
goto re_arm;
@@ -2122,9 +2124,8 @@ void bond_3ad_state_machine_handler(struct work_struct *work)
}
re_arm:
+ rtnl_unlock();
queue_delayed_work(bond->wq, &bond->ad_work, ad_delta_in_ticks);
-
- read_unlock(&bond->lock);
}
/**
--
1.8.2.1
^ permalink raw reply related
* Re: [PATCH RFC 1/5] net:stmmac: set threshold/store and forward mode according to mtu size.
From: Giuseppe CAVALLARO @ 2013-10-21 8:47 UTC (permalink / raw)
To: Jimmy Perchet; +Cc: netdev
In-Reply-To: <1381937052-8999-2-git-send-email-jimmy.perchet@parrot.com>
On 10/16/2013 5:24 PM, Jimmy Perchet wrote:
> Threshold mode dma is needed on rx path if jumbo frames are expected.
I think we should not force the threshold mode depending on the mtu.
For example, I worked on hw with rx buffers ~16KiB so able to SF
an oversized frame.
Maybe we could solve this configuration problem at platform time.
We added the fields: force_thresh_dma_mode, force_sf_dma_mode
to cover this scenarios. If these need to be enforced so we can
prepare a patch.
let me know
peppe
>
>
> Signed-off-by: Jimmy Perchet <jimmy.perchet@parrot.com>
> ---
> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 48 ++++++++++++++++-------
> 1 file changed, 33 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index 8d4ccd3..170f043 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -1222,22 +1222,40 @@ static void free_dma_desc_resources(struct stmmac_priv *priv)
> * Description: it sets the DMA operation mode: tx/rx DMA thresholds
> * or Store-And-Forward capability.
> */
> -static void stmmac_dma_operation_mode(struct stmmac_priv *priv)
> -{
> - if (priv->plat->force_thresh_dma_mode)
> - priv->hw->dma->dma_mode(priv->ioaddr, tc, tc);
> - else if (priv->plat->force_sf_dma_mode || priv->plat->tx_coe) {
> - /*
> - * In case of GMAC, SF mode can be enabled
> - * to perform the TX COE in HW. This depends on:
> - * 1) TX COE if actually supported
> - * 2) There is no bugged Jumbo frame support
> - * that needs to not insert csum in the TDES.
> - */
> - priv->hw->dma->dma_mode(priv->ioaddr, SF_DMA_MODE, SF_DMA_MODE);
> +static void stmmac_dma_operation_mode(int mtu, struct stmmac_priv *priv)
> +{
> + int rx_tc, tx_tc;
> +
> + /*
> + * In case of GMAC, SF mode can be enabled
> + * to perform the TX COE in HW. This depends on:
> + * 1) TX COE if actually supported
> + * 2) There is no bugged Jumbo frame support
> + * that needs to not insert csum in the TDES.
> + */
> + if (priv->plat->tx_coe &&
> + !(priv->plat->bugged_jumbo && (mtu > ETH_DATA_LEN))) {
> tc = SF_DMA_MODE;
> + tx_tc = SF_DMA_MODE;
> } else
> - priv->hw->dma->dma_mode(priv->ioaddr, tc, SF_DMA_MODE);
> + tx_tc = tc;
> +
> + if (mtu > ETH_DATA_LEN && priv->hw_cap_support
> + && !priv->dma_cap.rxfifo_over_2048)
> + rx_tc = tc;
> + else
> + rx_tc = SF_DMA_MODE;
> +
> + if (priv->plat->force_sf_dma_mode) {
> + tc = SF_DMA_MODE;
> + tx_tc = SF_DMA_MODE;
> + rx_tc = SF_DMA_MODE;
> + } else if (priv->plat->force_thresh_dma_mode) {
> + tx_tc = tc;
> + rx_tc = tc;
> + }
> +
> + priv->hw->dma->dma_mode(priv->ioaddr, tx_tc, rx_tc);
> }
>
> /**
> @@ -1687,7 +1705,7 @@ static int stmmac_open(struct net_device *dev)
> stmmac_set_mac(priv->ioaddr, true);
>
> /* Set the HW DMA mode and the COE */
> - stmmac_dma_operation_mode(priv);
> + stmmac_dma_operation_mode(dev->mtu, priv);
>
> /* Extra statistics */
> memset(&priv->xstats, 0, sizeof(struct stmmac_extra_stats));
>
^ permalink raw reply
* Re: [PATCH net-next 0/5] bonding: patchset for rcu use in bonding
From: Veaceslav Falico @ 2013-10-21 9:13 UTC (permalink / raw)
To: Ding Tianhong
Cc: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Netdev
In-Reply-To: <5264ECBC.2090208@huawei.com>
On Mon, Oct 21, 2013 at 04:58:36PM +0800, Ding Tianhong wrote:
>Hi:
>
>The Patch Set will remove the invalid lock for bond work queue and replace it
>with rtnl lock, as read lock for bond could not protect slave list any more.
rtnl lock is a lot more expensive than bond lock, and not only for bond,
but for all the networking stack.
Why is the bond->lock invalid? It correctly protects slaves from being
modified concurrently.
I don't see the point in this patchset.
>
>Ding Tianhong (5):
> bonding: remove bond read lock for bond_mii_monitor()
> bonding: remove bond read lock for bond_alb_monitor()
> bonding: remove bond read lock for bond_loadbalance_arp_mon()
> bonding: remove bond read lock for bond_activebackup_arp_mon()
> bonding: remove bond read lock for bond_3ad_state_machine_handler()
>
> drivers/net/bonding/bond_3ad.c | 9 ++--
> drivers/net/bonding/bond_alb.c | 20 ++------
> drivers/net/bonding/bond_main.c | 100 +++++++++++++---------------------------
> 3 files changed, 40 insertions(+), 89 deletions(-)
>
>--
>1.8.2.1
>
>
>
^ permalink raw reply
* Re: [PATCH] packet: Deliver VLAN TPID to userspace
From: Ben Hutchings @ 2013-10-21 9:24 UTC (permalink / raw)
To: Atzm Watanabe; +Cc: Stephen Hemminger, netdev
In-Reply-To: <87k3h9hjen.wl%atzm@stratosphere.co.jp>
On Sat, 2013-10-19 at 15:19 +0900, Atzm Watanabe wrote:
> At Fri, 18 Oct 2013 10:56:55 -0700,
> Stephen Hemminger wrote:
> >
> > On Sat, 19 Oct 2013 02:08:11 +0900
> > Atzm Watanabe <atzm@stratosphere.co.jp> wrote:
> >
> > > diff --git a/include/uapi/linux/if_packet.h b/include/uapi/linux/if_packet.h
> > > index dbf0666..6e36e0a 100644
> > > --- a/include/uapi/linux/if_packet.h
> > > +++ b/include/uapi/linux/if_packet.h
> > > @@ -83,7 +83,7 @@ struct tpacket_auxdata {
> > > __u16 tp_mac;
> > > __u16 tp_net;
> > > __u16 tp_vlan_tci;
> > > - __u16 tp_padding;
> > > + __u16 tp_vlan_tpid;
> > > };
> > >
> > > /* Rx ring - header status */
> > > @@ -132,12 +132,13 @@ struct tpacket2_hdr {
> > > __u32 tp_sec;
> > > __u32 tp_nsec;
> > > __u16 tp_vlan_tci;
> > > - __u16 tp_padding;
> > > + __u16 tp_vlan_tpid;
> > > };
> > >
> > > struct tpacket_hdr_variant1 {
> > > __u32 tp_rxhash;
> > > __u32 tp_vlan_tci;
> > > + __u32 tp_vlan_tpid;
> > > };
> >
> > The last change will break ABI to userspace applications.
> > You can reuse padding elements; but you can't increase (or shrink)
> > an existing structure.
>
> Thank you for pointing.
> But I have two questions:
>
> - The patch that increases existing structures was posted and
> accepted in the past (e.g 393e52e33c6c26ec7db290dab803bac1bed962d4
> "packet: deliver VLAN TCI to userspace").
> What is the difference between them and my patch?
struct tpacket_auxdata is allowed to grow as it will be written/read
using the cmsg API where the length of each structure is explicit at
run-time.
> - I tested using tools/testing/selftests/net/psock_tpacket.c built
> before applying my patch, and all test cases were passed.
> Also I tested by the code that was listed in
> Documentation/networking/packet_mmap.txt "AF_PACKET TPACKET_V3
> example". It seems that problem was not caused.
> What situation causes the problem that you assumed?
Yes, it looks like it would be safe to grow struct tpacket3_hdr too, as
the length is also explicit at run-time.
(And TPACKET{1,2,3}_HDRLEN should be removed from
include/uapi/linux/if_packet.h, as they are not relevant to userland.)
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [PATCH net-next 0/5] bonding: patchset for rcu use in bonding
From: Ding Tianhong @ 2013-10-21 9:27 UTC (permalink / raw)
To: Veaceslav Falico
Cc: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Netdev
In-Reply-To: <20131021091336.GB692@redhat.com>
On 2013/10/21 17:13, Veaceslav Falico wrote:
> On Mon, Oct 21, 2013 at 04:58:36PM +0800, Ding Tianhong wrote:
>> Hi:
>>
>> The Patch Set will remove the invalid lock for bond work queue and replace it
>> with rtnl lock, as read lock for bond could not protect slave list any more.
>
> rtnl lock is a lot more expensive than bond lock, and not only for bond,
> but for all the networking stack.
>
> Why is the bond->lock invalid? It correctly protects slaves from being
> modified concurrently.
>
> I don't see the point in this patchset.
>
yes, rtnl lock is a big lock, but I think bond->lock could not protect
bond_for_each_slave any more, am I miss something?
Ding
>>
>> Ding Tianhong (5):
>> bonding: remove bond read lock for bond_mii_monitor()
>> bonding: remove bond read lock for bond_alb_monitor()
>> bonding: remove bond read lock for bond_loadbalance_arp_mon()
>> bonding: remove bond read lock for bond_activebackup_arp_mon()
>> bonding: remove bond read lock for bond_3ad_state_machine_handler()
>>
>> drivers/net/bonding/bond_3ad.c | 9 ++--
>> drivers/net/bonding/bond_alb.c | 20 ++------
>> drivers/net/bonding/bond_main.c | 100 +++++++++++++---------------------------
>> 3 files changed, 40 insertions(+), 89 deletions(-)
>>
>> --
>> 1.8.2.1
>>
>>
>>
>
>
^ permalink raw reply
* Re: [PATCH net 0/3] ipv6: use rt6i_gateway as nexthop
From: Hannes Frederic Sowa @ 2013-10-21 9:35 UTC (permalink / raw)
To: Julian Anastasov
Cc: David Miller, netdev, netfilter-devel, lvs-devel,
Hideaki YOSHIFUJI
In-Reply-To: <1382272985-1528-1-git-send-email-ja@ssi.bg>
On Sun, Oct 20, 2013 at 03:43:02PM +0300, Julian Anastasov wrote:
> The second patch is an optimization that makes sure
> all resulting routes have rt6i_gateway filled, so that we
> can avoid the complex ipv6_addr_any() call added to rt6_nexthop()
> by patch 1. And it sets rt6i_gateway for local routes, a case
> not handled by patch 1.
Not related to the patch:
That reminds me that Yoshifuji had the idea to cache the results for
ipv6_addr_type in IP6CB to avoid calling this function over and over again.
Maybe we can do the same for rt6_infos to save some cycles here and there.
Also, what do you think about this site:
net/ipv6/ip6_output.c:
411
412 rt = (struct rt6_info *) dst;
413 if (rt->rt6i_flags & RTF_GATEWAY)
414 target = &rt->rt6i_gateway;
415 else
416 target = &hdr->daddr;
417
Our provided skb_dst should come from ip6_route_input, thus ip6_pol_route. So
I assume we have rt6i_gateway == hdr->daddr there, too. It is a bit more
complicated because of possible routing extension headers. Maybe you already
looked at this already?
I just found it while searching which other code paths do emit packets
while xt_TEE is processing (generation of redirects) and could also lead
to stack exhaustion. But the path in ip6_forward seems fine.
Greetings,
Hannes
^ permalink raw reply
* Re: [PATCH net-next 0/5] bonding: patchset for rcu use in bonding
From: Veaceslav Falico @ 2013-10-21 9:35 UTC (permalink / raw)
To: Ding Tianhong
Cc: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Netdev
In-Reply-To: <5264F397.50608@huawei.com>
On Mon, Oct 21, 2013 at 05:27:51PM +0800, Ding Tianhong wrote:
>On 2013/10/21 17:13, Veaceslav Falico wrote:
>> On Mon, Oct 21, 2013 at 04:58:36PM +0800, Ding Tianhong wrote:
>>> Hi:
>>>
>>> The Patch Set will remove the invalid lock for bond work queue and replace it
>>> with rtnl lock, as read lock for bond could not protect slave list any more.
>>
>> rtnl lock is a lot more expensive than bond lock, and not only for bond,
>> but for all the networking stack.
>>
>> Why is the bond->lock invalid? It correctly protects slaves from being
>> modified concurrently.
>>
>> I don't see the point in this patchset.
>>
>
>yes, rtnl lock is a big lock, but I think bond->lock could not protect
>bond_for_each_slave any more, am I miss something?
Why can't it protect bond_for_each_slave()?
>
>Ding
>
>>>
>>> Ding Tianhong (5):
>>> bonding: remove bond read lock for bond_mii_monitor()
>>> bonding: remove bond read lock for bond_alb_monitor()
>>> bonding: remove bond read lock for bond_loadbalance_arp_mon()
>>> bonding: remove bond read lock for bond_activebackup_arp_mon()
>>> bonding: remove bond read lock for bond_3ad_state_machine_handler()
>>>
>>> drivers/net/bonding/bond_3ad.c | 9 ++--
>>> drivers/net/bonding/bond_alb.c | 20 ++------
>>> drivers/net/bonding/bond_main.c | 100 +++++++++++++---------------------------
>>> 3 files changed, 40 insertions(+), 89 deletions(-)
>>>
>>> --
>>> 1.8.2.1
>>>
>>>
>>>
>>
>>
>
>
^ permalink raw reply
* [PATCH net-next v2] bonding: move bond-specific init after enslave happens
From: Veaceslav Falico @ 2013-10-21 9:48 UTC (permalink / raw)
To: netdev; +Cc: jiri, dingtianhong, Veaceslav Falico, Jay Vosburgh,
Andy Gospodarek
As Jiri noted, currently we first do all bonding-specific initialization
(specifically - bond_select_active_slave(bond)) before we actually attach
the slave (so that it becomes visible through bond_for_each_slave() and
friends). This might result in bond_select_active_slave() not seeing the
first/new slave and, thus, not actually selecting an active slave.
Fix this by moving all the bond-related init part after we've actually
completely initialized and linked (via bond_master_upper_dev_link()) the
new slave.
Also, remove the bond_(de/a)ttach_slave(), it's useless to have functions
to ++/-- one int.
After this we have all the initialization of the new slave *before*
linking, and all the stuff that needs to be done on bonding *after* it. It
has also a bonus effect - we can remove the locking on the new slave init
completely, and only use it for bond_select_active_slave().
Reported-by: Jiri Pirko <jiri@resnulli.us>
CC: Jay Vosburgh <fubar@us.ibm.com>
CC: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: Veaceslav Falico <vfalico@redhat.com>
---
Notes:
v1 -> v2:
Move the bond_(de/a)ttach_slave() functionality, and remove these
functions.
drivers/net/bonding/bond_main.c | 65 +++++++++--------------------------------
1 file changed, 14 insertions(+), 51 deletions(-)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index d90734f..2daa066 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -967,33 +967,6 @@ void bond_select_active_slave(struct bonding *bond)
}
}
-/*--------------------------- slave list handling ---------------------------*/
-
-/*
- * This function attaches the slave to the end of list.
- *
- * bond->lock held for writing by caller.
- */
-static void bond_attach_slave(struct bonding *bond, struct slave *new_slave)
-{
- bond->slave_cnt++;
-}
-
-/*
- * This function detaches the slave from the list.
- * WARNING: no check is made to verify if the slave effectively
- * belongs to <bond>.
- * Nothing is freed on return, structures are just unchained.
- * If any slave pointer in bond was pointing to <slave>,
- * it should be changed by the calling function.
- *
- * bond->lock held for writing by caller.
- */
-static void bond_detach_slave(struct bonding *bond, struct slave *slave)
-{
- bond->slave_cnt--;
-}
-
#ifdef CONFIG_NET_POLL_CONTROLLER
static inline int slave_enable_netpoll(struct slave *slave)
{
@@ -1471,22 +1444,13 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
goto err_close;
}
- write_lock_bh(&bond->lock);
-
prev_slave = bond_last_slave(bond);
- bond_attach_slave(bond, new_slave);
new_slave->delay = 0;
new_slave->link_failure_count = 0;
- write_unlock_bh(&bond->lock);
-
- bond_compute_features(bond);
-
bond_update_speed_duplex(new_slave);
- read_lock(&bond->lock);
-
new_slave->last_arp_rx = jiffies -
(msecs_to_jiffies(bond->params.arp_interval) + 1);
for (i = 0; i < BOND_MAX_ARP_TARGETS; i++)
@@ -1547,12 +1511,9 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
}
}
- write_lock_bh(&bond->curr_slave_lock);
-
switch (bond->params.mode) {
case BOND_MODE_ACTIVEBACKUP:
bond_set_slave_inactive_flags(new_slave);
- bond_select_active_slave(bond);
break;
case BOND_MODE_8023AD:
/* in 802.3ad mode, the internal mechanism
@@ -1578,7 +1539,6 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
case BOND_MODE_ALB:
bond_set_active_slave(new_slave);
bond_set_slave_inactive_flags(new_slave);
- bond_select_active_slave(bond);
break;
default:
pr_debug("This slave is always active in trunk mode\n");
@@ -1596,10 +1556,6 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
break;
} /* switch(bond_mode) */
- write_unlock_bh(&bond->curr_slave_lock);
-
- bond_set_carrier(bond);
-
#ifdef CONFIG_NET_POLL_CONTROLLER
slave_dev->npinfo = bond->dev->npinfo;
if (slave_dev->npinfo) {
@@ -1614,8 +1570,6 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
}
#endif
- read_unlock(&bond->lock);
-
res = netdev_rx_handler_register(slave_dev, bond_handle_frame,
new_slave);
if (res) {
@@ -1629,6 +1583,17 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
goto err_unregister;
}
+ bond->slave_cnt++;
+ bond_compute_features(bond);
+ bond_set_carrier(bond);
+
+ if (USES_PRIMARY(bond->params.mode)) {
+ read_lock(&bond->lock);
+ write_lock_bh(&bond->curr_slave_lock);
+ bond_select_active_slave(bond);
+ write_unlock_bh(&bond->curr_slave_lock);
+ read_unlock(&bond->lock);
+ }
pr_info("%s: enslaving %s as a%s interface with a%s link.\n",
bond_dev->name, slave_dev->name,
@@ -1648,7 +1613,6 @@ err_detach:
vlan_vids_del_by_dev(slave_dev, bond_dev);
write_lock_bh(&bond->lock);
- bond_detach_slave(bond, new_slave);
if (bond->primary_slave == new_slave)
bond->primary_slave = NULL;
if (bond->curr_active_slave == new_slave) {
@@ -1686,7 +1650,6 @@ err_free:
kfree(new_slave);
err_undo_flags:
- bond_compute_features(bond);
/* Enslave of first slave has failed and we need to fix master's mac */
if (!bond_has_slaves(bond) &&
ether_addr_equal(bond_dev->dev_addr, slave_dev->dev_addr))
@@ -1740,6 +1703,9 @@ static int __bond_release_one(struct net_device *bond_dev,
write_unlock_bh(&bond->lock);
+ /* release the slave from its bond */
+ bond->slave_cnt--;
+
bond_upper_dev_unlink(bond_dev, slave_dev);
/* unregister rx_handler early so bond_handle_frame wouldn't be called
* for this slave anymore.
@@ -1764,9 +1730,6 @@ static int __bond_release_one(struct net_device *bond_dev,
bond->current_arp_slave = NULL;
- /* release the slave from its bond */
- bond_detach_slave(bond, slave);
-
if (!all && !bond->params.fail_over_mac) {
if (ether_addr_equal(bond_dev->dev_addr, slave->perm_hwaddr) &&
bond_has_slaves(bond))
--
1.8.4
^ permalink raw reply related
* Re: [PATCHSET net-next v3 00/07] Support for byte queue limits on various drivers
From: Ben Hutchings @ 2013-10-21 9:53 UTC (permalink / raw)
To: Andi Kleen; +Cc: Tino Reichardt, netdev, David S. Miller
In-Reply-To: <87iowrtzlz.fsf@tassilo.jf.intel.com>
On Sun, 2013-10-20 at 14:13 -0700, Andi Kleen wrote:
> Tino Reichardt <milky-kernel@mcmilk.de> writes:
> >
> > Since not all of them are fully tested by now, I added an bql_disable
> > module parameter, which can be used to disable the BQL code.
> >
> > "if (likely(bql_disable == false))" was replaced by
> > "if (unlikely(bql_disable))" ...
>
> If it's untested it should probably be disabled by default,
> until someone tests it.
Right, and module parameters are a pretty poor way to control this.
(It should already be possible to disable BQL through sysfs, anyway.
But there is a distinct lack of documentation in the kernel tree.)
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [PATCH net-next v3 02/07] r8169: Support for byte queue limits
From: Ben Hutchings @ 2013-10-21 9:55 UTC (permalink / raw)
To: Tino Reichardt
Cc: netdev, Realtek linux nic maintainers, Igor Maravic,
Francois Romieu
In-Reply-To: <1382296991-20289-3-git-send-email-milky-kernel@mcmilk.de>
On Sun, 2013-10-20 at 21:23 +0200, Tino Reichardt wrote:
> Changes to r8169 driver to use byte queue limits.
[...]
> + if (unlikely(bql_disable))
> + netdev_completed_queue(dev, pkts_compl, bytes_compl);
> if (netif_queue_stopped(dev) &&
> TX_FRAGS_READY_FOR(tp, MAX_SKB_FRAGS)) {
> netif_wake_queue(dev);
This is obviously wrong. Please limit your changes to drivers you can
actually test.
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [PATCH RFC 1/5] net:stmmac: set threshold/store and forward mode according to mtu size.
From: Rayagond K @ 2013-10-21 9:58 UTC (permalink / raw)
To: Giuseppe CAVALLARO; +Cc: Jimmy Perchet, netdev
In-Reply-To: <5264EA04.1040002@st.com>
On Mon, Oct 21, 2013 at 2:17 PM, Giuseppe CAVALLARO
<peppe.cavallaro@st.com> wrote:
> On 10/16/2013 5:24 PM, Jimmy Perchet wrote:
>>
>> Threshold mode dma is needed on rx path if jumbo frames are expected.
>
>
> I think we should not force the threshold mode depending on the mtu.
I remember SNPS HW team suggesting me to program the rx path in
Threshold mode for jumbo frames, as it takes care of low RX FIFO size.
>
> For example, I worked on hw with rx buffers ~16KiB so able to SF
> an oversized frame.
>
> Maybe we could solve this configuration problem at platform time.
> We added the fields: force_thresh_dma_mode, force_sf_dma_mode
> to cover this scenarios. If these need to be enforced so we can
> prepare a patch.
>
> let me know
> peppe
>
>
>>
>>
>> Signed-off-by: Jimmy Perchet <jimmy.perchet@parrot.com>
>> ---
>> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 48
>> ++++++++++++++++-------
>> 1 file changed, 33 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
>> b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
>> index 8d4ccd3..170f043 100644
>> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
>> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
>> @@ -1222,22 +1222,40 @@ static void free_dma_desc_resources(struct
>> stmmac_priv *priv)
>> * Description: it sets the DMA operation mode: tx/rx DMA thresholds
>> * or Store-And-Forward capability.
>> */
>> -static void stmmac_dma_operation_mode(struct stmmac_priv *priv)
>> -{
>> - if (priv->plat->force_thresh_dma_mode)
>> - priv->hw->dma->dma_mode(priv->ioaddr, tc, tc);
>> - else if (priv->plat->force_sf_dma_mode || priv->plat->tx_coe) {
>> - /*
>> - * In case of GMAC, SF mode can be enabled
>> - * to perform the TX COE in HW. This depends on:
>> - * 1) TX COE if actually supported
>> - * 2) There is no bugged Jumbo frame support
>> - * that needs to not insert csum in the TDES.
>> - */
>> - priv->hw->dma->dma_mode(priv->ioaddr, SF_DMA_MODE,
>> SF_DMA_MODE);
>> +static void stmmac_dma_operation_mode(int mtu, struct stmmac_priv *priv)
>> +{
>> + int rx_tc, tx_tc;
>> +
>> + /*
>> + * In case of GMAC, SF mode can be enabled
>> + * to perform the TX COE in HW. This depends on:
>> + * 1) TX COE if actually supported
>> + * 2) There is no bugged Jumbo frame support
>> + * that needs to not insert csum in the TDES.
>> + */
>> + if (priv->plat->tx_coe &&
>> + !(priv->plat->bugged_jumbo && (mtu > ETH_DATA_LEN))) {
>> tc = SF_DMA_MODE;
>> + tx_tc = SF_DMA_MODE;
>> } else
>> - priv->hw->dma->dma_mode(priv->ioaddr, tc, SF_DMA_MODE);
>> + tx_tc = tc;
>> +
>> + if (mtu > ETH_DATA_LEN && priv->hw_cap_support
>> + && !priv->dma_cap.rxfifo_over_2048)
>> + rx_tc = tc;
>> + else
>> + rx_tc = SF_DMA_MODE;
>> +
>> + if (priv->plat->force_sf_dma_mode) {
>> + tc = SF_DMA_MODE;
>> + tx_tc = SF_DMA_MODE;
>> + rx_tc = SF_DMA_MODE;
>> + } else if (priv->plat->force_thresh_dma_mode) {
>> + tx_tc = tc;
>> + rx_tc = tc;
>> + }
>> +
>> + priv->hw->dma->dma_mode(priv->ioaddr, tx_tc, rx_tc);
>> }
>>
>> /**
>> @@ -1687,7 +1705,7 @@ static int stmmac_open(struct net_device *dev)
>> stmmac_set_mac(priv->ioaddr, true);
>>
>> /* Set the HW DMA mode and the COE */
>> - stmmac_dma_operation_mode(priv);
>> + stmmac_dma_operation_mode(dev->mtu, priv);
>>
>> /* Extra statistics */
>> memset(&priv->xstats, 0, sizeof(struct stmmac_extra_stats));
>>
>
> --
> 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
* [WARNING] v3.12-rc6-3-g0df651a WARNING: CPU: 2 PID: 6800 at net/wireless/chan.c:373 cfg80211_chandef_usable+0x31/0x161 [cfg80211]()
From: Thomas Glanzmann @ 2013-10-21 10:21 UTC (permalink / raw)
To: netdev; +Cc: Johannes Berg
Hello,
I'm referring to commit 9f5e8f6efc7c2601136b27d9c7325c245f8fd19a. I just
checked out the tip from Linus tree compiled it and run it on Debian
Wheezy with a
03:00.0 Network controller: Intel Corporation Centrino Ultimate-N 6300 (rev 35)
and configured an ad-hoc network:
iface adhoc inet static
address 172.16.0.1
netmask 255.255.255.0
wireless-channel 1
wireless-essid Glanzmann
wireless-mode ad-hoc
up /bin/echo 1 > /proc/sys/net/ipv4/ip_forward || true
up /sbin/iptables -t nat -F || true
up /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 172.16.0.0/255.255.255.0 -j MASQUERADE || true
When I sto pand start the wlan0 I have the following in my dmesg:
ifup wlan0=adhoc
# wait a little bit
ifdown wlan0=adhoc
ifup wlan0=adhoc
[ 83.771408] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 83.772045] wlan0: Trigger new scan to find an IBSS to join
[ 83.786265] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 83.792356] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[ 83.809614] wlan0: Selected IBSS BSSID 02:19:8e:0c:80:0c based on configured SSID
[ 83.840092] iwlwifi 0000:03:00.0: Unable to find TIM Element in beacon
[ 83.841207] iwlwifi 0000:03:00.0: Unable to find TIM Element in beacon
[ 83.841648] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 1719.626285] iwlwifi 0000:03:00.0: REPLY_REMOVE_STA failed
[ 1719.626294] iwlwifi 0000:03:00.0: failed to remove IBSS station 00:00:00:00:00:00
[ 1723.211138] iwlwifi 0000:03:00.0: L1 Enabled; Disabling L0S
[ 1723.217777] iwlwifi 0000:03:00.0: Radio type=0x0-0x3-0x1
[ 1723.354729] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 1723.371674] wlan0: Trigger new scan to find an IBSS to join
[ 1726.016946] wlan0: Trigger new scan to find an IBSS to join
[ 1730.015402] wlan0: Trigger new scan to find an IBSS to join
[ 1732.004647] wlan0: Creating new IBSS network, BSSID 66:6f:67:02:c0:67
[ 1732.004656] ------------[ cut here ]------------
[ 1732.004690] WARNING: CPU: 2 PID: 6800 at net/wireless/chan.c:373 cfg80211_chandef_usable+0x31/0x161 [cfg80211]()
[ 1732.004692] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables autofs4 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd fscache sunrpc fuse loop qcserial usb_wwan usbserial btusb bluetooth snd_hda_codec_hdmi snd_hda_codec_conexant arc4 iwldvm mac80211 thinkpad_acpi nvram iTCO_wdt iTCO_vendor_support snd_seq_midi snd_seq_midi_event mxm_wmi snd_hda_intel snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_rawmidi snd_pcm snd_page_alloc coretemp kvm_intel kvm crc32c_intel ghash_clmulni_intel snd_seq snd_timer snd_seq_device snd aesni_intel ac pcspkr psmouse aes_x86_64 ablk_helper battery cryptd serio_raw lrw tpm_tis gf128mul tpm glue_helper tpm_bios evdev i915 iwlwifi wmi drm_kms_helper video intel_ips drm i2c_
algo_bit soundcore cfg80211 ehci_pci i2c_i801 ehci_hcd lpc_ich i2c_core mfd_core rfkill usbcore usb_common acpi_cpufreq button processor ext4 crc16 jbd2 mbcache sg sd_mod sr_mod crc_t10dif cdrom crct10dif_common microcode ahci libahci libata scsi_mod thermal thermal_sys sdhci_pci sdhci mmc_core e1000e ptp pps_core
[ 1732.004790] CPU: 2 PID: 6800 Comm: kworker/u8:2 Not tainted 3.12.0-rc6+ #3
[ 1732.004792] Hardware name: LENOVO 2912W1C/2912W1C, BIOS 6UET70WW (1.50 ) 10/11/2012
[ 1732.004808] Workqueue: phy0 ieee80211_iface_work [mac80211]
[ 1732.004811] 0000000000000000 0000000000000009 ffffffff81373aba 0000000000000000
[ 1732.004816] ffffffff8103732b 0000000000000002 ffffffffa02663ca 0000000000000000
[ 1732.004820] 000000000000000f ffff8800b4818220 ffff8800af03dd70 ffff8800b4818220
[ 1732.004825] Call Trace:
[ 1732.004834] [<ffffffff81373aba>] ? dump_stack+0x41/0x51
[ 1732.004840] [<ffffffff8103732b>] ? warn_slowpath_common+0x78/0x90
[ 1732.004855] [<ffffffffa02663ca>] ? cfg80211_chandef_usable+0x31/0x161 [cfg80211]
[ 1732.004868] [<ffffffffa02663ca>] ? cfg80211_chandef_usable+0x31/0x161 [cfg80211]
[ 1732.004881] [<ffffffffa026653a>] ? cfg80211_reg_can_beacon+0x40/0x90 [cfg80211]
[ 1732.004895] [<ffffffffa0523bc3>] ? __ieee80211_sta_join_ibss+0x15b/0x6e7 [mac80211]
[ 1732.004900] [<ffffffff81371724>] ? printk+0x4f/0x54
[ 1732.004912] [<ffffffffa0524217>] ? ieee80211_sta_create_ibss+0xc8/0xce [mac80211]
[ 1732.004926] [<ffffffffa0524f9d>] ? ieee80211_ibss_work+0x250/0x3c0 [mac80211]
[ 1732.004930] [<ffffffff8104b960>] ? process_one_work+0x191/0x294
[ 1732.004934] [<ffffffff8104be12>] ? worker_thread+0x121/0x1e7
[ 1732.004938] [<ffffffff8104bcf1>] ? rescuer_thread+0x269/0x269
[ 1732.004942] [<ffffffff81050819>] ? kthread+0x81/0x89
[ 1732.004947] [<ffffffff81050798>] ? __kthread_parkme+0x5d/0x5d
[ 1732.004953] [<ffffffff8137c83c>] ? ret_from_fork+0x7c/0xb0
[ 1732.004957] [<ffffffff81050798>] ? __kthread_parkme+0x5d/0x5d
[ 1732.004960] ---[ end trace 426d84b14a51a2b7 ]---
[ 1732.004963] wlan0: Failed to join IBSS, beacons forbidden
[ 1733.993860] wlan0: Trigger new scan to find an IBSS to join
[ 1734.015429] wlan0: Creating new IBSS network, BSSID 46:09:3a:82:f0:54
[ 1734.025897] ------------[ cut here ]------------
[ 1734.025932] WARNING: CPU: 2 PID: 6800 at net/wireless/chan.c:373 cfg80211_chandef_usable+0x31/0x161 [cfg80211]()
[ 1734.025935] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables autofs4 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd fscache sunrpc fuse loop qcserial usb_wwan usbserial btusb bluetooth snd_hda_codec_hdmi snd_hda_codec_conexant arc4 iwldvm mac80211 thinkpad_acpi nvram iTCO_wdt iTCO_vendor_support snd_seq_midi snd_seq_midi_event mxm_wmi snd_hda_intel snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_rawmidi snd_pcm snd_page_alloc coretemp kvm_intel kvm crc32c_intel ghash_clmulni_intel snd_seq snd_timer snd_seq_device snd aesni_intel ac pcspkr psmouse aes_x86_64 ablk_helper battery cryptd serio_raw lrw tpm_tis gf128mul tpm glue_helper tpm_bios evdev i915 iwlwifi wmi drm_kms_helper video intel_ips drm i2c_
algo_bit soundcore cfg80211 ehci_pci i2c_i801 ehci_hcd lpc_ich i2c_core mfd_core rfkill usbcore usb_common acpi_cpufreq button processor ext4 crc16 jbd2 mbcache sg sd_mod sr_mod crc_t10dif cdrom crct10dif_common microcode ahci libahci libata scsi_mod thermal thermal_sys sdhci_pci sdhci mmc_core e1000e ptp pps_core
[ 1734.026032] CPU: 2 PID: 6800 Comm: kworker/u8:2 Tainted: G W 3.12.0-rc6+ #3
[ 1734.026035] Hardware name: LENOVO 2912W1C/2912W1C, BIOS 6UET70WW (1.50 ) 10/11/2012
[ 1734.026052] Workqueue: phy0 ieee80211_iface_work [mac80211]
[ 1734.026055] 0000000000000000 0000000000000009 ffffffff81373aba 0000000000000000
[ 1734.026060] ffffffff8103732b 0000000000000001 ffffffffa02663ca ffff8800373577b0
[ 1734.026064] 000000000000000f ffff8800b4818220 ffff8800af03dd70 ffff8800b4818220
[ 1734.026069] Call Trace:
[ 1734.026078] [<ffffffff81373aba>] ? dump_stack+0x41/0x51
[ 1734.026085] [<ffffffff8103732b>] ? warn_slowpath_common+0x78/0x90
[ 1734.026099] [<ffffffffa02663ca>] ? cfg80211_chandef_usable+0x31/0x161 [cfg80211]
[ 1734.026112] [<ffffffffa02663ca>] ? cfg80211_chandef_usable+0x31/0x161 [cfg80211]
[ 1734.026125] [<ffffffffa026653a>] ? cfg80211_reg_can_beacon+0x40/0x90 [cfg80211]
[ 1734.026139] [<ffffffffa0523bc3>] ? __ieee80211_sta_join_ibss+0x15b/0x6e7 [mac80211]
[ 1734.026144] [<ffffffff81371724>] ? printk+0x4f/0x54
[ 1734.026157] [<ffffffffa0524217>] ? ieee80211_sta_create_ibss+0xc8/0xce [mac80211]
[ 1734.026170] [<ffffffffa0524f9d>] ? ieee80211_ibss_work+0x250/0x3c0 [mac80211]
[ 1734.026175] [<ffffffff8104b960>] ? process_one_work+0x191/0x294
[ 1734.026179] [<ffffffff8104be12>] ? worker_thread+0x121/0x1e7
[ 1734.026182] [<ffffffff8104bcf1>] ? rescuer_thread+0x269/0x269
[ 1734.026189] [<ffffffff81050819>] ? kthread+0x81/0x89
[ 1734.026193] [<ffffffff81050798>] ? __kthread_parkme+0x5d/0x5d
[ 1734.026198] [<ffffffff8137c83c>] ? ret_from_fork+0x7c/0xb0
[ 1734.026203] [<ffffffff81050798>] ? __kthread_parkme+0x5d/0x5d
[ 1734.026206] ---[ end trace 426d84b14a51a2b8 ]---
[ 1734.026208] wlan0: Failed to join IBSS, beacons forbidden
[ 1735.995111] wlan0: Creating new IBSS network, BSSID 76:28:a9:0d:88:36
[ 1736.011157] ------------[ cut here ]------------
[ 1736.011185] WARNING: CPU: 1 PID: 6800 at net/wireless/chan.c:373 cfg80211_chandef_usable+0x31/0x161 [cfg80211]()
[ 1736.011188] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables autofs4 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd fscache sunrpc fuse loop qcserial usb_wwan usbserial btusb bluetooth snd_hda_codec_hdmi snd_hda_codec_conexant arc4 iwldvm mac80211 thinkpad_acpi nvram iTCO_wdt iTCO_vendor_support snd_seq_midi snd_seq_midi_event mxm_wmi snd_hda_intel snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_rawmidi snd_pcm snd_page_alloc coretemp kvm_intel kvm crc32c_intel ghash_clmulni_intel snd_seq snd_timer snd_seq_device snd aesni_intel ac pcspkr psmouse aes_x86_64 ablk_helper battery cryptd serio_raw lrw tpm_tis gf128mul tpm glue_helper tpm_bios evdev i915 iwlwifi wmi drm_kms_helper video intel_ips drm i2c_
algo_bit soundcore cfg80211 ehci_pci i2c_i801 ehci_hcd lpc_ich i2c_core mfd_core rfkill usbcore usb_common acpi_cpufreq button processor ext4 crc16 jbd2 mbcache sg sd_mod sr_mod crc_t10dif cdrom crct10dif_common microcode ahci libahci libata scsi_mod thermal thermal_sys sdhci_pci sdhci mmc_core e1000e ptp pps_core
[ 1736.011281] CPU: 1 PID: 6800 Comm: kworker/u8:2 Tainted: G W 3.12.0-rc6+ #3
[ 1736.011283] Hardware name: LENOVO 2912W1C/2912W1C, BIOS 6UET70WW (1.50 ) 10/11/2012
[ 1736.011298] Workqueue: phy0 ieee80211_iface_work [mac80211]
[ 1736.011301] 0000000000000000 0000000000000009 ffffffff81373aba 0000000000000000
[ 1736.011306] ffffffff8103732b ffff8800b5930ece ffffffffa02663ca ffff8800373577b0
[ 1736.011310] 000000000000000f ffff8800b4818220 ffff8800af03dd70 ffff8800b4818220
[ 1736.011315] Call Trace:
[ 1736.011322] [<ffffffff81373aba>] ? dump_stack+0x41/0x51
[ 1736.011327] [<ffffffff8103732b>] ? warn_slowpath_common+0x78/0x90
[ 1736.011342] [<ffffffffa02663ca>] ? cfg80211_chandef_usable+0x31/0x161 [cfg80211]
[ 1736.011355] [<ffffffffa02663ca>] ? cfg80211_chandef_usable+0x31/0x161 [cfg80211]
[ 1736.011368] [<ffffffffa026653a>] ? cfg80211_reg_can_beacon+0x40/0x90 [cfg80211]
[ 1736.011382] [<ffffffffa0523bc3>] ? __ieee80211_sta_join_ibss+0x15b/0x6e7 [mac80211]
[ 1736.011387] [<ffffffff81371724>] ? printk+0x4f/0x54
[ 1736.011399] [<ffffffffa0524217>] ? ieee80211_sta_create_ibss+0xc8/0xce [mac80211]
[ 1736.011412] [<ffffffffa0524f9d>] ? ieee80211_ibss_work+0x250/0x3c0 [mac80211]
[ 1736.011417] [<ffffffff8104b960>] ? process_one_work+0x191/0x294
[ 1736.011421] [<ffffffff8104be12>] ? worker_thread+0x121/0x1e7
[ 1736.011424] [<ffffffff8104bcf1>] ? rescuer_thread+0x269/0x269
[ 1736.011429] [<ffffffff81050819>] ? kthread+0x81/0x89
[ 1736.011433] [<ffffffff81050798>] ? __kthread_parkme+0x5d/0x5d
[ 1736.011438] [<ffffffff8137c83c>] ? ret_from_fork+0x7c/0xb0
[ 1736.011442] [<ffffffff81050798>] ? __kthread_parkme+0x5d/0x5d
[ 1736.011445] ---[ end trace 426d84b14a51a2b9 ]---
[ 1736.011447] wlan0: Failed to join IBSS, beacons forbidden
[ 1738.008341] wlan0: Trigger new scan to find an IBSS to join
[ 1738.029843] wlan0: Creating new IBSS network, BSSID d6:b3:47:e6:02:c5
[ 1738.029852] ------------[ cut here ]------------
[ 1738.029881] WARNING: CPU: 2 PID: 6800 at net/wireless/chan.c:373 cfg80211_chandef_usable+0x31/0x161 [cfg80211]()
[ 1738.029884] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables autofs4 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd fscache sunrpc fuse loop qcserial usb_wwan usbserial btusb bluetooth snd_hda_codec_hdmi snd_hda_codec_conexant arc4 iwldvm mac80211 thinkpad_acpi nvram iTCO_wdt iTCO_vendor_support snd_seq_midi snd_seq_midi_event mxm_wmi snd_hda_intel snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_rawmidi snd_pcm snd_page_alloc coretemp kvm_intel kvm crc32c_intel ghash_clmulni_intel snd_seq snd_timer snd_seq_device snd aesni_intel ac pcspkr psmouse aes_x86_64 ablk_helper battery cryptd serio_raw lrw tpm_tis gf128mul tpm glue_helper tpm_bios evdev i915 iwlwifi wmi drm_kms_helper video intel_ips drm i2c_
algo_bit soundcore cfg80211 ehci_pci i2c_i801 ehci_hcd lpc_ich i2c_core mfd_core rfkill usbcore usb_common acpi_cpufreq button processor ext4 crc16 jbd2 mbcache sg sd_mod sr_mod crc_t10dif cdrom crct10dif_common microcode ahci libahci libata scsi_mod thermal thermal_sys sdhci_pci sdhci mmc_core e1000e ptp pps_core
[ 1738.029987] CPU: 2 PID: 6800 Comm: kworker/u8:2 Tainted: G W 3.12.0-rc6+ #3
[ 1738.029990] Hardware name: LENOVO 2912W1C/2912W1C, BIOS 6UET70WW (1.50 ) 10/11/2012
[ 1738.030005] Workqueue: phy0 ieee80211_iface_work [mac80211]
[ 1738.030008] 0000000000000000 0000000000000009 ffffffff81373aba 0000000000000000
[ 1738.030013] ffffffff8103732b 0000000000000002 ffffffffa02663ca 0000000000000000
[ 1738.030017] 000000000000000f ffff8800b4818220 ffff8800af03dd70 ffff8800b4818220
[ 1738.030021] Call Trace:
[ 1738.030030] [<ffffffff81373aba>] ? dump_stack+0x41/0x51
[ 1738.030036] [<ffffffff8103732b>] ? warn_slowpath_common+0x78/0x90
[ 1738.030050] [<ffffffffa02663ca>] ? cfg80211_chandef_usable+0x31/0x161 [cfg80211]
[ 1738.030064] [<ffffffffa02663ca>] ? cfg80211_chandef_usable+0x31/0x161 [cfg80211]
[ 1738.030077] [<ffffffffa026653a>] ? cfg80211_reg_can_beacon+0x40/0x90 [cfg80211]
[ 1738.030090] [<ffffffffa0523bc3>] ? __ieee80211_sta_join_ibss+0x15b/0x6e7 [mac80211]
[ 1738.030096] [<ffffffff81371724>] ? printk+0x4f/0x54
[ 1738.030108] [<ffffffffa0524217>] ? ieee80211_sta_create_ibss+0xc8/0xce [mac80211]
[ 1738.030121] [<ffffffffa0524f9d>] ? ieee80211_ibss_work+0x250/0x3c0 [mac80211]
[ 1738.030126] [<ffffffff8104b960>] ? process_one_work+0x191/0x294
[ 1738.030130] [<ffffffff8104be12>] ? worker_thread+0x121/0x1e7
[ 1738.030134] [<ffffffff8104bcf1>] ? rescuer_thread+0x269/0x269
[ 1738.030138] [<ffffffff81050819>] ? kthread+0x81/0x89
[ 1738.030143] [<ffffffff81050798>] ? __kthread_parkme+0x5d/0x5d
[ 1738.030148] [<ffffffff8137c83c>] ? ret_from_fork+0x7c/0xb0
[ 1738.030152] [<ffffffff81050798>] ? __kthread_parkme+0x5d/0x5d
[ 1738.030155] ---[ end trace 426d84b14a51a2ba ]---
[ 1738.030157] wlan0: Failed to join IBSS, beacons forbidden
[ 1739.997578] wlan0: Creating new IBSS network, BSSID fa:3b:78:1a:1c:8b
[ 1739.997587] ------------[ cut here ]------------
[ 1739.997613] WARNING: CPU: 1 PID: 6800 at net/wireless/chan.c:373 cfg80211_chandef_usable+0x31/0x161 [cfg80211]()
[ 1739.997615] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables autofs4 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd fscache sunrpc fuse loop qcserial usb_wwan usbserial btusb bluetooth snd_hda_codec_hdmi snd_hda_codec_conexant arc4 iwldvm mac80211 thinkpad_acpi nvram iTCO_wdt iTCO_vendor_support snd_seq_midi snd_seq_midi_event mxm_wmi snd_hda_intel snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_rawmidi snd_pcm snd_page_alloc coretemp kvm_intel kvm crc32c_intel ghash_clmulni_intel snd_seq snd_timer snd_seq_device snd aesni_intel ac pcspkr psmouse aes_x86_64 ablk_helper battery cryptd serio_raw lrw tpm_tis gf128mul tpm glue_helper tpm_bios evdev i915 iwlwifi wmi drm_kms_helper video intel_ips drm i2c_
algo_bit soundcore cfg80211 ehci_pci i2c_i801 ehci_hcd lpc_ich i2c_core mfd_core rfkill usbcore usb_common acpi_cpufreq button processor ext4 crc16 jbd2 mbcache sg sd_mod sr_mod crc_t10dif cdrom crct10dif_common microcode ahci libahci libata scsi_mod thermal thermal_sys sdhci_pci sdhci mmc_core e1000e ptp pps_core
[ 1739.997707] CPU: 1 PID: 6800 Comm: kworker/u8:2 Tainted: G W 3.12.0-rc6+ #3
[ 1739.997709] Hardware name: LENOVO 2912W1C/2912W1C, BIOS 6UET70WW (1.50 ) 10/11/2012
[ 1739.997724] Workqueue: phy0 ieee80211_iface_work [mac80211]
[ 1739.997726] 0000000000000000 0000000000000009 ffffffff81373aba 0000000000000000
[ 1739.997731] ffffffff8103732b 0000000000000006 ffffffffa02663ca 0000000000000000
[ 1739.997735] 000000000000000f ffff8800b4818220 ffff8800af03dd70 ffff8800b4818220
[ 1739.997740] Call Trace:
[ 1739.997748] [<ffffffff81373aba>] ? dump_stack+0x41/0x51
[ 1739.997753] [<ffffffff8103732b>] ? warn_slowpath_common+0x78/0x90
[ 1739.997767] [<ffffffffa02663ca>] ? cfg80211_chandef_usable+0x31/0x161 [cfg80211]
[ 1739.997781] [<ffffffffa02663ca>] ? cfg80211_chandef_usable+0x31/0x161 [cfg80211]
[ 1739.997794] [<ffffffffa026653a>] ? cfg80211_reg_can_beacon+0x40/0x90 [cfg80211]
[ 1739.997807] [<ffffffffa0523bc3>] ? __ieee80211_sta_join_ibss+0x15b/0x6e7 [mac80211]
[ 1739.997812] [<ffffffff81371724>] ? printk+0x4f/0x54
[ 1739.997825] [<ffffffffa0524217>] ? ieee80211_sta_create_ibss+0xc8/0xce [mac80211]
[ 1739.997838] [<ffffffffa0524f9d>] ? ieee80211_ibss_work+0x250/0x3c0 [mac80211]
[ 1739.997842] [<ffffffff8104b960>] ? process_one_work+0x191/0x294
[ 1739.997846] [<ffffffff8104be12>] ? worker_thread+0x121/0x1e7
[ 1739.997850] [<ffffffff8104bcf1>] ? rescuer_thread+0x269/0x269
[ 1739.997854] [<ffffffff81050819>] ? kthread+0x81/0x89
[ 1739.997859] [<ffffffff81050798>] ? __kthread_parkme+0x5d/0x5d
[ 1739.997864] [<ffffffff8137c83c>] ? ret_from_fork+0x7c/0xb0
[ 1739.997868] [<ffffffff81050798>] ? __kthread_parkme+0x5d/0x5d
[ 1739.997871] ---[ end trace 426d84b14a51a2bb ]---
[ 1739.997874] wlan0: Failed to join IBSS, beacons forbidden
[ 1742.010809] wlan0: Trigger new scan to find an IBSS to join
[ 1742.032428] wlan0: Selected IBSS BSSID 02:54:99:bb:01:aa based on configured SSID
[ 1742.037372] iwlwifi 0000:03:00.0: Unable to find TIM Element in beacon
[ 1742.038596] iwlwifi 0000:03:00.0: Unable to find TIM Element in beacon
[ 1742.038837] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Cheers,
Thomas
^ permalink raw reply
* Re: [PATCH] mac80211: document IEEE80211_HW_SUPPORTS_HT_CCK_RATES
From: Johannes Berg @ 2013-10-21 10:22 UTC (permalink / raw)
To: Michael Opdenacker
Cc: davem-fT/PcQaiUtIeIZ0/mPfg9Q,
linux-wireless-u79uwXL29TY76Z2rM5mHXA,
netdev-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1382251529-22540-1-git-send-email-michael.opdenacker-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
On Sun, 2013-10-20 at 08:45 +0200, Michael Opdenacker wrote:
> This patch documents the IEEE80211_HW_SUPPORTS_HT_CCK_RATES flag
> in ieee80211_hw_flags.
>
> Without this, you get countless warnings in "make htmldocs".
I already have an equivalent patch with correct documentation :)
johannes
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* RE: [WARNING] v3.12-rc6-3-g0df651a WARNING: CPU: 2 PID: 6800 at net/wireless/chan.c:373 cfg80211_chandef_usable+0x31/0x161 [cfg80211]()
From: Berg, Johannes @ 2013-10-21 10:24 UTC (permalink / raw)
To: Thomas Glanzmann, netdev@vger.kernel.org
In-Reply-To: <20131021102131.GA11265@glanzmann.de>
> Subject: [WARNING] v3.12-rc6-3-g0df651a WARNING: CPU: 2 PID: 6800 at
> net/wireless/chan.c:373 cfg80211_chandef_usable+0x31/0x161 [cfg80211]()
>
> Hello,
> I'm referring to commit 9f5e8f6efc7c2601136b27d9c7325c245f8fd19a. I just
We have a fix in commit f478f33a93f9353dcd1fe55445343d76b1c3f84a I believe.
Johannes
--
Intel GmbH
Dornacher Strasse 1
85622 Feldkirchen/Muenchen, Deutschland
Sitz der Gesellschaft: Feldkirchen bei Muenchen
Geschaeftsfuehrer: Christian Lamprechter, Hannes Schwaderer, Douglas Lusk
Registergericht: Muenchen HRB 47456
Ust.-IdNr./VAT Registration No.: DE129385895
Citibank Frankfurt a.M. (BLZ 502 109 00) 600119052
^ permalink raw reply
* Re: [PATCH 00/23 v2] cleanup: introduce br/netdev/netif/wiphy_<foo>_ratelimited() and use them to simplify code
From: Kefeng Wang @ 2013-10-21 11:26 UTC (permalink / raw)
To: Joe Perches; +Cc: linux-kernel, netfilter, netdev, linux-wireless
In-Reply-To: <1382069482.22110.164.camel@joe-AO722>
On 10/18 12:11, Joe Perches wrote:
> (resending to lists only because of multiple X's in the subject line)
>
> On Fri, 2013-10-18 at 11:52 +0800, Kefeng Wang wrote:
>> v1-v2:
>>
>> Introduce macro br/netdev/netif/wiphy_XXX_ratelimited() according
>> to Joe Perches's advice. The macros are similar to net_XXX_ratelimited()
>> which is more clarifying than net_ratelimited_function(), then use them
>> to simplify code.
>
> There are some conceptual differences between these
> implementations and other <foo>_ratelimited uses.
>
> For every other subsystem but net, there is a per-location
> struct ratelimit_state.
yes, but I think I just changed net subsystem. Macro DEFINE_RATELIMIT_STATE used
DEFAULT_RATELIMIT_INTERVAL and DEFAULT_RATELIMIT_BURST, so what do you think?
Could anyone give me some advises ?
> Here you've made the global net_ratelimit_state replace all
> of these individual structs so there is some new interaction.
>
> Dunno if that's good or bad.
>
>
>
>
>
^ permalink raw reply
* Re: [PATCH] mac80211: document IEEE80211_HW_SUPPORTS_HT_CCK_RATES
From: Michael Opdenacker @ 2013-10-21 11:46 UTC (permalink / raw)
To: Johannes Berg; +Cc: davem, linux-wireless, netdev, linux-kernel
In-Reply-To: <1382350961.14310.42.camel@jlt4.sipsolutions.net>
Hi Johannes,
On 10/21/2013 12:22 PM, Johannes Berg wrote:
> On Sun, 2013-10-20 at 08:45 +0200, Michael Opdenacker wrote:
>> This patch documents the IEEE80211_HW_SUPPORTS_HT_CCK_RATES flag
>> in ieee80211_hw_flags.
>>
>> Without this, you get countless warnings in "make htmldocs".
> I already have an equivalent patch with correct documentation :)
Great! Then let's use your patch :)
Thanks,
Michael.
--
Michael Opdenacker, CEO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
+33 484 258 098
^ permalink raw reply
* Re: [PATCH] atm: firestream: remove duplicate define
From: chas williams - CONTRACTOR @ 2013-10-21 11:53 UTC (permalink / raw)
To: Michael Opdenacker; +Cc: linux-atm-general, netdev, linux-kernel
In-Reply-To: <1382343161-3243-1-git-send-email-michael.opdenacker@free-electrons.com>
Acked-by: Chas Williams <chas@cmf.nrl.navy.mil>
On Mon, 21 Oct 2013 10:12:41 +0200
Michael Opdenacker <michael.opdenacker@free-electrons.com> wrote:
> This patch removes a duplicate define in drivers/atm/firestream.h
>
> Signed-off-by: Michael Opdenacker <michael.opdenacker@free-electrons.com>
> ---
> drivers/atm/firestream.h | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/atm/firestream.h b/drivers/atm/firestream.h
> index 49e783e..364eded 100644
> --- a/drivers/atm/firestream.h
> +++ b/drivers/atm/firestream.h
> @@ -420,7 +420,6 @@ struct fs_transmit_config {
> #define RC_FLAGS_BFPS_BFP27 (0xd << 17)
> #define RC_FLAGS_BFPS_BFP47 (0xe << 17)
>
> -#define RC_FLAGS_BFPS (0x1 << 17)
> #define RC_FLAGS_BFPP (0x1 << 21)
> #define RC_FLAGS_TEVC (0x1 << 22)
> #define RC_FLAGS_TEP (0x1 << 23)
^ permalink raw reply
* Re: [PATCH net-next 0/5] bonding: patchset for rcu use in bonding
From: Ding Tianhong @ 2013-10-21 12:32 UTC (permalink / raw)
To: Veaceslav Falico
Cc: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Netdev
In-Reply-To: <20131021093549.GC692@redhat.com>
On 2013/10/21 17:35, Veaceslav Falico wrote:
> On Mon, Oct 21, 2013 at 05:27:51PM +0800, Ding Tianhong wrote:
>> On 2013/10/21 17:13, Veaceslav Falico wrote:
>>> On Mon, Oct 21, 2013 at 04:58:36PM +0800, Ding Tianhong wrote:
>>>> Hi:
>>>>
>>>> The Patch Set will remove the invalid lock for bond work queue and replace it
>>>> with rtnl lock, as read lock for bond could not protect slave list any more.
>>>
>>> rtnl lock is a lot more expensive than bond lock, and not only for bond,
>>> but for all the networking stack.
>>>
>>> Why is the bond->lock invalid? It correctly protects slaves from being
>>> modified concurrently.
>>>
>>> I don't see the point in this patchset.
>>>
>>
>> yes, rtnl lock is a big lock, but I think bond->lock could not protect
>> bond_for_each_slave any more, am I miss something?
>
> Why can't it protect bond_for_each_slave()?
>
bond_master_upper_dev_link() and bond_upper_dev_unlink() was only in rtnl lock,
bond_for_each_slave may changed while loop in bond read lock, but it sees that
nothing serious will happen yet.
Maybe I miss something.
Ding
>>
>> Ding
>>
>>>>
>>>> Ding Tianhong (5):
>>>> bonding: remove bond read lock for bond_mii_monitor()
>>>> bonding: remove bond read lock for bond_alb_monitor()
>>>> bonding: remove bond read lock for bond_loadbalance_arp_mon()
>>>> bonding: remove bond read lock for bond_activebackup_arp_mon()
>>>> bonding: remove bond read lock for bond_3ad_state_machine_handler()
>>>>
>>>> drivers/net/bonding/bond_3ad.c | 9 ++--
>>>> drivers/net/bonding/bond_alb.c | 20 ++------
>>>> drivers/net/bonding/bond_main.c | 100 +++++++++++++---------------------------
>>>> 3 files changed, 40 insertions(+), 89 deletions(-)
>>>>
>>>> --
>>>> 1.8.2.1
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
> .
>
^ 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