aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/renesas/sh_eth.h
diff options
context:
space:
mode:
authorYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>2012-02-15 12:55:03 -0500
committerDavid S. Miller <davem@davemloft.net>2012-02-16 17:08:09 -0500
commit6743fe6df43b4dc5950f605edfeee086d0a80f06 (patch)
tree38b3406e6d9f9b1b48ef87dee8c07c442e099b54 /drivers/net/ethernet/renesas/sh_eth.h
parent6ba88021c36516c26c11eff8c6d7d9a045faecd3 (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.h9
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
33enum { 35enum {
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
817static 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
814static inline void sh_eth_tsu_write(struct sh_eth_private *mdp, 823static 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{