// ----------------------------------------------------------------------
//  Copyright (c) 2008-2010 Marvell Semiconductor
//  All Rights Reserved
// ----------------------------------------------------------------------

/*! \brief Task to toggle hard reset for olny MacSec Block
 *
 */
void force_macsec_rst (MAD_DEV *ctrl);

/*! \brief Initialize Maxwell Macsec API
 *
 * @return Returns MAD_DEV on success, 0 on failure
 */
MAD_DEV * macsec_api_init (int usbport);

MAD_STATUS msec_clear_mac_stats(MAD_DEV *dev, int mn);

/*! \brief Initialize Maxwell core
 *
 * Brings Maxwell core out of reset and into a basic bypass configuration with all
 * traffic passing through the core.  In this state the core is ready to begin
 * encrypt and decrypt operations.
 * Added work around for all the problems seen so far (09/11/08).
 *
 * @param *dev_ctrl MAD_DEV (Device control - Port Number Information)
 * @param  speed    Indcates port operation speed (2 -> 1000 Mbps, 1 -> 100 Mbps, 0 -> 10 Mbps)
 */
MAD_STATUS macsec_start (MAD_DEV *dev, int speed);
MAD_STATUS msec_shinit (MAD_DEV *dev, int speed, MAD_BOOL duplex);

MAD_STATUS msec_fixed (MAD_DEV *dev);

char * gen_random_hex_octs(int cnt);
char * gen_random_sci(void);
long long gen_random_64_octs(void);

MAD_DEV * initialize_macsec_api(MAD_DEV * devp);

extern MAD_DEV *maddev;
