Message ID | 1457053798-93513-5-git-send-email-huangdaode@hisilicon.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 <huangdaode@hisilicon.com> > Signed-off-by: lipeng <lipeng321@huawei.com> 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
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 <huangdaode@hisilicon.com> >> Signed-off-by: lipeng <lipeng321@huawei.com> > Lipeng is his full name. i will change it to another style (Peng Li <lipeng321@huawei.com>) > 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 > > > . >
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