• Taehee Yoo's avatar
    mld: add new workqueues for process mld events · f185de28
    Taehee Yoo authored
    When query/report packets are received, mld module processes them.
    But they are processed under BH context so it couldn't use sleepable
    functions. So, in order to switch context, the two workqueues are
    added which processes query and report event.
    
    In the struct inet6_dev, mc_{query | report}_queue are added so it
    is per-interface queue.
    And mc_{query | report}_work are workqueue structure.
    
    When the query or report event is received, skb is queued to proper
    queue and worker function is scheduled immediately.
    Workqueues and queues are protected by spinlock, which is
    mc_{query | report}_lock, and worker functions are protected by RTNL.
    Suggested-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: default avatarTaehee Yoo <ap420073@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f185de28
mcast.c 73.4 KB