]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/net/bonding/bond_alb.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / net / bonding / bond_alb.c
index 26bb118c45334074ef4c8a51deda39e4161fba44..5c6fba802f2b759561ee6c9c0c44bd3ea761b2c6 100644 (file)
 #include "bond_alb.h"
 
 
-#define ALB_TIMER_TICKS_PER_SEC            10  /* should be a divisor of HZ */
-#define BOND_TLB_REBALANCE_INTERVAL 10 /* In seconds, periodic re-balancing.
-                                        * Used for division - never set
-                                        * to zero !!!
-                                        */
-#define BOND_ALB_LP_INTERVAL       1   /* In seconds, periodic send of
-                                        * learning packets to the switch
-                                        */
-
-#define BOND_TLB_REBALANCE_TICKS (BOND_TLB_REBALANCE_INTERVAL \
-                                 * ALB_TIMER_TICKS_PER_SEC)
-
-#define BOND_ALB_LP_TICKS (BOND_ALB_LP_INTERVAL \
-                          * ALB_TIMER_TICKS_PER_SEC)
-
-#define TLB_HASH_TABLE_SIZE 256        /* The size of the clients hash table.
-                                * Note that this value MUST NOT be smaller
-                                * because the key hash table is BYTE wide !
-                                */
-
-
-#define TLB_NULL_INDEX         0xffffffff
-#define MAX_LP_BURST           3
-
-/* rlb defs */
-#define RLB_HASH_TABLE_SIZE    256
-#define RLB_NULL_INDEX         0xffffffff
-#define RLB_UPDATE_DELAY       2*ALB_TIMER_TICKS_PER_SEC /* 2 seconds */
-#define RLB_ARP_BURST_SIZE     2
-#define RLB_UPDATE_RETRY       3       /* 3-ticks - must be smaller than the rlb
-                                        * rebalance interval (5 min).
-                                        */
-/* RLB_PROMISC_TIMEOUT = 10 sec equals the time that the current slave is
- * promiscuous after failover
- */
-#define RLB_PROMISC_TIMEOUT    10*ALB_TIMER_TICKS_PER_SEC
 
 #ifndef __long_aligned
 #define __long_aligned __attribute__((aligned((sizeof(long)))))
@@ -362,6 +326,10 @@ static int rlb_arp_recv(struct sk_buff *skb, struct net_device *bond_dev, struct
                goto out;
        }
 
+       skb = skb_share_check(skb, GFP_ATOMIC);
+       if (!skb)
+               goto out;
+
        if (!pskb_may_pull(skb, arp_hdr_len(bond_dev)))
                goto out;