Re: [PATCH net 4/6] net: hns: adds uc match for debug port

2016-03-10 Thread Daode Huang



On 2016/3/4 21:39, Sergei Shtylyov wrote:

On 3/4/2016 4:09 AM, Daode Huang wrote:


This patch adds uc match for debug port by:
1)Enables uc match of debug port when initializing gmac
2)Enables uc match of mac address register2

Signed-off-by: Daode Huang 
Signed-off-by: lipeng 


Lipeng is his full name. i will change it to another style (Peng Li 
)



   True/full name is required here.


---
  drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c | 18 
+-

  drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h  |  2 ++
  2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c 
b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c

index b8517b0..2591a51 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c

[...]
@@ -407,8 +419,12 @@ static void hns_gmac_set_mac_addr(void *mac_drv, 
char *mac_addr)


  u32 low_val = mac_addr[5] | (mac_addr[4] << 8)
  | (mac_addr[3] << 16) | (mac_addr[2] << 24);
+
+u32 val = dsaf_read_dev(drv, GMAC_STATION_ADDR_HIGH_2_REG);
+u32 sta_addr_en = dsaf_get_bit(val, GMAC_ADDR_EN_B);


   Empty line needed after declarations.



agree,
thanks
Daode.


  dsaf_write_dev(drv, GMAC_STATION_ADDR_LOW_2_REG, low_val);
-dsaf_write_dev(drv, GMAC_STATION_ADDR_HIGH_2_REG, high_val);
+dsaf_write_dev(drv, GMAC_STATION_ADDR_HIGH_2_REG,
+   high_val | (sta_addr_en << GMAC_ADDR_EN_B));
  }
  }


[...]

MBR, Sergei


.






Re: [PATCH net 4/6] net: hns: adds uc match for debug port

2016-03-04 Thread Sergei Shtylyov

On 3/4/2016 4:09 AM, Daode Huang wrote:


This patch adds uc match for debug port by:
1)Enables uc match of debug port when initializing gmac
2)Enables uc match of mac address register2

Signed-off-by: Daode Huang 
Signed-off-by: lipeng 


   True/full name is required here.


---
  drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c | 18 +-
  drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h  |  2 ++
  2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c 
b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
index b8517b0..2591a51 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c

[...]

@@ -407,8 +419,12 @@ static void hns_gmac_set_mac_addr(void *mac_drv, char 
*mac_addr)

u32 low_val = mac_addr[5] | (mac_addr[4] << 8)
| (mac_addr[3] << 16) | (mac_addr[2] << 24);
+
+   u32 val = dsaf_read_dev(drv, GMAC_STATION_ADDR_HIGH_2_REG);
+   u32 sta_addr_en = dsaf_get_bit(val, GMAC_ADDR_EN_B);


   Empty line needed after declarations.


dsaf_write_dev(drv, GMAC_STATION_ADDR_LOW_2_REG, low_val);
-   dsaf_write_dev(drv, GMAC_STATION_ADDR_HIGH_2_REG, high_val);
+   dsaf_write_dev(drv, GMAC_STATION_ADDR_HIGH_2_REG,
+  high_val | (sta_addr_en << GMAC_ADDR_EN_B));
}
  }


[...]

MBR, Sergei



[PATCH net 4/6] net: hns: adds uc match for debug port

2016-03-03 Thread Daode Huang
This patch adds uc match for debug port by:
1)Enables uc match of debug port when initializing gmac
2)Enables uc match of mac address register2

Signed-off-by: Daode Huang 
Signed-off-by: lipeng 
---
 drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c | 18 +-
 drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h  |  2 ++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c 
b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
index b8517b0..2591a51 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
@@ -290,6 +290,16 @@ static int hns_gmac_adjust_link(void *mac_drv, enum 
mac_speed speed,
return 0;
 }
 
+static void hns_gmac_set_uc_match(void *mac_drv, u16 en)
+{
+   struct mac_driver *drv = (struct mac_driver *)mac_drv;
+
+   dsaf_set_dev_bit(drv, GMAC_REC_FILT_CONTROL_REG,
+GMAC_UC_MATCH_EN_B, !en);
+   dsaf_set_dev_bit(drv, GMAC_STATION_ADDR_HIGH_2_REG,
+GMAC_ADDR_EN_B, !en);
+}
+
 static void hns_gmac_init(void *mac_drv)
 {
u32 port;
@@ -305,6 +315,8 @@ static void hns_gmac_init(void *mac_drv)
mdelay(10);
hns_gmac_disable(mac_drv, MAC_COMM_MODE_RX_AND_TX);
hns_gmac_tx_loop_pkt_dis(mac_drv);
+   if (drv->mac_cb->mac_type == HNAE_PORT_DEBUG)
+   hns_gmac_set_uc_match(mac_drv, 0);
 }
 
 void hns_gmac_update_stats(void *mac_drv)
