qlcnic: Use generic fdb handler when driver options are not enabled.
authorVlad Yasevich <vyasevic@redhat.com>
Wed, 6 Mar 2013 15:39:45 +0000 (15:39 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 7 Mar 2013 20:29:46 +0000 (15:29 -0500)
Allow qlcnic to use the generic fdb handler when the driver options
are not enabled.   Untill the driver is fully fixed, this allows
the use of the FDB interface with qlogic driver, but simply puts
the driver into promisc mode since the driver currently does not
support IFF_UNICAST_FLT.

CC: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Acked-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
CC: Sony Chacko <sony.chacko@qlogic.com>
CC: linux-driver@qlogic.com
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c

index 28a6d483836431f7d06fdb44c54fa3c854432449..c6f9d5eb7d504e184e444d98018458ee09629d46 100644 (file)
@@ -253,11 +253,8 @@ static int qlcnic_fdb_del(struct ndmsg *ndm, struct nlattr *tb[],
        struct qlcnic_adapter *adapter = netdev_priv(netdev);
        int err = -EOPNOTSUPP;
 
-       if (!adapter->fdb_mac_learn) {
-               pr_info("%s: Driver mac learn is enabled, FDB operation not allowed\n",
-                       __func__);
-               return err;
-       }
+       if (!adapter->fdb_mac_learn)
+               return ndo_dflt_fdb_del(ndm, tb, netdev, addr);
 
        if (adapter->flags & QLCNIC_ESWITCH_ENABLED) {
                if (is_unicast_ether_addr(addr))
@@ -277,11 +274,8 @@ static int qlcnic_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
        struct qlcnic_adapter *adapter = netdev_priv(netdev);
        int err = 0;
 
-       if (!adapter->fdb_mac_learn) {
-               pr_info("%s: Driver mac learn is enabled, FDB operation not allowed\n",
-                       __func__);
-               return -EOPNOTSUPP;
-       }
+       if (!adapter->fdb_mac_learn)
+               return ndo_dflt_fdb_add(ndm, tb, netdev, addr, flags);
 
        if (!(adapter->flags & QLCNIC_ESWITCH_ENABLED)) {
                pr_info("%s: FDB e-switch is not enabled\n", __func__);
@@ -306,11 +300,8 @@ static int qlcnic_fdb_dump(struct sk_buff *skb, struct netlink_callback *ncb,
 {
        struct qlcnic_adapter *adapter = netdev_priv(netdev);
 
-       if (!adapter->fdb_mac_learn) {
-               pr_info("%s: Driver mac learn is enabled, FDB operation not allowed\n",
-                       __func__);
-               return -EOPNOTSUPP;
-       }
+       if (!adapter->fdb_mac_learn)
+               return ndo_dflt_fdb_dump(skb, ncb, netdev, idx);
 
        if (adapter->flags & QLCNIC_ESWITCH_ENABLED)
                idx = ndo_dflt_fdb_dump(skb, ncb, netdev, idx);