summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c
diff options
context:
space:
mode:
authorLisheng2016-03-31 15:00:09 +0200
committerDavid S. Miller2016-04-03 02:17:14 +0200
commit5ada37b53ea2b310df143b2c7d6c48fbf14d5cb8 (patch)
tree9cca070b2da71b1a548a3bc612e9e52f42b5eaa1 /drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c
parentnetlink: use nla_get_in_addr and nla_put_in_addr for ipv4 address (diff)
downloadkernel-qcow2-linux-5ada37b53ea2b310df143b2c7d6c48fbf14d5cb8.tar.gz
kernel-qcow2-linux-5ada37b53ea2b310df143b2c7d6c48fbf14d5cb8.tar.xz
kernel-qcow2-linux-5ada37b53ea2b310df143b2c7d6c48fbf14d5cb8.zip
net: hns: add support of pause frame ctrl for HNS V2
The patch adds support of pause ctrl for HNS V2, and this feature is lost by HNS V1: 1) service ports can disable rx pause frame, 2) debug ports can open tx/rx pause frame. And this patch updates the REGs about the pause ctrl when updated status function called by upper layer routine. Signed-off-by: Lisheng <lisheng011@huawei.com> Signed-off-by: Yisen Zhuang <Yisen.Zhuang@huawei.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c')
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c
index 5b7ae5ff43e8..ab27b3b14ca3 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c
@@ -332,10 +332,12 @@ static void hns_ppe_init_hw(struct hns_ppe_cb *ppe_cb)
/* clr and msk except irq*/
hns_ppe_exc_irq_en(ppe_cb, 0);
- if (ppe_common_cb->ppe_mode == PPE_COMMON_MODE_DEBUG)
+ if (ppe_common_cb->ppe_mode == PPE_COMMON_MODE_DEBUG) {
hns_ppe_set_port_mode(ppe_cb, PPE_MODE_GE);
- else
+ dsaf_write_dev(ppe_cb, PPE_CFG_PAUSE_IDLE_CNT_REG, 0);
+ } else {
hns_ppe_set_port_mode(ppe_cb, PPE_MODE_XGE);
+ }
hns_ppe_checksum_hw(ppe_cb, 0xffffffff);
hns_ppe_cnt_clr_ce(ppe_cb);