]> Pileus Git - ~andy/linux/blobdiff - drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[~andy/linux] / drivers / net / ethernet / broadcom / bnx2x / bnx2x_vfpf.c
index 0756d7dabdd59ae0e58139e07081d9ba02ca5a10..1b1ad31b455331aca34d0abfa85eba33f477ba0f 100644 (file)
@@ -800,14 +800,18 @@ int bnx2x_vfpf_config_rss(struct bnx2x *bp,
        }
 
        if (resp->hdr.status != PFVF_STATUS_SUCCESS) {
-               BNX2X_ERR("failed to send rss message to PF over Vf PF channel %d\n",
-                         resp->hdr.status);
-               rc = -EINVAL;
+               /* Since older drivers don't support this feature (and VF has
+                * no way of knowing other than failing this), don't propagate
+                * an error in this case.
+                */
+               DP(BNX2X_MSG_IOV,
+                  "Failed to send rss message to PF over VF-PF channel [%d]\n",
+                  resp->hdr.status);
        }
 out:
        bnx2x_vfpf_finalize(bp, &req->first_tlv);
 
-       return 0;
+       return rc;
 }
 
 int bnx2x_vfpf_set_mcast(struct net_device *dev)
@@ -1416,6 +1420,14 @@ static void bnx2x_vf_mbx_setup_q(struct bnx2x *bp, struct bnx2x_virtf *vf,
                                setup_q->rxq.cache_line_log;
                        rxq_params->sb_cq_index = setup_q->rxq.sb_index;
 
+                       /* rx setup - multicast engine */
+                       if (bnx2x_vfq_is_leading(q)) {
+                               u8 mcast_id = FW_VF_HANDLE(vf->abs_vfid);
+
+                               rxq_params->mcast_engine_id = mcast_id;
+                               __set_bit(BNX2X_Q_FLG_MCAST, &setup_p->flags);
+                       }
+
                        bnx2x_vfop_qctor_dump_rx(bp, vf, init_p, setup_p,
                                                 q->index, q->sb_idx);
                }
@@ -1706,7 +1718,7 @@ static void bnx2x_vf_mbx_set_q_filters(struct bnx2x *bp,
 
                /* ...and only the mac set by the ndo */
                if (filters->n_mac_vlan_filters == 1 &&
-                   memcmp(filters->filters->mac, bulletin->mac, ETH_ALEN)) {
+                   !ether_addr_equal(filters->filters->mac, bulletin->mac)) {
                        BNX2X_ERR("VF[%d] requested the addition of a mac address not matching the one configured by set_vf_mac ndo\n",
                                  vf->abs_vfid);