Hi Jeff, Please take a look at these 2 patches for Blackfin EMAC driver Thanks -Bryan --
From: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org> --- drivers/net/Kconfig | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 9a18270..6b1eb43 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -830,7 +830,7 @@ config ULTRA32 config BFIN_MAC tristate "Blackfin on-chip MAC support" - depends on NET_ETHERNET && (BF526 || BF527 || BF536 || BF537) + depends on NET_ETHERNET && (BF516 || BF518 || BF526 || BF527 || BF536 || BF537) select CRC32 select MII select PHYLIB -- 1.5.6 --
From: Bryan Wu <cooloney@kernel.org> Applied. --
From: Graf Yang <graf.yang@analog.com> Fill EMAC_VLAN1 with 0x8100 to admit 1522 long bytes frames. EMAC_VLAN2 seems need not use for now. Signed-off-by: Graf Yang <graf.yang@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org> --- drivers/net/bfin_mac.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c index 78e31aa..15d7e62 100644 --- a/drivers/net/bfin_mac.c +++ b/drivers/net/bfin_mac.c @@ -517,6 +517,14 @@ void setup_system_regs(struct net_device *dev) bfin_write_EMAC_MMC_CTL(RSTC | CROLL); +#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) +#define VLAN_ETHER_TYPE 0x8100 + /* The legal length of the frame is increased to 1522 bytes */ + bfin_write_EMAC_VLAN1(VLAN_ETHER_TYPE); + /* The legal length of the frame is increased to 1538 bytes */ + /*bfin_write_EMAC_VLAN2(VLAN_ETHER_TYPE);*/ +#endif + /* Initialize the TX DMA channel registers */ bfin_write_DMA2_X_COUNT(0); bfin_write_DMA2_X_MODIFY(4); -- 1.5.6 --
From: Bryan Wu <cooloney@kernel.org> Please use ETH_P_8021Q from linux/if_ether.h instead of inventing Please do not add code that is just going to be commented out and not used. Also, I disagree with the: +#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) conditional. Probably this part of the chip should be programmed unconditionally. We can get VLAN packets received and sent, using AF_PACKET sockets, for example. The chip should still respect those even if VLAN proper is not being utilized. --
again, more of a copy & paste ... this is how a bunch of drivers are any tips on doing that ? thanks for reviewing! -mike --
or rather, is there a driver or you two you can point out that is doing this correctly ? the ones i looked at seemed to be doing it like the patch we posted ... -mike --
From: "Mike Frysinger" <vapier.adi@gmail.com> And I disagree with how those drivers are doing it :-) At least the programming of the chip to accept all packet types properly, VLAN or not, regardless of kernel config, is definitely IMHO the way to go. --
i know on our side we all agree with you, we just didnt (dont) know any better ;) -mike --
From: "Mike Frysinger" <vapier.adi@gmail.com> No, sorry. --
