net: hns: set-coalesce-usecs returns errno by dsaf.ko
authorLisheng <lisheng011@huawei.com>
Mon, 28 Mar 2016 10:40:57 +0000 (18:40 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Mar 2016 15:39:16 +0000 (11:39 -0400)
It may fail to set coalesce usecs to HW, and Ethtool needs to know if it
is successful to cfg the parameter or not. So it needs return the errno by
dsaf.ko.

Signed-off-by: Lisheng <lisheng011@huawei.com>
Signed-off-by: Yisen Zhuang <Yisen.Zhuang@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns/hnae.h
drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c

index 37d0cce392be84b9525c547bf583f5802d6c46ae..e8d36aaea223277c59de2368778ba4e41dfc9883 100644 (file)
@@ -469,7 +469,7 @@ struct hnae_ae_ops {
                                   u32 *tx_usecs, u32 *rx_usecs);
        void (*get_rx_max_coalesced_frames)(struct hnae_handle *handle,
                                            u32 *tx_frames, u32 *rx_frames);
-       void (*set_coalesce_usecs)(struct hnae_handle *handle, u32 timeout);
+       int (*set_coalesce_usecs)(struct hnae_handle *handle, u32 timeout);
        int (*set_coalesce_frames)(struct hnae_handle *handle,
                                   u32 coalesce_frames);
        void (*set_promisc_mode)(struct hnae_handle *handle, u32 en);
index 1dd1d6974d478f1d9852e790c72bbdfd08ccc3da..a1cb461ac45f832763b4f1cf61b6764c62574c96 100644 (file)
@@ -469,13 +469,13 @@ static void hns_ae_get_rx_max_coalesced_frames(struct hnae_handle *handle,
                                                  ring_pair->port_id_in_comm);
 }
 
-static void hns_ae_set_coalesce_usecs(struct hnae_handle *handle,
-                                     u32 timeout)
+static int hns_ae_set_coalesce_usecs(struct hnae_handle *handle,
+                                    u32 timeout)
 {
        struct ring_pair_cb *ring_pair =
                container_of(handle->qs[0], struct ring_pair_cb, q);
 
-       (void)hns_rcb_set_coalesce_usecs(
+       return hns_rcb_set_coalesce_usecs(
                ring_pair->rcb_common, ring_pair->port_id_in_comm, timeout);
 }
 
index 0e7da3f0a564186e2930a90e154c2ca503bff361..3d746c887873836ac0c0c0590b2940f3b65382b3 100644 (file)
@@ -794,8 +794,10 @@ static int hns_set_coalesce(struct net_device *net_dev,
            (!ops->set_coalesce_frames))
                return -ESRCH;
 
-       ops->set_coalesce_usecs(priv->ae_handle,
-                                       ec->rx_coalesce_usecs);
+       ret = ops->set_coalesce_usecs(priv->ae_handle,
+                                     ec->rx_coalesce_usecs);
+       if (ret)
+               return ret;
 
        ret = ops->set_coalesce_frames(
                priv->ae_handle,