summaryrefslogtreecommitdiffstats
path: root/drivers/staging/unisys/visornic
diff options
context:
space:
mode:
authorTim Sell <Timothy.Sell@unisys.com>2015-07-24 12:00:23 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-07-24 13:43:37 -0700
commit81d275c6c37f075643fec3789ea3f3e4097cda41 (patch)
tree16d6e09538199e7fdcc50a259c0bff0cb06cf7c9 /drivers/staging/unisys/visornic
parent4d79002e962466d455ae4933cd404cf5a1164894 (diff)
downloadop-kernel-dev-81d275c6c37f075643fec3789ea3f3e4097cda41.zip
op-kernel-dev-81d275c6c37f075643fec3789ea3f3e4097cda41.tar.gz
staging: unisys: visornic - check visorchannel_signalinsert/remove failures
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.Sell@unisys.com> Signed-off-by: Benjamin Romer <benjamin.romer@unisys.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/unisys/visornic')
-rw-r--r--drivers/staging/unisys/visornic/visornic_main.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/drivers/staging/unisys/visornic/visornic_main.c b/drivers/staging/unisys/visornic/visornic_main.c
index ec38b51e..a4aa8af 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;
@@ -479,11 +480,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++;
+ }
}
}
@@ -505,10 +509,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++;
}
/**
@@ -1502,6 +1506,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,
OpenPOWER on IntegriCloud