diff options
author | Till Straumann <strauman@slac.stanford.edu> | 2009-06-06 00:49:41 +0000 |
---|---|---|
committer | Till Straumann <strauman@slac.stanford.edu> | 2009-06-06 00:49:41 +0000 |
commit | 5cb7096bde2bf7c1de5f58af0d9265da61d8ad22 (patch) | |
tree | 019bb4eee5204ccf11bde284b38f9d1f91237251 /c/src/lib/libbsp/powerpc/mvme3100/network/if_tsec_pub.h | |
parent | 2009-06-05 Santosh G Vattam <vattam.santosh@gmail.com> (diff) | |
download | rtems-5cb7096bde2bf7c1de5f58af0d9265da61d8ad22.tar.bz2 |
2009-06-05 Till Straumann <strauman@slac.stanford.edu>
* network/tsec.c, network/if_tsec_pub.h:
implemented multicast support.
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/powerpc/mvme3100/network/if_tsec_pub.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/mvme3100/network/if_tsec_pub.h b/c/src/lib/libbsp/powerpc/mvme3100/network/if_tsec_pub.h index da3f2bc1a7..0a7760d0c1 100644 --- a/c/src/lib/libbsp/powerpc/mvme3100/network/if_tsec_pub.h +++ b/c/src/lib/libbsp/powerpc/mvme3100/network/if_tsec_pub.h @@ -173,11 +173,45 @@ BSP_tsec_reset_stats(struct tsec_private *mp); * 'promisc' whether to set promiscuous flag. * 'enaddr' pointer to six bytes with MAC address. Read * from the device if NULL. + * NOTE: multicast filter is cleared by this routine. */ void BSP_tsec_init_hw(struct tsec_private *mp, int promisc, unsigned char *enaddr); /* + * Clear multicast hash filter. No multicast frames are accepted + * after executing this routine (unless the hardware was initialized + * in 'promiscuous' mode). + */ +void +BSP_tsec_mcast_filter_clear(struct tsec_private *mp); + +/* + * Program multicast filter to accept all multicast frames. + */ +void +BSP_tsec_mcast_filter_accept_all(struct tsec_private *mp); + +/* + * Add a MAC address to the multicast filter. + * Existing entries are not changed but note that + * the filter is imperfect, i.e., multiple MAC addresses + * may alias to a single filter entry. Hence software + * filtering must still be performed. + * + * NOTE: Deletion of an address is not possible. This is + * usually accomplished by a higher-level driver + * maintaining a list/database of multicast addresses + * and going through a sequence: + * + * BSP_tsec_mcast_filter_clear() + * forall mcast addresses do + * BSP_tsec_mcast_filter_accept_add() + */ +void +BSP_tsec_mcast_filter_accept_add(struct tsec_private *mp, unsigned char *enaddr); + +/* * Dump statistics to FILE 'f'. If NULL, stdout is used. */ void |