@@ -407,8 +419,12 @@ static void hns_gmac_set_mac_addr(void *mac_drv, char 
*mac_addr)
 
u32 low_val = mac_addr[5] | (mac_addr[4] << 8)
| (mac_addr[3] << 16) | (mac_addr[2] << 24);
+
+   u32 val = dsaf_read_dev(drv, GMAC_STATION_ADDR_HIGH_2_REG);
+   u32 sta_addr_en = dsaf_get_bit(val, GMAC_ADDR_EN_B);
dsaf_write_dev(drv, GMAC_STATION_ADDR_LOW_2_REG, low_val);
-   dsaf_write_dev(drv, GMAC_STATION_ADDR_HIGH_2_REG, high_val);
+   dsaf_write_dev(drv, GMAC_STATION_ADDR_HIGH_2_REG,
+  high_val | (sta_addr_en << GMAC_ADDR_EN_B));
}
 }
 
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h 
b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
index f0c4f9b..d8c49b6 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
@@ -917,6 +917,8 @@
 #define GMAC_LP_REG_CF2MI_LP_EN_B  2
 
 #define GMAC_MODE_CHANGE_EB_B  0
+#define GMAC_UC_MATCH_EN_B 0
+#define GMAC_ADDR_EN_B 16
 
 #define GMAC_RECV_CTRL_STRIP_PAD_EN_B  3
 #define GMAC_RECV_CTRL_RUNT_PKT_EN_B   4
-- 
1.9.1



[PATCH net 4/6] net: hns: adds uc match for debug port

2016-03-03 Thread Daode Huang
This patch adds uc match for debug port by:
1)Enables uc match of debug port when initializing gmac
2)Enables uc match of mac address register2

Signed-off-by: Daode Huang 
Signed-off-by: lipeng 
---
 drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c | 18 +-
 drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h  |  2 ++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c 
b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
index b8517b0..2591a51 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
@@ -290,6 +290,16 @@ static int hns_gmac_adjust_link(void *mac_drv, enum 
mac_speed speed,
return 0;
 }
 
+static void hns_gmac_set_uc_match(void *mac_drv, u16 en)
+{
+   struct mac_driver *drv = (struct mac_driver *)mac_drv;
+
+   dsaf_set_dev_bit(drv, GMAC_REC_FILT_CONTROL_REG,
+GMAC_UC_MATCH_EN_B, !en);
+   dsaf_set_dev_bit(drv, GMAC_STATION_ADDR_HIGH_2_REG,
+GMAC_ADDR_EN_B, !en);
+}
+
 static void hns_gmac_init(void *mac_drv)
 {
u32 port;
@@ -305,6 +315,8 @@ static void hns_gmac_init(void *mac_drv)
mdelay(10);
hns_gmac_disable(mac_drv, MAC_COMM_MODE_RX_AND_TX);
hns_gmac_tx_loop_pkt_dis(mac_drv);
+   if (drv->mac_cb->mac_type == HNAE_PORT_DEBUG)
+   hns_gmac_set_uc_match(mac_drv, 0);
 }
 
 void hns_gmac_update_stats(void *mac_drv)
@@ -407,8 +419,12 @@ static void hns_gmac_set_mac_addr(void *mac_drv, char 
*mac_addr)
 
u32 low_val = mac_addr[5] | (mac_addr[4] << 8)
| (mac_addr[3] << 16) | (mac_addr[2] << 24);
+
+   u32 val = dsaf_read_dev(drv, GMAC_STATION_ADDR_HIGH_2_REG);
+   u32 sta_addr_en = dsaf_get_bit(val, GMAC_ADDR_EN_B);
dsaf_write_dev(drv, GMAC_STATION_ADDR_LOW_2_REG, low_val);
-   dsaf_write_dev(drv, GMAC_STATION_ADDR_HIGH_2_REG, high_val);
+   dsaf_write_dev(drv, GMAC_STATION_ADDR_HIGH_2_REG,
+  high_val | (sta_addr_en << GMAC_ADDR_EN_B));
}
 }
 
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h 
b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
index f0c4f9b..d8c49b6 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
@@ -917,6 +917,8 @@
 #define GMAC_LP_REG_CF2MI_LP_EN_B  2
 
 #define GMAC_MODE_CHANGE_EB_B  0
+#define GMAC_UC_MATCH_EN_B 0
+#define GMAC_ADDR_EN_B 16
 
 #define GMAC_RECV_CTRL_STRIP_PAD_EN_B  3
 #define GMAC_RECV_CTRL_RUNT_PKT_EN_B   4
-- 
1.9.1