* [PATCHv2 net-next 1/4] caif-hsi: Remove wake line modification when flushing FIFO
@ 2011-12-06 22:15 Sjur Brændeland
2011-12-06 22:15 ` [PATCHv2 net-next 2/4] caif: Bad assert triggering false positive Sjur Brændeland
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Sjur Brændeland @ 2011-12-06 22:15 UTC (permalink / raw)
To: netdev, David Miller; +Cc: Christian Auby, Sjur Brændeland
From: Christian Auby <christian.auby@stericsson.com>
Raising wake before flushing FIFO and lowering it after caused a
spike on AC wake that were sometimes detected and acted upon by the
modem. Fixed this by remove wake line modification when flushing FIFO.
Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
---
drivers/net/caif/caif_hsi.c | 11 -----------
1 files changed, 0 insertions(+), 11 deletions(-)
diff --git a/drivers/net/caif/caif_hsi.c b/drivers/net/caif/caif_hsi.c
index 0733525..a85b29e 100644
--- a/drivers/net/caif/caif_hsi.c
+++ b/drivers/net/caif/caif_hsi.c
@@ -117,15 +117,6 @@ static int cfhsi_flush_fifo(struct cfhsi *cfhsi)
dev_dbg(&cfhsi->ndev->dev, "%s.\n",
__func__);
-
- ret = cfhsi->dev->cfhsi_wake_up(cfhsi->dev);
- if (ret) {
- dev_warn(&cfhsi->ndev->dev,
- "%s: can't wake up HSI interface: %d.\n",
- __func__, ret);
- return ret;
- }
-
do {
ret = cfhsi->dev->cfhsi_fifo_occupancy(cfhsi->dev,
&fifo_occupancy);
@@ -168,8 +159,6 @@ static int cfhsi_flush_fifo(struct cfhsi *cfhsi)
}
} while (1);
- cfhsi->dev->cfhsi_wake_down(cfhsi->dev);
-
return ret;
}
--
1.7.0.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCHv2 net-next 2/4] caif: Bad assert triggering false positive.
2011-12-06 22:15 [PATCHv2 net-next 1/4] caif-hsi: Remove wake line modification when flushing FIFO Sjur Brændeland
@ 2011-12-06 22:15 ` Sjur Brændeland
2011-12-06 22:22 ` David Miller
2011-12-06 22:15 ` [PATCHv2 net-next 3/4] caif-shm: Bugfixes for caif_shmcore.c Sjur Brændeland
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Sjur Brændeland @ 2011-12-06 22:15 UTC (permalink / raw)
To: netdev, David Miller; +Cc: Sjur Brændeland
Fix bad assert on fragment size triggering false positive.
Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
---
net/caif/cfrfml.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/net/caif/cfrfml.c b/net/caif/cfrfml.c
index 81660f8..6dc75d4 100644
--- a/net/caif/cfrfml.c
+++ b/net/caif/cfrfml.c
@@ -190,7 +190,7 @@ out:
static int cfrfml_transmit_segment(struct cfrfml *rfml, struct cfpkt *pkt)
{
- caif_assert(cfpkt_getlen(pkt) < rfml->fragment_size);
+ caif_assert(cfpkt_getlen(pkt) < rfml->fragment_size + RFM_HEAD_SIZE);
/* Add info for MUX-layer to route the packet out. */
cfpkt_info(pkt)->channel_id = rfml->serv.layer.id;
--
1.7.0.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCHv2 net-next 3/4] caif-shm: Bugfixes for caif_shmcore.c
2011-12-06 22:15 [PATCHv2 net-next 1/4] caif-hsi: Remove wake line modification when flushing FIFO Sjur Brændeland
2011-12-06 22:15 ` [PATCHv2 net-next 2/4] caif: Bad assert triggering false positive Sjur Brændeland
@ 2011-12-06 22:15 ` Sjur Brændeland
2011-12-06 22:22 ` David Miller
2011-12-06 22:15 ` [PATCHv2 net-next 4/4] caif: Replace BUG_ON with WARN_ON Sjur Brændeland
2011-12-06 22:22 ` [PATCHv2 net-next 1/4] caif-hsi: Remove wake line modification when flushing FIFO David Miller
3 siblings, 1 reply; 8+ messages in thread
From: Sjur Brændeland @ 2011-12-06 22:15 UTC (permalink / raw)
To: netdev, David Miller; +Cc: Sjur Brændeland
Various bugfixes for caif_shmcore.c:
- fix deadlocks due to improper usage of spin-lock
- add missing spin-lock init
- don't call dev_kfree_skb() with irqs disabled,
use dev_kfree_skb_irq() instead.
- fix potential skb null pointer de-reference.
Squashed original patches from:
Rabin Vincent <rabin.vincent@stericsson.com>
Durga Prasada Rao BATHINA <durgaprasadarao.b@stericcson.com>
Arun Murthy <arun.murthy@stericsson.com>
Bibek Basu <bibek.basu@stericsson.com>
Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
---
Change since v1:
- s/dev_kfree_skb_any/dev_kfree_skb_irq/
- fixed two pointer cast warnings
drivers/net/caif/caif_shmcore.c | 21 +++++++++++----------
1 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/drivers/net/caif/caif_shmcore.c b/drivers/net/caif/caif_shmcore.c
index d4b26fb..fd59e37 100644
--- a/drivers/net/caif/caif_shmcore.c
+++ b/drivers/net/caif/caif_shmcore.c
@@ -238,11 +238,11 @@ int caif_shmdrv_rx_cb(u32 mbx_msg, void *priv)
if ((avail_emptybuff > HIGH_WATERMARK) &&
(!pshm_drv->tx_empty_available)) {
pshm_drv->tx_empty_available = 1;
+ spin_unlock_irqrestore(&pshm_drv->lock, flags);
pshm_drv->cfdev.flowctrl
(pshm_drv->pshm_dev->pshm_netdev,
CAIF_FLOW_ON);
- spin_unlock_irqrestore(&pshm_drv->lock, flags);
/* Schedule the work queue. if required */
if (!work_pending(&pshm_drv->shm_tx_work))
@@ -285,6 +285,7 @@ static void shm_rx_work_func(struct work_struct *rx_work)
list_entry(pshm_drv->rx_full_list.next, struct buf_list,
list);
list_del_init(&pbuf->list);
+ spin_unlock_irqrestore(&pshm_drv->lock, flags);
/* Retrieve pointer to start of the packet descriptor area. */
pck_desc = (struct shm_pck_desc *) pbuf->desc_vptr;
@@ -360,6 +361,7 @@ static void shm_rx_work_func(struct work_struct *rx_work)
pck_desc++;
}
+ spin_lock_irqsave(&pshm_drv->lock, flags);
list_add_tail(&pbuf->list, &pshm_drv->rx_pend_list);
spin_unlock_irqrestore(&pshm_drv->lock, flags);
@@ -412,7 +414,6 @@ static void shm_tx_work_func(struct work_struct *tx_work)
if (skb == NULL)
goto send_msg;
-
/* Check the available no. of buffers in the empty list */
list_for_each(pos, &pshm_drv->tx_empty_list)
avail_emptybuff++;
@@ -421,9 +422,11 @@ static void shm_tx_work_func(struct work_struct *tx_work)
pshm_drv->tx_empty_available) {
/* Update blocking condition. */
pshm_drv->tx_empty_available = 0;
+ spin_unlock_irqrestore(&pshm_drv->lock, flags);
pshm_drv->cfdev.flowctrl
(pshm_drv->pshm_dev->pshm_netdev,
CAIF_FLOW_OFF);
+ spin_lock_irqsave(&pshm_drv->lock, flags);
}
/*
* We simply return back to the caller if we do not have space
@@ -469,6 +472,8 @@ static void shm_tx_work_func(struct work_struct *tx_work)
}
skb = skb_dequeue(&pshm_drv->sk_qhead);
+ if (skb == NULL)
+ break;
/* Copy in CAIF frame. */
skb_copy_bits(skb, 0, pbuf->desc_vptr +
pbuf->frm_ofs + SHM_HDR_LEN +
@@ -477,7 +482,7 @@ static void shm_tx_work_func(struct work_struct *tx_work)
pshm_drv->pshm_dev->pshm_netdev->stats.tx_packets++;
pshm_drv->pshm_dev->pshm_netdev->stats.tx_bytes +=
frmlen;
- dev_kfree_skb(skb);
+ dev_kfree_skb_irq(skb);
/* Fill in the shared memory packet descriptor area. */
pck_desc = (struct shm_pck_desc *) (pbuf->desc_vptr);
@@ -512,16 +517,11 @@ send_msg:
static int shm_netdev_tx(struct sk_buff *skb, struct net_device *shm_netdev)
{
struct shmdrv_layer *pshm_drv;
- unsigned long flags = 0;
pshm_drv = netdev_priv(shm_netdev);
- spin_lock_irqsave(&pshm_drv->lock, flags);
-
skb_queue_tail(&pshm_drv->sk_qhead, skb);
- spin_unlock_irqrestore(&pshm_drv->lock, flags);
-
/* Schedule Tx work queue. for deferred processing of skbs*/
if (!work_pending(&pshm_drv->shm_tx_work))
queue_work(pshm_drv->pshm_tx_workqueue, &pshm_drv->shm_tx_work);
@@ -606,6 +606,7 @@ int caif_shmcore_probe(struct shmdev_layer *pshm_dev)
pshm_drv->shm_rx_addr = pshm_dev->shm_base_addr +
(NR_TX_BUF * TX_BUF_SZ);
+ spin_lock_init(&pshm_drv->lock);
INIT_LIST_HEAD(&pshm_drv->tx_empty_list);
INIT_LIST_HEAD(&pshm_drv->tx_pend_list);
INIT_LIST_HEAD(&pshm_drv->tx_full_list);
@@ -640,7 +641,7 @@ int caif_shmcore_probe(struct shmdev_layer *pshm_dev)
tx_buf->frm_ofs = SHM_CAIF_FRM_OFS;
if (pshm_dev->shm_loopback)
- tx_buf->desc_vptr = (char *)tx_buf->phy_addr;
+ tx_buf->desc_vptr = (unsigned char *)tx_buf->phy_addr;
else
tx_buf->desc_vptr =
ioremap(tx_buf->phy_addr, TX_BUF_SZ);
@@ -664,7 +665,7 @@ int caif_shmcore_probe(struct shmdev_layer *pshm_dev)
rx_buf->len = RX_BUF_SZ;
if (pshm_dev->shm_loopback)
- rx_buf->desc_vptr = (char *)rx_buf->phy_addr;
+ rx_buf->desc_vptr = (unsigned char *)rx_buf->phy_addr;
else
rx_buf->desc_vptr =
ioremap(rx_buf->phy_addr, RX_BUF_SZ);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCHv2 net-next 4/4] caif: Replace BUG_ON with WARN_ON.
2011-12-06 22:15 [PATCHv2 net-next 1/4] caif-hsi: Remove wake line modification when flushing FIFO Sjur Brændeland
2011-12-06 22:15 ` [PATCHv2 net-next 2/4] caif: Bad assert triggering false positive Sjur Brændeland
2011-12-06 22:15 ` [PATCHv2 net-next 3/4] caif-shm: Bugfixes for caif_shmcore.c Sjur Brændeland
@ 2011-12-06 22:15 ` Sjur Brændeland
2011-12-06 22:22 ` David Miller
2011-12-06 22:22 ` [PATCHv2 net-next 1/4] caif-hsi: Remove wake line modification when flushing FIFO David Miller
3 siblings, 1 reply; 8+ messages in thread
From: Sjur Brændeland @ 2011-12-06 22:15 UTC (permalink / raw)
To: netdev, David Miller; +Cc: Roar Førde, Sjur Brændeland
From: Roar Førde <roar.forde@stericsson.com>
BUG_ON is too strict in a number of circumstances,
use WARN_ON instead. Protocol errors should not halt the system.
Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
---
Since v1: removed and changed some OOM related printouts.
drivers/net/caif/caif_hsi.c | 2 +-
drivers/net/caif/caif_serial.c | 4 ++--
drivers/net/caif/caif_shmcore.c | 6 +++++-
net/caif/caif_dev.c | 10 ++++------
4 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/drivers/net/caif/caif_hsi.c b/drivers/net/caif/caif_hsi.c
index a85b29e..0a4fc62 100644
--- a/drivers/net/caif/caif_hsi.c
+++ b/drivers/net/caif/caif_hsi.c
@@ -933,7 +933,7 @@ static int cfhsi_xmit(struct sk_buff *skb, struct net_device *dev)
/* Create HSI frame. */
len = cfhsi_tx_frm(desc, cfhsi);
- BUG_ON(!len);
+ WARN_ON(!len);
/* Set up new transfer. */
res = cfhsi->dev->cfhsi_tx(cfhsi->tx_buf, len, cfhsi->dev);
diff --git a/drivers/net/caif/caif_serial.c b/drivers/net/caif/caif_serial.c
index 23406e6..9341a2d 100644
--- a/drivers/net/caif/caif_serial.c
+++ b/drivers/net/caif/caif_serial.c
@@ -261,7 +261,7 @@ static int handle_tx(struct ser_device *ser)
skb_pull(skb, tty_wr);
if (skb->len == 0) {
struct sk_buff *tmp = skb_dequeue(&ser->head);
- BUG_ON(tmp != skb);
+ WARN_ON(tmp != skb);
if (in_interrupt())
dev_kfree_skb_irq(skb);
else
@@ -305,7 +305,7 @@ static void ldisc_tx_wakeup(struct tty_struct *tty)
ser = tty->disc_data;
BUG_ON(ser == NULL);
- BUG_ON(ser->tty != tty);
+ WARN_ON(ser->tty != tty);
handle_tx(ser);
}
diff --git a/drivers/net/caif/caif_shmcore.c b/drivers/net/caif/caif_shmcore.c
index fd59e37..5b20413 100644
--- a/drivers/net/caif/caif_shmcore.c
+++ b/drivers/net/caif/caif_shmcore.c
@@ -337,7 +337,11 @@ static void shm_rx_work_func(struct work_struct *rx_work)
/* Get a suitable CAIF packet and copy in data. */
skb = netdev_alloc_skb(pshm_drv->pshm_dev->pshm_netdev,
frm_pck_len + 1);
- BUG_ON(skb == NULL);
+
+ if (skb == NULL) {
+ pr_info("OOM: Try next frame in descriptor\n");
+ break;
+ }
p = skb_put(skb, frm_pck_len);
memcpy(p, pbuf->desc_vptr + frm_pck_ofs, frm_pck_len);
diff --git a/net/caif/caif_dev.c b/net/caif/caif_dev.c
index 9b298c1..b0ce14f 100644
--- a/net/caif/caif_dev.c
+++ b/net/caif/caif_dev.c
@@ -58,7 +58,6 @@ static int q_high = 50; /* Percent */
struct cfcnfg *get_cfcnfg(struct net *net)
{
struct caif_net *caifn;
- BUG_ON(!net);
caifn = net_generic(net, caif_net_id);
if (!caifn)
return NULL;
@@ -69,7 +68,6 @@ EXPORT_SYMBOL(get_cfcnfg);
static struct caif_device_entry_list *caif_device_list(struct net *net)
{
struct caif_net *caifn;
- BUG_ON(!net);
caifn = net_generic(net, caif_net_id);
if (!caifn)
return NULL;
@@ -507,15 +505,15 @@ static struct notifier_block caif_device_notifier = {
static int caif_init_net(struct net *net)
{
struct caif_net *caifn = net_generic(net, caif_net_id);
- BUG_ON(!caifn);
+ if (WARN_ON(!caifn))
+ return -EINVAL;
+
INIT_LIST_HEAD(&caifn->caifdevs.list);
mutex_init(&caifn->caifdevs.lock);
caifn->cfg = cfcnfg_create();
- if (!caifn->cfg) {
- pr_warn("can't create cfcnfg\n");
+ if (!caifn->cfg)
return -ENOMEM;
- }
return 0;
}
--
1.7.0.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCHv2 net-next 1/4] caif-hsi: Remove wake line modification when flushing FIFO
2011-12-06 22:15 [PATCHv2 net-next 1/4] caif-hsi: Remove wake line modification when flushing FIFO Sjur Brændeland
` (2 preceding siblings ...)
2011-12-06 22:15 ` [PATCHv2 net-next 4/4] caif: Replace BUG_ON with WARN_ON Sjur Brændeland
@ 2011-12-06 22:22 ` David Miller
3 siblings, 0 replies; 8+ messages in thread
From: David Miller @ 2011-12-06 22:22 UTC (permalink / raw)
To: sjur.brandeland; +Cc: netdev, christian.auby
From: Sjur Brændeland <sjur.brandeland@stericsson.com>
Date: Tue, 6 Dec 2011 23:15:41 +0100
> From: Christian Auby <christian.auby@stericsson.com>
>
> Raising wake before flushing FIFO and lowering it after caused a
> spike on AC wake that were sometimes detected and acted upon by the
> modem. Fixed this by remove wake line modification when flushing FIFO.
>
> Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
Applied.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCHv2 net-next 2/4] caif: Bad assert triggering false positive.
2011-12-06 22:15 ` [PATCHv2 net-next 2/4] caif: Bad assert triggering false positive Sjur Brændeland
@ 2011-12-06 22:22 ` David Miller
0 siblings, 0 replies; 8+ messages in thread
From: David Miller @ 2011-12-06 22:22 UTC (permalink / raw)
To: sjur.brandeland; +Cc: netdev
From: Sjur Brændeland <sjur.brandeland@stericsson.com>
Date: Tue, 6 Dec 2011 23:15:42 +0100
> Fix bad assert on fragment size triggering false positive.
>
> Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
Applied.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCHv2 net-next 3/4] caif-shm: Bugfixes for caif_shmcore.c
2011-12-06 22:15 ` [PATCHv2 net-next 3/4] caif-shm: Bugfixes for caif_shmcore.c Sjur Brændeland
@ 2011-12-06 22:22 ` David Miller
0 siblings, 0 replies; 8+ messages in thread
From: David Miller @ 2011-12-06 22:22 UTC (permalink / raw)
To: sjur.brandeland; +Cc: netdev
From: Sjur Brændeland <sjur.brandeland@stericsson.com>
Date: Tue, 6 Dec 2011 23:15:43 +0100
> Various bugfixes for caif_shmcore.c:
> - fix deadlocks due to improper usage of spin-lock
> - add missing spin-lock init
> - don't call dev_kfree_skb() with irqs disabled,
> use dev_kfree_skb_irq() instead.
> - fix potential skb null pointer de-reference.
>
> Squashed original patches from:
> Rabin Vincent <rabin.vincent@stericsson.com>
> Durga Prasada Rao BATHINA <durgaprasadarao.b@stericcson.com>
> Arun Murthy <arun.murthy@stericsson.com>
> Bibek Basu <bibek.basu@stericsson.com>
>
> Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
> ---
> Change since v1:
> - s/dev_kfree_skb_any/dev_kfree_skb_irq/
> - fixed two pointer cast warnings
Applied.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCHv2 net-next 4/4] caif: Replace BUG_ON with WARN_ON.
2011-12-06 22:15 ` [PATCHv2 net-next 4/4] caif: Replace BUG_ON with WARN_ON Sjur Brændeland
@ 2011-12-06 22:22 ` David Miller
0 siblings, 0 replies; 8+ messages in thread
From: David Miller @ 2011-12-06 22:22 UTC (permalink / raw)
To: sjur.brandeland; +Cc: netdev, roar.forde
From: Sjur Brændeland <sjur.brandeland@stericsson.com>
Date: Tue, 6 Dec 2011 23:15:44 +0100
> From: Roar Førde <roar.forde@stericsson.com>
>
> BUG_ON is too strict in a number of circumstances,
> use WARN_ON instead. Protocol errors should not halt the system.
>
> Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
> ---
> Since v1: removed and changed some OOM related printouts.
Applied.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-12-06 22:22 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-06 22:15 [PATCHv2 net-next 1/4] caif-hsi: Remove wake line modification when flushing FIFO Sjur Brændeland
2011-12-06 22:15 ` [PATCHv2 net-next 2/4] caif: Bad assert triggering false positive Sjur Brændeland
2011-12-06 22:22 ` David Miller
2011-12-06 22:15 ` [PATCHv2 net-next 3/4] caif-shm: Bugfixes for caif_shmcore.c Sjur Brændeland
2011-12-06 22:22 ` David Miller
2011-12-06 22:15 ` [PATCHv2 net-next 4/4] caif: Replace BUG_ON with WARN_ON Sjur Brændeland
2011-12-06 22:22 ` David Miller
2011-12-06 22:22 ` [PATCHv2 net-next 1/4] caif-hsi: Remove wake line modification when flushing FIFO David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).