#define EMAC_MAX_FRAME_LEN     0x0600
 
+#define EMAC_DEFAULT_MSG_ENABLE 0x0000
+static int debug = -1;     /* defaults above */;
+module_param(debug, int, 0);
+MODULE_PARM_DESC(debug, "debug message flags");
+
 /* Transmit timeout, default 5 seconds. */
 static int watchdog = 5000;
 module_param(watchdog, int, 0400);
        strlcpy(info->bus_info, dev_name(&dev->dev), sizeof(info->bus_info));
 }
 
+static u32 emac_get_msglevel(struct net_device *dev)
+{
+       struct emac_board_info *db = netdev_priv(dev);
+
+       return db->msg_enable;
+}
+
+static void emac_set_msglevel(struct net_device *dev, u32 value)
+{
+       struct emac_board_info *db = netdev_priv(dev);
+
+       db->msg_enable = value;
+}
+
 static const struct ethtool_ops emac_ethtool_ops = {
        .get_drvinfo    = emac_get_drvinfo,
        .get_link       = ethtool_op_get_link,
        .get_link_ksettings = phy_ethtool_get_link_ksettings,
        .set_link_ksettings = phy_ethtool_set_link_ksettings,
+       .get_msglevel   = emac_get_msglevel,
+       .set_msglevel   = emac_set_msglevel,
 };
 
 static unsigned int emac_setup(struct net_device *ndev)
        db->dev = &pdev->dev;
        db->ndev = ndev;
        db->pdev = pdev;
+       db->msg_enable = netif_msg_init(debug, EMAC_DEFAULT_MSG_ENABLE);
 
        spin_lock_init(&db->lock);