#define EE_WAS_ERROR           (1<<__EE_WAS_ERROR)
 #define EE_HAS_DIGEST          (1<<__EE_HAS_DIGEST)
 
-/* global flag bits */
+/* flag bits per mdev */
 enum {
        CREATE_BARRIER,         /* next P_DATA is preceded by a P_BARRIER */
        SIGNAL_ASENDER,         /* whether asender wants to be interrupted */
        GO_DISKLESS,            /* Disk is being detached, on io-error or admin request. */
        WAS_IO_ERROR,           /* Local disk failed returned IO error */
        RESYNC_AFTER_NEG,       /* Resync after online grow after the attach&negotiate finished. */
-       NET_CONGESTED,          /* The data socket is congested */
-
        CONFIG_PENDING,         /* serialization of (re)configuration requests.
                                 * if set, also prevents the device from dying */
        DEVICE_DYING,           /* device became unconfigured,
        unsigned int size;
 };
 
+/* flag bits per tconn */
+enum {
+       NET_CONGESTED,          /* The data socket is congested */
+};
+
 struct drbd_tconn {                    /* is a resource from the config file */
        char *name;                     /* Resource name */
        struct list_head all_tconn;     /* List of all drbd_tconn, prot by global_state_lock */
        struct drbd_conf *volume0;      /* TODO: Remove me again */
+       unsigned long flags;
 
        struct net_conf *net_conf;      /* protected by get_net_conf() and put_net_conf() */
        atomic_t net_cnt;               /* Users of net_conf */
 
 {
        struct sock *sk = mdev->tconn->data.socket->sk;
        if (sk->sk_wmem_queued > sk->sk_sndbuf * 4 / 5)
-               set_bit(NET_CONGESTED, &mdev->flags);
+               set_bit(NET_CONGESTED, &mdev->tconn->flags);
 }
 
 /* The idea of sendpage seems to be to put some kind of reference
                offset += sent;
        } while (len > 0 /* THINK && mdev->cstate >= C_CONNECTED*/);
        set_fs(oldfs);
-       clear_bit(NET_CONGESTED, &mdev->flags);
+       clear_bit(NET_CONGESTED, &mdev->tconn->flags);
 
        ok = (len == 0);
        if (likely(ok))
        } while (sent < size);
 
        if (sock == mdev->tconn->data.socket)
-               clear_bit(NET_CONGESTED, &mdev->flags);
+               clear_bit(NET_CONGESTED, &mdev->tconn->flags);
 
        if (rv <= 0) {
                if (rv != -EAGAIN) {
                        reason = 'b';
        }
 
-       if (bdi_bits & (1 << BDI_async_congested) && test_bit(NET_CONGESTED, &mdev->flags)) {
+       if (bdi_bits & (1 << BDI_async_congested) && test_bit(NET_CONGESTED, &mdev->tconn->flags)) {
                r |= (1 << BDI_async_congested);
                reason = reason == 'b' ? 'a' : 'n';
        }