Ethtool documentation states that when one of the parameters, rx_coalesce_usecs
or rx_max_coalesced_frames is set to zero while the other has a none zero
value, the none zero parameter should still be operative. For example, if
rx_max_coalesced_frames is set to zero while rx_coalesce_usecs is > 0, the rate
of events is limited to not exceed (1 / rx_coalesce_usecs). In the opposite
case, an event is generated only after rx_max_coalesced_frames have arrived.
The documentation also states that setting both to zero is invalid.

Signed-off-by: Eli Cohen <e...@mellanox.co.il>
---
 drivers/infiniband/ulp/ipoib/ipoib_ethtool.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c 
b/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c
index 1a1657c..c7efba3 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c
@@ -93,6 +93,13 @@ static int ipoib_set_coalesce(struct net_device *dev,
            coal->rx_max_coalesced_frames > 0xffff)
                return -EINVAL;
 
+       if (coal->rx_max_coalesced_frames | coal->rx_coalesce_usecs) {
+               if (!coal->rx_max_coalesced_frames)
+                       coal->rx_max_coalesced_frames = 0xffff;
+               else if (!coal->rx_coalesce_usecs)
+                       coal->rx_coalesce_usecs = 0xffff;
+       }
+
        ret = ib_modify_cq(priv->recv_cq, coal->rx_max_coalesced_frames,
                           coal->rx_coalesce_usecs);
        if (ret && ret != -ENOSYS) {
-- 
1.7.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to