NET: am79c961: fix assembler warnings
[linux-2.6.git] / drivers / net / gianfar.h
index c414374..ba36dc7 100644 (file)
@@ -9,7 +9,7 @@
  * Maintainer: Kumar Gala
  * Modifier: Sandeep Gopalpet <sandeep.kumar@freescale.com>
  *
- * Copyright 2002-2009 Freescale Semiconductor, Inc.
+ * Copyright 2002-2009, 2011 Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute  it and/or modify it
  * under  the terms of  the GNU General  Public License as published by the
@@ -382,23 +382,6 @@ extern const char gfar_driver_version[];
 #define BD_LFLAG(flags) ((flags) << 16)
 #define BD_LENGTH_MASK         0x0000ffff
 
-#define CLASS_CODE_UNRECOG             0x00
-#define CLASS_CODE_DUMMY1              0x01
-#define CLASS_CODE_ETHERTYPE1          0x02
-#define CLASS_CODE_ETHERTYPE2          0x03
-#define CLASS_CODE_USER_PROG1          0x04
-#define CLASS_CODE_USER_PROG2          0x05
-#define CLASS_CODE_USER_PROG3          0x06
-#define CLASS_CODE_USER_PROG4          0x07
-#define CLASS_CODE_TCP_IPV4            0x08
-#define CLASS_CODE_UDP_IPV4            0x09
-#define CLASS_CODE_AH_ESP_IPV4         0x0a
-#define CLASS_CODE_SCTP_IPV4           0x0b
-#define CLASS_CODE_TCP_IPV6            0x0c
-#define CLASS_CODE_UDP_IPV6            0x0d
-#define CLASS_CODE_AH_ESP_IPV6         0x0e
-#define CLASS_CODE_SCTP_IPV6           0x0f
-
 #define FPR_FILER_MASK 0xFFFFFFFF
 #define MAX_FILER_IDX  0xFF
 
@@ -907,12 +890,21 @@ enum {
        MQ_MG_MODE
 };
 
+/*
+ * Per TX queue stats
+ */
+struct tx_q_stats {
+       unsigned long tx_packets;
+       unsigned long tx_bytes;
+};
+
 /**
  *     struct gfar_priv_tx_q - per tx queue structure
  *     @txlock: per queue tx spin lock
  *     @tx_skbuff:skb pointers
  *     @skb_curtx: to be used skb pointer
  *     @skb_dirtytx:the last used skb pointer
+ *     @stats: bytes/packets stats
  *     @qindex: index of this queue
  *     @dev: back pointer to the dev structure
  *     @grp: back pointer to the group to which this queue belongs
@@ -934,6 +926,7 @@ struct gfar_priv_tx_q {
        struct  txbd8 *tx_bd_base;
        struct  txbd8 *cur_tx;
        struct  txbd8 *dirty_tx;
+       struct tx_q_stats stats;
        struct  net_device *dev;
        struct gfar_priv_grp *grp;
        u16     skb_curtx;
@@ -1028,10 +1021,12 @@ struct gfar_priv_grp {
 enum gfar_errata {
        GFAR_ERRATA_74          = 0x01,
        GFAR_ERRATA_76          = 0x02,
+       GFAR_ERRATA_A002        = 0x04,
+       GFAR_ERRATA_12          = 0x08, /* a.k.a errata eTSEC49 */
 };
 
 /* Struct stolen almost completely (and shamelessly) from the FCC enet source
- * (Ok, that's not so true anymore, but there is a family resemblence)
+ * (Ok, that's not so true anymore, but there is a family resemblance)
  * The GFAR buffer descriptors track the ring buffers.  The rx_bd_base
  * and tx_bd_base always point to the currently available buffer.
  * The dirty_tx tracks the current buffer that is being sent by the
@@ -1053,7 +1048,7 @@ struct gfar_private {
 
        struct device_node *node;
        struct net_device *ndev;
-       struct of_device *ofdev;
+       struct platform_device *ofdev;
        enum gfar_errata errata;
 
        struct gfar_priv_grp gfargrp[MAXGROUPS];
@@ -1088,7 +1083,7 @@ struct gfar_private {
        struct device_node *phy_node;
        struct device_node *tbi_node;
        u32 device_flags;
-       unsigned char rx_csum_enable:1,
+       unsigned char
                extended_hash:1,
                bd_stash_en:1,
                rx_filer_enable:1,
@@ -1112,10 +1107,12 @@ struct gfar_private {
        /* HW time stamping enabled flag */
        int hwts_rx_en;
        int hwts_tx_en;
+
+       /*Filer table*/
+       unsigned int ftp_rqfpr[MAX_FILER_IDX + 1];
+       unsigned int ftp_rqfcr[MAX_FILER_IDX + 1];
 };
 
-extern unsigned int ftp_rqfpr[MAX_FILER_IDX + 1];
-extern unsigned int ftp_rqfcr[MAX_FILER_IDX + 1];
 
 static inline int gfar_has_errata(struct gfar_private *priv,
                                  enum gfar_errata err)
@@ -1158,6 +1155,7 @@ extern void gfar_phy_test(struct mii_bus *bus, struct phy_device *phydev,
 extern void gfar_configure_coalescing(struct gfar_private *priv,
                unsigned long tx_mask, unsigned long rx_mask);
 void gfar_init_sysfs(struct net_device *dev);
+int gfar_set_features(struct net_device *dev, u32 features);
 
 extern const struct ethtool_ops gfar_ethtool_ops;