From: Tim Sell <timothy.s...@unisys.com>

Logic to check for failures of visorchannel_signalinsert() and
visorchannel_signalremove() were added, and a new sent_post_failed counter
tracks the number of times we failed to post a rcv buffer to the IO
partition.

Signed-off-by: Tim Sell <timothy.s...@unisys.com>
Signed-off-by: Benjamin Romer <benjamin.ro...@unisys.com>
---
 drivers/staging/unisys/visornic/visornic_main.c | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/unisys/visornic/visornic_main.c 
b/drivers/staging/unisys/visornic/visornic_main.c
index 7541c49..baa137e 100644
--- a/drivers/staging/unisys/visornic/visornic_main.c
+++ b/drivers/staging/unisys/visornic/visornic_main.c
@@ -102,6 +102,7 @@ struct chanstat {
        unsigned long sent_enbdis;
        unsigned long sent_promisc;
        unsigned long sent_post;
+       unsigned long sent_post_failed;
        unsigned long sent_xmit;
        unsigned long reject_count;
        unsigned long extra_rcvbufs_sent;
@@ -478,11 +479,14 @@ post_skb(struct uiscmdrsp *cmdrsp,
        if ((cmdrsp->net.rcvpost.frag.pi_off + skb->len) <= PI_PAGE_SIZE) {
                cmdrsp->net.type = NET_RCV_POST;
                cmdrsp->cmdtype = CMD_NET_TYPE;
-               visorchannel_signalinsert(devdata->dev->visorchannel,
+               if (visorchannel_signalinsert(devdata->dev->visorchannel,
                                          IOCHAN_TO_IOPART,
-                                         cmdrsp);
-               atomic_inc(&devdata->num_rcvbuf_in_iovm);
-               devdata->chstat.sent_post++;
+                                         cmdrsp)) {
+                       atomic_inc(&devdata->num_rcvbuf_in_iovm);
+                       devdata->chstat.sent_post++;
+               } else {
+                       devdata->chstat.sent_post_failed++;
+               }
        }
 }
 
@@ -504,10 +508,10 @@ send_enbdis(struct net_device *netdev, int state,
        devdata->cmdrsp_rcv->net.enbdis.context = netdev;
        devdata->cmdrsp_rcv->net.type = NET_RCV_ENBDIS;
        devdata->cmdrsp_rcv->cmdtype = CMD_NET_TYPE;
-       visorchannel_signalinsert(devdata->dev->visorchannel,
+       if (visorchannel_signalinsert(devdata->dev->visorchannel,
                                  IOCHAN_TO_IOPART,
-                                 devdata->cmdrsp_rcv);
-       devdata->chstat.sent_enbdis++;
+                                 devdata->cmdrsp_rcv))
+               devdata->chstat.sent_enbdis++;
 }
 
 /**
@@ -1490,6 +1494,9 @@ static ssize_t info_debugfs_read(struct file *file, char 
__user *buf,
                                     " chstat.sent_post = %lu\n",
                                     devdata->chstat.sent_post);
                str_pos += scnprintf(vbuf + str_pos, len - str_pos,
+                                    " chstat.sent_post_failed = %lu\n",
+                                    devdata->chstat.sent_post_failed);
+               str_pos += scnprintf(vbuf + str_pos, len - str_pos,
                                     " chstat.sent_xmit = %lu\n",
                                     devdata->chstat.sent_xmit);
                str_pos += scnprintf(vbuf + str_pos, len - str_pos,
-- 
2.1.4

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to