llc: use a device based hash table to speed up multicast delivery

This patch adds a per SAP device based hash table to solve the
multicast delivery scalability issue when we have large number of
interfaces and a large number of sockets bound to the same SAP.

Signed-off-by: Octavian Purdila <opurdila@ixiacom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Octavian Purdila
2009-12-26 11:51:04 +00:00
committed by David S. Miller
parent 0f7b67dd9e
commit 6d2e3ea284
4 changed files with 27 additions and 3 deletions

View File

@@ -32,6 +32,9 @@ struct llc_addr {
#define LLC_SAP_STATE_INACTIVE 1
#define LLC_SAP_STATE_ACTIVE 2
#define LLC_SK_DEV_HASH_BITS 6
#define LLC_SK_DEV_HASH_ENTRIES (1<<LLC_SK_DEV_HASH_BITS)
/**
* struct llc_sap - Defines the SAP component
*
@@ -56,8 +59,16 @@ struct llc_sap {
struct list_head node;
spinlock_t sk_lock;
struct hlist_nulls_head sk_list;
struct hlist_head sk_dev_hash[LLC_SK_DEV_HASH_ENTRIES];
};
static inline
struct hlist_head *llc_sk_dev_hash(struct llc_sap *sap, int ifindex)
{
return &sap->sk_dev_hash[ifindex % LLC_SK_DEV_HASH_ENTRIES];
}
#define LLC_DEST_INVALID 0 /* Invalid LLC PDU type */
#define LLC_DEST_SAP 1 /* Type 1 goes here */
#define LLC_DEST_CONN 2 /* Type 2 goes here */