bridge: use rx_handler_data pointer to store net_bridge_port pointer
[deliverable/linux.git] / net / bridge / br_netlink.c
index aa56ac2c88293ad7717c62c256eaea185a638cd1..4a6a378c84e357d06f45ae70fad7cd808c4e8bc8 100644 (file)
@@ -42,8 +42,8 @@ static int br_fill_ifinfo(struct sk_buff *skb, const struct net_bridge_port *por
        struct nlmsghdr *nlh;
        u8 operstate = netif_running(dev) ? dev->operstate : IF_OPER_DOWN;
 
-       pr_debug("br_fill_info event %d port %s master %s\n",
-                event, dev->name, br->dev->name);
+       br_debug(br, "br_fill_info event %d port %s master %s\n",
+                    event, dev->name, br->dev->name);
 
        nlh = nlmsg_put(skb, pid, seq, event, sizeof(*hdr), flags);
        if (nlh == NULL)
@@ -87,7 +87,9 @@ void br_ifinfo_notify(int event, struct net_bridge_port *port)
        struct sk_buff *skb;
        int err = -ENOBUFS;
 
-       pr_debug("bridge notify event=%d\n", event);
+       br_debug(port->br, "port %u(%s) event %d\n",
+                (unsigned)port->port_no, port->dev->name, event);
+
        skb = nlmsg_new(br_nlmsg_size(), GFP_ATOMIC);
        if (skb == NULL)
                goto errout;
@@ -118,10 +120,11 @@ static int br_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb)
        idx = 0;
        for_each_netdev(net, dev) {
                /* not a bridge port */
-               if (dev->br_port == NULL || idx < cb->args[0])
+               if (!br_port_exists(dev) || idx < cb->args[0])
                        goto skip;
 
-               if (br_fill_ifinfo(skb, dev->br_port, NETLINK_CB(cb->skb).pid,
+               if (br_fill_ifinfo(skb, br_port_get(dev),
+                                  NETLINK_CB(cb->skb).pid,
                                   cb->nlh->nlmsg_seq, RTM_NEWLINK,
                                   NLM_F_MULTI) < 0)
                        break;
@@ -166,9 +169,9 @@ static int br_rtm_setlink(struct sk_buff *skb,  struct nlmsghdr *nlh, void *arg)
        if (!dev)
                return -ENODEV;
 
-       p = dev->br_port;
-       if (!p)
+       if (!br_port_exists(dev))
                return -EINVAL;
+       p = br_port_get(dev);
 
        /* if kernel STP is running, don't allow changes */
        if (p->br->stp_enabled == BR_KERNEL_STP)
This page took 0.045503 seconds and 5 git commands to generate.