diff options
author | Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> | 2012-02-15 12:55:03 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-02-16 17:08:09 -0500 |
commit | 6743fe6df43b4dc5950f605edfeee086d0a80f06 (patch) | |
tree | 38b3406e6d9f9b1b48ef87dee8c07c442e099b54 /drivers/net/ethernet/renesas/sh_eth.h | |
parent | 6ba88021c36516c26c11eff8c6d7d9a045faecd3 (diff) |
net: sh_eth: add support for multicast filtering
Some controllers have TSU. It can filter multicast by hardware.
This patch supports it.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/renesas/sh_eth.h')
-rw-r--r-- | drivers/net/ethernet/renesas/sh_eth.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/ethernet/renesas/sh_eth.h b/drivers/net/ethernet/renesas/sh_eth.h index cb07add8638f..86b392e22c01 100644 --- a/drivers/net/ethernet/renesas/sh_eth.h +++ b/drivers/net/ethernet/renesas/sh_eth.h | |||
@@ -29,6 +29,8 @@ | |||
29 | #define RX_RING_SIZE 64 /* Rx ring size */ | 29 | #define RX_RING_SIZE 64 /* Rx ring size */ |
30 | #define ETHERSMALL 60 | 30 | #define ETHERSMALL 60 |
31 | #define PKT_BUF_SZ 1538 | 31 | #define PKT_BUF_SZ 1538 |
32 | #define SH_ETH_TSU_TIMEOUT_MS 500 | ||
33 | #define SH_ETH_TSU_CAM_ENTRIES 32 | ||
32 | 34 | ||
33 | enum { | 35 | enum { |
34 | /* E-DMAC registers */ | 36 | /* E-DMAC registers */ |
@@ -778,6 +780,7 @@ struct sh_eth_private { | |||
778 | char post_rx; /* POST receive */ | 780 | char post_rx; /* POST receive */ |
779 | char post_fw; /* POST forward */ | 781 | char post_fw; /* POST forward */ |
780 | struct net_device_stats tsu_stats; /* TSU forward status */ | 782 | struct net_device_stats tsu_stats; /* TSU forward status */ |
783 | int port; /* for TSU */ | ||
781 | 784 | ||
782 | unsigned no_ether_link:1; | 785 | unsigned no_ether_link:1; |
783 | unsigned ether_link_active_low:1; | 786 | unsigned ether_link_active_low:1; |
@@ -811,6 +814,12 @@ static inline unsigned long sh_eth_read(struct net_device *ndev, | |||
811 | return ioread32(mdp->addr + mdp->reg_offset[enum_index]); | 814 | return ioread32(mdp->addr + mdp->reg_offset[enum_index]); |
812 | } | 815 | } |
813 | 816 | ||
817 | static inline void *sh_eth_tsu_get_offset(struct sh_eth_private *mdp, | ||
818 | int enum_index) | ||
819 | { | ||
820 | return mdp->tsu_addr + mdp->reg_offset[enum_index]; | ||
821 | } | ||
822 | |||
814 | static inline void sh_eth_tsu_write(struct sh_eth_private *mdp, | 823 | static inline void sh_eth_tsu_write(struct sh_eth_private *mdp, |
815 | unsigned long data, int enum_index) | 824 | unsigned long data, int enum_index) |
816 | { | 825 | { |