]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/net/bna/bnad.h
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / net / bna / bnad.h
index ebc3a9078642d6b3fd5447c17f824fcdc29715f3..8b1d51557defb8cd57257ef2b24cf26b4f157c46 100644 (file)
@@ -51,6 +51,7 @@
  */
 struct bnad_rx_ctrl {
        struct bna_ccb *ccb;
+       unsigned long  flags;
        struct napi_struct      napi;
 };
 
@@ -64,7 +65,7 @@ struct bnad_rx_ctrl {
 #define BNAD_NAME                      "bna"
 #define BNAD_NAME_LEN                  64
 
-#define BNAD_VERSION                   "2.3.2.0"
+#define BNAD_VERSION                   "2.3.2.3"
 
 #define BNAD_MAILBOX_MSIX_VECTORS      1
 
@@ -82,6 +83,7 @@ struct bnad_rx_ctrl {
 
 /* Bit positions for tcb->flags */
 #define BNAD_TXQ_FREE_SENT             0
+#define BNAD_TXQ_TX_STARTED            1
 
 /* Bit positions for rcb->flags */
 #define BNAD_RXQ_REFILL                        0
@@ -124,6 +126,7 @@ struct bnad_completion {
 struct bnad_drv_stats {
        u64             netif_queue_stop;
        u64             netif_queue_wakeup;
+       u64             netif_queue_stopped;
        u64             tso4;
        u64             tso6;
        u64             tso_err;
@@ -199,12 +202,12 @@ struct bnad_unmap_q {
 /* Set, tested & cleared using xxx_bit() functions */
 /* Values indicated bit positions */
 #define        BNAD_RF_CEE_RUNNING             1
-#define BNAD_RF_HW_ERROR               2
-#define BNAD_RF_MBOX_IRQ_DISABLED      3
-#define BNAD_RF_TX_STARTED             4
-#define BNAD_RF_RX_STARTED             5
-#define BNAD_RF_DIM_TIMER_RUNNING      6
-#define BNAD_RF_STATS_TIMER_RUNNING    7
+#define BNAD_RF_MBOX_IRQ_DISABLED      2
+#define BNAD_RF_RX_STARTED             3
+#define BNAD_RF_DIM_TIMER_RUNNING      4
+#define BNAD_RF_STATS_TIMER_RUNNING    5
+#define BNAD_RF_TX_SHUTDOWN_DELAYED    6
+#define BNAD_RF_RX_SHUTDOWN_DELAYED    7
 
 struct bnad {
        struct net_device       *netdev;
@@ -306,8 +309,10 @@ extern void bnad_cleanup_rx(struct bnad *bnad, uint rx_id);
 extern void bnad_dim_timer_start(struct bnad *bnad);
 
 /* Statistics */
-extern void bnad_netdev_qstats_fill(struct bnad *bnad, struct rtnl_link_stats64 *stats);
-extern void bnad_netdev_hwstats_fill(struct bnad *bnad, struct rtnl_link_stats64 *stats);
+extern void bnad_netdev_qstats_fill(struct bnad *bnad,
+               struct rtnl_link_stats64 *stats);
+extern void bnad_netdev_hwstats_fill(struct bnad *bnad,
+               struct rtnl_link_stats64 *stats);
 
 /**
  * MACROS
@@ -320,9 +325,11 @@ extern void bnad_netdev_hwstats_fill(struct bnad *bnad, struct rtnl_link_stats64
 
 #define bnad_enable_rx_irq_unsafe(_ccb)                        \
 {                                                      \
-       bna_ib_coalescing_timer_set((_ccb)->i_dbell,    \
-               (_ccb)->rx_coalescing_timeo);           \
-       bna_ib_ack((_ccb)->i_dbell, 0);                 \
+       if (likely(test_bit(BNAD_RXQ_STARTED, &ccb->rcb[0]->flags))) {\
+               bna_ib_coalescing_timer_set((_ccb)->i_dbell,    \
+                       (_ccb)->rx_coalescing_timeo);           \
+               bna_ib_ack((_ccb)->i_dbell, 0);                 \
+       }                                                       \
 }
 
 #define bnad_dim_timer_running(_bnad)                          \