be2net: pass domain numbers for pmac_add/del functions
authorAjit Khaparde <ajit.khaparde@emulex.com>
Fri, 11 Feb 2011 13:36:37 +0000 (13:36 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 12 Feb 2011 05:14:46 +0000 (21:14 -0800)
be_cmd_pmac_add/del functions need to pass domain number to the firmware.

Signed-off-by: Ajit Khaparde <ajit.khaparde@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/benet/be_cmds.c
drivers/net/benet/be_cmds.h
drivers/net/benet/be_main.c

index be2981aa5857e278723f0d4e8f879d09c184a06f..277982babc11510a7218c17be2cf290be6dbee80 100644 (file)
@@ -598,7 +598,7 @@ int be_cmd_mac_addr_query(struct be_adapter *adapter, u8 *mac_addr,
 
 /* Uses synchronous MCCQ */
 int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr,
-               u32 if_id, u32 *pmac_id)
+               u32 if_id, u32 *pmac_id, u32 domain)
 {
        struct be_mcc_wrb *wrb;
        struct be_cmd_req_pmac_add *req;
@@ -619,6 +619,7 @@ int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr,
        be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
                OPCODE_COMMON_NTWK_PMAC_ADD, sizeof(*req));
 
+       req->hdr.domain = domain;
        req->if_id = cpu_to_le32(if_id);
        memcpy(req->mac_address, mac_addr, ETH_ALEN);
 
@@ -634,7 +635,7 @@ err:
 }
 
 /* Uses synchronous MCCQ */
-int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, u32 pmac_id)
+int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, u32 pmac_id, u32 dom)
 {
        struct be_mcc_wrb *wrb;
        struct be_cmd_req_pmac_del *req;
@@ -655,6 +656,7 @@ int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, u32 pmac_id)
        be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
                OPCODE_COMMON_NTWK_PMAC_DEL, sizeof(*req));
 
+       req->hdr.domain = dom;
        req->if_id = cpu_to_le32(if_id);
        req->pmac_id = cpu_to_le32(pmac_id);
 
index 02540bd9569d42b9195582359dc3a9a461b432f0..91c5d2b09aa1fb261c5d94f94edceb465bd8b76b 100644 (file)
@@ -999,8 +999,9 @@ extern int be_cmd_POST(struct be_adapter *adapter);
 extern int be_cmd_mac_addr_query(struct be_adapter *adapter, u8 *mac_addr,
                        u8 type, bool permanent, u32 if_handle);
 extern int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr,
-                       u32 if_id, u32 *pmac_id);
-extern int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, u32 pmac_id);
+                       u32 if_id, u32 *pmac_id, u32 domain);
+extern int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id,
+                       u32 pmac_id, u32 domain);
 extern int be_cmd_if_create(struct be_adapter *adapter, u32 cap_flags,
                        u32 en_flags, u8 *mac, bool pmac_invalid,
                        u32 *if_handle, u32 *pmac_id, u32 domain);
index fc119d1f542bb3cdc20aee3f482dbdff4ae6ab58..f2d2036378467ebf5aca09d0c97a23e31a656ed1 100644 (file)
@@ -236,12 +236,13 @@ static int be_mac_addr_set(struct net_device *netdev, void *p)
        if (!be_physfn(adapter))
                goto netdev_addr;
 
-       status = be_cmd_pmac_del(adapter, adapter->if_handle, adapter->pmac_id);
+       status = be_cmd_pmac_del(adapter, adapter->if_handle,
+                               adapter->pmac_id, 0);
        if (status)
                return status;
 
        status = be_cmd_pmac_add(adapter, (u8 *)addr->sa_data,
-                       adapter->if_handle, &adapter->pmac_id);
+                               adapter->if_handle, &adapter->pmac_id, 0);
 netdev_addr:
        if (!status)
                memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
@@ -741,11 +742,11 @@ static int be_set_vf_mac(struct net_device *netdev, int vf, u8 *mac)
        if (adapter->vf_cfg[vf].vf_pmac_id != BE_INVALID_PMAC_ID)
                status = be_cmd_pmac_del(adapter,
                                        adapter->vf_cfg[vf].vf_if_handle,
-                                       adapter->vf_cfg[vf].vf_pmac_id);
+                                       adapter->vf_cfg[vf].vf_pmac_id, vf + 1);
 
        status = be_cmd_pmac_add(adapter, mac,
                                adapter->vf_cfg[vf].vf_if_handle,
-                               &adapter->vf_cfg[vf].vf_pmac_id);
+                               &adapter->vf_cfg[vf].vf_pmac_id, vf + 1);
 
        if (status)
                dev_err(&adapter->pdev->dev, "MAC %pM set on VF %d Failed\n",
@@ -2225,7 +2226,8 @@ static inline int be_vf_eth_addr_config(struct be_adapter *adapter)
        for (vf = 0; vf < num_vfs; vf++) {
                status = be_cmd_pmac_add(adapter, mac,
                                        adapter->vf_cfg[vf].vf_if_handle,
-                                       &adapter->vf_cfg[vf].vf_pmac_id);
+                                       &adapter->vf_cfg[vf].vf_pmac_id,
+                                       vf + 1);
                if (status)
                        dev_err(&adapter->pdev->dev,
                                "Mac address add failed for VF %d\n", vf);
@@ -2245,7 +2247,7 @@ static inline void be_vf_eth_addr_rem(struct be_adapter *adapter)
                if (adapter->vf_cfg[vf].vf_pmac_id != BE_INVALID_PMAC_ID)
                        be_cmd_pmac_del(adapter,
                                        adapter->vf_cfg[vf].vf_if_handle,
-                                       adapter->vf_cfg[vf].vf_pmac_id);
+                                       adapter->vf_cfg[vf].vf_pmac_id, vf + 1);
        }
 }