New upstream version 16.11.9 28/18428/1 upstream-16.11-stable upstream/16.11.9
authorLuca Boccassi <luca.boccassi@gmail.com>
Wed, 20 Mar 2019 14:45:09 +0000 (14:45 +0000)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 20 Mar 2019 14:45:37 +0000 (14:45 +0000)
Change-Id: Ia1ac246c53e5050b6a29d6952fb668ad6c782996
Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com>
115 files changed:
app/test-pmd/cmdline.c
app/test-pmd/config.c
app/test-pmd/csumonly.c
app/test-pmd/testpmd.c
app/test-pmd/testpmd.h
app/test/test_acl.h
app/test/test_common.c
app/test/test_cryptodev.c
app/test/test_hash.c
app/test/test_hash_perf.c
app/test/test_kni.c
app/test/test_reorder.c
config/common_base
config/defconfig_arm64-armv8a-linuxapp-gcc
doc/guides/contributing/documentation.rst
doc/guides/contributing/patches.rst
doc/guides/cryptodevs/qat.rst
doc/guides/freebsd_gsg/install_from_ports.rst
doc/guides/howto/flow_bifurcation.rst
doc/guides/linux_gsg/nic_perf_intel_platform.rst
doc/guides/linux_gsg/sys_reqs.rst
doc/guides/nics/ena.rst
doc/guides/nics/enic.rst
doc/guides/nics/features/ena.ini
doc/guides/rel_notes/release_16_11.rst
doc/guides/sample_app_ug/ip_reassembly.rst
doc/guides/sample_app_ug/ipv4_multicast.rst
doc/guides/sample_app_ug/vhost.rst
doc/guides/testpmd_app_ug/run_app.rst
doc/guides/testpmd_app_ug/testpmd_funcs.rst
drivers/net/bnx2x/bnx2x.c
drivers/net/bnx2x/bnx2x.h
drivers/net/bnx2x/bnx2x_ethdev.c
drivers/net/bnx2x/bnx2x_logs.h
drivers/net/bnx2x/bnx2x_rxtx.c
drivers/net/bnx2x/bnx2x_stats.c
drivers/net/bnx2x/bnx2x_vfpf.c
drivers/net/bnx2x/ecore_init.h
drivers/net/bnx2x/ecore_init_ops.h
drivers/net/bnx2x/ecore_reg.h
drivers/net/bnx2x/ecore_sp.c
drivers/net/bnx2x/ecore_sp.h
drivers/net/bnx2x/elink.c
drivers/net/bnxt/bnxt.h
drivers/net/bnxt/bnxt_hwrm.c
drivers/net/bnxt/bnxt_txr.c
drivers/net/bonding/rte_eth_bond_pmd.c
drivers/net/bonding/rte_eth_bond_private.h
drivers/net/e1000/base/e1000_i210.c
drivers/net/e1000/em_rxtx.c
drivers/net/e1000/igb_rxtx.c
drivers/net/ena/ena_ethdev.c
drivers/net/enic/Makefile
drivers/net/enic/base/vnic_devcmd.h
drivers/net/enic/enic.h
drivers/net/enic/enic_ethdev.c
drivers/net/enic/enic_main.c
drivers/net/enic/enic_rxtx.c
drivers/net/fm10k/fm10k_ethdev.c
drivers/net/i40e/base/i40e_adminq.c
drivers/net/i40e/base/i40e_common.c
drivers/net/i40e/base/i40e_lan_hmc.c
drivers/net/i40e/base/i40e_type.h
drivers/net/i40e/i40e_ethdev.c
drivers/net/i40e/i40e_rxtx.c
drivers/net/ixgbe/base/ixgbe_common.c
drivers/net/ixgbe/ixgbe_ethdev.c
drivers/net/ixgbe/ixgbe_rxtx.c
drivers/net/mlx5/mlx5_utils.h
drivers/net/nfp/nfp_net.c
drivers/net/nfp/nfp_net_pmd.h
drivers/net/thunderx/nicvf_rxtx.c
drivers/net/vhost/rte_eth_vhost.c
drivers/net/virtio/virtio_ethdev.c
drivers/net/virtio/virtio_ethdev.h
drivers/net/virtio/virtio_user/virtio_user_dev.c
drivers/net/virtio/virtio_user_ethdev.c
examples/ipv4_multicast/main.c
examples/vhost/main.c
lib/librte_acl/rte_acl.h
lib/librte_eal/common/eal_common_options.c
lib/librte_eal/common/include/rte_common.h
lib/librte_eal/common/include/rte_pci.h
lib/librte_eal/common/include/rte_version.h
lib/librte_eal/linuxapp/eal/eal.c
lib/librte_eal/linuxapp/eal/eal_interrupts.c
lib/librte_eal/linuxapp/eal/eal_pci_uio.c
lib/librte_eal/linuxapp/eal/eal_vfio.h
lib/librte_eal/linuxapp/eal/include/exec-env/rte_kni_common.h
lib/librte_eal/linuxapp/igb_uio/igb_uio.c
lib/librte_eal/linuxapp/kni/ethtool/igb/igb_ethtool.c
lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h
lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe.h
lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_ethtool.c
lib/librte_eal/linuxapp/kni/kni_ethtool.c
lib/librte_eal/linuxapp/kni/kni_fifo.h
lib/librte_ether/rte_ethdev.c
lib/librte_ether/rte_ethdev.h
lib/librte_hash/rte_cuckoo_hash.c
lib/librte_hash/rte_cuckoo_hash.h
lib/librte_ip_frag/ip_frag_common.h
lib/librte_ip_frag/rte_ip_frag.h
lib/librte_ip_frag/rte_ipv4_reassembly.c
lib/librte_ip_frag/rte_ipv6_reassembly.c
lib/librte_kni/rte_kni.c
lib/librte_kvargs/rte_kvargs.c
lib/librte_kvargs/rte_kvargs.h
lib/librte_net/rte_gre.h
lib/librte_sched/rte_bitmap.h
lib/librte_sched/rte_reciprocal.c
lib/librte_vhost/vhost_user.c
lib/librte_vhost/virtio_net.c
mk/rte.cpuflags.mk
pkg/dpdk.spec
tools/dpdk-devbind.py

index 7dbe245..7590d1b 100644 (file)
@@ -190,11 +190,8 @@ static void cmd_help_long_parsed(void *parsed_result,
                        " by masks on port X. size is used to indicate the"
                        " hardware supported reta size\n\n"
 
                        " by masks on port X. size is used to indicate the"
                        " hardware supported reta size\n\n"
 
-                       "show port rss-hash ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|"
-                       "ipv4-sctp|ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|"
-                       "ipv6-other|l2-payload|ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex [key]\n"
-                       "    Display the RSS hash functions and RSS hash key"
-                       " of port X\n\n"
+                       "show port (port_id) rss-hash [key]\n"
+                       "    Display the RSS hash functions and RSS hash key of port\n\n"
 
                        "clear port (info|stats|xstats|fdir|stat_qmap) (port_id|all)\n"
                        "    Clear information for port_id, or all.\n\n"
 
                        "clear port (info|stats|xstats|fdir|stat_qmap) (port_id|all)\n"
                        "    Clear information for port_id, or all.\n\n"
@@ -2109,8 +2106,7 @@ static void cmd_showport_rss_hash_parsed(void *parsed_result,
 {
        struct cmd_showport_rss_hash *res = parsed_result;
 
 {
        struct cmd_showport_rss_hash *res = parsed_result;
 
-       port_rss_hash_conf_show(res->port_id, res->rss_type,
-                               show_rss_key != NULL);
+       port_rss_hash_conf_show(res->port_id, show_rss_key != NULL);
 }
 
 cmdline_parse_token_string_t cmd_showport_rss_hash_show =
 }
 
 cmdline_parse_token_string_t cmd_showport_rss_hash_show =
@@ -2122,29 +2118,18 @@ cmdline_parse_token_num_t cmd_showport_rss_hash_port_id =
 cmdline_parse_token_string_t cmd_showport_rss_hash_rss_hash =
        TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, rss_hash,
                                 "rss-hash");
 cmdline_parse_token_string_t cmd_showport_rss_hash_rss_hash =
        TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, rss_hash,
                                 "rss-hash");
-cmdline_parse_token_string_t cmd_showport_rss_hash_rss_hash_info =
-       TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, rss_type,
-                                "ipv4#ipv4-frag#ipv4-tcp#ipv4-udp#ipv4-sctp#"
-                                "ipv4-other#ipv6#ipv6-frag#ipv6-tcp#ipv6-udp#"
-                                "ipv6-sctp#ipv6-other#l2-payload#ipv6-ex#"
-                                "ipv6-tcp-ex#ipv6-udp-ex");
 cmdline_parse_token_string_t cmd_showport_rss_hash_rss_key =
        TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, key, "key");
 
 cmdline_parse_inst_t cmd_showport_rss_hash = {
        .f = cmd_showport_rss_hash_parsed,
        .data = NULL,
 cmdline_parse_token_string_t cmd_showport_rss_hash_rss_key =
        TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, key, "key");
 
 cmdline_parse_inst_t cmd_showport_rss_hash = {
        .f = cmd_showport_rss_hash_parsed,
        .data = NULL,
-       .help_str =
-               "show port X rss-hash ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|"
-               "ipv4-sctp|ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|"
-               "ipv6-sctp|ipv6-other|l2-payload|"
-               "ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex (X = port number)\n",
+       .help_str = "show port <port_id> rss-hash",
        .tokens = {
                (void *)&cmd_showport_rss_hash_show,
                (void *)&cmd_showport_rss_hash_port,
                (void *)&cmd_showport_rss_hash_port_id,
                (void *)&cmd_showport_rss_hash_rss_hash,
        .tokens = {
                (void *)&cmd_showport_rss_hash_show,
                (void *)&cmd_showport_rss_hash_port,
                (void *)&cmd_showport_rss_hash_port_id,
                (void *)&cmd_showport_rss_hash_rss_hash,
-               (void *)&cmd_showport_rss_hash_rss_hash_info,
                NULL,
        },
 };
                NULL,
        },
 };
@@ -2152,17 +2137,12 @@ cmdline_parse_inst_t cmd_showport_rss_hash = {
 cmdline_parse_inst_t cmd_showport_rss_hash_key = {
        .f = cmd_showport_rss_hash_parsed,
        .data = (void *)1,
 cmdline_parse_inst_t cmd_showport_rss_hash_key = {
        .f = cmd_showport_rss_hash_parsed,
        .data = (void *)1,
-       .help_str =
-               "show port X rss-hash ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|"
-               "ipv4-sctp|ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|"
-               "ipv6-sctp|ipv6-other|l2-payload|"
-               "ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex key (X = port number)\n",
+       .help_str = "show port <port_id> rss-hash key",
        .tokens = {
                (void *)&cmd_showport_rss_hash_show,
                (void *)&cmd_showport_rss_hash_port,
                (void *)&cmd_showport_rss_hash_port_id,
                (void *)&cmd_showport_rss_hash_rss_hash,
        .tokens = {
                (void *)&cmd_showport_rss_hash_show,
                (void *)&cmd_showport_rss_hash_port,
                (void *)&cmd_showport_rss_hash_port_id,
                (void *)&cmd_showport_rss_hash_rss_hash,
-               (void *)&cmd_showport_rss_hash_rss_hash_info,
                (void *)&cmd_showport_rss_hash_rss_key,
                NULL,
        },
                (void *)&cmd_showport_rss_hash_rss_key,
                NULL,
        },
@@ -3501,7 +3481,7 @@ cmdline_parse_token_string_t cmd_csum_tunnel_csum =
                                csum, "csum");
 cmdline_parse_token_string_t cmd_csum_tunnel_parse =
        TOKEN_STRING_INITIALIZER(struct cmd_csum_tunnel_result,
                                csum, "csum");
 cmdline_parse_token_string_t cmd_csum_tunnel_parse =
        TOKEN_STRING_INITIALIZER(struct cmd_csum_tunnel_result,
-                               parse, "parse_tunnel");
+                               parse, "parse-tunnel");
 cmdline_parse_token_string_t cmd_csum_tunnel_onoff =
        TOKEN_STRING_INITIALIZER(struct cmd_csum_tunnel_result,
                                onoff, "on#off");
 cmdline_parse_token_string_t cmd_csum_tunnel_onoff =
        TOKEN_STRING_INITIALIZER(struct cmd_csum_tunnel_result,
                                onoff, "on#off");
@@ -3513,7 +3493,7 @@ cmdline_parse_inst_t cmd_csum_tunnel = {
        .f = cmd_csum_tunnel_parsed,
        .data = NULL,
        .help_str = "enable/disable parsing of tunnels for csum engine: "
        .f = cmd_csum_tunnel_parsed,
        .data = NULL,
        .help_str = "enable/disable parsing of tunnels for csum engine: "
-       "csum parse_tunnel on|off <tx-port>",
+       "csum parse-tunnel on|off <tx-port>",
        .tokens = {
                (void *)&cmd_csum_tunnel_csum,
                (void *)&cmd_csum_tunnel_parse,
        .tokens = {
                (void *)&cmd_csum_tunnel_csum,
                (void *)&cmd_csum_tunnel_parse,
@@ -6241,7 +6221,6 @@ static void cmd_quit_parsed(__attribute__((unused)) void *parsed_result,
                            struct cmdline *cl,
                            __attribute__((unused)) void *data)
 {
                            struct cmdline *cl,
                            __attribute__((unused)) void *data)
 {
-       pmd_test_exit();
        cmdline_quit(cl);
 }
 
        cmdline_quit(cl);
 }
 
index 130ff14..f427a83 100644 (file)
@@ -1004,9 +1004,9 @@ port_rss_reta_info(portid_t port_id,
  * key of the port.
  */
 void
  * key of the port.
  */
 void
-port_rss_hash_conf_show(portid_t port_id, char rss_info[], int show_rss_key)
+port_rss_hash_conf_show(portid_t port_id, int show_rss_key)
 {
 {
-       struct rte_eth_rss_conf rss_conf;
+       struct rte_eth_rss_conf rss_conf = {0};
        uint8_t rss_key[RSS_HASH_KEY_LENGTH];
        uint64_t rss_hf;
        uint8_t i;
        uint8_t rss_key[RSS_HASH_KEY_LENGTH];
        uint64_t rss_hf;
        uint8_t i;
@@ -1017,7 +1017,6 @@ port_rss_hash_conf_show(portid_t port_id, char rss_info[], int show_rss_key)
        if (port_id_is_invalid(port_id, ENABLED_WARN))
                return;
 
        if (port_id_is_invalid(port_id, ENABLED_WARN))
                return;
 
-       memset(&dev_info, 0, sizeof(dev_info));
        rte_eth_dev_info_get(port_id, &dev_info);
        if (dev_info.hash_key_size > 0 &&
                        dev_info.hash_key_size <= sizeof(rss_key))
        rte_eth_dev_info_get(port_id, &dev_info);
        if (dev_info.hash_key_size > 0 &&
                        dev_info.hash_key_size <= sizeof(rss_key))
@@ -1027,12 +1026,6 @@ port_rss_hash_conf_show(portid_t port_id, char rss_info[], int show_rss_key)
                return;
        }
 
                return;
        }
 
-       rss_conf.rss_hf = 0;
-       for (i = 0; i < RTE_DIM(rss_type_table); i++) {
-               if (!strcmp(rss_info, rss_type_table[i].str))
-                       rss_conf.rss_hf = rss_type_table[i].rss_type;
-       }
-
        /* Get RSS hash key if asked to display it */
        rss_conf.rss_key = (show_rss_key) ? rss_key : NULL;
        rss_conf.rss_key_len = hash_key_size;
        /* Get RSS hash key if asked to display it */
        rss_conf.rss_key = (show_rss_key) ? rss_key : NULL;
        rss_conf.rss_key_len = hash_key_size;
index 57e6ae2..3bf07a4 100644 (file)
@@ -142,7 +142,9 @@ parse_ipv4(struct ipv4_hdr *ipv4_hdr, struct testpmd_offload_info *info)
        if (info->l4_proto == IPPROTO_TCP) {
                tcp_hdr = (struct tcp_hdr *)((char *)ipv4_hdr + info->l3_len);
                info->l4_len = (tcp_hdr->data_off & 0xf0) >> 2;
        if (info->l4_proto == IPPROTO_TCP) {
                tcp_hdr = (struct tcp_hdr *)((char *)ipv4_hdr + info->l3_len);
                info->l4_len = (tcp_hdr->data_off & 0xf0) >> 2;
-       } else
+       } else if (info->l4_proto == IPPROTO_UDP)
+               info->l4_len = sizeof(struct udp_hdr);
+       else
                info->l4_len = 0;
 }
 
                info->l4_len = 0;
 }
 
@@ -159,7 +161,9 @@ parse_ipv6(struct ipv6_hdr *ipv6_hdr, struct testpmd_offload_info *info)
        if (info->l4_proto == IPPROTO_TCP) {
                tcp_hdr = (struct tcp_hdr *)((char *)ipv6_hdr + info->l3_len);
                info->l4_len = (tcp_hdr->data_off & 0xf0) >> 2;
        if (info->l4_proto == IPPROTO_TCP) {
                tcp_hdr = (struct tcp_hdr *)((char *)ipv6_hdr + info->l3_len);
                info->l4_len = (tcp_hdr->data_off & 0xf0) >> 2;
-       } else
+       } else if (info->l4_proto == IPPROTO_UDP)
+               info->l4_len = sizeof(struct udp_hdr);
+       else
                info->l4_len = 0;
 }
 
                info->l4_len = 0;
 }
 
index e48cf8a..a6d80f3 100644 (file)
@@ -358,14 +358,14 @@ set_default_fwd_lcores_config(void)
 
        nb_lc = 0;
        for (i = 0; i < RTE_MAX_LCORE; i++) {
 
        nb_lc = 0;
        for (i = 0; i < RTE_MAX_LCORE; i++) {
+               if (!rte_lcore_is_enabled(i))
+                       continue;
                sock_num = rte_lcore_to_socket_id(i) + 1;
                if (sock_num > max_socket) {
                        if (sock_num > RTE_MAX_NUMA_NODES)
                                rte_exit(EXIT_FAILURE, "Total sockets greater than %u\n", RTE_MAX_NUMA_NODES);
                        max_socket = sock_num;
                }
                sock_num = rte_lcore_to_socket_id(i) + 1;
                if (sock_num > max_socket) {
                        if (sock_num > RTE_MAX_NUMA_NODES)
                                rte_exit(EXIT_FAILURE, "Total sockets greater than %u\n", RTE_MAX_NUMA_NODES);
                        max_socket = sock_num;
                }
-               if (!rte_lcore_is_enabled(i))
-                       continue;
                if (i == rte_get_master_lcore())
                        continue;
                fwd_lcores_cpuids[nb_lc++] = i;
                if (i == rte_get_master_lcore())
                        continue;
                fwd_lcores_cpuids[nb_lc++] = i;
index aad598e..b52a19d 100644 (file)
@@ -579,8 +579,7 @@ int set_queue_rate_limit(portid_t port_id, uint16_t queue_idx, uint16_t rate);
 int set_vf_rate_limit(portid_t port_id, uint16_t vf, uint16_t rate,
                                uint64_t q_msk);
 
 int set_vf_rate_limit(portid_t port_id, uint16_t vf, uint16_t rate,
                                uint64_t q_msk);
 
-void port_rss_hash_conf_show(portid_t port_id, char rss_info[],
-                            int show_rss_key);
+void port_rss_hash_conf_show(portid_t port_id, int show_rss_key);
 void port_rss_hash_key_update(portid_t port_id, char rss_type[],
                              uint8_t *hash_key, uint hash_key_len);
 void get_syn_filter(uint8_t port_id);
 void port_rss_hash_key_update(portid_t port_id, char rss_type[],
                              uint8_t *hash_key, uint hash_key_len);
 void get_syn_filter(uint8_t port_id);
index 421f310..6f5c485 100644 (file)
@@ -109,34 +109,40 @@ enum {
 struct rte_acl_ipv4vlan_rule invalid_layout_rules[] = {
                /* test src and dst address */
                {
 struct rte_acl_ipv4vlan_rule invalid_layout_rules[] = {
                /* test src and dst address */
                {
-                               .data = {.userdata = 1, .category_mask = 1},
+                               .data = {.userdata = 1, .category_mask = 1,
+                                       .priority = 1},
                                .src_addr = IPv4(10,0,0,0),
                                .src_mask_len = 24,
                },
                {
                                .src_addr = IPv4(10,0,0,0),
                                .src_mask_len = 24,
                },
                {
-                               .data = {.userdata = 2, .category_mask = 1},
+                               .data = {.userdata = 2, .category_mask = 1,
+                                       .priority = 1},
                                .dst_addr = IPv4(10,0,0,0),
                                .dst_mask_len = 24,
                },
                /* test src and dst ports */
                {
                                .dst_addr = IPv4(10,0,0,0),
                                .dst_mask_len = 24,
                },
                /* test src and dst ports */
                {
-                               .data = {.userdata = 3, .category_mask = 1},
+                               .data = {.userdata = 3, .category_mask = 1,
+                                       .priority = 1},
                                .dst_port_low = 100,
                                .dst_port_high = 100,
                },
                {
                                .dst_port_low = 100,
                                .dst_port_high = 100,
                },
                {
-                               .data = {.userdata = 4, .category_mask = 1},
+                               .data = {.userdata = 4, .category_mask = 1,
+                                       .priority = 1},
                                .src_port_low = 100,
                                .src_port_high = 100,
                },
                /* test proto */
                {
                                .src_port_low = 100,
                                .src_port_high = 100,
                },
                /* test proto */
                {
-                               .data = {.userdata = 5, .category_mask = 1},
+                               .data = {.userdata = 5, .category_mask = 1,
+                                       .priority = 1},
                                .proto = 0xf,
                                .proto_mask = 0xf
                },
                {
                                .proto = 0xf,
                                .proto_mask = 0xf
                },
                {
-                               .data = {.userdata = 6, .category_mask = 1},
+                               .data = {.userdata = 6, .category_mask = 1,
+                                       .priority = 1},
                                .dst_port_low = 0xf,
                                .dst_port_high = 0xf,
                }
                                .dst_port_low = 0xf,
                                .dst_port_high = 0xf,
                }
index 8effa2f..afd2b99 100644 (file)
@@ -158,6 +158,37 @@ test_align(void)
        return 0;
 }
 
        return 0;
 }
 
+static int
+test_fls(void)
+{
+       struct fls_test_vector {
+               uint32_t arg;
+               int rc;
+       };
+       int expected, rc;
+       uint32_t i, arg;
+
+       const struct fls_test_vector test[] = {
+               {0x0, 0},
+               {0x1, 1},
+               {0x4000, 15},
+               {0x80000000, 32},
+       };
+
+       for (i = 0; i < RTE_DIM(test); i++) {
+               arg = test[i].arg;
+               rc = rte_fls_u32(arg);
+               expected = test[i].rc;
+               if (rc != expected) {
+                       printf("Wrong rte_fls_u32(0x%x) rc=%d, expected=%d\n",
+                               arg, rc, expected);
+                       return TEST_FAILED;
+               }
+       }
+
+       return 0;
+}
+
 static int
 test_common(void)
 {
 static int
 test_common(void)
 {
@@ -165,6 +196,7 @@ test_common(void)
        ret |= test_align();
        ret |= test_macros(0);
        ret |= test_misc();
        ret |= test_align();
        ret |= test_macros(0);
        ret |= test_misc();
+       ret |= test_fls();
 
        return ret;
 }
 
        return ret;
 }
index a1f8717..209c402 100644 (file)
@@ -557,7 +557,7 @@ test_device_configure_invalid_queue_pair_ids(void)
 
 
        /* valid - max value queue pairs */
 
 
        /* valid - max value queue pairs */
-       ts_params->conf.nb_queue_pairs = MAX_NUM_QPS_PER_QAT_DEVICE;
+       ts_params->conf.nb_queue_pairs = orig_nb_qps;
 
        TEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->valid_devs[0],
                        &ts_params->conf),
 
        TEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->valid_devs[0],
                        &ts_params->conf),
@@ -588,7 +588,7 @@ test_device_configure_invalid_queue_pair_ids(void)
 
 
        /* invalid - max value + 1 queue pairs */
 
 
        /* invalid - max value + 1 queue pairs */
-       ts_params->conf.nb_queue_pairs = MAX_NUM_QPS_PER_QAT_DEVICE + 1;
+       ts_params->conf.nb_queue_pairs = orig_nb_qps + 1;
 
        TEST_ASSERT_FAIL(rte_cryptodev_configure(ts_params->valid_devs[0],
                        &ts_params->conf),
 
        TEST_ASSERT_FAIL(rte_cryptodev_configure(ts_params->valid_devs[0],
                        &ts_params->conf),
@@ -735,7 +735,7 @@ test_queue_pair_descriptor_setup(void)
        /* test invalid queue pair id */
        qp_conf.nb_descriptors = DEFAULT_NUM_OPS_INFLIGHT;      /*valid */
 
        /* test invalid queue pair id */
        qp_conf.nb_descriptors = DEFAULT_NUM_OPS_INFLIGHT;      /*valid */
 
-       qp_id = DEFAULT_NUM_QPS_PER_QAT_DEVICE;         /*invalid */
+       qp_id = ts_params->conf.nb_queue_pairs;         /*invalid */
 
        TEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(
                        ts_params->valid_devs[0],
 
        TEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(
                        ts_params->valid_devs[0],
index 2c87efe..c55ec0d 100644 (file)
@@ -110,29 +110,23 @@ static uint32_t pseudo_hash(__attribute__((unused)) const void *keys,
        return 3;
 }
 
        return 3;
 }
 
+#define UNIT_TEST_HASH_VERBOSE 0
 /*
  * Print out result of unit test hash operation.
  */
 /*
  * Print out result of unit test hash operation.
  */
-#if defined(UNIT_TEST_HASH_VERBOSE)
 static void print_key_info(const char *msg, const struct flow_key *key,
                                                                int32_t pos)
 {
 static void print_key_info(const char *msg, const struct flow_key *key,
                                                                int32_t pos)
 {
-       uint8_t *p = (uint8_t *)key;
-       unsigned i;
-
-       printf("%s key:0x", msg);
-       for (i = 0; i < sizeof(struct flow_key); i++) {
-               printf("%02X", p[i]);
+       if (UNIT_TEST_HASH_VERBOSE) {
+               const uint8_t *p = (const uint8_t *)key;
+               unsigned int i;
+
+               printf("%s key:0x", msg);
+               for (i = 0; i < sizeof(struct flow_key); i++)
+                       printf("%02X", p[i]);
+               printf(" @ pos %d\n", pos);
        }
        }
-       printf(" @ pos %d\n", pos);
-}
-#else
-static void print_key_info(__attribute__((unused)) const char *msg,
-               __attribute__((unused)) const struct flow_key *key,
-               __attribute__((unused)) int32_t pos)
-{
 }
 }
-#endif
 
 /* Keys used by unit test functions */
 static struct flow_key keys[5] = { {
 
 /* Keys used by unit test functions */
 static struct flow_key keys[5] = { {
index c0051b2..b0514b1 100644 (file)
@@ -49,7 +49,8 @@
 #define MAX_ENTRIES (1 << 19)
 #define KEYS_TO_ADD (MAX_ENTRIES * 3 / 4) /* 75% table utilization */
 #define NUM_LOOKUPS (KEYS_TO_ADD * 5) /* Loop among keys added, several times */
 #define MAX_ENTRIES (1 << 19)
 #define KEYS_TO_ADD (MAX_ENTRIES * 3 / 4) /* 75% table utilization */
 #define NUM_LOOKUPS (KEYS_TO_ADD * 5) /* Loop among keys added, several times */
-#define BUCKET_SIZE 4
+/* BUCKET_SIZE should be same as RTE_HASH_BUCKET_ENTRIES in rte_hash library */
+#define BUCKET_SIZE 8
 #define NUM_BUCKETS (MAX_ENTRIES / BUCKET_SIZE)
 #define MAX_KEYSIZE 64
 #define NUM_KEYSIZES 10
 #define NUM_BUCKETS (MAX_ENTRIES / BUCKET_SIZE)
 #define MAX_KEYSIZE 64
 #define NUM_KEYSIZES 10
index db17fdf..c6e34d4 100644 (file)
@@ -36,6 +36,7 @@
 #include <unistd.h>
 #include <string.h>
 #include <sys/wait.h>
 #include <unistd.h>
 #include <string.h>
 #include <sys/wait.h>
+#include <dirent.h>
 
 #include "test.h"
 
 
 #include "test.h"
 
@@ -57,6 +58,8 @@
 
 #define IFCONFIG      "/sbin/ifconfig "
 #define TEST_KNI_PORT "test_kni_port"
 
 #define IFCONFIG      "/sbin/ifconfig "
 #define TEST_KNI_PORT "test_kni_port"
+#define KNI_MODULE_PATH "/sys/module/rte_kni"
+#define KNI_MODULE_PARAM_LO KNI_MODULE_PATH"/parameters/lo_mode"
 #define KNI_TEST_MAX_PORTS 4
 /* The threshold number of mbufs to be transmitted or received. */
 #define KNI_NUM_MBUF_THRESHOLD 100
 #define KNI_TEST_MAX_PORTS 4
 /* The threshold number of mbufs to be transmitted or received. */
 #define KNI_NUM_MBUF_THRESHOLD 100
@@ -472,13 +475,28 @@ static int
 test_kni(void)
 {
        int ret = -1;
 test_kni(void)
 {
        int ret = -1;
-       uint8_t nb_ports, port_id;
+       uint8_t port_id;
        struct rte_kni *kni;
        struct rte_mempool *mp;
        struct rte_kni_conf conf;
        struct rte_eth_dev_info info;
        struct rte_kni_ops ops;
 
        struct rte_kni *kni;
        struct rte_mempool *mp;
        struct rte_kni_conf conf;
        struct rte_eth_dev_info info;
        struct rte_kni_ops ops;
 
+       FILE *fd;
+       DIR *dir;
+       char buf[16];
+
+       dir = opendir(KNI_MODULE_PATH);
+       if (!dir) {
+               if (errno == ENOENT) {
+                       printf("Cannot run UT due to missing rte_kni module\n");
+                       return -1;
+               }
+               printf("opendir: %s", strerror(errno));
+               return -1;
+       }
+       closedir(dir);
+
        /* Initialize KNI subsytem */
        rte_kni_init(KNI_TEST_MAX_PORTS);
 
        /* Initialize KNI subsytem */
        rte_kni_init(KNI_TEST_MAX_PORTS);
 
@@ -493,12 +511,6 @@ test_kni(void)
                return -1;
        }
 
                return -1;
        }
 
-       nb_ports = rte_eth_dev_count();
-       if (nb_ports == 0) {
-               printf("no supported nic port found\n");
-               return -1;
-       }
-
        /* configuring port 0 for the test is enough */
        port_id = 0;
        ret = rte_eth_dev_configure(port_id, 1, 1, &port_conf);
        /* configuring port 0 for the test is enough */
        port_id = 0;
        ret = rte_eth_dev_configure(port_id, 1, 1, &port_conf);
@@ -527,9 +539,25 @@ test_kni(void)
        rte_eth_promiscuous_enable(port_id);
 
        /* basic test of kni processing */
        rte_eth_promiscuous_enable(port_id);
 
        /* basic test of kni processing */
-       ret = test_kni_processing(port_id, mp);
-       if (ret < 0)
-               goto fail;
+       fd = fopen(KNI_MODULE_PARAM_LO, "r");
+       if (fd == NULL) {
+               printf("fopen: %s", strerror(errno));
+               return -1;
+       }
+       memset(&buf, 0, sizeof(buf));
+       if (fgets(buf, sizeof(buf), fd)) {
+               if (!strncmp(buf, "lo_mode_fifo", strlen("lo_mode_fifo")) ||
+                       !strncmp(buf, "lo_mode_fifo_skb",
+                                 strlen("lo_mode_fifo_skb"))) {
+                       ret = test_kni_processing(port_id, mp);
+                       if (ret < 0) {
+                               fclose(fd);
+                               goto fail;
+                       }
+               } else
+                       printf("test_kni_processing skipped because of missing rte_kni module lo_mode argument\n");
+       }
+       fclose(fd);
 
        /* test of allocating KNI with NULL mempool pointer */
        memset(&info, 0, sizeof(info));
 
        /* test of allocating KNI with NULL mempool pointer */
        memset(&info, 0, sizeof(info));
index add4551..d7dab32 100644 (file)
@@ -300,7 +300,7 @@ test_reorder_drain(void)
                goto exit;
        }
        if (robufs[0] != NULL)
                goto exit;
        }
        if (robufs[0] != NULL)
-               rte_pktmbuf_free(robufs[i]);
+               rte_pktmbuf_free(robufs[0]);
 
        /* Insert more packets
         * RB[] = {NULL, NULL, NULL, NULL}
 
        /* Insert more packets
         * RB[] = {NULL, NULL, NULL, NULL}
index 802fb5e..4f44806 100644 (file)
@@ -98,6 +98,14 @@ CONFIG_RTE_EAL_VFIO=n
 CONFIG_RTE_MALLOC_DEBUG=n
 CONFIG_RTE_USE_LIBBSD=n
 
 CONFIG_RTE_MALLOC_DEBUG=n
 CONFIG_RTE_USE_LIBBSD=n
 
+#
+# Recognize/ignore the AVX/AVX512 CPU flags for performance/power testing.
+# AVX512 is marked as experimental for now, will enable it after enough
+# field test and possible optimization.
+#
+CONFIG_RTE_ENABLE_AVX=y
+CONFIG_RTE_ENABLE_AVX512=n
+
 # Default driver path (or "" to disable)
 CONFIG_RTE_EAL_PMD_PATH=""
 
 # Default driver path (or "" to disable)
 CONFIG_RTE_EAL_PMD_PATH=""
 
index 6321884..3dbf69e 100644 (file)
@@ -41,6 +41,7 @@ CONFIG_RTE_FORCE_INTRINSICS=y
 
 CONFIG_RTE_TOOLCHAIN="gcc"
 CONFIG_RTE_TOOLCHAIN_GCC=y
 
 CONFIG_RTE_TOOLCHAIN="gcc"
 CONFIG_RTE_TOOLCHAIN_GCC=y
+CONFIG_RTE_MAX_LCORE=256
 
 CONFIG_RTE_EAL_IGB_UIO=n
 
 
 CONFIG_RTE_EAL_IGB_UIO=n
 
index 2cfb1a2..2545abc 100644 (file)
@@ -81,7 +81,7 @@ added to by the developer.
 * **API documentation**
 
   The API documentation explains how to use the public DPDK functions.
 * **API documentation**
 
   The API documentation explains how to use the public DPDK functions.
-  The `API index page <http://dpdk.org/doc/api/>`_ shows the generated API documentation with related groups of functions.
+  The `API index page <http://doc.dpdk.org/api/>`_ shows the generated API documentation with related groups of functions.
 
   The API documentation should be updated via Doxygen comments when new functions are added.
 
 
   The API documentation should be updated via Doxygen comments when new functions are added.
 
@@ -669,7 +669,7 @@ The following are some guidelines for use of Doxygen in the DPDK API documentati
        */
 
   In the API documentation the functions will be rendered as links, see the
        */
 
   In the API documentation the functions will be rendered as links, see the
-  `online section of the rte_ethdev.h docs <http://dpdk.org/doc/api/rte__ethdev_8h.html>`_ that contains the above text.
+  `online section of the rte_ethdev.h docs <http://doc.dpdk.org/api/rte__ethdev_8h.html>`_ that contains the above text.
 
 * The ``@see`` keyword can be used to create a *see also* link to another file or library.
   This directive should be placed on one line at the bottom of the documentation section.
 
 * The ``@see`` keyword can be used to create a *see also* link to another file or library.
   This directive should be placed on one line at the bottom of the documentation section.
index 729aea7..db851b5 100644 (file)
@@ -22,9 +22,9 @@ The DPDK development process has the following features:
 * Patches are reviewed publicly on the mailing list.
 * Successfully reviewed patches are merged to the master branch of the repository.
 
 * Patches are reviewed publicly on the mailing list.
 * Successfully reviewed patches are merged to the master branch of the repository.
 
-The mailing list for DPDK development is `dev@dpdk.org <http://dpdk.org/ml/archives/dev/>`_.
-Contributors will need to `register for the mailing list <http://dpdk.org/ml/listinfo/dev>`_ in order to submit patches.
-It is also worth registering for the DPDK `Patchwork <http://dpdk.org/dev/patchwork/project/dpdk/list/>`_
+The mailing list for DPDK development is `dev@dpdk.org <http://mails.dpdk.org/archives/dev/>`_.
+Contributors will need to `register for the mailing list <http://mails.dpdk.org/listinfo/dev>`_ in order to submit patches.
+It is also worth registering for the DPDK `Patchwork <http://patches.dpdk.org/project/dpdk/list/>`_
 
 The development process requires some familiarity with the ``git`` version control system.
 Refer to the `Pro Git Book <http://www.git-scm.com/book/>`_ for further information.
 
 The development process requires some familiarity with the ``git`` version control system.
 Refer to the `Pro Git Book <http://www.git-scm.com/book/>`_ for further information.
@@ -347,7 +347,7 @@ If the patch is in relation to a previous email thread you can add it to the sam
    git send-email --to dev@dpdk.org --in-reply-to <1234-foo@bar.com> 000*.patch
 
 The Message ID can be found in the raw text of emails or at the top of each Patchwork patch,
    git send-email --to dev@dpdk.org --in-reply-to <1234-foo@bar.com> 000*.patch
 
 The Message ID can be found in the raw text of emails or at the top of each Patchwork patch,
-`for example <http://dpdk.org/dev/patchwork/patch/7646/>`_.
+`for example <http://patches.dpdk.org/patch/7646/>`_.
 Shallow threading (``--thread --no-chain-reply-to``) is preferred for a patch series.
 
 Once submitted your patches will appear on the mailing list and in Patchwork.
 Shallow threading (``--thread --no-chain-reply-to``) is preferred for a patch series.
 
 Once submitted your patches will appear on the mailing list and in Patchwork.
index 2173819..c46a62e 100644 (file)
@@ -89,7 +89,7 @@ To use the DPDK QAT PMD an SRIOV-enabled QAT kernel driver is required. The
 VF devices exposed by this driver will be used by QAT PMD.
 
 To enable QAT in DPDK, follow the instructions mentioned in
 VF devices exposed by this driver will be used by QAT PMD.
 
 To enable QAT in DPDK, follow the instructions mentioned in
-http://dpdk.org/doc/guides/linux_gsg/build_dpdk.html
+http://doc.dpdk.org/guides/linux_gsg/build_dpdk.html
 
 Quick instructions as follows:
 
 
 Quick instructions as follows:
 
@@ -107,7 +107,6 @@ For **Intel QuickAssist Technology C62x** and **Intel QuickAssist Technology C3x
 device, kernel 4.5 or greater is needed.
 See instructions for `Installation using kernel.org driver`_ below.
 
 device, kernel 4.5 or greater is needed.
 See instructions for `Installation using kernel.org driver`_ below.
 
-
 Installation using 01.org QAT driver
 ------------------------------------
 
 Installation using 01.org QAT driver
 ------------------------------------
 
index 8177029..44bbdfe 100644 (file)
@@ -89,7 +89,7 @@ environmental variables should be set as below:
 .. note::
 
    To install a copy of the DPDK compiled using gcc, please download the
 .. note::
 
    To install a copy of the DPDK compiled using gcc, please download the
-   official DPDK package from http://dpdk.org/ and install manually using
+   official DPDK package from http://core.dpdk.org/download/ and install manually using
    the instructions given in the next chapter, :ref:`building_from_source`
 
 An example application can therefore be copied to a user's home directory and
    the instructions given in the next chapter, :ref:`building_from_source`
 
 An example application can therefore be copied to a user's home directory and
index 0d7226a..cf5d694 100644 (file)
@@ -296,4 +296,4 @@ The typical procedure to achieve this is as follows:
      'not involved', while ``00`` or no mask means 'involved'.
 
    * For more details of the configuration, refer to the
      'not involved', while ``00`` or no mask means 'involved'.
 
    * For more details of the configuration, refer to the
-     `cloud filter test plan <http://dpdk.org/browse/tools/dts/tree/test_plans/cloud_filter_test_plan.rst>`_
+     `cloud filter test plan <http://git.dpdk.org/tools/dts/tree/test_plans/cloud_filter_test_plan.rst>`_
index d4a8362..e6cf1b9 100644 (file)
@@ -64,7 +64,7 @@ This aligns with the previous output which showed that each channel has one memo
 Network Interface Card Requirements
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Network Interface Card Requirements
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Use a `DPDK supported <http://dpdk.org/doc/nics>`_ high end NIC such as the Intel XL710 40GbE.
+Use a `DPDK supported <http://core.dpdk.org/supported/>`_ high end NIC such as the Intel XL710 40GbE.
 
 Make sure each NIC has been flashed the latest version of NVM/firmware.
 
 
 Make sure each NIC has been flashed the latest version of NVM/firmware.
 
index 3d74342..4845ca4 100644 (file)
@@ -86,6 +86,12 @@ Compilation of the DPDK
 
 .. note::
 
 
 .. note::
 
+*   Library for handling NUMA (Non Uniform Memory Access).
+
+    * numactl-devel in Red Hat/Fedora;
+
+    * libnuma-dev in Debian/Ubuntu;
+
     Python, version 2.6 or 2.7, to use various helper scripts included in the DPDK package.
 
 
     Python, version 2.6 or 2.7, to use various helper scripts included in the DPDK package.
 
 
index 073b35a..9062d7b 100644 (file)
@@ -187,11 +187,20 @@ Prerequisites
 -------------
 
 #. Prepare the system as recommended by DPDK suite.  This includes environment
 -------------
 
 #. Prepare the system as recommended by DPDK suite.  This includes environment
-   variables, hugepages configuration, tool-chains and configuration
+   variables, hugepages configuration, tool-chains and configuration.
 
 
-#. Insert igb_uio kernel module using the command 'modprobe igb_uio'
+#. ENA PMD can operate with ``vfio-pci`` or ``igb_uio`` driver.
 
 
-#. Bind the intended ENA device to igb_uio module
+#. Insert ``vfio-pci`` or ``igb_uio`` kernel module using the command
+   ``modprobe vfio-pci`` or ``modprobe igb_uio`` respectively.
+
+#. For ``vfio-pci`` users only:
+   Please make sure that ``IOMMU`` is enabled in your system,
+   or use ``vfio`` driver in ``noiommu`` mode::
+
+     echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode
+
+#. Bind the intended ENA device to ``vfio-pci`` or ``igb_uio`` module.
 
 
 At this point the system should be ready to run DPDK applications. Once the
 
 
 At this point the system should be ready to run DPDK applications. Once the
index c535b58..7738829 100644 (file)
@@ -39,7 +39,7 @@ How to obtain ENIC PMD integrated DPDK
 --------------------------------------
 
 ENIC PMD support is integrated into the DPDK suite. dpdk-<version>.tar.gz
 --------------------------------------
 
 ENIC PMD support is integrated into the DPDK suite. dpdk-<version>.tar.gz
-should be downloaded from http://dpdk.org
+should be downloaded from http://core.dpdk.org/download/
 
 
 Configuration information
 
 
 Configuration information
@@ -140,6 +140,35 @@ Masking of these feilds for partial match is also supported.
 Without advanced filter support, the flow director is limited to IPv4
 perfect filtering of the 5-tuple with no masking of fields supported.
 
 Without advanced filter support, the flow director is limited to IPv4
 perfect filtering of the 5-tuple with no masking of fields supported.
 
+Ingress VLAN Rewrite
+--------------------
+
+VIC adapters can tag, untag, or modify the VLAN headers of ingress
+packets. The ingress VLAN rewrite mode controls this behavior. By
+default, it is set to pass-through, where the NIC does not modify the
+VLAN header in any way so that the application can see the original
+header. This mode is sufficient for many applications, but may not be
+suitable for others. Such applications may change the mode by setting
+``devargs`` parameter ``ig-vlan-rewrite`` to one of the following.
+
+- ``pass``: Pass-through mode. The NIC does not modify the VLAN
+  header. This is the default mode.
+
+- ``priority``: Priority-tag default VLAN mode. If the ingress packet
+  is tagged with the default VLAN, the NIC replaces its VLAN header
+  with the priority tag (VLAN ID 0).
+
+- ``trunk``: Default trunk mode. The NIC tags untagged ingress packets
+  with the default VLAN. Tagged ingress packets are not modified. To
+  the application, every packet appears as tagged.
+
+- ``untag``: Untag default VLAN mode. If the ingress packet is tagged
+  with the default VLAN, the NIC removes or untags its VLAN header so
+  that the application sees an untagged packet. As a result, the
+  default VLAN becomes `untagged`. This mode can be useful for
+  applications such as OVS-DPDK performance benchmarks that utilize
+  only the default VLAN and want to see only untagged packets.
+
 Limitations
 -----------
 
 Limitations
 -----------
 
@@ -153,9 +182,10 @@ Limitations
   In test setups where an Ethernet port of a Cisco adapter in TRUNK mode is
   connected point-to-point to another adapter port or connected though a router
   instead of a switch, all ingress packets will be VLAN tagged. Programs such
   In test setups where an Ethernet port of a Cisco adapter in TRUNK mode is
   connected point-to-point to another adapter port or connected though a router
   instead of a switch, all ingress packets will be VLAN tagged. Programs such
-  as l3fwd which do not account for VLAN tags in packets will misbehave. The
-  solution is to enable VLAN stripping on ingress. The follow code fragment is
-  example of how to accomplish this:
+  as l3fwd may not account for VLAN tags in packets and may misbehave. One
+  solution is to enable VLAN stripping on ingress so the VLAN tag is removed
+  from the packet and put into the mbuf->vlan_tci field. Here is an example
+  of how to accomplish this:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
@@ -163,6 +193,14 @@ Limitations
      vlan_offload |= ETH_VLAN_STRIP_OFFLOAD;
      rte_eth_dev_set_vlan_offload(port, vlan_offload);
 
      vlan_offload |= ETH_VLAN_STRIP_OFFLOAD;
      rte_eth_dev_set_vlan_offload(port, vlan_offload);
 
+Another alternative is modify the adapter's ingress VLAN rewrite mode so that
+packets with the default VLAN tag are stripped by the adapter and presented to
+DPDK as untagged packets. In this case mbuf->vlan_tci and the PKT_RX_VLAN and
+PKT_RX_VLAN_STRIPPED mbuf flags would not be set. This mode is enabled with the
+``devargs`` parameter ``ig-vlan-rewrite=untag``. For example::
+
+    -w 12:00.0,ig-vlan-rewrite=untag
+
 - Limited flow director support on 1200 series and 1300 series Cisco VIC
   adapters with old firmware. Please see :ref:`enic-flow-director`.
 
 - Limited flow director support on 1200 series and 1300 series Cisco VIC
   adapters with old firmware. Please see :ref:`enic-flow-director`.
 
index 74969fd..d607fcc 100644 (file)
@@ -22,5 +22,6 @@ Inner L4 checksum    = Y
 Basic stats          = Y
 Extended stats       = Y
 Linux UIO            = Y
 Basic stats          = Y
 Extended stats       = Y
 Linux UIO            = Y
+Linux VFIO           = Y
 x86-32               = Y
 x86-64               = Y
 x86-32               = Y
 x86-64               = Y
index 012cf73..5d54b23 100644 (file)
@@ -1363,3 +1363,120 @@ Fixes in 16.11 LTS Release
 * test/hash: fix potential memory leak
 * test/virtual_pmd: add MAC address setting fake op
 * vhost: fix missing increment of log cache count
 * test/hash: fix potential memory leak
 * test/virtual_pmd: add MAC address setting fake op
 * vhost: fix missing increment of log cache count
+
+16.11.9
+~~~~~~~
+
+* acl: forbid rule with priority zero
+* app/testpmd: fix csum parse-tunnel command invocation
+* app/testpmd: fix displaying RSS hash functions
+* app/testpmd: fix duplicate exit
+* app/testpmd: fix L4 length for UDP checksum
+* app/testpmd: optimize mbuf pool allocation
+* build: enable ARM NEON flag when __aarch64__ defined
+* bus/pci: fix allocation of device path
+* config: enable more than 128 cores for arm64
+* config: make AVX and AVX512 configurable
+* doc: add VFIO in ENA guide
+* doc: fix formatting in IP reassembly app guide
+* doc: fix NUMA library name in Linux guide
+* doc: fix typo in testpmd guide
+* doc: fix wrong usage of bind command
+* eal: fix build
+* eal: fix build with gcc 9.0
+* eal: fix build with -O1
+* eal: introduce rte version of fls
+* eal/linux: fix memory leak of logid
+* eal/linux: handle UIO read failure in interrupt handler
+* eal: use correct data type for bitmap slab operations
+* ethdev: fix doxygen comment to be with structure
+* ethdev: fix invalid configuration after failure
+* ethdev: fix queue start and stop
+* examples/ipv4_multicast: fix leak of cloned packets
+* examples/vhost: remove unnecessary constant
+* fix dpdk.org URLs
+* fix global variable issues
+* hash: fix key store element alignment
+* hash: remove unnecessary pause
+* igb_uio: fix unexpected removal for hot-unplug
+* igb_uio: issue FLR during open and release of device file
+* igb_uio: remove device reset in open
+* igb_uio: remove device reset in release
+* ip_frag: check fragment length of incoming packet
+* ip_frag: fix overflow in key comparison
+* ip_frag: use key length for key comparison
+* kni: fix build on CentOS 7.4
+* kni: fix build on Linux < 3.14
+* kni: fix build on Linux 4.19
+* kni: fix build on Suse 12 SP3
+* kni: fix kernel FIFO synchronization
+* kni: fix possible uninitialized variable
+* kni: fix SLE version detection
+* kvargs: fix processing a null list
+* mk: disable gcc AVX512F support
+* net/bnx2x: fix call to link handling periodic function
+* net/bnx2x: fix logging to include device name
+* net/bnx2x: fix to add PHY lock
+* net/bnx2x: fix to disable further interrupts
+* net/bnx2x: fix VF link state update
+* net/bnxt: fix uninitialized pointer access in Tx
+* net/bnxt: reduce polling interval for valid bit
+* net/bnxt: remove excess log messages
+* net/bnxt: set a VNIC as default only once
+* net/bnxt: set MAC filtering as outer for non tunnel frames
+* net/bonding: do not ignore RSS key on device config
+* net/bonding: fix crash when stopping mode 4 port
+* net/bonding: fix Rx slave fairness
+* net/bonding: reduce slave starvation on Rx poll
+* net/bonding: stop and deactivate slaves on stop
+* net/bonding: support matching QinQ ethertype
+* net/bonding: use evenly distributed default RSS RETA
+* net/e1000/base: fix uninitialized variable
+* net/e1000: do not error out if Rx drop enable is set
+* net/ena: fix passing RSS hash to mbuf
+* net/enic: add dependency on librte_kvargs
+* net/enic: add devarg to specify ingress VLAN rewrite mode
+* net/enic: do not use non-standard integer types
+* net/enic: set Rx VLAN offload flag for non-stripped packets
+* net: fix build with pedantic
+* net/i40e/base: correct global reset timeout calculation
+* net/i40e/base: fix partition id calculation for X722
+* net/i40e/base: gracefully clean the resources
+* net/i40e/base: properly clean resources
+* net/i40e: enable loopback function for X722 MAC
+* net/i40e: fix send admin queue command before init
+* net/i40e: fix X710 Rx after reading some registers
+* net/i40e: keep promiscuous on if allmulticast is enabled
+* net/i40e: update Tx offload mask
+* net/igb: update Tx offload mask
+* net/ixgbe: fix maximum wait time in comment
+* net/ixgbe: fix TDH register write
+* net/ixgbe: update Tx offload mask
+* net/ixgbevf: fix link state
+* net/ixgbe: wait longer for link after fiber MAC setup
+* net/mlx5: fix build on PPC64
+* net/nfp: fix live MAC changes not supported
+* net/nfp: fix mbuf flags with checksum good
+* net/nfp: fix RSS
+* net/thunderx: fix Tx desc corruption in scatter-gather mode
+* net/vhost: fix parameters string
+* net/virtio: add missing supported features
+* net/virtio: register/unregister intr handler on start/stop
+* net/virtio-user: do not reset owner when driver resets
+* net/virtio-user: fix typo in error message
+* pci: fix parsing of address without function number
+* test/crypto: fix number of queue pairs
+* test/hash: fix bucket size in perf test
+* test/hash: fix build
+* test/kni: check module dependency
+* test/reorder: fix out of bound access
+* usertools: check for lspci dependency
+* version: 16.11.9-rc1
+* version: 16.11.9-rc2
+* vfio: fix build
+* vfio: fix build on old kernel
+* vhost: fix corner case for enqueue operation
+* vhost: fix payload size of reply
+* vhost: remove unneeded null pointer check
+* vhost-user: drop connection on message handling failures
+* vhost-user: fix false negative in handling user messages
index 3c5cc70..4c75bd0 100644 (file)
@@ -50,8 +50,8 @@ There are two key differences from the L2 Forwarding sample application:
 
 *   The second difference is that the application differentiates between IP and non-IP traffic by means of offload flags.
 
 
 *   The second difference is that the application differentiates between IP and non-IP traffic by means of offload flags.
 
-The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number, associated with that IPv4 address. Any unmatched packets are forwarded to the originating port.Compiling the Application
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number,
+associated with that IPv4 address. Any unmatched packets are forwarded to the originating port.
 
 To compile the application:
 
 
 To compile the application:
 
index 72da8c4..6badc68 100644 (file)
@@ -365,7 +365,6 @@ It is the mcast_out_pkt() function that performs the packet duplication (either
         hdr->pkt.in_port = pkt->pkt.in_port;
         hdr->pkt.vlan_macip = pkt->pkt.vlan_macip;
         hdr->pkt.hash = pkt->pkt.hash;
         hdr->pkt.in_port = pkt->pkt.in_port;
         hdr->pkt.vlan_macip = pkt->pkt.vlan_macip;
         hdr->pkt.hash = pkt->pkt.hash;
-        hdr->ol_flags = pkt->ol_flags;
         rte_mbuf_sanity_check(hdr, RTE_MBUF_PKT, 1);
 
         return hdr;
         rte_mbuf_sanity_check(hdr, RTE_MBUF_PKT, 1);
 
         return hdr;
index 1f6d0d9..c9a605f 100644 (file)
@@ -115,7 +115,7 @@ could be done by:
 .. code-block:: console
 
    modprobe uio_pci_generic
 .. code-block:: console
 
    modprobe uio_pci_generic
-   $RTE_SDK/tools/dpdk-devbind.py -b=uio_pci_generic 0000:00:04.0
+   $RTE_SDK/tools/dpdk-devbind.py -b uio_pci_generic 0000:00:04.0
 
 Then start testpmd for packet forwarding testing.
 
 
 Then start testpmd for packet forwarding testing.
 
index ac7d458..65d5422 100644 (file)
@@ -337,7 +337,7 @@ The commandline options are:
 
        io (the default)
        mac
 
        io (the default)
        mac
-       mac_swap
+       macswap
        flowgen
        rxonly
        txonly
        flowgen
        rxonly
        txonly
index a906974..45280c1 100644 (file)
@@ -201,7 +201,7 @@ show port rss-hash
 
 Display the RSS hash functions and RSS hash key of a port::
 
 
 Display the RSS hash functions and RSS hash key of a port::
 
-   testpmd> show port (port_id) rss-hash ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2-payload|ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex [key]
+   testpmd> show port (port_id) rss-hash [key]
 
 clear port
 ~~~~~~~~~~
 
 clear port
 ~~~~~~~~~~
index f1de336..7cf9d1c 100644 (file)
@@ -114,6 +114,7 @@ static void bnx2x_pf_disable(struct bnx2x_softc *sc);
 static void bnx2x_update_rx_prod(struct bnx2x_softc *sc,
                                 struct bnx2x_fastpath *fp,
                                 uint16_t rx_bd_prod, uint16_t rx_cq_prod);
 static void bnx2x_update_rx_prod(struct bnx2x_softc *sc,
                                 struct bnx2x_fastpath *fp,
                                 uint16_t rx_bd_prod, uint16_t rx_cq_prod);
+static void bnx2x_link_report_locked(struct bnx2x_softc *sc);
 static void bnx2x_link_report(struct bnx2x_softc *sc);
 void bnx2x_link_status_update(struct bnx2x_softc *sc);
 static int bnx2x_alloc_mem(struct bnx2x_softc *sc);
 static void bnx2x_link_report(struct bnx2x_softc *sc);
 void bnx2x_link_status_update(struct bnx2x_softc *sc);
 static int bnx2x_alloc_mem(struct bnx2x_softc *sc);
@@ -181,13 +182,14 @@ bnx2x_dma_alloc(struct bnx2x_softc *sc, size_t size, struct bnx2x_dma *dma,
                                        SOCKET_ID_ANY,
                                        0, align);
        if (z == NULL) {
                                        SOCKET_ID_ANY,
                                        0, align);
        if (z == NULL) {
-               PMD_DRV_LOG(ERR, "DMA alloc failed for %s", msg);
+               PMD_DRV_LOG(ERR, sc, "DMA alloc failed for %s", msg);
                return -ENOMEM;
        }
        dma->paddr = (uint64_t) z->phys_addr;
        dma->vaddr = z->addr;
 
                return -ENOMEM;
        }
        dma->paddr = (uint64_t) z->phys_addr;
        dma->vaddr = z->addr;
 
-       PMD_DRV_LOG(DEBUG, "%s: virt=%p phys=%" PRIx64, msg, dma->vaddr, dma->paddr);
+       PMD_DRV_LOG(DEBUG, sc,
+                   "%s: virt=%p phys=%" PRIx64, msg, dma->vaddr, dma->paddr);
 
        return 0;
 }
 
        return 0;
 }
@@ -200,11 +202,16 @@ static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
        uint32_t hw_lock_control_reg;
        int cnt;
 
        uint32_t hw_lock_control_reg;
        int cnt;
 
-       PMD_INIT_FUNC_TRACE();
+#ifndef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
+       if (resource)
+               PMD_INIT_FUNC_TRACE(sc);
+#else
+       PMD_INIT_FUNC_TRACE(sc);
+#endif
 
        /* validate the resource is within range */
        if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
 
        /* validate the resource is within range */
        if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
-               PMD_DRV_LOG(NOTICE,
+               PMD_DRV_LOG(NOTICE, sc,
                            "resource 0x%x > HW_LOCK_MAX_RESOURCE_VALUE",
                            resource);
                return -1;
                            "resource 0x%x > HW_LOCK_MAX_RESOURCE_VALUE",
                            resource);
                return -1;
@@ -220,7 +227,7 @@ static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
        /* validate the resource is not already taken */
        lock_status = REG_RD(sc, hw_lock_control_reg);
        if (lock_status & resource_bit) {
        /* validate the resource is not already taken */
        lock_status = REG_RD(sc, hw_lock_control_reg);
        if (lock_status & resource_bit) {
-               PMD_DRV_LOG(NOTICE,
+               PMD_DRV_LOG(NOTICE, sc,
                            "resource in use (status 0x%x bit 0x%x)",
                            lock_status, resource_bit);
                return -1;
                            "resource in use (status 0x%x bit 0x%x)",
                            lock_status, resource_bit);
                return -1;
@@ -236,7 +243,8 @@ static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
                DELAY(5000);
        }
 
                DELAY(5000);
        }
 
-       PMD_DRV_LOG(NOTICE, "Resource lock timeout!");
+       PMD_DRV_LOG(NOTICE, sc, "Resource 0x%x resource_bit 0x%x lock timeout!",
+                   resource, resource_bit);
        return -1;
 }
 
        return -1;
 }
 
@@ -247,13 +255,18 @@ static int bnx2x_release_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
        int func = SC_FUNC(sc);
        uint32_t hw_lock_control_reg;
 
        int func = SC_FUNC(sc);
        uint32_t hw_lock_control_reg;
 
-       PMD_INIT_FUNC_TRACE();
+#ifndef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
+       if (resource)
+               PMD_INIT_FUNC_TRACE(sc);
+#else
+       PMD_INIT_FUNC_TRACE(sc);
+#endif
 
        /* validate the resource is within range */
        if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
 
        /* validate the resource is within range */
        if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
-               PMD_DRV_LOG(NOTICE,
-                           "resource 0x%x > HW_LOCK_MAX_RESOURCE_VALUE",
-                           resource);
+               PMD_DRV_LOG(NOTICE, sc,
+                           "(resource 0x%x > HW_LOCK_MAX_RESOURCE_VALUE)"
+                           " resource_bit 0x%x", resource, resource_bit);
                return -1;
        }
 
                return -1;
        }
 
@@ -267,7 +280,7 @@ static int bnx2x_release_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
        /* validate the resource is currently taken */
        lock_status = REG_RD(sc, hw_lock_control_reg);
        if (!(lock_status & resource_bit)) {
        /* validate the resource is currently taken */
        lock_status = REG_RD(sc, hw_lock_control_reg);
        if (!(lock_status & resource_bit)) {
-               PMD_DRV_LOG(NOTICE,
+               PMD_DRV_LOG(NOTICE, sc,
                            "resource not in use (status 0x%x bit 0x%x)",
                            lock_status, resource_bit);
                return -1;
                            "resource not in use (status 0x%x bit 0x%x)",
                            lock_status, resource_bit);
                return -1;
@@ -277,6 +290,18 @@ static int bnx2x_release_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
        return 0;
 }
 
        return 0;
 }
 
+static void bnx2x_acquire_phy_lock(struct bnx2x_softc *sc)
+{
+       BNX2X_PHY_LOCK(sc);
+       bnx2x_acquire_hw_lock(sc, HW_LOCK_RESOURCE_MDIO);
+}
+
+static void bnx2x_release_phy_lock(struct bnx2x_softc *sc)
+{
+       bnx2x_release_hw_lock(sc, HW_LOCK_RESOURCE_MDIO);
+       BNX2X_PHY_UNLOCK(sc);
+}
+
 /* copy command into DMAE command memory and set DMAE command Go */
 void bnx2x_post_dmae(struct bnx2x_softc *sc, struct dmae_command *dmae, int idx)
 {
 /* copy command into DMAE command memory and set DMAE command Go */
 void bnx2x_post_dmae(struct bnx2x_softc *sc, struct dmae_command *dmae, int idx)
 {
@@ -369,7 +394,7 @@ bnx2x_issue_dmae_with_comp(struct bnx2x_softc *sc, struct dmae_command *dmae)
                if (!timeout ||
                    (sc->recovery_state != BNX2X_RECOVERY_DONE &&
                     sc->recovery_state != BNX2X_RECOVERY_NIC_LOADING)) {
                if (!timeout ||
                    (sc->recovery_state != BNX2X_RECOVERY_DONE &&
                     sc->recovery_state != BNX2X_RECOVERY_NIC_LOADING)) {
-                       PMD_DRV_LOG(INFO, "DMAE timeout!");
+                       PMD_DRV_LOG(INFO, sc, "DMAE timeout!");
                        return DMAE_TIMEOUT;
                }
 
                        return DMAE_TIMEOUT;
                }
 
@@ -378,7 +403,7 @@ bnx2x_issue_dmae_with_comp(struct bnx2x_softc *sc, struct dmae_command *dmae)
        }
 
        if (*wb_comp & DMAE_PCI_ERR_FLAG) {
        }
 
        if (*wb_comp & DMAE_PCI_ERR_FLAG) {
-               PMD_DRV_LOG(INFO, "DMAE PCI error!");
+               PMD_DRV_LOG(INFO, sc, "DMAE PCI error!");
                return DMAE_PCI_ERROR;
        }
 
                return DMAE_PCI_ERROR;
        }
 
@@ -537,7 +562,7 @@ void
 elink_cb_event_log(__rte_unused struct bnx2x_softc *sc,
                   __rte_unused const elink_log_id_t elink_log_id, ...)
 {
 elink_cb_event_log(__rte_unused struct bnx2x_softc *sc,
                   __rte_unused const elink_log_id_t elink_log_id, ...)
 {
-       PMD_DRV_LOG(DEBUG, "ELINK EVENT LOG (%d)", elink_log_id);
+       PMD_DRV_LOG(DEBUG, sc, "ELINK EVENT LOG (%d)", elink_log_id);
 }
 
 static int bnx2x_set_spio(struct bnx2x_softc *sc, int spio, uint32_t mode)
 }
 
 static int bnx2x_set_spio(struct bnx2x_softc *sc, int spio, uint32_t mode)
@@ -546,7 +571,7 @@ static int bnx2x_set_spio(struct bnx2x_softc *sc, int spio, uint32_t mode)
 
        /* Only 2 SPIOs are configurable */
        if ((spio != MISC_SPIO_SPIO4) && (spio != MISC_SPIO_SPIO5)) {
 
        /* Only 2 SPIOs are configurable */
        if ((spio != MISC_SPIO_SPIO4) && (spio != MISC_SPIO_SPIO5)) {
-               PMD_DRV_LOG(NOTICE, "Invalid SPIO 0x%x", spio);
+               PMD_DRV_LOG(NOTICE, sc, "Invalid SPIO 0x%x", spio);
                return -1;
        }
 
                return -1;
        }
 
@@ -596,7 +621,7 @@ static int bnx2x_gpio_read(struct bnx2x_softc *sc, int gpio_num, uint8_t port)
        uint32_t gpio_reg;
 
        if (gpio_num > MISC_REGISTERS_GPIO_3) {
        uint32_t gpio_reg;
 
        if (gpio_num > MISC_REGISTERS_GPIO_3) {
-               PMD_DRV_LOG(NOTICE, "Invalid GPIO %d", gpio_num);
+               PMD_DRV_LOG(NOTICE, sc, "Invalid GPIO %d", gpio_num);
                return -1;
        }
 
                return -1;
        }
 
@@ -621,7 +646,7 @@ bnx2x_gpio_write(struct bnx2x_softc *sc, int gpio_num, uint32_t mode, uint8_t po
        uint32_t gpio_reg;
 
        if (gpio_num > MISC_REGISTERS_GPIO_3) {
        uint32_t gpio_reg;
 
        if (gpio_num > MISC_REGISTERS_GPIO_3) {
-               PMD_DRV_LOG(NOTICE, "Invalid GPIO %d", gpio_num);
+               PMD_DRV_LOG(NOTICE, sc, "Invalid GPIO %d", gpio_num);
                return -1;
        }
 
                return -1;
        }
 
@@ -690,7 +715,8 @@ bnx2x_gpio_mult_write(struct bnx2x_softc *sc, uint8_t pins, uint32_t mode)
                break;
 
        default:
                break;
 
        default:
-               PMD_DRV_LOG(NOTICE, "Invalid GPIO mode assignment %d", mode);
+               PMD_DRV_LOG(NOTICE, sc,
+                           "Invalid GPIO mode assignment %d", mode);
                bnx2x_release_hw_lock(sc, HW_LOCK_RESOURCE_GPIO);
                return -1;
        }
                bnx2x_release_hw_lock(sc, HW_LOCK_RESOURCE_GPIO);
                return -1;
        }
@@ -716,7 +742,7 @@ bnx2x_gpio_int_write(struct bnx2x_softc *sc, int gpio_num, uint32_t mode,
        uint32_t gpio_reg;
 
        if (gpio_num > MISC_REGISTERS_GPIO_3) {
        uint32_t gpio_reg;
 
        if (gpio_num > MISC_REGISTERS_GPIO_3) {
-               PMD_DRV_LOG(NOTICE, "Invalid GPIO %d", gpio_num);
+               PMD_DRV_LOG(NOTICE, sc, "Invalid GPIO %d", gpio_num);
                return -1;
        }
 
                return -1;
        }
 
@@ -793,7 +819,7 @@ elink_cb_fw_command(struct bnx2x_softc *sc, uint32_t command, uint32_t param)
        SHMEM_WR(sc, func_mb[mb_idx].drv_mb_param, param);
        SHMEM_WR(sc, func_mb[mb_idx].drv_mb_header, (command | seq));
 
        SHMEM_WR(sc, func_mb[mb_idx].drv_mb_param, param);
        SHMEM_WR(sc, func_mb[mb_idx].drv_mb_header, (command | seq));
 
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
                    "wrote command 0x%08x to FW MB param 0x%08x",
                    (command | seq), param);
 
                    "wrote command 0x%08x to FW MB param 0x%08x",
                    (command | seq), param);
 
@@ -808,7 +834,7 @@ elink_cb_fw_command(struct bnx2x_softc *sc, uint32_t command, uint32_t param)
                rc &= FW_MSG_CODE_MASK;
        } else {
                /* Ruh-roh! */
                rc &= FW_MSG_CODE_MASK;
        } else {
                /* Ruh-roh! */
-               PMD_DRV_LOG(NOTICE, "FW failed to respond!");
+               PMD_DRV_LOG(NOTICE, sc, "FW failed to respond!");
                rc = 0;
        }
 
                rc = 0;
        }
 
@@ -1026,12 +1052,12 @@ bnx2x_sp_post(struct bnx2x_softc *sc, int command, int cid, uint32_t data_hi,
 
        if (common) {
                if (!atomic_load_acq_long(&sc->eq_spq_left)) {
 
        if (common) {
                if (!atomic_load_acq_long(&sc->eq_spq_left)) {
-                       PMD_DRV_LOG(INFO, "EQ ring is full!");
+                       PMD_DRV_LOG(INFO, sc, "EQ ring is full!");
                        return -1;
                }
        } else {
                if (!atomic_load_acq_long(&sc->cq_spq_left)) {
                        return -1;
                }
        } else {
                if (!atomic_load_acq_long(&sc->cq_spq_left)) {
-                       PMD_DRV_LOG(INFO, "SPQ ring is full!");
+                       PMD_DRV_LOG(INFO, sc, "SPQ ring is full!");
                        return -1;
                }
        }
                        return -1;
                }
        }
@@ -1064,7 +1090,7 @@ bnx2x_sp_post(struct bnx2x_softc *sc, int command, int cid, uint32_t data_hi,
                atomic_subtract_acq_long(&sc->cq_spq_left, 1);
        }
 
                atomic_subtract_acq_long(&sc->cq_spq_left, 1);
        }
 
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
                    "SPQE[%x] (%x:%x) (cmd, common?) (%d,%d) hw_cid %x"
                    "data (%x:%x) type(0x%x) left (CQ, EQ) (%lx,%lx)",
                    sc->spq_prod_idx,
                    "SPQE[%x] (%x:%x) (cmd, common?) (%d,%d) hw_cid %x"
                    "data (%x:%x) type(0x%x) left (CQ, EQ) (%lx,%lx)",
                    sc->spq_prod_idx,
@@ -1137,44 +1163,45 @@ bnx2x_sp_event(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
        enum ecore_queue_cmd drv_cmd = ECORE_Q_CMD_MAX;
        struct ecore_queue_sp_obj *q_obj = &BNX2X_SP_OBJ(sc, fp).q_obj;
 
        enum ecore_queue_cmd drv_cmd = ECORE_Q_CMD_MAX;
        struct ecore_queue_sp_obj *q_obj = &BNX2X_SP_OBJ(sc, fp).q_obj;
 
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
                    "fp=%d cid=%d got ramrod #%d state is %x type is %d",
                    fp->index, cid, command, sc->state,
                    rr_cqe->ramrod_cqe.ramrod_type);
 
        switch (command) {
        case (RAMROD_CMD_ID_ETH_CLIENT_UPDATE):
                    "fp=%d cid=%d got ramrod #%d state is %x type is %d",
                    fp->index, cid, command, sc->state,
                    rr_cqe->ramrod_cqe.ramrod_type);
 
        switch (command) {
        case (RAMROD_CMD_ID_ETH_CLIENT_UPDATE):
-               PMD_DRV_LOG(DEBUG, "got UPDATE ramrod. CID %d", cid);
+               PMD_DRV_LOG(DEBUG, sc, "got UPDATE ramrod. CID %d", cid);
                drv_cmd = ECORE_Q_CMD_UPDATE;
                break;
 
        case (RAMROD_CMD_ID_ETH_CLIENT_SETUP):
                drv_cmd = ECORE_Q_CMD_UPDATE;
                break;
 
        case (RAMROD_CMD_ID_ETH_CLIENT_SETUP):
-               PMD_DRV_LOG(DEBUG, "got MULTI[%d] setup ramrod", cid);
+               PMD_DRV_LOG(DEBUG, sc, "got MULTI[%d] setup ramrod", cid);
                drv_cmd = ECORE_Q_CMD_SETUP;
                break;
 
        case (RAMROD_CMD_ID_ETH_TX_QUEUE_SETUP):
                drv_cmd = ECORE_Q_CMD_SETUP;
                break;
 
        case (RAMROD_CMD_ID_ETH_TX_QUEUE_SETUP):
-               PMD_DRV_LOG(DEBUG, "got MULTI[%d] tx-only setup ramrod", cid);
+               PMD_DRV_LOG(DEBUG, sc,
+                           "got MULTI[%d] tx-only setup ramrod", cid);
                drv_cmd = ECORE_Q_CMD_SETUP_TX_ONLY;
                break;
 
        case (RAMROD_CMD_ID_ETH_HALT):
                drv_cmd = ECORE_Q_CMD_SETUP_TX_ONLY;
                break;
 
        case (RAMROD_CMD_ID_ETH_HALT):
-               PMD_DRV_LOG(DEBUG, "got MULTI[%d] halt ramrod", cid);
+               PMD_DRV_LOG(DEBUG, sc, "got MULTI[%d] halt ramrod", cid);
                drv_cmd = ECORE_Q_CMD_HALT;
                break;
 
        case (RAMROD_CMD_ID_ETH_TERMINATE):
                drv_cmd = ECORE_Q_CMD_HALT;
                break;
 
        case (RAMROD_CMD_ID_ETH_TERMINATE):
-               PMD_DRV_LOG(DEBUG, "got MULTI[%d] teminate ramrod", cid);
+               PMD_DRV_LOG(DEBUG, sc, "got MULTI[%d] teminate ramrod", cid);
                drv_cmd = ECORE_Q_CMD_TERMINATE;
                break;
 
        case (RAMROD_CMD_ID_ETH_EMPTY):
                drv_cmd = ECORE_Q_CMD_TERMINATE;
                break;
 
        case (RAMROD_CMD_ID_ETH_EMPTY):
-               PMD_DRV_LOG(DEBUG, "got MULTI[%d] empty ramrod", cid);
+               PMD_DRV_LOG(DEBUG, sc, "got MULTI[%d] empty ramrod", cid);
                drv_cmd = ECORE_Q_CMD_EMPTY;
                break;
 
        default:
                drv_cmd = ECORE_Q_CMD_EMPTY;
                break;
 
        default:
-               PMD_DRV_LOG(DEBUG,
+               PMD_DRV_LOG(DEBUG, sc,
                            "ERROR: unexpected MC reply (%d)"
                            "on fp[%d]", command, fp->index);
                return;
                            "ERROR: unexpected MC reply (%d)"
                            "on fp[%d]", command, fp->index);
                return;
@@ -1196,7 +1223,7 @@ bnx2x_sp_event(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
 
        atomic_add_acq_long(&sc->cq_spq_left, 1);
 
 
        atomic_add_acq_long(&sc->cq_spq_left, 1);
 
-       PMD_DRV_LOG(DEBUG, "sc->cq_spq_left 0x%lx",
+       PMD_DRV_LOG(DEBUG, sc, "sc->cq_spq_left 0x%lx",
                    atomic_load_acq_long(&sc->cq_spq_left));
 }
 
                    atomic_load_acq_long(&sc->cq_spq_left));
 }
 
@@ -1392,7 +1419,7 @@ bnx2x_del_all_macs(struct bnx2x_softc *sc, struct ecore_vlan_mac_obj *mac_obj,
 
        rc = mac_obj->delete_all(sc, mac_obj, &vlan_mac_flags, &ramrod_flags);
        if (rc < 0)
 
        rc = mac_obj->delete_all(sc, mac_obj, &vlan_mac_flags, &ramrod_flags);
        if (rc < 0)
-               PMD_DRV_LOG(ERR, "Failed to delete MACs (%d)", rc);
+               PMD_DRV_LOG(ERR, sc, "Failed to delete MACs (%d)", rc);
 
        return rc;
 }
 
        return rc;
 }
@@ -1543,13 +1570,13 @@ static int bnx2x_nic_load_no_mcp(struct bnx2x_softc *sc)
        int path = SC_PATH(sc);
        int port = SC_PORT(sc);
 
        int path = SC_PATH(sc);
        int port = SC_PORT(sc);
 
-       PMD_DRV_LOG(INFO, "NO MCP - load counts[%d]      %d, %d, %d",
+       PMD_DRV_LOG(INFO, sc, "NO MCP - load counts[%d]      %d, %d, %d",
                    path, load_count[path][0], load_count[path][1],
                    load_count[path][2]);
 
        load_count[path][0]++;
        load_count[path][1 + port]++;
                    path, load_count[path][0], load_count[path][1],
                    load_count[path][2]);
 
        load_count[path][0]++;
        load_count[path][1 + port]++;
-       PMD_DRV_LOG(INFO, "NO MCP - new load counts[%d]  %d, %d, %d",
+       PMD_DRV_LOG(INFO, sc, "NO MCP - new load counts[%d]  %d, %d, %d",
                    path, load_count[path][0], load_count[path][1],
                    load_count[path][2]);
        if (load_count[path][0] == 1)
                    path, load_count[path][0], load_count[path][1],
                    load_count[path][2]);
        if (load_count[path][0] == 1)
@@ -1566,12 +1593,12 @@ static int bnx2x_nic_unload_no_mcp(struct bnx2x_softc *sc)
        int port = SC_PORT(sc);
        int path = SC_PATH(sc);
 
        int port = SC_PORT(sc);
        int path = SC_PATH(sc);
 
-       PMD_DRV_LOG(INFO, "NO MCP - load counts[%d]      %d, %d, %d",
+       PMD_DRV_LOG(INFO, sc, "NO MCP - load counts[%d]      %d, %d, %d",
                    path, load_count[path][0], load_count[path][1],
                    load_count[path][2]);
        load_count[path][0]--;
        load_count[path][1 + port]--;
                    path, load_count[path][0], load_count[path][1],
                    load_count[path][2]);
        load_count[path][0]--;
        load_count[path][1 + port]--;
-       PMD_DRV_LOG(INFO, "NO MCP - new load counts[%d]  %d, %d, %d",
+       PMD_DRV_LOG(INFO, sc, "NO MCP - new load counts[%d]  %d, %d, %d",
                    path, load_count[path][0], load_count[path][1],
                    load_count[path][2]);
        if (load_count[path][0] == 0) {
                    path, load_count[path][0], load_count[path][1],
                    load_count[path][2]);
        if (load_count[path][0] == 0) {
@@ -1651,7 +1678,7 @@ static int bnx2x_func_wait_started(struct bnx2x_softc *sc)
                 */
                struct ecore_func_state_params func_params = { NULL };
 
                 */
                struct ecore_func_state_params func_params = { NULL };
 
-               PMD_DRV_LOG(NOTICE, "Unexpected function state! "
+               PMD_DRV_LOG(NOTICE, sc, "Unexpected function state! "
                            "Forcing STARTED-->TX_STOPPED-->STARTED");
 
                func_params.f_obj = &sc->func_obj;
                            "Forcing STARTED-->TX_STOPPED-->STARTED");
 
                func_params.f_obj = &sc->func_obj;
@@ -1675,7 +1702,7 @@ static int bnx2x_stop_queue(struct bnx2x_softc *sc, int index)
        struct ecore_queue_state_params q_params = { NULL };
        int rc;
 
        struct ecore_queue_state_params q_params = { NULL };
        int rc;
 
-       PMD_DRV_LOG(DEBUG, "stopping queue %d cid %d", index, fp->index);
+       PMD_DRV_LOG(DEBUG, sc, "stopping queue %d cid %d", index, fp->index);
 
        q_params.q_obj = &sc->sp_objs[fp->index].q_obj;
        /* We want to wait for completion in this context */
 
        q_params.q_obj = &sc->sp_objs[fp->index].q_obj;
        /* We want to wait for completion in this context */
@@ -1726,7 +1753,7 @@ static uint8_t bnx2x_wait_sp_comp(struct bnx2x_softc *sc, unsigned long mask)
 
        tmp = atomic_load_acq_long(&sc->sp_state);
        if (tmp & mask) {
 
        tmp = atomic_load_acq_long(&sc->sp_state);
        if (tmp & mask) {
-               PMD_DRV_LOG(INFO, "Filtering completion timed out: "
+               PMD_DRV_LOG(INFO, sc, "Filtering completion timed out: "
                            "sp_state 0x%lx, mask 0x%lx", tmp, mask);
                return FALSE;
        }
                            "sp_state 0x%lx, mask 0x%lx", tmp, mask);
                return FALSE;
        }
@@ -1752,7 +1779,7 @@ static int bnx2x_func_stop(struct bnx2x_softc *sc)
         */
        rc = ecore_func_state_change(sc, &func_params);
        if (rc) {
         */
        rc = ecore_func_state_change(sc, &func_params);
        if (rc) {
-               PMD_DRV_LOG(NOTICE, "FUNC_STOP ramrod failed. "
+               PMD_DRV_LOG(NOTICE, sc, "FUNC_STOP ramrod failed. "
                            "Running a dry transaction");
                bnx2x_set_bit(RAMROD_DRV_CLR_ONLY, &func_params.ramrod_flags);
                return ecore_func_state_change(sc, &func_params);
                            "Running a dry transaction");
                bnx2x_set_bit(RAMROD_DRV_CLR_ONLY, &func_params.ramrod_flags);
                return ecore_func_state_change(sc, &func_params);
@@ -1801,14 +1828,16 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li
        rc = bnx2x_del_all_macs(sc, &sc->sp_objs[0].mac_obj, ECORE_ETH_MAC,
                              FALSE);
        if (rc < 0) {
        rc = bnx2x_del_all_macs(sc, &sc->sp_objs[0].mac_obj, ECORE_ETH_MAC,
                              FALSE);
        if (rc < 0) {
-               PMD_DRV_LOG(NOTICE, "Failed to delete all ETH MACs (%d)", rc);
+               PMD_DRV_LOG(NOTICE, sc,
+                           "Failed to delete all ETH MACs (%d)", rc);
        }
 
        /* Clean up UC list  */
        rc = bnx2x_del_all_macs(sc, &sc->sp_objs[0].mac_obj, ECORE_UC_LIST_MAC,
                              TRUE);
        if (rc < 0) {
        }
 
        /* Clean up UC list  */
        rc = bnx2x_del_all_macs(sc, &sc->sp_objs[0].mac_obj, ECORE_UC_LIST_MAC,
                              TRUE);
        if (rc < 0) {
-               PMD_DRV_LOG(NOTICE, "Failed to delete UC MACs list (%d)", rc);
+               PMD_DRV_LOG(NOTICE, sc,
+                           "Failed to delete UC MACs list (%d)", rc);
        }
 
        /* Disable LLH */
        }
 
        /* Disable LLH */
@@ -1831,7 +1860,7 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li
        rparam.mcast_obj = &sc->mcast_obj;
        rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_DEL);
        if (rc < 0) {
        rparam.mcast_obj = &sc->mcast_obj;
        rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_DEL);
        if (rc < 0) {
-               PMD_DRV_LOG(NOTICE,
+               PMD_DRV_LOG(NOTICE, sc,
                            "Failed to send DEL MCAST command (%d)", rc);
        }
 
                            "Failed to send DEL MCAST command (%d)", rc);
        }
 
@@ -1848,7 +1877,7 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li
         */
        rc = bnx2x_func_wait_started(sc);
        if (rc) {
         */
        rc = bnx2x_func_wait_started(sc);
        if (rc) {
-               PMD_DRV_LOG(NOTICE, "bnx2x_func_wait_started failed");
+               PMD_DRV_LOG(NOTICE, sc, "bnx2x_func_wait_started failed");
        }
 
        /*
        }
 
        /*
@@ -1866,14 +1895,14 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li
         * very wrong has happen.
         */
        if (!bnx2x_wait_sp_comp(sc, ~0x0UL)) {
         * very wrong has happen.
         */
        if (!bnx2x_wait_sp_comp(sc, ~0x0UL)) {
-               PMD_DRV_LOG(NOTICE, "Common slow path ramrods got stuck!");
+               PMD_DRV_LOG(NOTICE, sc, "Common slow path ramrods got stuck!");
        }
 
 unload_error:
 
        rc = bnx2x_func_stop(sc);
        if (rc) {
        }
 
 unload_error:
 
        rc = bnx2x_func_stop(sc);
        if (rc) {
-               PMD_DRV_LOG(NOTICE, "Function stop failed!");
+               PMD_DRV_LOG(NOTICE, sc, "Function stop failed!");
        }
 
        /* disable HW interrupts */
        }
 
        /* disable HW interrupts */
@@ -1882,7 +1911,7 @@ unload_error:
        /* Reset the chip */
        rc = bnx2x_reset_hw(sc, reset_code);
        if (rc) {
        /* Reset the chip */
        rc = bnx2x_reset_hw(sc, reset_code);
        if (rc) {
-               PMD_DRV_LOG(NOTICE, "Hardware reset failed");
+               PMD_DRV_LOG(NOTICE, sc, "Hardware reset failed");
        }
 
        /* Report UNLOAD_DONE to MCP */
        }
 
        /* Report UNLOAD_DONE to MCP */
@@ -1893,7 +1922,7 @@ static void bnx2x_disable_close_the_gate(struct bnx2x_softc *sc)
 {
        uint32_t val;
 
 {
        uint32_t val;
 
-       PMD_DRV_LOG(DEBUG, "Disabling 'close the gates'");
+       PMD_DRV_LOG(DEBUG, sc, "Disabling 'close the gates'");
 
        val = REG_RD(sc, MISC_REG_AEU_GENERAL_MASK);
        val &= ~(MISC_AEU_GENERAL_MASK_REG_AEU_PXP_CLOSE_MASK |
 
        val = REG_RD(sc, MISC_REG_AEU_GENERAL_MASK);
        val &= ~(MISC_AEU_GENERAL_MASK_REG_AEU_PXP_CLOSE_MASK |
@@ -1924,7 +1953,7 @@ static void bnx2x_squeeze_objects(struct bnx2x_softc *sc)
        rc = mac_obj->delete_all(sc, &sc->sp_objs->mac_obj, &vlan_mac_flags,
                                 &ramrod_flags);
        if (rc != 0) {
        rc = mac_obj->delete_all(sc, &sc->sp_objs->mac_obj, &vlan_mac_flags,
                                 &ramrod_flags);
        if (rc != 0) {
-               PMD_DRV_LOG(NOTICE, "Failed to clean ETH MACs (%d)", rc);
+               PMD_DRV_LOG(NOTICE, sc, "Failed to clean ETH MACs (%d)", rc);
        }
 
        /* Cleanup UC list */
        }
 
        /* Cleanup UC list */
@@ -1932,7 +1961,8 @@ static void bnx2x_squeeze_objects(struct bnx2x_softc *sc)
        bnx2x_set_bit(ECORE_UC_LIST_MAC, &vlan_mac_flags);
        rc = mac_obj->delete_all(sc, mac_obj, &vlan_mac_flags, &ramrod_flags);
        if (rc != 0) {
        bnx2x_set_bit(ECORE_UC_LIST_MAC, &vlan_mac_flags);
        rc = mac_obj->delete_all(sc, mac_obj, &vlan_mac_flags, &ramrod_flags);
        if (rc != 0) {
-               PMD_DRV_LOG(NOTICE, "Failed to clean UC list MACs (%d)", rc);
+               PMD_DRV_LOG(NOTICE, sc,
+                           "Failed to clean UC list MACs (%d)", rc);
        }
 
        /* Now clean mcast object... */
        }
 
        /* Now clean mcast object... */
@@ -1943,7 +1973,7 @@ static void bnx2x_squeeze_objects(struct bnx2x_softc *sc)
        /* Add a DEL command... */
        rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_DEL);
        if (rc < 0) {
        /* Add a DEL command... */
        rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_DEL);
        if (rc < 0) {
-               PMD_DRV_LOG(NOTICE,
+               PMD_DRV_LOG(NOTICE, sc,
                            "Failed to send DEL MCAST command (%d)", rc);
        }
 
                            "Failed to send DEL MCAST command (%d)", rc);
        }
 
@@ -1952,7 +1982,7 @@ static void bnx2x_squeeze_objects(struct bnx2x_softc *sc)
        rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_CONT);
        while (rc != 0) {
                if (rc < 0) {
        rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_CONT);
        while (rc != 0) {
                if (rc < 0) {
-                       PMD_DRV_LOG(NOTICE,
+                       PMD_DRV_LOG(NOTICE, sc,
                                    "Failed to clean MCAST object (%d)", rc);
                        return;
                }
                                    "Failed to clean MCAST object (%d)", rc);
                        return;
                }
@@ -1969,7 +1999,7 @@ bnx2x_nic_unload(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_link
        uint8_t global = FALSE;
        uint32_t val;
 
        uint8_t global = FALSE;
        uint32_t val;
 
-       PMD_DRV_LOG(DEBUG, "Starting NIC unload...");
+       PMD_DRV_LOG(DEBUG, sc, "Starting NIC unload...");
 
        /* stop the periodic callout */
        bnx2x_periodic_stop(sc);
 
        /* stop the periodic callout */
        bnx2x_periodic_stop(sc);
@@ -1996,7 +2026,7 @@ bnx2x_nic_unload(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_link
                bnx2x_release_leader_lock(sc);
                mb();
 
                bnx2x_release_leader_lock(sc);
                mb();
 
-               PMD_DRV_LOG(NOTICE, "Can't unload in closed or error state");
+               PMD_DRV_LOG(NOTICE, sc, "Can't unload in closed or error state");
                return -1;
        }
 
                return -1;
        }
 
@@ -2101,7 +2131,7 @@ bnx2x_nic_unload(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_link
                bnx2x_disable_close_the_gate(sc);
        }
 
                bnx2x_disable_close_the_gate(sc);
        }
 
-       PMD_DRV_LOG(DEBUG, "Ended NIC unload");
+       PMD_DRV_LOG(DEBUG, sc, "Ended NIC unload");
 
        return 0;
 }
 
        return 0;
 }
@@ -2249,7 +2279,7 @@ static void bnx2x_ilt_set_info(struct bnx2x_softc *sc)
        struct ecore_ilt *ilt = sc->ilt;
        uint16_t line = 0;
 
        struct ecore_ilt *ilt = sc->ilt;
        uint16_t line = 0;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        ilt->start_line = FUNC_ILT_BASE(SC_FUNC(sc));
 
 
        ilt->start_line = FUNC_ILT_BASE(SC_FUNC(sc));
 
@@ -2403,7 +2433,7 @@ static int bnx2x_alloc_mem(struct bnx2x_softc *sc)
        bnx2x_alloc_ilt_lines_mem(sc);
 
        if (ecore_ilt_mem_op(sc, ILT_MEMOP_ALLOC)) {
        bnx2x_alloc_ilt_lines_mem(sc);
 
        if (ecore_ilt_mem_op(sc, ILT_MEMOP_ALLOC)) {
-               PMD_DRV_LOG(NOTICE, "ecore_ilt_mem_op ILT_MEMOP_ALLOC failed");
+               PMD_DRV_LOG(NOTICE, sc, "ecore_ilt_mem_op ILT_MEMOP_ALLOC failed");
                bnx2x_free_mem(sc);
                return -1;
        }
                bnx2x_free_mem(sc);
                return -1;
        }
@@ -2606,7 +2636,7 @@ static void bnx2x_set_pf_load(struct bnx2x_softc *sc)
 
        bnx2x_acquire_hw_lock(sc, HW_LOCK_RESOURCE_RECOVERY_REG);
 
 
        bnx2x_acquire_hw_lock(sc, HW_LOCK_RESOURCE_RECOVERY_REG);
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        val = REG_RD(sc, BNX2X_RECOVERY_GLOB_REG);
 
 
        val = REG_RD(sc, BNX2X_RECOVERY_GLOB_REG);
 
@@ -2659,14 +2689,14 @@ static uint8_t bnx2x_clear_pf_load(struct bnx2x_softc *sc)
 /* send load requrest to mcp and analyze response */
 static int bnx2x_nic_load_request(struct bnx2x_softc *sc, uint32_t * load_code)
 {
 /* send load requrest to mcp and analyze response */
 static int bnx2x_nic_load_request(struct bnx2x_softc *sc, uint32_t * load_code)
 {
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        /* init fw_seq */
        sc->fw_seq =
            (SHMEM_RD(sc, func_mb[SC_FW_MB_IDX(sc)].drv_mb_header) &
             DRV_MSG_SEQ_NUMBER_MASK);
 
 
        /* init fw_seq */
        sc->fw_seq =
            (SHMEM_RD(sc, func_mb[SC_FW_MB_IDX(sc)].drv_mb_header) &
             DRV_MSG_SEQ_NUMBER_MASK);
 
-       PMD_DRV_LOG(DEBUG, "initial fw_seq 0x%04x", sc->fw_seq);
+       PMD_DRV_LOG(DEBUG, sc, "initial fw_seq 0x%04x", sc->fw_seq);
 
 #ifdef BNX2X_PULSE
        /* get the current FW pulse sequence */
 
 #ifdef BNX2X_PULSE
        /* get the current FW pulse sequence */
@@ -2685,13 +2715,13 @@ static int bnx2x_nic_load_request(struct bnx2x_softc *sc, uint32_t * load_code)
 
        /* if the MCP fails to respond we must abort */
        if (!(*load_code)) {
 
        /* if the MCP fails to respond we must abort */
        if (!(*load_code)) {
-               PMD_DRV_LOG(NOTICE, "MCP response failure!");
+               PMD_DRV_LOG(NOTICE, sc, "MCP response failure!");
                return -1;
        }
 
        /* if MCP refused then must abort */
        if ((*load_code) == FW_MSG_CODE_DRV_LOAD_REFUSED) {
                return -1;
        }
 
        /* if MCP refused then must abort */
        if ((*load_code) == FW_MSG_CODE_DRV_LOAD_REFUSED) {
-               PMD_DRV_LOG(NOTICE, "MCP refused load request");
+               PMD_DRV_LOG(NOTICE, sc, "MCP refused load request");
                return -1;
        }
 
                return -1;
        }
 
@@ -2718,12 +2748,12 @@ static int bnx2x_nic_load_analyze_req(struct bnx2x_softc *sc, uint32_t load_code
 
                /* read loaded FW from chip */
                loaded_fw = REG_RD(sc, XSEM_REG_PRAM);
 
                /* read loaded FW from chip */
                loaded_fw = REG_RD(sc, XSEM_REG_PRAM);
-               PMD_DRV_LOG(DEBUG, "loaded FW 0x%08x / my FW 0x%08x",
+               PMD_DRV_LOG(DEBUG, sc, "loaded FW 0x%08x / my FW 0x%08x",
                            loaded_fw, my_fw);
 
                /* abort nic load if version mismatch */
                if (my_fw != loaded_fw) {
                            loaded_fw, my_fw);
 
                /* abort nic load if version mismatch */
                if (my_fw != loaded_fw) {
-                       PMD_DRV_LOG(NOTICE,
+                       PMD_DRV_LOG(NOTICE, sc,
                                    "FW 0x%08x already loaded (mine is 0x%08x)",
                                    loaded_fw, my_fw);
                        return -1;
                                    "FW 0x%08x already loaded (mine is 0x%08x)",
                                    loaded_fw, my_fw);
                        return -1;
@@ -2738,7 +2768,7 @@ static void bnx2x_nic_load_pmf(struct bnx2x_softc *sc, uint32_t load_code)
 {
        uint32_t ncsi_oem_data_addr;
 
 {
        uint32_t ncsi_oem_data_addr;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        if ((load_code == FW_MSG_CODE_DRV_LOAD_COMMON) ||
            (load_code == FW_MSG_CODE_DRV_LOAD_COMMON_CHIP) ||
 
        if ((load_code == FW_MSG_CODE_DRV_LOAD_COMMON) ||
            (load_code == FW_MSG_CODE_DRV_LOAD_COMMON_CHIP) ||
@@ -2753,7 +2783,7 @@ static void bnx2x_nic_load_pmf(struct bnx2x_softc *sc, uint32_t load_code)
                sc->port.pmf = 0;
        }
 
                sc->port.pmf = 0;
        }
 
-       PMD_DRV_LOG(DEBUG, "pmf %d", sc->port.pmf);
+       PMD_DRV_LOG(DEBUG, sc, "pmf %d", sc->port.pmf);
 
        if (load_code == FW_MSG_CODE_DRV_LOAD_COMMON_CHIP) {
                if (SHMEM2_HAS(sc, ncsi_oem_data_addr)) {
 
        if (load_code == FW_MSG_CODE_DRV_LOAD_COMMON_CHIP) {
                if (SHMEM2_HAS(sc, ncsi_oem_data_addr)) {
@@ -2796,10 +2826,10 @@ static void bnx2x_read_mf_cfg(struct bnx2x_softc *sc)
 
        if (sc->devinfo.mf_info.mf_config[SC_VN(sc)] &
            FUNC_MF_CFG_FUNC_DISABLED) {
 
        if (sc->devinfo.mf_info.mf_config[SC_VN(sc)] &
            FUNC_MF_CFG_FUNC_DISABLED) {
-               PMD_DRV_LOG(DEBUG, "mf_cfg function disabled");
+               PMD_DRV_LOG(DEBUG, sc, "mf_cfg function disabled");
                sc->flags |= BNX2X_MF_FUNC_DIS;
        } else {
                sc->flags |= BNX2X_MF_FUNC_DIS;
        } else {
-               PMD_DRV_LOG(DEBUG, "mf_cfg function enabled");
+               PMD_DRV_LOG(DEBUG, sc, "mf_cfg function enabled");
                sc->flags &= ~BNX2X_MF_FUNC_DIS;
        }
 }
                sc->flags &= ~BNX2X_MF_FUNC_DIS;
        }
 }
@@ -2820,7 +2850,7 @@ static int bnx2x_acquire_alr(struct bnx2x_softc *sc)
        }
 
        if (!(val & (1L << 31))) {
        }
 
        if (!(val & (1L << 31))) {
-               PMD_DRV_LOG(NOTICE, "Cannot acquire MCP access lock register");
+               PMD_DRV_LOG(NOTICE, sc, "Cannot acquire MCP access lock register");
                return -1;
        }
 
                return -1;
        }
 
@@ -2848,7 +2878,7 @@ static void bnx2x_fan_failure(struct bnx2x_softc *sc)
                 ext_phy_config);
 
        /* log the failure */
                 ext_phy_config);
 
        /* log the failure */
-       PMD_DRV_LOG(INFO,
+       PMD_DRV_LOG(INFO, sc,
                    "Fan Failure has caused the driver to shutdown "
                    "the card to prevent permanent damage. "
                    "Please contact OEM Support for assistance");
                    "Fan Failure has caused the driver to shutdown "
                    "the card to prevent permanent damage. "
                    "Please contact OEM Support for assistance");
@@ -2905,7 +2935,7 @@ static void bnx2x_link_attn(struct bnx2x_softc *sc)
                }
        }
 
                }
        }
 
-       bnx2x_link_report(sc);
+       bnx2x_link_report_locked(sc);
 
        if (IS_MF(sc)) {
                bnx2x_link_sync_notify(sc);
 
        if (IS_MF(sc)) {
                bnx2x_link_sync_notify(sc);
@@ -2926,7 +2956,7 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted)
        uint32_t cnt;
 
        if (sc->attn_state & asserted) {
        uint32_t cnt;
 
        if (sc->attn_state & asserted) {
-               PMD_DRV_LOG(ERR, "IGU ERROR attn=0x%08x", asserted);
+               PMD_DRV_LOG(ERR, sc, "IGU ERROR attn=0x%08x", asserted);
        }
 
        bnx2x_acquire_hw_lock(sc, HW_LOCK_RESOURCE_PORT0_ATT_MASK + port);
        }
 
        bnx2x_acquire_hw_lock(sc, HW_LOCK_RESOURCE_PORT0_ATT_MASK + port);
@@ -2944,6 +2974,7 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted)
        if (asserted & ATTN_HARD_WIRED_MASK) {
                if (asserted & ATTN_NIG_FOR_FUNC) {
 
        if (asserted & ATTN_HARD_WIRED_MASK) {
                if (asserted & ATTN_NIG_FOR_FUNC) {
 
+                       bnx2x_acquire_phy_lock(sc);
                        /* save nig interrupt mask */
                        nig_mask = REG_RD(sc, nig_int_mask_addr);
 
                        /* save nig interrupt mask */
                        nig_mask = REG_RD(sc, nig_int_mask_addr);
 
@@ -2958,45 +2989,45 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted)
                }
 
                if (asserted & ATTN_SW_TIMER_4_FUNC) {
                }
 
                if (asserted & ATTN_SW_TIMER_4_FUNC) {
-                       PMD_DRV_LOG(DEBUG, "ATTN_SW_TIMER_4_FUNC!");
+                       PMD_DRV_LOG(DEBUG, sc, "ATTN_SW_TIMER_4_FUNC!");
                }
 
                if (asserted & GPIO_2_FUNC) {
                }
 
                if (asserted & GPIO_2_FUNC) {
-                       PMD_DRV_LOG(DEBUG, "GPIO_2_FUNC!");
+                       PMD_DRV_LOG(DEBUG, sc, "GPIO_2_FUNC!");
                }
 
                if (asserted & GPIO_3_FUNC) {
                }
 
                if (asserted & GPIO_3_FUNC) {
-                       PMD_DRV_LOG(DEBUG, "GPIO_3_FUNC!");
+                       PMD_DRV_LOG(DEBUG, sc, "GPIO_3_FUNC!");
                }
 
                if (asserted & GPIO_4_FUNC) {
                }
 
                if (asserted & GPIO_4_FUNC) {
-                       PMD_DRV_LOG(DEBUG, "GPIO_4_FUNC!");
+                       PMD_DRV_LOG(DEBUG, sc, "GPIO_4_FUNC!");
                }
 
                if (port == 0) {
                        if (asserted & ATTN_GENERAL_ATTN_1) {
                }
 
                if (port == 0) {
                        if (asserted & ATTN_GENERAL_ATTN_1) {
-                               PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_1!");
+                               PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_1!");
                                REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_1, 0x0);
                        }
                        if (asserted & ATTN_GENERAL_ATTN_2) {
                                REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_1, 0x0);
                        }
                        if (asserted & ATTN_GENERAL_ATTN_2) {
-                               PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_2!");
+                               PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_2!");
                                REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_2, 0x0);
                        }
                        if (asserted & ATTN_GENERAL_ATTN_3) {
                                REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_2, 0x0);
                        }
                        if (asserted & ATTN_GENERAL_ATTN_3) {
-                               PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_3!");
+                               PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_3!");
                                REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_3, 0x0);
                        }
                } else {
                        if (asserted & ATTN_GENERAL_ATTN_4) {
                                REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_3, 0x0);
                        }
                } else {
                        if (asserted & ATTN_GENERAL_ATTN_4) {
-                               PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_4!");
+                               PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_4!");
                                REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_4, 0x0);
                        }
                        if (asserted & ATTN_GENERAL_ATTN_5) {
                                REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_4, 0x0);
                        }
                        if (asserted & ATTN_GENERAL_ATTN_5) {
-                               PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_5!");
+                               PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_5!");
                                REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_5, 0x0);
                        }
                        if (asserted & ATTN_GENERAL_ATTN_6) {
                                REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_5, 0x0);
                        }
                        if (asserted & ATTN_GENERAL_ATTN_6) {
-                               PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_6!");
+                               PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_6!");
                                REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_6, 0x0);
                        }
                }
                                REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_6, 0x0);
                        }
                }
@@ -3010,7 +3041,7 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted)
                reg_addr = (BAR_IGU_INTMEM + IGU_CMD_ATTN_BIT_SET_UPPER * 8);
        }
 
                reg_addr = (BAR_IGU_INTMEM + IGU_CMD_ATTN_BIT_SET_UPPER * 8);
        }
 
-       PMD_DRV_LOG(DEBUG, "about to mask 0x%08x at %s addr 0x%08x",
+       PMD_DRV_LOG(DEBUG, sc, "about to mask 0x%08x at %s addr 0x%08x",
                    asserted,
                    (sc->devinfo.int_block == INT_BLOCK_HC) ? "HC" : "IGU",
                    reg_addr);
                    asserted,
                    (sc->devinfo.int_block == INT_BLOCK_HC) ? "HC" : "IGU",
                    reg_addr);
@@ -3032,7 +3063,7 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted)
                                 && (++cnt < MAX_IGU_ATTN_ACK_TO));
 
                        if (!igu_acked) {
                                 && (++cnt < MAX_IGU_ATTN_ACK_TO));
 
                        if (!igu_acked) {
-                               PMD_DRV_LOG(ERR,
+                               PMD_DRV_LOG(ERR, sc,
                                            "Failed to verify IGU ack on time");
                        }
 
                                            "Failed to verify IGU ack on time");
                        }
 
@@ -3041,6 +3072,7 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted)
 
                REG_WR(sc, nig_int_mask_addr, nig_mask);
 
 
                REG_WR(sc, nig_int_mask_addr, nig_mask);
 
+               bnx2x_release_phy_lock(sc);
        }
 }
 
        }
 }
 
@@ -3048,7 +3080,7 @@ static void
 bnx2x_print_next_block(__rte_unused struct bnx2x_softc *sc, __rte_unused int idx,
                     __rte_unused const char *blk)
 {
 bnx2x_print_next_block(__rte_unused struct bnx2x_softc *sc, __rte_unused int idx,
                     __rte_unused const char *blk)
 {
-       PMD_DRV_LOG(INFO, "%s%s", idx ? ", " : "", blk);
+       PMD_DRV_LOG(INFO, sc, "%s%s", idx ? ", " : "", blk);
 }
 
 static int
 }
 
 static int
@@ -3356,7 +3388,7 @@ bnx2x_parity_attn(struct bnx2x_softc *sc, uint8_t * global, uint8_t print,
            (sig[2] & HW_PRTY_ASSERT_SET_2) ||
            (sig[3] & HW_PRTY_ASSERT_SET_3) ||
            (sig[4] & HW_PRTY_ASSERT_SET_4)) {
            (sig[2] & HW_PRTY_ASSERT_SET_2) ||
            (sig[3] & HW_PRTY_ASSERT_SET_3) ||
            (sig[4] & HW_PRTY_ASSERT_SET_4)) {
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "Parity error: HW block parity attention:"
                            "[0]:0x%08x [1]:0x%08x [2]:0x%08x [3]:0x%08x [4]:0x%08x",
                            (uint32_t) (sig[0] & HW_PRTY_ASSERT_SET_0),
                            "Parity error: HW block parity attention:"
                            "[0]:0x%08x [1]:0x%08x [2]:0x%08x [3]:0x%08x [4]:0x%08x",
                            (uint32_t) (sig[0] & HW_PRTY_ASSERT_SET_0),
@@ -3366,7 +3398,7 @@ bnx2x_parity_attn(struct bnx2x_softc *sc, uint8_t * global, uint8_t print,
                            (uint32_t) (sig[4] & HW_PRTY_ASSERT_SET_4));
 
                if (print)
                            (uint32_t) (sig[4] & HW_PRTY_ASSERT_SET_4));
 
                if (print)
-                       PMD_DRV_LOG(INFO, "Parity errors detected in blocks: ");
+                       PMD_DRV_LOG(INFO, sc, "Parity errors detected in blocks: ");
 
                par_num =
                    bnx2x_check_blocks_with_parity0(sc, sig[0] &
 
                par_num =
                    bnx2x_check_blocks_with_parity0(sc, sig[0] &
@@ -3390,7 +3422,7 @@ bnx2x_parity_attn(struct bnx2x_softc *sc, uint8_t * global, uint8_t print,
                                                  par_num, print);
 
                if (print)
                                                  par_num, print);
 
                if (print)
-                       PMD_DRV_LOG(INFO, "");
+                       PMD_DRV_LOG(INFO, sc, "");
 
                return TRUE;
        }
 
                return TRUE;
        }
@@ -3422,64 +3454,64 @@ static void bnx2x_attn_int_deasserted4(struct bnx2x_softc *sc, uint32_t attn)
 
        if (attn & AEU_INPUTS_ATTN_BITS_PGLUE_HW_INTERRUPT) {
                val = REG_RD(sc, PGLUE_B_REG_PGLUE_B_INT_STS_CLR);
 
        if (attn & AEU_INPUTS_ATTN_BITS_PGLUE_HW_INTERRUPT) {
                val = REG_RD(sc, PGLUE_B_REG_PGLUE_B_INT_STS_CLR);
-               PMD_DRV_LOG(INFO, "ERROR: PGLUE hw attention 0x%08x", val);
+               PMD_DRV_LOG(INFO, sc, "ERROR: PGLUE hw attention 0x%08x", val);
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_ADDRESS_ERROR)
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_ADDRESS_ERROR)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_ADDRESS_ERROR");
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_INCORRECT_RCV_BEHAVIOR)
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_ADDRESS_ERROR");
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_INCORRECT_RCV_BEHAVIOR)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_INCORRECT_RCV_BEHAVIOR");
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN)
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_INCORRECT_RCV_BEHAVIOR");
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN");
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_VF_LENGTH_VIOLATION_ATTN)
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN");
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_VF_LENGTH_VIOLATION_ATTN)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_VF_LENGTH_VIOLATION_ATTN");
                if (val &
                    PGLUE_B_PGLUE_B_INT_STS_REG_VF_GRC_SPACE_VIOLATION_ATTN)
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_VF_LENGTH_VIOLATION_ATTN");
                if (val &
                    PGLUE_B_PGLUE_B_INT_STS_REG_VF_GRC_SPACE_VIOLATION_ATTN)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_VF_GRC_SPACE_VIOLATION_ATTN");
                if (val &
                    PGLUE_B_PGLUE_B_INT_STS_REG_VF_MSIX_BAR_VIOLATION_ATTN)
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_VF_GRC_SPACE_VIOLATION_ATTN");
                if (val &
                    PGLUE_B_PGLUE_B_INT_STS_REG_VF_MSIX_BAR_VIOLATION_ATTN)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_VF_MSIX_BAR_VIOLATION_ATTN");
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_ERROR_ATTN)
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_VF_MSIX_BAR_VIOLATION_ATTN");
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_ERROR_ATTN)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_ERROR_ATTN");
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_IN_TWO_RCBS_ATTN)
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_ERROR_ATTN");
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_IN_TWO_RCBS_ATTN)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_IN_TWO_RCBS_ATTN");
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_CSSNOOP_FIFO_OVERFLOW)
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_IN_TWO_RCBS_ATTN");
                if (val & PGLUE_B_PGLUE_B_INT_STS_REG_CSSNOOP_FIFO_OVERFLOW)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_CSSNOOP_FIFO_OVERFLOW");
        }
 
        if (attn & AEU_INPUTS_ATTN_BITS_ATC_HW_INTERRUPT) {
                val = REG_RD(sc, ATC_REG_ATC_INT_STS_CLR);
                                    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_CSSNOOP_FIFO_OVERFLOW");
        }
 
        if (attn & AEU_INPUTS_ATTN_BITS_ATC_HW_INTERRUPT) {
                val = REG_RD(sc, ATC_REG_ATC_INT_STS_CLR);
-               PMD_DRV_LOG(INFO, "ERROR: ATC hw attention 0x%08x", val);
+               PMD_DRV_LOG(INFO, sc, "ERROR: ATC hw attention 0x%08x", val);
                if (val & ATC_ATC_INT_STS_REG_ADDRESS_ERROR)
                if (val & ATC_ATC_INT_STS_REG_ADDRESS_ERROR)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: ATC_ATC_INT_STS_REG_ADDRESS_ERROR");
                if (val & ATC_ATC_INT_STS_REG_ATC_TCPL_TO_NOT_PEND)
                                    "ERROR: ATC_ATC_INT_STS_REG_ADDRESS_ERROR");
                if (val & ATC_ATC_INT_STS_REG_ATC_TCPL_TO_NOT_PEND)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: ATC_ATC_INT_STS_REG_ATC_TCPL_TO_NOT_PEND");
                if (val & ATC_ATC_INT_STS_REG_ATC_GPA_MULTIPLE_HITS)
                                    "ERROR: ATC_ATC_INT_STS_REG_ATC_TCPL_TO_NOT_PEND");
                if (val & ATC_ATC_INT_STS_REG_ATC_GPA_MULTIPLE_HITS)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: ATC_ATC_INT_STS_REG_ATC_GPA_MULTIPLE_HITS");
                if (val & ATC_ATC_INT_STS_REG_ATC_RCPL_TO_EMPTY_CNT)
                                    "ERROR: ATC_ATC_INT_STS_REG_ATC_GPA_MULTIPLE_HITS");
                if (val & ATC_ATC_INT_STS_REG_ATC_RCPL_TO_EMPTY_CNT)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: ATC_ATC_INT_STS_REG_ATC_RCPL_TO_EMPTY_CNT");
                if (val & ATC_ATC_INT_STS_REG_ATC_TCPL_ERROR)
                                    "ERROR: ATC_ATC_INT_STS_REG_ATC_RCPL_TO_EMPTY_CNT");
                if (val & ATC_ATC_INT_STS_REG_ATC_TCPL_ERROR)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: ATC_ATC_INT_STS_REG_ATC_TCPL_ERROR");
                if (val & ATC_ATC_INT_STS_REG_ATC_IREQ_LESS_THAN_STU)
                                    "ERROR: ATC_ATC_INT_STS_REG_ATC_TCPL_ERROR");
                if (val & ATC_ATC_INT_STS_REG_ATC_IREQ_LESS_THAN_STU)
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "ERROR: ATC_ATC_INT_STS_REG_ATC_IREQ_LESS_THAN_STU");
        }
 
        if (attn & (AEU_INPUTS_ATTN_BITS_PGLUE_PARITY_ERROR |
                    AEU_INPUTS_ATTN_BITS_ATC_PARITY_ERROR)) {
                                    "ERROR: ATC_ATC_INT_STS_REG_ATC_IREQ_LESS_THAN_STU");
        }
 
        if (attn & (AEU_INPUTS_ATTN_BITS_PGLUE_PARITY_ERROR |
                    AEU_INPUTS_ATTN_BITS_ATC_PARITY_ERROR)) {
-               PMD_DRV_LOG(INFO,
+               PMD_DRV_LOG(INFO, sc,
                            "ERROR: FATAL parity attention set4 0x%08x",
                            (uint32_t) (attn &
                                        (AEU_INPUTS_ATTN_BITS_PGLUE_PARITY_ERROR
                            "ERROR: FATAL parity attention set4 0x%08x",
                            (uint32_t) (attn &
                                        (AEU_INPUTS_ATTN_BITS_PGLUE_PARITY_ERROR
@@ -3602,11 +3634,11 @@ static void bnx2x_dcc_event(struct bnx2x_softc *sc, uint32_t dcc_event)
  */
                if (sc->devinfo.
                    mf_info.mf_config[SC_VN(sc)] & FUNC_MF_CFG_FUNC_DISABLED) {
  */
                if (sc->devinfo.
                    mf_info.mf_config[SC_VN(sc)] & FUNC_MF_CFG_FUNC_DISABLED) {
-                       PMD_DRV_LOG(DEBUG, "mf_cfg function disabled");
+                       PMD_DRV_LOG(DEBUG, sc, "mf_cfg function disabled");
                        sc->flags |= BNX2X_MF_FUNC_DIS;
                        bnx2x_e1h_disable(sc);
                } else {
                        sc->flags |= BNX2X_MF_FUNC_DIS;
                        bnx2x_e1h_disable(sc);
                } else {
-                       PMD_DRV_LOG(DEBUG, "mf_cfg function enabled");
+                       PMD_DRV_LOG(DEBUG, sc, "mf_cfg function enabled");
                        sc->flags &= ~BNX2X_MF_FUNC_DIS;
                        bnx2x_e1h_enable(sc);
                }
                        sc->flags &= ~BNX2X_MF_FUNC_DIS;
                        bnx2x_e1h_enable(sc);
                }
@@ -3661,7 +3693,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
        last_idx =
            REG_RD8(sc, BAR_XSTRORM_INTMEM + XSTORM_ASSERT_LIST_INDEX_OFFSET);
        if (last_idx)
        last_idx =
            REG_RD8(sc, BAR_XSTRORM_INTMEM + XSTORM_ASSERT_LIST_INDEX_OFFSET);
        if (last_idx)
-               PMD_DRV_LOG(ERR, "XSTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
+               PMD_DRV_LOG(ERR, sc, "XSTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
 
        /* print the asserts */
        for (i = 0; i < STORM_ASSERT_ARRAY_SIZE; i++) {
 
        /* print the asserts */
        for (i = 0; i < STORM_ASSERT_ARRAY_SIZE; i++) {
@@ -3683,7 +3715,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
                           12);
 
                if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
                           12);
 
                if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
-                       PMD_DRV_LOG(ERR,
+                       PMD_DRV_LOG(ERR, sc,
                                    "XSTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x",
                                    i, row3, row2, row1, row0);
                        rc++;
                                    "XSTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x",
                                    i, row3, row2, row1, row0);
                        rc++;
@@ -3696,7 +3728,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
        last_idx =
            REG_RD8(sc, BAR_TSTRORM_INTMEM + TSTORM_ASSERT_LIST_INDEX_OFFSET);
        if (last_idx) {
        last_idx =
            REG_RD8(sc, BAR_TSTRORM_INTMEM + TSTORM_ASSERT_LIST_INDEX_OFFSET);
        if (last_idx) {
-               PMD_DRV_LOG(ERR, "TSTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
+               PMD_DRV_LOG(ERR, sc, "TSTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
        }
 
        /* print the asserts */
        }
 
        /* print the asserts */
@@ -3719,7 +3751,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
                           12);
 
                if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
                           12);
 
                if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
-                       PMD_DRV_LOG(ERR,
+                       PMD_DRV_LOG(ERR, sc,
                                    "TSTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x",
                                    i, row3, row2, row1, row0);
                        rc++;
                                    "TSTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x",
                                    i, row3, row2, row1, row0);
                        rc++;
@@ -3732,7 +3764,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
        last_idx =
            REG_RD8(sc, BAR_CSTRORM_INTMEM + CSTORM_ASSERT_LIST_INDEX_OFFSET);
        if (last_idx) {
        last_idx =
            REG_RD8(sc, BAR_CSTRORM_INTMEM + CSTORM_ASSERT_LIST_INDEX_OFFSET);
        if (last_idx) {
-               PMD_DRV_LOG(ERR, "CSTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
+               PMD_DRV_LOG(ERR, sc, "CSTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
        }
 
        /* print the asserts */
        }
 
        /* print the asserts */
@@ -3755,7 +3787,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
                           12);
 
                if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
                           12);
 
                if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
-                       PMD_DRV_LOG(ERR,
+                       PMD_DRV_LOG(ERR, sc,
                                    "CSTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x",
                                    i, row3, row2, row1, row0);
                        rc++;
                                    "CSTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x",
                                    i, row3, row2, row1, row0);
                        rc++;
@@ -3768,7 +3800,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
        last_idx =
            REG_RD8(sc, BAR_USTRORM_INTMEM + USTORM_ASSERT_LIST_INDEX_OFFSET);
        if (last_idx) {
        last_idx =
            REG_RD8(sc, BAR_USTRORM_INTMEM + USTORM_ASSERT_LIST_INDEX_OFFSET);
        if (last_idx) {
-               PMD_DRV_LOG(ERR, "USTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
+               PMD_DRV_LOG(ERR, sc, "USTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
        }
 
        /* print the asserts */
        }
 
        /* print the asserts */
@@ -3791,7 +3823,7 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
                           12);
 
                if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
                           12);
 
                if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
-                       PMD_DRV_LOG(ERR,
+                       PMD_DRV_LOG(ERR, sc,
                                    "USTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x",
                                    i, row3, row2, row1, row0);
                        rc++;
                                    "USTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x",
                                    i, row3, row2, row1, row0);
                        rc++;
@@ -3840,8 +3872,10 @@ static void bnx2x_attn_int_deasserted3(struct bnx2x_softc *sc, uint32_t attn)
                        if (sc->link_vars.periodic_flags &
                            ELINK_PERIODIC_FLAGS_LINK_EVENT) {
                                /* sync with link */
                        if (sc->link_vars.periodic_flags &
                            ELINK_PERIODIC_FLAGS_LINK_EVENT) {
                                /* sync with link */
+                               bnx2x_acquire_phy_lock(sc);
                                sc->link_vars.periodic_flags &=
                                    ~ELINK_PERIODIC_FLAGS_LINK_EVENT;
                                sc->link_vars.periodic_flags &=
                                    ~ELINK_PERIODIC_FLAGS_LINK_EVENT;
+                               bnx2x_release_phy_lock(sc);
                                if (IS_MF(sc)) {
                                        bnx2x_link_sync_notify(sc);
                                }
                                if (IS_MF(sc)) {
                                        bnx2x_link_sync_notify(sc);
                                }
@@ -3856,7 +3890,7 @@ static void bnx2x_attn_int_deasserted3(struct bnx2x_softc *sc, uint32_t attn)
 
                } else if (attn & BNX2X_MC_ASSERT_BITS) {
 
 
                } else if (attn & BNX2X_MC_ASSERT_BITS) {
 
-                       PMD_DRV_LOG(ERR, "MC assert!");
+                       PMD_DRV_LOG(ERR, sc, "MC assert!");
                        bnx2x_mc_assert(sc);
                        REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_10, 0);
                        REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_9, 0);
                        bnx2x_mc_assert(sc);
                        REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_10, 0);
                        REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_9, 0);
@@ -3866,24 +3900,24 @@ static void bnx2x_attn_int_deasserted3(struct bnx2x_softc *sc, uint32_t attn)
 
                } else if (attn & BNX2X_MCP_ASSERT) {
 
 
                } else if (attn & BNX2X_MCP_ASSERT) {
 
-                       PMD_DRV_LOG(ERR, "MCP assert!");
+                       PMD_DRV_LOG(ERR, sc, "MCP assert!");
                        REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_11, 0);
 
                } else {
                        REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_11, 0);
 
                } else {
-                       PMD_DRV_LOG(ERR,
+                       PMD_DRV_LOG(ERR, sc,
                                    "Unknown HW assert! (attn 0x%08x)", attn);
                }
        }
 
        if (attn & EVEREST_LATCHED_ATTN_IN_USE_MASK) {
                                    "Unknown HW assert! (attn 0x%08x)", attn);
                }
        }
 
        if (attn & EVEREST_LATCHED_ATTN_IN_USE_MASK) {
-               PMD_DRV_LOG(ERR, "LATCHED attention 0x%08x (masked)", attn);
+               PMD_DRV_LOG(ERR, sc, "LATCHED attention 0x%08x (masked)", attn);
                if (attn & BNX2X_GRC_TIMEOUT) {
                        val = REG_RD(sc, MISC_REG_GRC_TIMEOUT_ATTN);
                if (attn & BNX2X_GRC_TIMEOUT) {
                        val = REG_RD(sc, MISC_REG_GRC_TIMEOUT_ATTN);
-                       PMD_DRV_LOG(ERR, "GRC time-out 0x%08x", val);
+                       PMD_DRV_LOG(ERR, sc, "GRC time-out 0x%08x", val);
                }
                if (attn & BNX2X_GRC_RSV) {
                        val = REG_RD(sc, MISC_REG_GRC_RSV_ATTN);
                }
                if (attn & BNX2X_GRC_RSV) {
                        val = REG_RD(sc, MISC_REG_GRC_RSV_ATTN);
-                       PMD_DRV_LOG(ERR, "GRC reserved 0x%08x", val);
+                       PMD_DRV_LOG(ERR, sc, "GRC reserved 0x%08x", val);
                }
                REG_WR(sc, MISC_REG_AEU_CLR_LATCH_SIGNAL, 0x7ff);
        }
                }
                REG_WR(sc, MISC_REG_AEU_CLR_LATCH_SIGNAL, 0x7ff);
        }
@@ -3898,24 +3932,24 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn)
 
        if (attn & AEU_INPUTS_ATTN_BITS_CFC_HW_INTERRUPT) {
                val = REG_RD(sc, CFC_REG_CFC_INT_STS_CLR);
 
        if (attn & AEU_INPUTS_ATTN_BITS_CFC_HW_INTERRUPT) {
                val = REG_RD(sc, CFC_REG_CFC_INT_STS_CLR);
-               PMD_DRV_LOG(ERR, "CFC hw attention 0x%08x", val);
+               PMD_DRV_LOG(ERR, sc, "CFC hw attention 0x%08x", val);
 /* CFC error attention */
                if (val & 0x2) {
 /* CFC error attention */
                if (val & 0x2) {
-                       PMD_DRV_LOG(ERR, "FATAL error from CFC");
+                       PMD_DRV_LOG(ERR, sc, "FATAL error from CFC");
                }
        }
 
        if (attn & AEU_INPUTS_ATTN_BITS_PXP_HW_INTERRUPT) {
                val = REG_RD(sc, PXP_REG_PXP_INT_STS_CLR_0);
                }
        }
 
        if (attn & AEU_INPUTS_ATTN_BITS_PXP_HW_INTERRUPT) {
                val = REG_RD(sc, PXP_REG_PXP_INT_STS_CLR_0);
-               PMD_DRV_LOG(ERR, "PXP hw attention-0 0x%08x", val);
+               PMD_DRV_LOG(ERR, sc, "PXP hw attention-0 0x%08x", val);
 /* RQ_USDMDP_FIFO_OVERFLOW */
                if (val & 0x18000) {
 /* RQ_USDMDP_FIFO_OVERFLOW */
                if (val & 0x18000) {
-                       PMD_DRV_LOG(ERR, "FATAL error from PXP");
+                       PMD_DRV_LOG(ERR, sc, "FATAL error from PXP");
                }
 
                if (!CHIP_IS_E1x(sc)) {
                        val = REG_RD(sc, PXP_REG_PXP_INT_STS_CLR_1);
                }
 
                if (!CHIP_IS_E1x(sc)) {
                        val = REG_RD(sc, PXP_REG_PXP_INT_STS_CLR_1);
-                       PMD_DRV_LOG(ERR, "PXP hw attention-1 0x%08x", val);
+                       PMD_DRV_LOG(ERR, sc, "PXP hw attention-1 0x%08x", val);
                }
        }
 #define PXP2_EOP_ERROR_BIT  PXP2_PXP2_INT_STS_CLR_0_REG_WR_PGLUE_EOP_ERROR
                }
        }
 #define PXP2_EOP_ERROR_BIT  PXP2_PXP2_INT_STS_CLR_0_REG_WR_PGLUE_EOP_ERROR
@@ -3943,7 +3977,7 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn)
                                val0 = REG_RD(sc, PXP2_REG_PXP2_INT_STS_CLR_0);
 
                        /* print the register, since no one can restore it */
                                val0 = REG_RD(sc, PXP2_REG_PXP2_INT_STS_CLR_0);
 
                        /* print the register, since no one can restore it */
-                       PMD_DRV_LOG(ERR,
+                       PMD_DRV_LOG(ERR, sc,
                                    "PXP2_REG_PXP2_INT_STS_CLR_0 0x%08x", val0);
 
                        /*
                                    "PXP2_REG_PXP2_INT_STS_CLR_0 0x%08x", val0);
 
                        /*
@@ -3951,7 +3985,7 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn)
                         * then notify
                         */
                        if (val0 & PXP2_EOP_ERROR_BIT) {
                         * then notify
                         */
                        if (val0 & PXP2_EOP_ERROR_BIT) {
-                               PMD_DRV_LOG(ERR, "PXP2_WR_PGLUE_EOP_ERROR");
+                               PMD_DRV_LOG(ERR, sc, "PXP2_WR_PGLUE_EOP_ERROR");
 
                                /*
                                 * if only PXP2_PXP2_INT_STS_0_REG_WR_PGLUE_EOP_ERROR is
 
                                /*
                                 * if only PXP2_PXP2_INT_STS_0_REG_WR_PGLUE_EOP_ERROR is
@@ -3972,7 +4006,7 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn)
                val &= ~(attn & HW_INTERRUT_ASSERT_SET_2);
                REG_WR(sc, reg_offset, val);
 
                val &= ~(attn & HW_INTERRUT_ASSERT_SET_2);
                REG_WR(sc, reg_offset, val);
 
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "FATAL HW block attention set2 0x%x",
                            (uint32_t) (attn & HW_INTERRUT_ASSERT_SET_2));
                rte_panic("HW block attention set2");
                            "FATAL HW block attention set2 0x%x",
                            (uint32_t) (attn & HW_INTERRUT_ASSERT_SET_2));
                rte_panic("HW block attention set2");
@@ -3987,10 +4021,10 @@ static void bnx2x_attn_int_deasserted1(struct bnx2x_softc *sc, uint32_t attn)
 
        if (attn & AEU_INPUTS_ATTN_BITS_DOORBELLQ_HW_INTERRUPT) {
                val = REG_RD(sc, DORQ_REG_DORQ_INT_STS_CLR);
 
        if (attn & AEU_INPUTS_ATTN_BITS_DOORBELLQ_HW_INTERRUPT) {
                val = REG_RD(sc, DORQ_REG_DORQ_INT_STS_CLR);
-               PMD_DRV_LOG(ERR, "DB hw attention 0x%08x", val);
+               PMD_DRV_LOG(ERR, sc, "DB hw attention 0x%08x", val);
 /* DORQ discard attention */
                if (val & 0x2) {
 /* DORQ discard attention */
                if (val & 0x2) {
-                       PMD_DRV_LOG(ERR, "FATAL error from DORQ");
+                       PMD_DRV_LOG(ERR, sc, "FATAL error from DORQ");
                }
        }
 
                }
        }
 
@@ -4002,7 +4036,7 @@ static void bnx2x_attn_int_deasserted1(struct bnx2x_softc *sc, uint32_t attn)
                val &= ~(attn & HW_INTERRUT_ASSERT_SET_1);
                REG_WR(sc, reg_offset, val);
 
                val &= ~(attn & HW_INTERRUT_ASSERT_SET_1);
                REG_WR(sc, reg_offset, val);
 
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "FATAL HW block attention set1 0x%08x",
                            (uint32_t) (attn & HW_INTERRUT_ASSERT_SET_1));
                rte_panic("HW block attention set1");
                            "FATAL HW block attention set1 0x%08x",
                            (uint32_t) (attn & HW_INTERRUT_ASSERT_SET_1));
                rte_panic("HW block attention set1");
@@ -4023,7 +4057,7 @@ static void bnx2x_attn_int_deasserted0(struct bnx2x_softc *sc, uint32_t attn)
                val &= ~AEU_INPUTS_ATTN_BITS_SPIO5;
                REG_WR(sc, reg_offset, val);
 
                val &= ~AEU_INPUTS_ATTN_BITS_SPIO5;
                REG_WR(sc, reg_offset, val);
 
-               PMD_DRV_LOG(WARNING, "SPIO5 hw attention");
+               PMD_DRV_LOG(WARNING, sc, "SPIO5 hw attention");
 
 /* Fan failure attention */
                elink_hw_reset_phy(&sc->link_params);
 
 /* Fan failure attention */
                elink_hw_reset_phy(&sc->link_params);
@@ -4031,7 +4065,9 @@ static void bnx2x_attn_int_deasserted0(struct bnx2x_softc *sc, uint32_t attn)
        }
 
        if ((attn & sc->link_vars.aeu_int_mask) && sc->port.pmf) {
        }
 
        if ((attn & sc->link_vars.aeu_int_mask) && sc->port.pmf) {
+               bnx2x_acquire_phy_lock(sc);
                elink_handle_module_detect_int(&sc->link_params);
                elink_handle_module_detect_int(&sc->link_params);
+               bnx2x_release_phy_lock(sc);
        }
 
        if (attn & HW_INTERRUT_ASSERT_SET_0) {
        }
 
        if (attn & HW_INTERRUT_ASSERT_SET_0) {
@@ -4113,14 +4149,14 @@ static void bnx2x_attn_int_deasserted(struct bnx2x_softc *sc, uint32_t deasserte
        }
 
        val = ~deasserted;
        }
 
        val = ~deasserted;
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
                    "about to mask 0x%08x at %s addr 0x%08x", val,
                    (sc->devinfo.int_block == INT_BLOCK_HC) ? "HC" : "IGU",
                    reg_addr);
        REG_WR(sc, reg_addr, val);
 
        if (~sc->attn_state & deasserted) {
                    "about to mask 0x%08x at %s addr 0x%08x", val,
                    (sc->devinfo.int_block == INT_BLOCK_HC) ? "HC" : "IGU",
                    reg_addr);
        REG_WR(sc, reg_addr, val);
 
        if (~sc->attn_state & deasserted) {
-               PMD_DRV_LOG(ERR, "IGU error");
+               PMD_DRV_LOG(ERR, sc, "IGU error");
        }
 
        reg_addr = port ? MISC_REG_AEU_MASK_ATTN_FUNC_1 :
        }
 
        reg_addr = port ? MISC_REG_AEU_MASK_ATTN_FUNC_1 :
@@ -4150,12 +4186,12 @@ static void bnx2x_attn_int(struct bnx2x_softc *sc)
        uint32_t asserted = attn_bits & ~attn_ack & ~attn_state;
        uint32_t deasserted = ~attn_bits & attn_ack & attn_state;
 
        uint32_t asserted = attn_bits & ~attn_ack & ~attn_state;
        uint32_t deasserted = ~attn_bits & attn_ack & attn_state;
 
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
                    "attn_bits 0x%08x attn_ack 0x%08x asserted 0x%08x deasserted 0x%08x",
                    attn_bits, attn_ack, asserted, deasserted);
 
        if (~(attn_bits ^ attn_ack) & (attn_bits ^ attn_state)) {
                    "attn_bits 0x%08x attn_ack 0x%08x asserted 0x%08x deasserted 0x%08x",
                    attn_bits, attn_ack, asserted, deasserted);
 
        if (~(attn_bits ^ attn_ack) & (attn_bits ^ attn_state)) {
-               PMD_DRV_LOG(ERR, "BAD attention state");
+               PMD_DRV_LOG(ERR, sc, "BAD attention state");
        }
 
        /* handle bits that were raised */
        }
 
        /* handle bits that were raised */
@@ -4212,7 +4248,7 @@ static void bnx2x_handle_mcast_eqe(struct bnx2x_softc *sc)
        if (sc->mcast_obj.check_pending(&sc->mcast_obj)) {
                rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_CONT);
                if (rc < 0) {
        if (sc->mcast_obj.check_pending(&sc->mcast_obj)) {
                rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_CONT);
                if (rc < 0) {
-                       PMD_DRV_LOG(INFO,
+                       PMD_DRV_LOG(INFO, sc,
                                    "Failed to send pending mcast commands (%d)",
                                    rc);
                }
                                    "Failed to send pending mcast commands (%d)",
                                    rc);
                }
@@ -4232,17 +4268,17 @@ bnx2x_handle_classification_eqe(struct bnx2x_softc *sc, union event_ring_elem *e
 
        switch (le32toh(elem->message.data.eth_event.echo) >> BNX2X_SWCID_SHIFT) {
        case ECORE_FILTER_MAC_PENDING:
 
        switch (le32toh(elem->message.data.eth_event.echo) >> BNX2X_SWCID_SHIFT) {
        case ECORE_FILTER_MAC_PENDING:
-               PMD_DRV_LOG(DEBUG, "Got SETUP_MAC completions");
+               PMD_DRV_LOG(DEBUG, sc, "Got SETUP_MAC completions");
                vlan_mac_obj = &sc->sp_objs[cid].mac_obj;
                break;
 
        case ECORE_FILTER_MCAST_PENDING:
                vlan_mac_obj = &sc->sp_objs[cid].mac_obj;
                break;
 
        case ECORE_FILTER_MCAST_PENDING:
-               PMD_DRV_LOG(DEBUG, "Got SETUP_MCAST completions");
+               PMD_DRV_LOG(DEBUG, sc, "Got SETUP_MCAST completions");
                bnx2x_handle_mcast_eqe(sc);
                return;
 
        default:
                bnx2x_handle_mcast_eqe(sc);
                return;
 
        default:
-               PMD_DRV_LOG(NOTICE, "Unsupported classification command: %d",
+               PMD_DRV_LOG(NOTICE, sc, "Unsupported classification command: %d",
                            elem->message.data.eth_event.echo);
                return;
        }
                            elem->message.data.eth_event.echo);
                return;
        }
@@ -4250,9 +4286,10 @@ bnx2x_handle_classification_eqe(struct bnx2x_softc *sc, union event_ring_elem *e
        rc = vlan_mac_obj->complete(sc, vlan_mac_obj, elem, &ramrod_flags);
 
        if (rc < 0) {
        rc = vlan_mac_obj->complete(sc, vlan_mac_obj, elem, &ramrod_flags);
 
        if (rc < 0) {
-               PMD_DRV_LOG(NOTICE, "Failed to schedule new commands (%d)", rc);
+               PMD_DRV_LOG(NOTICE, sc,
+                           "Failed to schedule new commands (%d)", rc);
        } else if (rc > 0) {
        } else if (rc > 0) {
-               PMD_DRV_LOG(DEBUG, "Scheduled next pending commands...");
+               PMD_DRV_LOG(DEBUG, sc, "Scheduled next pending commands...");
        }
 }
 
        }
 }
 
@@ -4316,7 +4353,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 /* handle eq element */
                switch (opcode) {
                case EVENT_RING_OPCODE_STAT_QUERY:
 /* handle eq element */
                switch (opcode) {
                case EVENT_RING_OPCODE_STAT_QUERY:
-                       PMD_DEBUG_PERIODIC_LOG(DEBUG, "got statistics completion event %d",
+                       PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "got statistics completion event %d",
                                    sc->stats_comp++);
                        /* nothing to do with stats comp */
                        goto next_spqe;
                                    sc->stats_comp++);
                        /* nothing to do with stats comp */
                        goto next_spqe;
@@ -4324,7 +4361,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
                case EVENT_RING_OPCODE_CFC_DEL:
                        /* handle according to cid range */
                        /* we may want to verify here that the sc state is HALTING */
                case EVENT_RING_OPCODE_CFC_DEL:
                        /* handle according to cid range */
                        /* we may want to verify here that the sc state is HALTING */
-                       PMD_DRV_LOG(DEBUG, "got delete ramrod for MULTI[%d]",
+                       PMD_DRV_LOG(DEBUG, sc, "got delete ramrod for MULTI[%d]",
                                    cid);
                        q_obj = bnx2x_cid_to_q_obj(sc, cid);
                        if (q_obj->complete_cmd(sc, q_obj, ECORE_Q_CMD_CFC_DEL)) {
                                    cid);
                        q_obj = bnx2x_cid_to_q_obj(sc, cid);
                        if (q_obj->complete_cmd(sc, q_obj, ECORE_Q_CMD_CFC_DEL)) {
@@ -4333,14 +4370,14 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
                        goto next_spqe;
 
                case EVENT_RING_OPCODE_STOP_TRAFFIC:
                        goto next_spqe;
 
                case EVENT_RING_OPCODE_STOP_TRAFFIC:
-                       PMD_DRV_LOG(DEBUG, "got STOP TRAFFIC");
+                       PMD_DRV_LOG(DEBUG, sc, "got STOP TRAFFIC");
                        if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_TX_STOP)) {
                                break;
                        }
                        goto next_spqe;
 
                case EVENT_RING_OPCODE_START_TRAFFIC:
                        if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_TX_STOP)) {
                                break;
                        }
                        goto next_spqe;
 
                case EVENT_RING_OPCODE_START_TRAFFIC:
-                       PMD_DRV_LOG(DEBUG, "got START TRAFFIC");
+                       PMD_DRV_LOG(DEBUG, sc, "got START TRAFFIC");
                        if (f_obj->complete_cmd
                            (sc, f_obj, ECORE_F_CMD_TX_START)) {
                                break;
                        if (f_obj->complete_cmd
                            (sc, f_obj, ECORE_F_CMD_TX_START)) {
                                break;
@@ -4350,7 +4387,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
                case EVENT_RING_OPCODE_FUNCTION_UPDATE:
                        echo = elem->message.data.function_update_event.echo;
                        if (echo == SWITCH_UPDATE) {
                case EVENT_RING_OPCODE_FUNCTION_UPDATE:
                        echo = elem->message.data.function_update_event.echo;
                        if (echo == SWITCH_UPDATE) {
-                               PMD_DRV_LOG(DEBUG,
+                               PMD_DRV_LOG(DEBUG, sc,
                                            "got FUNC_SWITCH_UPDATE ramrod");
                                if (f_obj->complete_cmd(sc, f_obj,
                                                        ECORE_F_CMD_SWITCH_UPDATE))
                                            "got FUNC_SWITCH_UPDATE ramrod");
                                if (f_obj->complete_cmd(sc, f_obj,
                                                        ECORE_F_CMD_SWITCH_UPDATE))
@@ -4358,7 +4395,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
                                        break;
                                }
                        } else {
                                        break;
                                }
                        } else {
-                               PMD_DRV_LOG(DEBUG,
+                               PMD_DRV_LOG(DEBUG, sc,
                                            "AFEX: ramrod completed FUNCTION_UPDATE");
                                f_obj->complete_cmd(sc, f_obj,
                                                    ECORE_F_CMD_AFEX_UPDATE);
                                            "AFEX: ramrod completed FUNCTION_UPDATE");
                                f_obj->complete_cmd(sc, f_obj,
                                                    ECORE_F_CMD_AFEX_UPDATE);
@@ -4374,14 +4411,14 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
                        goto next_spqe;
 
                case EVENT_RING_OPCODE_FUNCTION_START:
                        goto next_spqe;
 
                case EVENT_RING_OPCODE_FUNCTION_START:
-                       PMD_DRV_LOG(DEBUG, "got FUNC_START ramrod");
+                       PMD_DRV_LOG(DEBUG, sc, "got FUNC_START ramrod");
                        if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_START)) {
                                break;
                        }
                        goto next_spqe;
 
                case EVENT_RING_OPCODE_FUNCTION_STOP:
                        if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_START)) {
                                break;
                        }
                        goto next_spqe;
 
                case EVENT_RING_OPCODE_FUNCTION_STOP:
-                       PMD_DRV_LOG(DEBUG, "got FUNC_STOP ramrod");
+                       PMD_DRV_LOG(DEBUG, sc, "got FUNC_STOP ramrod");
                        if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_STOP)) {
                                break;
                        }
                        if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_STOP)) {
                                break;
                        }
@@ -4393,7 +4430,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
                case (EVENT_RING_OPCODE_RSS_UPDATE_RULES | BNX2X_STATE_OPENING_WAITING_PORT):
                        cid =
                            elem->message.data.eth_event.echo & BNX2X_SWCID_MASK;
                case (EVENT_RING_OPCODE_RSS_UPDATE_RULES | BNX2X_STATE_OPENING_WAITING_PORT):
                        cid =
                            elem->message.data.eth_event.echo & BNX2X_SWCID_MASK;
-                       PMD_DRV_LOG(DEBUG, "got RSS_UPDATE ramrod. CID %d",
+                       PMD_DRV_LOG(DEBUG, sc, "got RSS_UPDATE ramrod. CID %d",
                                    cid);
                        rss_raw->clear_pending(rss_raw);
                        break;
                                    cid);
                        rss_raw->clear_pending(rss_raw);
                        break;
@@ -4404,7 +4441,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
                case (EVENT_RING_OPCODE_CLASSIFICATION_RULES | BNX2X_STATE_OPEN):
                case (EVENT_RING_OPCODE_CLASSIFICATION_RULES | BNX2X_STATE_DIAG):
                case (EVENT_RING_OPCODE_CLASSIFICATION_RULES | BNX2X_STATE_CLOSING_WAITING_HALT):
                case (EVENT_RING_OPCODE_CLASSIFICATION_RULES | BNX2X_STATE_OPEN):
                case (EVENT_RING_OPCODE_CLASSIFICATION_RULES | BNX2X_STATE_DIAG):
                case (EVENT_RING_OPCODE_CLASSIFICATION_RULES | BNX2X_STATE_CLOSING_WAITING_HALT):
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "got (un)set mac ramrod");
                        bnx2x_handle_classification_eqe(sc, elem);
                        break;
                                    "got (un)set mac ramrod");
                        bnx2x_handle_classification_eqe(sc, elem);
                        break;
@@ -4412,7 +4449,7 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
                case (EVENT_RING_OPCODE_MULTICAST_RULES | BNX2X_STATE_OPEN):
                case (EVENT_RING_OPCODE_MULTICAST_RULES | BNX2X_STATE_DIAG):
                case (EVENT_RING_OPCODE_MULTICAST_RULES | BNX2X_STATE_CLOSING_WAITING_HALT):
                case (EVENT_RING_OPCODE_MULTICAST_RULES | BNX2X_STATE_OPEN):
                case (EVENT_RING_OPCODE_MULTICAST_RULES | BNX2X_STATE_DIAG):
                case (EVENT_RING_OPCODE_MULTICAST_RULES | BNX2X_STATE_CLOSING_WAITING_HALT):
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "got mcast ramrod");
                        bnx2x_handle_mcast_eqe(sc);
                        break;
                                    "got mcast ramrod");
                        bnx2x_handle_mcast_eqe(sc);
                        break;
@@ -4420,14 +4457,14 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
                case (EVENT_RING_OPCODE_FILTERS_RULES | BNX2X_STATE_OPEN):
                case (EVENT_RING_OPCODE_FILTERS_RULES | BNX2X_STATE_DIAG):
                case (EVENT_RING_OPCODE_FILTERS_RULES | BNX2X_STATE_CLOSING_WAITING_HALT):
                case (EVENT_RING_OPCODE_FILTERS_RULES | BNX2X_STATE_OPEN):
                case (EVENT_RING_OPCODE_FILTERS_RULES | BNX2X_STATE_DIAG):
                case (EVENT_RING_OPCODE_FILTERS_RULES | BNX2X_STATE_CLOSING_WAITING_HALT):
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "got rx_mode ramrod");
                        bnx2x_handle_rx_mode_eqe(sc);
                        break;
 
                default:
                        /* unknown event log error and continue */
                                    "got rx_mode ramrod");
                        bnx2x_handle_rx_mode_eqe(sc);
                        break;
 
                default:
                        /* unknown event log error and continue */
-                       PMD_DRV_LOG(INFO, "Unknown EQ event %d, sc->state 0x%x",
+                       PMD_DRV_LOG(INFO, sc, "Unknown EQ event %d, sc->state 0x%x",
                                    elem->message.opcode, sc->state);
                }
 
                                    elem->message.opcode, sc->state);
                }
 
@@ -4453,12 +4490,16 @@ static int bnx2x_handle_sp_tq(struct bnx2x_softc *sc)
        uint16_t status;
        int rc = 0;
 
        uint16_t status;
        int rc = 0;
 
+       PMD_DRV_LOG(DEBUG, sc, "---> SP TASK <---");
+
        /* what work needs to be performed? */
        status = bnx2x_update_dsb_idx(sc);
 
        /* what work needs to be performed? */
        status = bnx2x_update_dsb_idx(sc);
 
+       PMD_DRV_LOG(DEBUG, sc, "dsb status 0x%04x", status);
+
        /* HW attentions */
        if (status & BNX2X_DEF_SB_ATT_IDX) {
        /* HW attentions */
        if (status & BNX2X_DEF_SB_ATT_IDX) {
-               PMD_DRV_LOG(DEBUG, "---> ATTN INTR <---");
+               PMD_DRV_LOG(DEBUG, sc, "---> ATTN INTR <---");
                bnx2x_attn_int(sc);
                status &= ~BNX2X_DEF_SB_ATT_IDX;
                rc = 1;
                bnx2x_attn_int(sc);
                status &= ~BNX2X_DEF_SB_ATT_IDX;
                rc = 1;
@@ -4467,7 +4508,7 @@ static int bnx2x_handle_sp_tq(struct bnx2x_softc *sc)
        /* SP events: STAT_QUERY and others */
        if (status & BNX2X_DEF_SB_IDX) {
 /* handle EQ completions */
        /* SP events: STAT_QUERY and others */
        if (status & BNX2X_DEF_SB_IDX) {
 /* handle EQ completions */
-               PMD_DEBUG_PERIODIC_LOG(DEBUG, "---> EQ INTR <---");
+               PMD_DRV_LOG(DEBUG, sc, "---> EQ INTR <---");
                bnx2x_eq_int(sc);
                bnx2x_ack_sb(sc, sc->igu_dsb_id, USTORM_ID,
                           le16toh(sc->def_idx), IGU_INT_NOP, 1);
                bnx2x_eq_int(sc);
                bnx2x_ack_sb(sc, sc->igu_dsb_id, USTORM_ID,
                           le16toh(sc->def_idx), IGU_INT_NOP, 1);
@@ -4476,7 +4517,7 @@ static int bnx2x_handle_sp_tq(struct bnx2x_softc *sc)
 
        /* if status is non zero then something went wrong */
        if (unlikely(status)) {
 
        /* if status is non zero then something went wrong */
        if (unlikely(status)) {
-               PMD_DRV_LOG(INFO,
+               PMD_DRV_LOG(INFO, sc,
                            "Got an unknown SP interrupt! (0x%04x)", status);
        }
 
                            "Got an unknown SP interrupt! (0x%04x)", status);
        }
 
@@ -4492,7 +4533,8 @@ static void bnx2x_handle_fp_tq(struct bnx2x_fastpath *fp, int scan_fp)
        struct bnx2x_softc *sc = fp->sc;
        uint8_t more_rx = FALSE;
 
        struct bnx2x_softc *sc = fp->sc;
        uint8_t more_rx = FALSE;
 
-       PMD_DRV_LOG(DEBUG, "---> FP TASK QUEUE (%d) <--", fp->index);
+       PMD_DEBUG_PERIODIC_LOG(DEBUG, sc,
+                              "---> FP TASK QUEUE (%d) <--", fp->index);
 
        /* update the fastpath index */
        bnx2x_update_fp_sb_idx(fp);
 
        /* update the fastpath index */
        bnx2x_update_fp_sb_idx(fp);
@@ -4542,25 +4584,31 @@ int bnx2x_intr_legacy(struct bnx2x_softc *sc, int scan_fp)
                return 0;
        }
 
                return 0;
        }
 
-       PMD_DEBUG_PERIODIC_LOG(DEBUG, "Interrupt status 0x%04x", status);
+       PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "Interrupt status 0x%04x", status);
        //bnx2x_dump_status_block(sc);
 
        FOR_EACH_ETH_QUEUE(sc, i) {
                fp = &sc->fp[i];
                mask = (0x2 << (fp->index + CNIC_SUPPORT(sc)));
                if (status & mask) {
        //bnx2x_dump_status_block(sc);
 
        FOR_EACH_ETH_QUEUE(sc, i) {
                fp = &sc->fp[i];
                mask = (0x2 << (fp->index + CNIC_SUPPORT(sc)));
                if (status & mask) {
+               /* acknowledge and disable further fastpath interrupts */
+                       bnx2x_ack_sb(sc, fp->igu_sb_id, USTORM_ID,
+                                    0, IGU_INT_DISABLE, 0);
                        bnx2x_handle_fp_tq(fp, scan_fp);
                        status &= ~mask;
                }
        }
 
        if (unlikely(status & 0x1)) {
                        bnx2x_handle_fp_tq(fp, scan_fp);
                        status &= ~mask;
                }
        }
 
        if (unlikely(status & 0x1)) {
+               /* acknowledge and disable further slowpath interrupts */
+               bnx2x_ack_sb(sc, sc->igu_dsb_id, USTORM_ID,
+                            0, IGU_INT_DISABLE, 0);
                rc = bnx2x_handle_sp_tq(sc);
                status &= ~0x1;
        }
 
        if (unlikely(status)) {
                rc = bnx2x_handle_sp_tq(sc);
                status &= ~0x1;
        }
 
        if (unlikely(status)) {
-               PMD_DRV_LOG(WARNING,
+               PMD_DRV_LOG(WARNING, sc,
                            "Unexpected fastpath status (0x%08x)!", status);
        }
 
                            "Unexpected fastpath status (0x%08x)!", status);
        }
 
@@ -4596,7 +4644,7 @@ static void bnx2x_init_func_obj(struct bnx2x_softc *sc)
 {
        sc->dmae_ready = 0;
 
 {
        sc->dmae_ready = 0;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        ecore_init_func_obj(sc,
                            &sc->func_obj,
 
        ecore_init_func_obj(sc,
                            &sc->func_obj,
@@ -4612,7 +4660,7 @@ static int bnx2x_init_hw(struct bnx2x_softc *sc, uint32_t load_code)
        struct ecore_func_state_params func_params = { NULL };
        int rc;
 
        struct ecore_func_state_params func_params = { NULL };
        int rc;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        /* prepare the parameters for function state transitions */
        bnx2x_set_bit(RAMROD_COMP_WAIT, &func_params.ramrod_flags);
 
        /* prepare the parameters for function state transitions */
        bnx2x_set_bit(RAMROD_COMP_WAIT, &func_params.ramrod_flags);
@@ -5201,7 +5249,7 @@ static void bnx2x_init_internal(struct bnx2x_softc *sc, uint32_t load_code)
                break;
 
        default:
                break;
 
        default:
-               PMD_DRV_LOG(NOTICE, "Unknown load_code (0x%x) from MCP",
+               PMD_DRV_LOG(NOTICE, sc, "Unknown load_code (0x%x) from MCP",
                            load_code);
                break;
        }
                            load_code);
                break;
        }
@@ -5292,7 +5340,7 @@ bnx2x_extract_max_cfg(__rte_unused struct bnx2x_softc *sc, uint32_t mf_cfg)
                            FUNC_MF_CFG_MAX_BW_SHIFT);
 
        if (!max_cfg) {
                            FUNC_MF_CFG_MAX_BW_SHIFT);
 
        if (!max_cfg) {
-               PMD_DRV_LOG(DEBUG,
+               PMD_DRV_LOG(DEBUG, sc,
                            "Max BW configured to 0 - using 100 instead");
                max_cfg = 100;
        }
                            "Max BW configured to 0 - using 100 instead");
                max_cfg = 100;
        }
@@ -5556,7 +5604,7 @@ static void bnx2x_igu_int_enable(struct bnx2x_softc *sc)
 
        val |= IGU_PF_CONF_FUNC_EN;
 
 
        val |= IGU_PF_CONF_FUNC_EN;
 
-       PMD_DRV_LOG(DEBUG, "write 0x%x to IGU mode %s",
+       PMD_DRV_LOG(DEBUG, sc, "write 0x%x to IGU mode %s",
                    val, ((msix) ? "MSI-X" : ((msi) ? "MSI" : "INTx")));
 
        REG_WR(sc, IGU_REG_PF_CONFIGURATION, val);
                    val, ((msix) ? "MSI-X" : ((msi) ? "MSI" : "INTx")));
 
        REG_WR(sc, IGU_REG_PF_CONFIGURATION, val);
@@ -5604,7 +5652,7 @@ static void bnx2x_hc_int_disable(struct bnx2x_softc *sc)
 
        REG_WR(sc, addr, val);
        if (REG_RD(sc, addr) != val) {
 
        REG_WR(sc, addr, val);
        if (REG_RD(sc, addr) != val) {
-               PMD_DRV_LOG(ERR, "proper val not read from HC IGU!");
+               PMD_DRV_LOG(ERR, sc, "proper val not read from HC IGU!");
        }
 }
 
        }
 }
 
@@ -5615,14 +5663,14 @@ static void bnx2x_igu_int_disable(struct bnx2x_softc *sc)
        val &= ~(IGU_PF_CONF_MSI_MSIX_EN |
                 IGU_PF_CONF_INT_LINE_EN | IGU_PF_CONF_ATTN_BIT_EN);
 
        val &= ~(IGU_PF_CONF_MSI_MSIX_EN |
                 IGU_PF_CONF_INT_LINE_EN | IGU_PF_CONF_ATTN_BIT_EN);
 
-       PMD_DRV_LOG(DEBUG, "write %x to IGU", val);
+       PMD_DRV_LOG(DEBUG, sc, "write %x to IGU", val);
 
        /* flush all outstanding writes */
        mb();
 
        REG_WR(sc, IGU_REG_PF_CONFIGURATION, val);
        if (REG_RD(sc, IGU_REG_PF_CONFIGURATION) != val) {
 
        /* flush all outstanding writes */
        mb();
 
        REG_WR(sc, IGU_REG_PF_CONFIGURATION, val);
        if (REG_RD(sc, IGU_REG_PF_CONFIGURATION) != val) {
-               PMD_DRV_LOG(ERR, "proper val not read from IGU!");
+               PMD_DRV_LOG(ERR, sc, "proper val not read from IGU!");
        }
 }
 
        }
 }
 
@@ -5639,7 +5687,7 @@ static void bnx2x_nic_init(struct bnx2x_softc *sc, int load_code)
 {
        int i;
 
 {
        int i;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        for (i = 0; i < sc->num_queues; i++) {
                bnx2x_init_eth_fp(sc, i);
 
        for (i = 0; i < sc->num_queues; i++) {
                bnx2x_init_eth_fp(sc, i);
@@ -5769,7 +5817,7 @@ static int bnx2x_set_power_state(struct bnx2x_softc *sc, uint8_t state)
 
        /* If there is no power capability, silently succeed */
        if (!(sc->devinfo.pcie_cap_flags & BNX2X_PM_CAPABLE_FLAG)) {
 
        /* If there is no power capability, silently succeed */
        if (!(sc->devinfo.pcie_cap_flags & BNX2X_PM_CAPABLE_FLAG)) {
-               PMD_DRV_LOG(WARNING, "No power capability");
+               PMD_DRV_LOG(WARNING, sc, "No power capability");
                return 0;
        }
 
                return 0;
        }
 
@@ -5814,7 +5862,7 @@ static int bnx2x_set_power_state(struct bnx2x_softc *sc, uint8_t state)
                break;
 
        default:
                break;
 
        default:
-               PMD_DRV_LOG(NOTICE, "Can't support PCI power state = %d",
+               PMD_DRV_LOG(NOTICE, sc, "Can't support PCI power state = %d",
                            state);
                return -1;
        }
                            state);
                return -1;
        }
@@ -5832,7 +5880,7 @@ static uint8_t bnx2x_trylock_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
 
        /* Validating that the resource is within range */
        if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
 
        /* Validating that the resource is within range */
        if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
-               PMD_DRV_LOG(INFO,
+               PMD_DRV_LOG(INFO, sc,
                            "resource(0x%x) > HW_LOCK_MAX_RESOURCE_VALUE(0x%x)",
                            resource, HW_LOCK_MAX_RESOURCE_VALUE);
                return FALSE;
                            "resource(0x%x) > HW_LOCK_MAX_RESOURCE_VALUE(0x%x)",
                            resource, HW_LOCK_MAX_RESOURCE_VALUE);
                return FALSE;
@@ -5852,7 +5900,7 @@ static uint8_t bnx2x_trylock_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
                return TRUE;
        }
 
                return TRUE;
        }
 
-       PMD_DRV_LOG(NOTICE, "Failed to get a resource lock 0x%x", resource);
+       PMD_DRV_LOG(NOTICE, sc, "Failed to get a resource lock 0x%x", resource);
 
        return FALSE;
 }
 
        return FALSE;
 }
@@ -5945,7 +5993,7 @@ static int bnx2x_er_poll_igu_vq(struct bnx2x_softc *sc)
        } while (cnt-- > 0);
 
        if (cnt <= 0) {
        } while (cnt-- > 0);
 
        if (cnt <= 0) {
-               PMD_DRV_LOG(NOTICE, "Still pending IGU requests bits=0x%08x!",
+               PMD_DRV_LOG(NOTICE, sc, "Still pending IGU requests bits=0x%08x!",
                            pend_bits);
                return -1;
        }
                            pend_bits);
                return -1;
        }
@@ -6026,7 +6074,7 @@ static int bnx2x_init_shmem(struct bnx2x_softc *sc)
 
        } while (cnt++ < (MCP_TIMEOUT / MCP_ONE_TIMEOUT));
 
 
        } while (cnt++ < (MCP_TIMEOUT / MCP_ONE_TIMEOUT));
 
-       PMD_DRV_LOG(NOTICE, "BAD MCP validity signature");
+       PMD_DRV_LOG(NOTICE, sc, "BAD MCP validity signature");
 
        return -1;
 }
 
        return -1;
 }
@@ -6181,7 +6229,7 @@ static int bnx2x_process_kill(struct bnx2x_softc *sc, uint8_t global)
        } while (cnt-- > 0);
 
        if (cnt <= 0) {
        } while (cnt-- > 0);
 
        if (cnt <= 0) {
-               PMD_DRV_LOG(NOTICE,
+               PMD_DRV_LOG(NOTICE, sc,
                            "ERROR: Tetris buffer didn't get empty or there "
                            "are still outstanding read requests after 1s! "
                            "sr_cnt=0x%08x, blk_cnt=0x%08x, port_is_idle_0=0x%08x, "
                            "ERROR: Tetris buffer didn't get empty or there "
                            "are still outstanding read requests after 1s! "
                            "sr_cnt=0x%08x, blk_cnt=0x%08x, port_is_idle_0=0x%08x, "
@@ -6254,14 +6302,14 @@ static int bnx2x_leader_reset(struct bnx2x_softc *sc)
                load_code = bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_REQ,
                                           DRV_MSG_CODE_LOAD_REQ_WITH_LFA);
                if (!load_code) {
                load_code = bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_REQ,
                                           DRV_MSG_CODE_LOAD_REQ_WITH_LFA);
                if (!load_code) {
-                       PMD_DRV_LOG(NOTICE, "MCP response failure, aborting");
+                       PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting");
                        rc = -1;
                        goto exit_leader_reset;
                }
 
                if ((load_code != FW_MSG_CODE_DRV_LOAD_COMMON_CHIP) &&
                    (load_code != FW_MSG_CODE_DRV_LOAD_COMMON)) {
                        rc = -1;
                        goto exit_leader_reset;
                }
 
                if ((load_code != FW_MSG_CODE_DRV_LOAD_COMMON_CHIP) &&
                    (load_code != FW_MSG_CODE_DRV_LOAD_COMMON)) {
-                       PMD_DRV_LOG(NOTICE,
+                       PMD_DRV_LOG(NOTICE, sc,
                                    "MCP unexpected response, aborting");
                        rc = -1;
                        goto exit_leader_reset2;
                                    "MCP unexpected response, aborting");
                        rc = -1;
                        goto exit_leader_reset2;
@@ -6269,7 +6317,7 @@ static int bnx2x_leader_reset(struct bnx2x_softc *sc)
 
                load_code = bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
                if (!load_code) {
 
                load_code = bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
                if (!load_code) {
-                       PMD_DRV_LOG(NOTICE, "MCP response failure, aborting");
+                       PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting");
                        rc = -1;
                        goto exit_leader_reset2;
                }
                        rc = -1;
                        goto exit_leader_reset2;
                }
@@ -6277,7 +6325,7 @@ static int bnx2x_leader_reset(struct bnx2x_softc *sc)
 
        /* try to recover after the failure */
        if (bnx2x_process_kill(sc, global)) {
 
        /* try to recover after the failure */
        if (bnx2x_process_kill(sc, global)) {
-               PMD_DRV_LOG(NOTICE, "Something bad occurred on engine %d!",
+               PMD_DRV_LOG(NOTICE, sc, "Something bad occurred on engine %d!",
                            SC_PATH(sc));
                rc = -1;
                goto exit_leader_reset2;
                            SC_PATH(sc));
                rc = -1;
                goto exit_leader_reset2;
@@ -6436,12 +6484,12 @@ bnx2x_pf_rx_q_prep(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
        /* validate rings have enough entries to cross high thresholds */
        if (sc->dropless_fc &&
            pause->bd_th_hi + FW_PREFETCH_CNT > sc->rx_ring_size) {
        /* validate rings have enough entries to cross high thresholds */
        if (sc->dropless_fc &&
            pause->bd_th_hi + FW_PREFETCH_CNT > sc->rx_ring_size) {
-               PMD_DRV_LOG(WARNING, "rx bd ring threshold limit");
+               PMD_DRV_LOG(WARNING, sc, "rx bd ring threshold limit");
        }
 
        if (sc->dropless_fc &&
            pause->rcq_th_hi + FW_PREFETCH_CNT > USABLE_RCQ_ENTRIES(rxq)) {
        }
 
        if (sc->dropless_fc &&
            pause->rcq_th_hi + FW_PREFETCH_CNT > USABLE_RCQ_ENTRIES(rxq)) {
-               PMD_DRV_LOG(WARNING, "rcq ring threshold limit");
+               PMD_DRV_LOG(WARNING, sc, "rcq ring threshold limit");
        }
 
        pause->pri_map = 1;
        }
 
        pause->pri_map = 1;
@@ -6512,7 +6560,7 @@ bnx2x_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, uint8_t lea
        struct ecore_queue_setup_params *setup_params = &q_params.params.setup;
        int rc;
 
        struct ecore_queue_setup_params *setup_params = &q_params.params.setup;
        int rc;
 
-       PMD_DRV_LOG(DEBUG, "setting up queue %d", fp->index);
+       PMD_DRV_LOG(DEBUG, sc, "setting up queue %d", fp->index);
 
        bnx2x_ack_sb(sc, fp->igu_sb_id, USTORM_ID, 0, IGU_INT_ENABLE, 0);
 
 
        bnx2x_ack_sb(sc, fp->igu_sb_id, USTORM_ID, 0, IGU_INT_ENABLE, 0);
 
@@ -6530,11 +6578,11 @@ bnx2x_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, uint8_t lea
        /* Change the state to INIT */
        rc = ecore_queue_state_change(sc, &q_params);
        if (rc) {
        /* Change the state to INIT */
        rc = ecore_queue_state_change(sc, &q_params);
        if (rc) {
-               PMD_DRV_LOG(NOTICE, "Queue(%d) INIT failed", fp->index);
+               PMD_DRV_LOG(NOTICE, sc, "Queue(%d) INIT failed", fp->index);
                return rc;
        }
 
                return rc;
        }
 
-       PMD_DRV_LOG(DEBUG, "init complete");
+       PMD_DRV_LOG(DEBUG, sc, "init complete");
 
        /* now move the Queue to the SETUP state */
        memset(setup_params, 0, sizeof(*setup_params));
 
        /* now move the Queue to the SETUP state */
        memset(setup_params, 0, sizeof(*setup_params));
@@ -6558,7 +6606,7 @@ bnx2x_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, uint8_t lea
        /* change the state to SETUP */
        rc = ecore_queue_state_change(sc, &q_params);
        if (rc) {
        /* change the state to SETUP */
        rc = ecore_queue_state_change(sc, &q_params);
        if (rc) {
-               PMD_DRV_LOG(NOTICE, "Queue(%d) SETUP failed", fp->index);
+               PMD_DRV_LOG(NOTICE, sc, "Queue(%d) SETUP failed", fp->index);
                return rc;
        }
 
                return rc;
        }
 
@@ -6686,11 +6734,11 @@ bnx2x_set_mac_one(struct bnx2x_softc *sc, uint8_t * mac,
        rc = ecore_config_vlan_mac(sc, &ramrod_param);
 
        if (rc == ECORE_EXISTS) {
        rc = ecore_config_vlan_mac(sc, &ramrod_param);
 
        if (rc == ECORE_EXISTS) {
-               PMD_DRV_LOG(INFO, "Failed to schedule ADD operations (EEXIST)");
+               PMD_DRV_LOG(INFO, sc, "Failed to schedule ADD operations (EEXIST)");
 /* do not treat adding same MAC as error */
                rc = 0;
        } else if (rc < 0) {
 /* do not treat adding same MAC as error */
                rc = 0;
        } else if (rc < 0) {
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "%s MAC failed (%d)", (set ? "Set" : "Delete"), rc);
        }
 
                            "%s MAC failed (%d)", (set ? "Set" : "Delete"), rc);
        }
 
@@ -6701,7 +6749,7 @@ static int bnx2x_set_eth_mac(struct bnx2x_softc *sc, uint8_t set)
 {
        unsigned long ramrod_flags = 0;
 
 {
        unsigned long ramrod_flags = 0;
 
-       PMD_DRV_LOG(DEBUG, "Adding Ethernet MAC");
+       PMD_DRV_LOG(DEBUG, sc, "Adding Ethernet MAC");
 
        bnx2x_set_bit(RAMROD_COMP_WAIT, &ramrod_flags);
 
 
        bnx2x_set_bit(RAMROD_COMP_WAIT, &ramrod_flags);
 
@@ -6857,7 +6905,7 @@ bnx2x_fill_report_data(struct bnx2x_softc *sc, struct bnx2x_link_report_data *da
 }
 
 /* report link status to OS, should be called under phy_lock */
 }
 
 /* report link status to OS, should be called under phy_lock */
-static void bnx2x_link_report(struct bnx2x_softc *sc)
+static void bnx2x_link_report_locked(struct bnx2x_softc *sc)
 {
        struct bnx2x_link_report_data cur_data;
 
 {
        struct bnx2x_link_report_data cur_data;
 
@@ -6878,14 +6926,19 @@ static void bnx2x_link_report(struct bnx2x_softc *sc)
                return;
        }
 
                return;
        }
 
+       PMD_DRV_LOG(INFO, sc, "Change in link status : cur_data = %lx, last_reported_link = %lx\n",
+                   cur_data.link_report_flags,
+                   sc->last_reported_link.link_report_flags);
+
        sc->link_cnt++;
 
        sc->link_cnt++;
 
+       PMD_DRV_LOG(INFO, sc, "link status change count = %x\n", sc->link_cnt);
        /* report new link params and remember the state for the next time */
        (void)rte_memcpy(&sc->last_reported_link, &cur_data, sizeof(cur_data));
 
        if (bnx2x_test_bit(BNX2X_LINK_REPORT_LINK_DOWN,
                         &cur_data.link_report_flags)) {
        /* report new link params and remember the state for the next time */
        (void)rte_memcpy(&sc->last_reported_link, &cur_data, sizeof(cur_data));
 
        if (bnx2x_test_bit(BNX2X_LINK_REPORT_LINK_DOWN,
                         &cur_data.link_report_flags)) {
-               PMD_DRV_LOG(INFO, "NIC Link is Down");
+               PMD_DRV_LOG(INFO, sc, "NIC Link is Down");
        } else {
                __rte_unused const char *duplex;
                __rte_unused const char *flow;
        } else {
                __rte_unused const char *duplex;
                __rte_unused const char *flow;
@@ -6925,12 +6978,20 @@ static void bnx2x_link_report(struct bnx2x_softc *sc)
                        flow = "none";
                }
 
                        flow = "none";
                }
 
-               PMD_DRV_LOG(INFO,
+               PMD_DRV_LOG(INFO, sc,
                            "NIC Link is Up, %d Mbps %s duplex, Flow control: %s",
                            cur_data.line_speed, duplex, flow);
        }
 }
 
                            "NIC Link is Up, %d Mbps %s duplex, Flow control: %s",
                            cur_data.line_speed, duplex, flow);
        }
 }
 
+static void
+bnx2x_link_report(struct bnx2x_softc *sc)
+{
+       bnx2x_acquire_phy_lock(sc);
+       bnx2x_link_report_locked(sc);
+       bnx2x_release_phy_lock(sc);
+}
+
 void bnx2x_link_status_update(struct bnx2x_softc *sc)
 {
        if (sc->state != BNX2X_STATE_OPEN) {
 void bnx2x_link_status_update(struct bnx2x_softc *sc)
 {
        if (sc->state != BNX2X_STATE_OPEN) {
@@ -6996,7 +7057,7 @@ void bnx2x_link_status_update(struct bnx2x_softc *sc)
                }
                bnx2x_link_report(sc);
        } else {
                }
                bnx2x_link_report(sc);
        } else {
-               bnx2x_link_report(sc);
+               bnx2x_link_report_locked(sc);
                bnx2x_stats_handle(sc, STATS_EVENT_LINK_UP);
        }
 }
                bnx2x_stats_handle(sc, STATS_EVENT_LINK_UP);
        }
 }
@@ -7019,6 +7080,8 @@ static int bnx2x_initial_phy_init(struct bnx2x_softc *sc, int load_mode)
 
        bnx2x_set_requested_fc(sc);
 
 
        bnx2x_set_requested_fc(sc);
 
+       bnx2x_acquire_phy_lock(sc);
+
        if (load_mode == LOAD_DIAG) {
                lp->loopback_mode = ELINK_LOOPBACK_XGXS;
 /* Prefer doing PHY loopback at 10G speed, if possible */
        if (load_mode == LOAD_DIAG) {
                lp->loopback_mode = ELINK_LOOPBACK_XGXS;
 /* Prefer doing PHY loopback at 10G speed, if possible */
@@ -7038,6 +7101,8 @@ static int bnx2x_initial_phy_init(struct bnx2x_softc *sc, int load_mode)
 
        rc = elink_phy_init(&sc->link_params, &sc->link_vars);
 
 
        rc = elink_phy_init(&sc->link_params, &sc->link_vars);
 
+       bnx2x_release_phy_lock(sc);
+
        bnx2x_calc_fc_adv(sc);
 
        if (sc->link_vars.link_up) {
        bnx2x_calc_fc_adv(sc);
 
        if (sc->link_vars.link_up) {
@@ -7080,7 +7145,7 @@ void bnx2x_periodic_callout(struct bnx2x_softc *sc)
 {
        if ((sc->state != BNX2X_STATE_OPEN) ||
            (atomic_load_acq_long(&sc->periodic_flags) == PERIODIC_STOP)) {
 {
        if ((sc->state != BNX2X_STATE_OPEN) ||
            (atomic_load_acq_long(&sc->periodic_flags) == PERIODIC_STOP)) {
-               PMD_DRV_LOG(WARNING, "periodic callout exit (state=0x%x)",
+               PMD_DRV_LOG(INFO, sc, "periodic callout exit (state=0x%x)",
                            sc->state);
                return;
        }
                            sc->state);
                return;
        }
@@ -7092,7 +7157,9 @@ void bnx2x_periodic_callout(struct bnx2x_softc *sc)
  */
                mb();
                if (sc->port.pmf) {
  */
                mb();
                if (sc->port.pmf) {
+                       bnx2x_acquire_phy_lock(sc);
                        elink_period_func(&sc->link_params, &sc->link_vars);
                        elink_period_func(&sc->link_params, &sc->link_vars);
+                       bnx2x_release_phy_lock(sc);
                }
        }
 #ifdef BNX2X_PULSE
                }
        }
 #ifdef BNX2X_PULSE
@@ -7117,7 +7184,7 @@ void bnx2x_periodic_callout(struct bnx2x_softc *sc)
                if ((drv_pulse != mcp_pulse) &&
                    (drv_pulse != ((mcp_pulse + 1) & MCP_PULSE_SEQ_MASK))) {
                        /* someone lost a heartbeat... */
                if ((drv_pulse != mcp_pulse) &&
                    (drv_pulse != ((mcp_pulse + 1) & MCP_PULSE_SEQ_MASK))) {
                        /* someone lost a heartbeat... */
-                       PMD_DRV_LOG(ERR,
+                       PMD_DRV_LOG(ERR, sc,
                                    "drv_pulse (0x%x) != mcp_pulse (0x%x)",
                                    drv_pulse, mcp_pulse);
                }
                                    "drv_pulse (0x%x) != mcp_pulse (0x%x)",
                                    drv_pulse, mcp_pulse);
                }
@@ -7133,7 +7200,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
        uint32_t load_code = 0;
        int i, rc = 0;
 
        uint32_t load_code = 0;
        int i, rc = 0;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        sc->state = BNX2X_STATE_OPENING_WAITING_LOAD;
 
 
        sc->state = BNX2X_STATE_OPENING_WAITING_LOAD;
 
@@ -7187,7 +7254,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
                                goto bnx2x_nic_load_error2;
                        }
                } else {
                                goto bnx2x_nic_load_error2;
                        }
                } else {
-                       PMD_DRV_LOG(INFO, "Device has no MCP!");
+                       PMD_DRV_LOG(INFO, sc, "Device has no MCP!");
                        load_code = bnx2x_nic_load_no_mcp(sc);
                }
 
                        load_code = bnx2x_nic_load_no_mcp(sc);
                }
 
@@ -7199,7 +7266,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 
 /* Initialize HW */
                if (bnx2x_init_hw(sc, load_code) != 0) {
 
 /* Initialize HW */
                if (bnx2x_init_hw(sc, load_code) != 0) {
-                       PMD_DRV_LOG(NOTICE, "HW init failed");
+                       PMD_DRV_LOG(NOTICE, sc, "HW init failed");
                        bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
                        sc->state = BNX2X_STATE_CLOSED;
                        rc = -ENXIO;
                        bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
                        sc->state = BNX2X_STATE_CLOSED;
                        rc = -ENXIO;
@@ -7219,7 +7286,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
                sc->state = BNX2X_STATE_OPENING_WAITING_PORT;
                rc = bnx2x_func_start(sc);
                if (rc) {
                sc->state = BNX2X_STATE_OPENING_WAITING_PORT;
                rc = bnx2x_func_start(sc);
                if (rc) {
-                       PMD_DRV_LOG(NOTICE, "Function start failed!");
+                       PMD_DRV_LOG(NOTICE, sc, "Function start failed!");
                        bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
                        sc->state = BNX2X_STATE_ERROR;
                        goto bnx2x_nic_load_error3;
                        bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
                        sc->state = BNX2X_STATE_ERROR;
                        goto bnx2x_nic_load_error3;
@@ -7230,7 +7297,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
                        load_code =
                            bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
                        if (!load_code) {
                        load_code =
                            bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
                        if (!load_code) {
-                               PMD_DRV_LOG(NOTICE,
+                               PMD_DRV_LOG(NOTICE, sc,
                                            "MCP response failure, aborting");
                                sc->state = BNX2X_STATE_ERROR;
                                rc = -ENXIO;
                                            "MCP response failure, aborting");
                                sc->state = BNX2X_STATE_ERROR;
                                rc = -ENXIO;
@@ -7241,7 +7308,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 
        rc = bnx2x_setup_leading(sc);
        if (rc) {
 
        rc = bnx2x_setup_leading(sc);
        if (rc) {
-               PMD_DRV_LOG(NOTICE, "Setup leading failed!");
+               PMD_DRV_LOG(NOTICE, sc, "Setup leading failed!");
                sc->state = BNX2X_STATE_ERROR;
                goto bnx2x_nic_load_error3;
        }
                sc->state = BNX2X_STATE_ERROR;
                goto bnx2x_nic_load_error3;
        }
@@ -7253,7 +7320,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
                        rc = bnx2x_vf_setup_queue(sc, &sc->fp[i], FALSE);
 
                if (rc) {
                        rc = bnx2x_vf_setup_queue(sc, &sc->fp[i], FALSE);
 
                if (rc) {
-                       PMD_DRV_LOG(NOTICE, "Queue(%d) setup failed", i);
+                       PMD_DRV_LOG(NOTICE, sc, "Queue(%d) setup failed", i);
                        sc->state = BNX2X_STATE_ERROR;
                        goto bnx2x_nic_load_error3;
                }
                        sc->state = BNX2X_STATE_ERROR;
                        goto bnx2x_nic_load_error3;
                }
@@ -7261,7 +7328,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 
        rc = bnx2x_init_rss_pf(sc);
        if (rc) {
 
        rc = bnx2x_init_rss_pf(sc);
        if (rc) {
-               PMD_DRV_LOG(NOTICE, "PF RSS init failed");
+               PMD_DRV_LOG(NOTICE, sc, "PF RSS init failed");
                sc->state = BNX2X_STATE_ERROR;
                goto bnx2x_nic_load_error3;
        }
                sc->state = BNX2X_STATE_ERROR;
                goto bnx2x_nic_load_error3;
        }
@@ -7277,7 +7344,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
        }
 
        if (rc) {
        }
 
        if (rc) {
-               PMD_DRV_LOG(NOTICE, "Setting Ethernet MAC failed");
+               PMD_DRV_LOG(NOTICE, sc, "Setting Ethernet MAC failed");
                sc->state = BNX2X_STATE_ERROR;
                goto bnx2x_nic_load_error3;
        }
                sc->state = BNX2X_STATE_ERROR;
                goto bnx2x_nic_load_error3;
        }
@@ -7329,13 +7396,13 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 
        /* wait for all pending SP commands to complete */
        if (IS_PF(sc) && !bnx2x_wait_sp_comp(sc, ~0x0UL)) {
 
        /* wait for all pending SP commands to complete */
        if (IS_PF(sc) && !bnx2x_wait_sp_comp(sc, ~0x0UL)) {
-               PMD_DRV_LOG(NOTICE, "Timeout waiting for all SPs to complete!");
+               PMD_DRV_LOG(NOTICE, sc, "Timeout waiting for all SPs to complete!");
                bnx2x_periodic_stop(sc);
                bnx2x_nic_unload(sc, UNLOAD_CLOSE, FALSE);
                return -ENXIO;
        }
 
                bnx2x_periodic_stop(sc);
                bnx2x_nic_unload(sc, UNLOAD_CLOSE, FALSE);
                return -ENXIO;
        }
 
-       PMD_DRV_LOG(DEBUG, "NIC successfully loaded");
+       PMD_DRV_LOG(DEBUG, sc, "NIC successfully loaded");
 
        return 0;
 
 
        return 0;
 
@@ -7384,7 +7451,7 @@ int bnx2x_init(struct bnx2x_softc *sc)
 
        /* Check if the driver is still running and bail out if it is. */
        if (sc->state != BNX2X_STATE_CLOSED) {
 
        /* Check if the driver is still running and bail out if it is. */
        if (sc->state != BNX2X_STATE_CLOSED) {
-               PMD_DRV_LOG(DEBUG, "Init called while driver is running!");
+               PMD_DRV_LOG(DEBUG, sc, "Init called while driver is running!");
                rc = 0;
                goto bnx2x_init_done;
        }
                rc = 0;
                goto bnx2x_init_done;
        }
@@ -7422,7 +7489,7 @@ int bnx2x_init(struct bnx2x_softc *sc)
                                     && (!global ||!other_load_status))
                                    && bnx2x_trylock_leader_lock(sc)
                                    && !bnx2x_leader_reset(sc)) {
                                     && (!global ||!other_load_status))
                                    && bnx2x_trylock_leader_lock(sc)
                                    && !bnx2x_leader_reset(sc)) {
-                                       PMD_DRV_LOG(INFO,
+                                       PMD_DRV_LOG(INFO, sc,
                                                    "Recovered during init");
                                        break;
                                }
                                                    "Recovered during init");
                                        break;
                                }
@@ -7432,7 +7499,7 @@ int bnx2x_init(struct bnx2x_softc *sc)
 
                                sc->recovery_state = BNX2X_RECOVERY_FAILED;
 
 
                                sc->recovery_state = BNX2X_RECOVERY_FAILED;
 
-                               PMD_DRV_LOG(NOTICE,
+                               PMD_DRV_LOG(NOTICE, sc,
                                            "Recovery flow hasn't properly "
                                            "completed yet, try again later. "
                                            "If you still see this message after a "
                                            "Recovery flow hasn't properly "
                                            "completed yet, try again later. "
                                            "If you still see this message after a "
@@ -7451,7 +7518,7 @@ int bnx2x_init(struct bnx2x_softc *sc)
 bnx2x_init_done:
 
        if (rc) {
 bnx2x_init_done:
 
        if (rc) {
-               PMD_DRV_LOG(NOTICE, "Initialization failed, "
+               PMD_DRV_LOG(NOTICE, sc, "Initialization failed, "
                            "stack notified driver is NOT running!");
        }
 
                            "stack notified driver is NOT running!");
        }
 
@@ -7483,7 +7550,7 @@ static void bnx2x_get_function_num(struct bnx2x_softc *sc)
                sc->pfunc_abs = (sc->pfunc_rel | sc->path_id);
        }
 
                sc->pfunc_abs = (sc->pfunc_rel | sc->path_id);
        }
 
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
                    "Relative function %d, Absolute function %d, Path %d",
                    sc->pfunc_rel, sc->pfunc_abs, sc->path_id);
 }
                    "Relative function %d, Absolute function %d, Path %d",
                    sc->pfunc_rel, sc->pfunc_abs, sc->path_id);
 }
@@ -7520,14 +7587,14 @@ static uint32_t bnx2x_pcie_capability_read(struct bnx2x_softc *sc, int reg)
        /* ensure PCIe capability is enabled */
        caps = pci_find_cap(sc, PCIY_EXPRESS, BNX2X_PCI_CAP);
        if (NULL != caps) {
        /* ensure PCIe capability is enabled */
        caps = pci_find_cap(sc, PCIY_EXPRESS, BNX2X_PCI_CAP);
        if (NULL != caps) {
-               PMD_DRV_LOG(DEBUG, "Found PCIe capability: "
+               PMD_DRV_LOG(DEBUG, sc, "Found PCIe capability: "
                            "id=0x%04X type=0x%04X addr=0x%08X",
                            caps->id, caps->type, caps->addr);
                pci_read(sc, (caps->addr + reg), &ret, 2);
                return ret;
        }
 
                            "id=0x%04X type=0x%04X addr=0x%08X",
                            caps->id, caps->type, caps->addr);
                pci_read(sc, (caps->addr + reg), &ret, 2);
                return ret;
        }
 
-       PMD_DRV_LOG(WARNING, "PCIe capability NOT FOUND!!!");
+       PMD_DRV_LOG(WARNING, sc, "PCIe capability NOT FOUND!!!");
 
        return 0;
 }
 
        return 0;
 }
@@ -7545,7 +7612,7 @@ static uint8_t bnx2x_is_pcie_pending(struct bnx2x_softc *sc)
 */
 static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc)
 {
 */
 static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc)
 {
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        struct bnx2x_pci_cap *caps;
        uint16_t link_status;
 
        struct bnx2x_pci_cap *caps;
        uint16_t link_status;
@@ -7556,7 +7623,7 @@ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc)
        /* check if PCI Power Management is enabled */
        caps = pci_find_cap(sc, PCIY_PMG, BNX2X_PCI_CAP);
        if (NULL != caps) {
        /* check if PCI Power Management is enabled */
        caps = pci_find_cap(sc, PCIY_PMG, BNX2X_PCI_CAP);
        if (NULL != caps) {
-               PMD_DRV_LOG(DEBUG, "Found PM capability: "
+               PMD_DRV_LOG(DEBUG, sc, "Found PM capability: "
                            "id=0x%04X type=0x%04X addr=0x%08X",
                            caps->id, caps->type, caps->addr);
 
                            "id=0x%04X type=0x%04X addr=0x%08X",
                            caps->id, caps->type, caps->addr);
 
@@ -7570,7 +7637,7 @@ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc)
        sc->devinfo.pcie_link_width =
            ((link_status & PCIM_LINK_STA_WIDTH) >> 4);
 
        sc->devinfo.pcie_link_width =
            ((link_status & PCIM_LINK_STA_WIDTH) >> 4);
 
-       PMD_DRV_LOG(DEBUG, "PCIe link speed=%d width=%d",
+       PMD_DRV_LOG(DEBUG, sc, "PCIe link speed=%d width=%d",
                    sc->devinfo.pcie_link_speed, sc->devinfo.pcie_link_width);
 
        sc->devinfo.pcie_cap_flags |= BNX2X_PCIE_CAPABLE_FLAG;
                    sc->devinfo.pcie_link_speed, sc->devinfo.pcie_link_width);
 
        sc->devinfo.pcie_cap_flags |= BNX2X_PCIE_CAPABLE_FLAG;
@@ -7578,7 +7645,7 @@ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc)
        /* check if MSI capability is enabled */
        caps = pci_find_cap(sc, PCIY_MSI, BNX2X_PCI_CAP);
        if (NULL != caps) {
        /* check if MSI capability is enabled */
        caps = pci_find_cap(sc, PCIY_MSI, BNX2X_PCI_CAP);
        if (NULL != caps) {
-               PMD_DRV_LOG(DEBUG, "Found MSI capability at 0x%04x", reg);
+               PMD_DRV_LOG(DEBUG, sc, "Found MSI capability at 0x%04x", reg);
 
                sc->devinfo.pcie_cap_flags |= BNX2X_MSI_CAPABLE_FLAG;
                sc->devinfo.pcie_msi_cap_reg = caps->addr;
 
                sc->devinfo.pcie_cap_flags |= BNX2X_MSI_CAPABLE_FLAG;
                sc->devinfo.pcie_msi_cap_reg = caps->addr;
@@ -7587,7 +7654,7 @@ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc)
        /* check if MSI-X capability is enabled */
        caps = pci_find_cap(sc, PCIY_MSIX, BNX2X_PCI_CAP);
        if (NULL != caps) {
        /* check if MSI-X capability is enabled */
        caps = pci_find_cap(sc, PCIY_MSIX, BNX2X_PCI_CAP);
        if (NULL != caps) {
-               PMD_DRV_LOG(DEBUG, "Found MSI-X capability at 0x%04x", reg);
+               PMD_DRV_LOG(DEBUG, sc, "Found MSI-X capability at 0x%04x", reg);
 
                sc->devinfo.pcie_cap_flags |= BNX2X_MSIX_CAPABLE_FLAG;
                sc->devinfo.pcie_msix_cap_reg = caps->addr;
 
                sc->devinfo.pcie_cap_flags |= BNX2X_MSIX_CAPABLE_FLAG;
                sc->devinfo.pcie_msix_cap_reg = caps->addr;
@@ -7607,7 +7674,7 @@ static int bnx2x_get_shmem_mf_cfg_info_sd(struct bnx2x_softc *sc)
        mf_info->multi_vnics_mode = 1;
 
        if (!VALID_OVLAN(mf_info->ext_id)) {
        mf_info->multi_vnics_mode = 1;
 
        if (!VALID_OVLAN(mf_info->ext_id)) {
-               PMD_DRV_LOG(NOTICE, "Invalid VLAN (%d)", mf_info->ext_id);
+               PMD_DRV_LOG(NOTICE, sc, "Invalid VLAN (%d)", mf_info->ext_id);
                return 1;
        }
 
                return 1;
        }
 
@@ -7731,14 +7798,14 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc)
        /* various MF mode sanity checks... */
 
        if (mf_info->mf_config[SC_VN(sc)] & FUNC_MF_CFG_FUNC_HIDE) {
        /* various MF mode sanity checks... */
 
        if (mf_info->mf_config[SC_VN(sc)] & FUNC_MF_CFG_FUNC_HIDE) {
-               PMD_DRV_LOG(NOTICE,
+               PMD_DRV_LOG(NOTICE, sc,
                            "Enumerated function %d is marked as hidden",
                            SC_PORT(sc));
                return 1;
        }
 
        if ((mf_info->vnics_per_port > 1) && !mf_info->multi_vnics_mode) {
                            "Enumerated function %d is marked as hidden",
                            SC_PORT(sc));
                return 1;
        }
 
        if ((mf_info->vnics_per_port > 1) && !mf_info->multi_vnics_mode) {
-               PMD_DRV_LOG(NOTICE, "vnics_per_port=%d multi_vnics_mode=%d",
+               PMD_DRV_LOG(NOTICE, sc, "vnics_per_port=%d multi_vnics_mode=%d",
                            mf_info->vnics_per_port, mf_info->multi_vnics_mode);
                return 1;
        }
                            mf_info->vnics_per_port, mf_info->multi_vnics_mode);
                return 1;
        }
@@ -7746,13 +7813,13 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc)
        if (mf_info->mf_mode == MULTI_FUNCTION_SD) {
 /* vnic id > 0 must have valid ovlan in switch-dependent mode */
                if ((SC_VN(sc) > 0) && !VALID_OVLAN(OVLAN(sc))) {
        if (mf_info->mf_mode == MULTI_FUNCTION_SD) {
 /* vnic id > 0 must have valid ovlan in switch-dependent mode */
                if ((SC_VN(sc) > 0) && !VALID_OVLAN(OVLAN(sc))) {
-                       PMD_DRV_LOG(NOTICE, "mf_mode=SD vnic_id=%d ovlan=%d",
+                       PMD_DRV_LOG(NOTICE, sc, "mf_mode=SD vnic_id=%d ovlan=%d",
                                    SC_VN(sc), OVLAN(sc));
                        return 1;
                }
 
                if (!VALID_OVLAN(OVLAN(sc)) && mf_info->multi_vnics_mode) {
                                    SC_VN(sc), OVLAN(sc));
                        return 1;
                }
 
                if (!VALID_OVLAN(OVLAN(sc)) && mf_info->multi_vnics_mode) {
-                       PMD_DRV_LOG(NOTICE,
+                       PMD_DRV_LOG(NOTICE, sc,
                                    "mf_mode=SD multi_vnics_mode=%d ovlan=%d",
                                    mf_info->multi_vnics_mode, OVLAN(sc));
                        return 1;
                                    "mf_mode=SD multi_vnics_mode=%d ovlan=%d",
                                    mf_info->multi_vnics_mode, OVLAN(sc));
                        return 1;
@@ -7771,7 +7838,7 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc)
                              && !VALID_OVLAN(ovlan1))
                             || ((!mf_info->multi_vnics_mode)
                                 && VALID_OVLAN(ovlan1)))) {
                              && !VALID_OVLAN(ovlan1))
                             || ((!mf_info->multi_vnics_mode)
                                 && VALID_OVLAN(ovlan1)))) {
-                               PMD_DRV_LOG(NOTICE,
+                               PMD_DRV_LOG(NOTICE, sc,
                                            "mf_mode=SD function %d MF config "
                                            "mismatch, multi_vnics_mode=%d ovlan=%d",
                                            i, mf_info->multi_vnics_mode,
                                            "mf_mode=SD function %d MF config "
                                            "mismatch, multi_vnics_mode=%d ovlan=%d",
                                            i, mf_info->multi_vnics_mode,
@@ -7795,7 +7862,7 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc)
                                    && !(mf_cfg2 & FUNC_MF_CFG_FUNC_HIDE)
                                    && VALID_OVLAN(ovlan2)
                                    && (ovlan1 == ovlan2)) {
                                    && !(mf_cfg2 & FUNC_MF_CFG_FUNC_HIDE)
                                    && VALID_OVLAN(ovlan2)
                                    && (ovlan1 == ovlan2)) {
-                                       PMD_DRV_LOG(NOTICE,
+                                       PMD_DRV_LOG(NOTICE, sc,
                                                    "mf_mode=SD functions %d and %d "
                                                    "have the same ovlan (%d)",
                                                    i, j, ovlan1);
                                                    "mf_mode=SD functions %d and %d "
                                                    "have the same ovlan (%d)",
                                                    i, j, ovlan1);
@@ -7825,7 +7892,7 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
        }
 
        if (sc->devinfo.mf_cfg_base == SHMEM_MF_CFG_ADDR_NONE) {
        }
 
        if (sc->devinfo.mf_cfg_base == SHMEM_MF_CFG_ADDR_NONE) {
-               PMD_DRV_LOG(NOTICE, "Invalid mf_cfg_base!");
+               PMD_DRV_LOG(NOTICE, sc, "Invalid mf_cfg_base!");
                return 1;
        }
 
                return 1;
        }
 
@@ -7843,7 +7910,7 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
                if (mac_upper != FUNC_MF_CFG_UPPERMAC_DEFAULT) {
                        mf_info->mf_mode = MULTI_FUNCTION_SI;
                } else {
                if (mac_upper != FUNC_MF_CFG_UPPERMAC_DEFAULT) {
                        mf_info->mf_mode = MULTI_FUNCTION_SI;
                } else {
-                       PMD_DRV_LOG(NOTICE,
+                       PMD_DRV_LOG(NOTICE, sc,
                                    "Invalid config for Switch Independent mode");
                }
 
                                    "Invalid config for Switch Independent mode");
                }
 
@@ -7859,7 +7926,7 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
                    FUNC_MF_CFG_E1HOV_TAG_DEFAULT) {
                        mf_info->mf_mode = MULTI_FUNCTION_SD;
                } else {
                    FUNC_MF_CFG_E1HOV_TAG_DEFAULT) {
                        mf_info->mf_mode = MULTI_FUNCTION_SD;
                } else {
-                       PMD_DRV_LOG(NOTICE,
+                       PMD_DRV_LOG(NOTICE, sc,
                                    "Invalid config for Switch Dependent mode");
                }
 
                                    "Invalid config for Switch Dependent mode");
                }
 
@@ -7883,14 +7950,14 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
                    (mac_upper != FUNC_MF_CFG_UPPERMAC_DEFAULT)) {
                        mf_info->mf_mode = MULTI_FUNCTION_AFEX;
                } else {
                    (mac_upper != FUNC_MF_CFG_UPPERMAC_DEFAULT)) {
                        mf_info->mf_mode = MULTI_FUNCTION_AFEX;
                } else {
-                       PMD_DRV_LOG(NOTICE, "Invalid config for AFEX mode");
+                       PMD_DRV_LOG(NOTICE, sc, "Invalid config for AFEX mode");
                }
 
                break;
 
        default:
 
                }
 
                break;
 
        default:
 
-               PMD_DRV_LOG(NOTICE, "Unknown MF mode (0x%08x)",
+               PMD_DRV_LOG(NOTICE, sc, "Unknown MF mode (0x%08x)",
                            (val & SHARED_FEAT_CFG_FORCE_SF_MODE_MASK));
 
                return 1;
                            (val & SHARED_FEAT_CFG_FORCE_SF_MODE_MASK));
 
                return 1;
@@ -7922,7 +7989,7 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
        if (mf_info->mf_mode == SINGLE_FUNCTION) {
 /* invalid MF config */
                if (SC_VN(sc) >= 1) {
        if (mf_info->mf_mode == SINGLE_FUNCTION) {
 /* invalid MF config */
                if (SC_VN(sc) >= 1) {
-                       PMD_DRV_LOG(NOTICE, "VNIC ID >= 1 in SF mode");
+                       PMD_DRV_LOG(NOTICE, sc, "VNIC ID >= 1 in SF mode");
                        return 1;
                }
 
                        return 1;
                }
 
@@ -7951,7 +8018,7 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
 
        default:
 
 
        default:
 
-               PMD_DRV_LOG(NOTICE, "Get MF config failed (mf_mode=0x%08x)",
+               PMD_DRV_LOG(NOTICE, sc, "Get MF config failed (mf_mode=0x%08x)",
                            mf_info->mf_mode);
                return 1;
        }
                            mf_info->mf_mode);
                return 1;
        }
@@ -7979,7 +8046,7 @@ static int bnx2x_get_shmem_info(struct bnx2x_softc *sc)
        int port;
        uint32_t mac_hi, mac_lo, val;
 
        int port;
        uint32_t mac_hi, mac_lo, val;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        port = SC_PORT(sc);
        mac_hi = mac_lo = 0;
 
        port = SC_PORT(sc);
        mac_hi = mac_lo = 0;
@@ -8053,7 +8120,7 @@ static int bnx2x_get_shmem_info(struct bnx2x_softc *sc)
 
        if ((mac_lo == 0) && (mac_hi == 0)) {
                *sc->mac_addr_str = 0;
 
        if ((mac_lo == 0) && (mac_hi == 0)) {
                *sc->mac_addr_str = 0;
-               PMD_DRV_LOG(NOTICE, "No Ethernet address programmed!");
+               PMD_DRV_LOG(NOTICE, sc, "No Ethernet address programmed!");
        } else {
                sc->link_params.mac_addr[0] = (uint8_t) (mac_hi >> 8);
                sc->link_params.mac_addr[1] = (uint8_t) (mac_hi);
        } else {
                sc->link_params.mac_addr[0] = (uint8_t) (mac_hi >> 8);
                sc->link_params.mac_addr[1] = (uint8_t) (mac_hi);
@@ -8069,7 +8136,8 @@ static int bnx2x_get_shmem_info(struct bnx2x_softc *sc)
                         sc->link_params.mac_addr[3],
                         sc->link_params.mac_addr[4],
                         sc->link_params.mac_addr[5]);
                         sc->link_params.mac_addr[3],
                         sc->link_params.mac_addr[4],
                         sc->link_params.mac_addr[5]);
-               PMD_DRV_LOG(DEBUG, "Ethernet address: %s", sc->mac_addr_str);
+               PMD_DRV_LOG(DEBUG, sc,
+                           "Ethernet address: %s", sc->mac_addr_str);
        }
 
        return 0;
        }
 
        return 0;
@@ -8084,24 +8152,24 @@ static void bnx2x_media_detect(struct bnx2x_softc *sc)
        case ELINK_ETH_PHY_XFP_FIBER:
        case ELINK_ETH_PHY_KR:
        case ELINK_ETH_PHY_CX4:
        case ELINK_ETH_PHY_XFP_FIBER:
        case ELINK_ETH_PHY_KR:
        case ELINK_ETH_PHY_CX4:
-               PMD_DRV_LOG(INFO, "Found 10GBase-CX4 media.");
+               PMD_DRV_LOG(INFO, sc, "Found 10GBase-CX4 media.");
                sc->media = IFM_10G_CX4;
                break;
        case ELINK_ETH_PHY_DA_TWINAX:
                sc->media = IFM_10G_CX4;
                break;
        case ELINK_ETH_PHY_DA_TWINAX:
-               PMD_DRV_LOG(INFO, "Found 10Gb Twinax media.");
+               PMD_DRV_LOG(INFO, sc, "Found 10Gb Twinax media.");
                sc->media = IFM_10G_TWINAX;
                break;
        case ELINK_ETH_PHY_BASE_T:
                sc->media = IFM_10G_TWINAX;
                break;
        case ELINK_ETH_PHY_BASE_T:
-               PMD_DRV_LOG(INFO, "Found 10GBase-T media.");
+               PMD_DRV_LOG(INFO, sc, "Found 10GBase-T media.");
                sc->media = IFM_10G_T;
                break;
        case ELINK_ETH_PHY_NOT_PRESENT:
                sc->media = IFM_10G_T;
                break;
        case ELINK_ETH_PHY_NOT_PRESENT:
-               PMD_DRV_LOG(INFO, "Media not present.");
+               PMD_DRV_LOG(INFO, sc, "Media not present.");
                sc->media = 0;
                break;
        case ELINK_ETH_PHY_UNSPECIFIED:
        default:
                sc->media = 0;
                break;
        case ELINK_ETH_PHY_UNSPECIFIED:
        default:
-               PMD_DRV_LOG(INFO, "Unknown media!");
+               PMD_DRV_LOG(INFO, sc, "Unknown media!");
                sc->media = 0;
                break;
        }
                sc->media = 0;
                break;
        }
@@ -8164,7 +8232,7 @@ static int bnx2x_get_igu_cam_info(struct bnx2x_softc *sc)
        sc->igu_sb_cnt = min(sc->igu_sb_cnt, igu_sb_cnt);
 
        if (igu_sb_cnt == 0) {
        sc->igu_sb_cnt = min(sc->igu_sb_cnt, igu_sb_cnt);
 
        if (igu_sb_cnt == 0) {
-               PMD_DRV_LOG(ERR, "CAM configuration error");
+               PMD_DRV_LOG(ERR, sc, "CAM configuration error");
                return -1;
        }
 
                return -1;
        }
 
@@ -8201,7 +8269,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
                sc->devinfo.chip_id |= 0x1;
        }
 
                sc->devinfo.chip_id |= 0x1;
        }
 
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
                    "chip_id=0x%08x (num=0x%04x rev=0x%01x metal=0x%02x bond=0x%01x)",
                    sc->devinfo.chip_id,
                    ((sc->devinfo.chip_id >> 16) & 0xffff),
                    "chip_id=0x%08x (num=0x%04x rev=0x%01x metal=0x%02x bond=0x%01x)",
                    sc->devinfo.chip_id,
                    ((sc->devinfo.chip_id >> 16) & 0xffff),
@@ -8212,7 +8280,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
        val = (REG_RD(sc, 0x2874) & 0x55);
        if ((sc->devinfo.chip_id & 0x1) || (CHIP_IS_E1H(sc) && (val == 0x55))) {
                sc->flags |= BNX2X_ONE_PORT_FLAG;
        val = (REG_RD(sc, 0x2874) & 0x55);
        if ((sc->devinfo.chip_id & 0x1) || (CHIP_IS_E1H(sc) && (val == 0x55))) {
                sc->flags |= BNX2X_ONE_PORT_FLAG;
-               PMD_DRV_LOG(DEBUG, "single port device");
+               PMD_DRV_LOG(DEBUG, sc, "single port device");
        }
 
        /* set the doorbell size */
        }
 
        /* set the doorbell size */
@@ -8236,7 +8304,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
                sc->devinfo.chip_port_mode =
                    (val) ? CHIP_4_PORT_MODE : CHIP_2_PORT_MODE;
 
                sc->devinfo.chip_port_mode =
                    (val) ? CHIP_4_PORT_MODE : CHIP_2_PORT_MODE;
 
-               PMD_DRV_LOG(DEBUG, "Port mode = %s", (val) ? "4" : "2");
+               PMD_DRV_LOG(DEBUG, sc, "Port mode = %s", (val) ? "4" : "2");
        }
 
        /* get the function and path info for the device */
        }
 
        /* get the function and path info for the device */
@@ -8251,7 +8319,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
 
        if (!sc->devinfo.shmem_base) {
 /* this should ONLY prevent upcoming shmem reads */
 
        if (!sc->devinfo.shmem_base) {
 /* this should ONLY prevent upcoming shmem reads */
-               PMD_DRV_LOG(INFO, "MCP not active");
+               PMD_DRV_LOG(INFO, sc, "MCP not active");
                sc->flags |= BNX2X_NO_MCP_FLAG;
                return 0;
        }
                sc->flags |= BNX2X_NO_MCP_FLAG;
                return 0;
        }
@@ -8260,7 +8328,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
        val = SHMEM_RD(sc, validity_map[SC_PORT(sc)]);
        if ((val & (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB)) !=
            (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB)) {
        val = SHMEM_RD(sc, validity_map[SC_PORT(sc)]);
        if ((val & (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB)) !=
            (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB)) {
-               PMD_DRV_LOG(NOTICE, "Invalid SHMEM validity signature: 0x%08x",
+               PMD_DRV_LOG(NOTICE, sc, "Invalid SHMEM validity signature: 0x%08x",
                            val);
                return 0;
        }
                            val);
                return 0;
        }
@@ -8273,7 +8341,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
                 ((sc->devinfo.bc_ver >> 24) & 0xff),
                 ((sc->devinfo.bc_ver >> 16) & 0xff),
                 ((sc->devinfo.bc_ver >> 8) & 0xff));
                 ((sc->devinfo.bc_ver >> 24) & 0xff),
                 ((sc->devinfo.bc_ver >> 16) & 0xff),
                 ((sc->devinfo.bc_ver >> 8) & 0xff));
-       PMD_DRV_LOG(INFO, "Bootcode version: %s", sc->devinfo.bc_ver_str);
+       PMD_DRV_LOG(INFO, sc, "Bootcode version: %s", sc->devinfo.bc_ver_str);
 
        /* get the bootcode shmem address */
        sc->devinfo.mf_cfg_base = bnx2x_get_shmem_mf_cfg_base(sc);
 
        /* get the bootcode shmem address */
        sc->devinfo.mf_cfg_base = bnx2x_get_shmem_mf_cfg_base(sc);
@@ -8328,7 +8396,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
                        }
 
                        if (REG_RD(sc, IGU_REG_RESET_MEMORIES)) {
                        }
 
                        if (REG_RD(sc, IGU_REG_RESET_MEMORIES)) {
-                               PMD_DRV_LOG(NOTICE,
+                               PMD_DRV_LOG(NOTICE, sc,
                                            "FORCING IGU Normal Mode failed!!!");
                                bnx2x_release_hw_lock(sc, HW_LOCK_RESOURCE_RESET);
                                return -1;
                                            "FORCING IGU Normal Mode failed!!!");
                                bnx2x_release_hw_lock(sc, HW_LOCK_RESOURCE_RESET);
                                return -1;
@@ -8336,10 +8404,10 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
                }
 
                if (val & IGU_BLOCK_CONFIGURATION_REG_BACKWARD_COMP_EN) {
                }
 
                if (val & IGU_BLOCK_CONFIGURATION_REG_BACKWARD_COMP_EN) {
-                       PMD_DRV_LOG(DEBUG, "IGU Backward Compatible Mode");
+                       PMD_DRV_LOG(DEBUG, sc, "IGU Backward Compatible Mode");
                        sc->devinfo.int_block |= INT_BLOCK_MODE_BW_COMP;
                } else {
                        sc->devinfo.int_block |= INT_BLOCK_MODE_BW_COMP;
                } else {
-                       PMD_DRV_LOG(DEBUG, "IGU Normal Mode");
+                       PMD_DRV_LOG(DEBUG, sc, "IGU Normal Mode");
                }
 
                rc = bnx2x_get_igu_cam_info(sc);
                }
 
                rc = bnx2x_get_igu_cam_info(sc);
@@ -8413,7 +8481,7 @@ bnx2x_link_settings_supported(struct bnx2x_softc *sc, uint32_t switch_cfg)
        }
 
        if (!(sc->port.supported[0] || sc->port.supported[1])) {
        }
 
        if (!(sc->port.supported[0] || sc->port.supported[1])) {
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "Invalid phy config in NVRAM (PHY1=0x%08x PHY2=0x%08x)",
                            SHMEM_RD(sc,
                                     dev_info.port_hw_config
                            "Invalid phy config in NVRAM (PHY1=0x%08x PHY2=0x%08x)",
                            SHMEM_RD(sc,
                                     dev_info.port_hw_config
@@ -8439,7 +8507,7 @@ bnx2x_link_settings_supported(struct bnx2x_softc *sc, uint32_t switch_cfg)
                                   NIG_REG_XGXS0_CTRL_PHY_ADDR + port * 0x18);
                        break;
                default:
                                   NIG_REG_XGXS0_CTRL_PHY_ADDR + port * 0x18);
                        break;
                default:
-                       PMD_DRV_LOG(ERR,
+                       PMD_DRV_LOG(ERR, sc,
                                    "Invalid switch config in"
                                    "link_config=0x%08x",
                                    sc->port.link_config[0]);
                                    "Invalid switch config in"
                                    "link_config=0x%08x",
                                    sc->port.link_config[0]);
@@ -8447,7 +8515,7 @@ bnx2x_link_settings_supported(struct bnx2x_softc *sc, uint32_t switch_cfg)
                }
        }
 
                }
        }
 
-       PMD_DRV_LOG(INFO, "PHY addr 0x%08x", sc->port.phy_addr);
+       PMD_DRV_LOG(INFO, sc, "PHY addr 0x%08x", sc->port.phy_addr);
 
        /* mask what we support according to speed_cap_mask per configuration */
        for (idx = 0; idx < cfg_size; idx++) {
 
        /* mask what we support according to speed_cap_mask per configuration */
        for (idx = 0; idx < cfg_size; idx++) {
@@ -8500,7 +8568,7 @@ bnx2x_link_settings_supported(struct bnx2x_softc *sc, uint32_t switch_cfg)
                }
        }
 
                }
        }
 
-       PMD_DRV_LOG(INFO, "PHY supported 0=0x%08x 1=0x%08x",
+       PMD_DRV_LOG(INFO, sc, "PHY supported 0=0x%08x 1=0x%08x",
                    sc->port.supported[0], sc->port.supported[1]);
 }
 
                    sc->port.supported[0], sc->port.supported[1]);
 }
 
@@ -8559,7 +8627,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
                                sc->port.advertising[idx] |=
                                    (ADVERTISED_10baseT_Full | ADVERTISED_TP);
                        } else {
                                sc->port.advertising[idx] |=
                                    (ADVERTISED_10baseT_Full | ADVERTISED_TP);
                        } else {
-                               PMD_DRV_LOG(ERR,
+                               PMD_DRV_LOG(ERR, sc,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
@@ -8579,7 +8647,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
                                sc->port.advertising[idx] |=
                                    (ADVERTISED_10baseT_Half | ADVERTISED_TP);
                        } else {
                                sc->port.advertising[idx] |=
                                    (ADVERTISED_10baseT_Half | ADVERTISED_TP);
                        } else {
-                               PMD_DRV_LOG(ERR,
+                               PMD_DRV_LOG(ERR, sc,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
@@ -8598,7 +8666,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
                                sc->port.advertising[idx] |=
                                    (ADVERTISED_100baseT_Full | ADVERTISED_TP);
                        } else {
                                sc->port.advertising[idx] |=
                                    (ADVERTISED_100baseT_Full | ADVERTISED_TP);
                        } else {
-                               PMD_DRV_LOG(ERR,
+                               PMD_DRV_LOG(ERR, sc,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
@@ -8618,7 +8686,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
                                sc->port.advertising[idx] |=
                                    (ADVERTISED_100baseT_Half | ADVERTISED_TP);
                        } else {
                                sc->port.advertising[idx] |=
                                    (ADVERTISED_100baseT_Half | ADVERTISED_TP);
                        } else {
-                               PMD_DRV_LOG(ERR,
+                               PMD_DRV_LOG(ERR, sc,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
@@ -8636,7 +8704,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
                                sc->port.advertising[idx] |=
                                    (ADVERTISED_1000baseT_Full | ADVERTISED_TP);
                        } else {
                                sc->port.advertising[idx] |=
                                    (ADVERTISED_1000baseT_Full | ADVERTISED_TP);
                        } else {
-                               PMD_DRV_LOG(ERR,
+                               PMD_DRV_LOG(ERR, sc,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
@@ -8654,7 +8722,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
                                sc->port.advertising[idx] |=
                                    (ADVERTISED_2500baseX_Full | ADVERTISED_TP);
                        } else {
                                sc->port.advertising[idx] |=
                                    (ADVERTISED_2500baseX_Full | ADVERTISED_TP);
                        } else {
-                               PMD_DRV_LOG(ERR,
+                               PMD_DRV_LOG(ERR, sc,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
@@ -8673,7 +8741,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
                                    (ADVERTISED_10000baseT_Full |
                                     ADVERTISED_FIBRE);
                        } else {
                                    (ADVERTISED_10000baseT_Full |
                                     ADVERTISED_FIBRE);
                        } else {
-                               PMD_DRV_LOG(ERR,
+                               PMD_DRV_LOG(ERR, sc,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
                                            "Invalid NVRAM config link_config=0x%08x "
                                            "speed_cap_mask=0x%08x",
                                            link_config,
@@ -8688,7 +8756,7 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
                        break;
 
                default:
                        break;
 
                default:
-                       PMD_DRV_LOG(ERR,
+                       PMD_DRV_LOG(ERR, sc,
                                    "Invalid NVRAM config link_config=0x%08x "
                                    "speed_cap_mask=0x%08x", link_config,
                                    sc->link_params.speed_cap_mask[idx]);
                                    "Invalid NVRAM config link_config=0x%08x "
                                    "speed_cap_mask=0x%08x", link_config,
                                    sc->link_params.speed_cap_mask[idx]);
@@ -8719,7 +8787,7 @@ static void bnx2x_get_phy_info(struct bnx2x_softc *sc)
        uint8_t port = SC_PORT(sc);
        uint32_t eee_mode;
 
        uint8_t port = SC_PORT(sc);
        uint32_t eee_mode;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        /* shmem data already read in bnx2x_get_shmem_info() */
 
 
        /* shmem data already read in bnx2x_get_shmem_info() */
 
@@ -8879,7 +8947,7 @@ int bnx2x_alloc_hsi_mem(struct bnx2x_softc *sc)
                snprintf(buf, sizeof(buf), "fp_%d_sb", i);
                if (bnx2x_dma_alloc(sc, sizeof(union bnx2x_host_hc_status_block),
                                  &fp->sb_dma, buf, RTE_CACHE_LINE_SIZE) != 0) {
                snprintf(buf, sizeof(buf), "fp_%d_sb", i);
                if (bnx2x_dma_alloc(sc, sizeof(union bnx2x_host_hc_status_block),
                                  &fp->sb_dma, buf, RTE_CACHE_LINE_SIZE) != 0) {
-                       PMD_DRV_LOG(NOTICE, "Failed to alloc %s", buf);
+                       PMD_DRV_LOG(NOTICE, sc, "Failed to alloc %s", buf);
                        return -1;
                } else {
                        if (CHIP_IS_E2E3(sc)) {
                        return -1;
                } else {
                        if (CHIP_IS_E2E3(sc)) {
@@ -8969,7 +9037,7 @@ static int bnx2x_prev_mcp_done(struct bnx2x_softc *sc)
        uint32_t rc = bnx2x_fw_command(sc, DRV_MSG_CODE_UNLOAD_DONE,
                                     DRV_MSG_CODE_UNLOAD_SKIP_LINK_RESET);
        if (!rc) {
        uint32_t rc = bnx2x_fw_command(sc, DRV_MSG_CODE_UNLOAD_DONE,
                                     DRV_MSG_CODE_UNLOAD_SKIP_LINK_RESET);
        if (!rc) {
-               PMD_DRV_LOG(NOTICE, "MCP response failure, aborting");
+               PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting");
                return -1;
        }
 
                return -1;
        }
 
@@ -9001,12 +9069,12 @@ static uint8_t bnx2x_prev_is_path_marked(struct bnx2x_softc *sc)
        tmp = bnx2x_prev_path_get_entry(sc);
        if (tmp) {
                if (tmp->aer) {
        tmp = bnx2x_prev_path_get_entry(sc);
        if (tmp) {
                if (tmp->aer) {
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "Path %d/%d/%d was marked by AER",
                                    sc->pcie_bus, sc->pcie_device, SC_PATH(sc));
                } else {
                        rc = TRUE;
                                    "Path %d/%d/%d was marked by AER",
                                    sc->pcie_bus, sc->pcie_device, SC_PATH(sc));
                } else {
                        rc = TRUE;
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "Path %d/%d/%d was already cleaned from previous drivers",
                                    sc->pcie_bus, sc->pcie_device, SC_PATH(sc));
                }
                                    "Path %d/%d/%d was already cleaned from previous drivers",
                                    sc->pcie_bus, sc->pcie_device, SC_PATH(sc));
                }
@@ -9027,11 +9095,11 @@ static int bnx2x_prev_mark_path(struct bnx2x_softc *sc, uint8_t after_undi)
        tmp = bnx2x_prev_path_get_entry(sc);
        if (tmp) {
                if (!tmp->aer) {
        tmp = bnx2x_prev_path_get_entry(sc);
        if (tmp) {
                if (!tmp->aer) {
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "Re-marking AER in path %d/%d/%d",
                                    sc->pcie_bus, sc->pcie_device, SC_PATH(sc));
                } else {
                                    "Re-marking AER in path %d/%d/%d",
                                    sc->pcie_bus, sc->pcie_device, SC_PATH(sc));
                } else {
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "Removing AER indication from path %d/%d/%d",
                                    sc->pcie_bus, sc->pcie_device, SC_PATH(sc));
                        tmp->aer = 0;
                                    "Removing AER indication from path %d/%d/%d",
                                    sc->pcie_bus, sc->pcie_device, SC_PATH(sc));
                        tmp->aer = 0;
@@ -9047,7 +9115,7 @@ static int bnx2x_prev_mark_path(struct bnx2x_softc *sc, uint8_t after_undi)
        tmp = rte_malloc("", sizeof(struct bnx2x_prev_list_node),
                         RTE_CACHE_LINE_SIZE);
        if (!tmp) {
        tmp = rte_malloc("", sizeof(struct bnx2x_prev_list_node),
                         RTE_CACHE_LINE_SIZE);
        if (!tmp) {
-               PMD_DRV_LOG(NOTICE, "Failed to allocate 'bnx2x_prev_list_node'");
+               PMD_DRV_LOG(NOTICE, sc, "Failed to allocate 'bnx2x_prev_list_node'");
                return -1;
        }
 
                return -1;
        }
 
@@ -9072,13 +9140,13 @@ static int bnx2x_do_flr(struct bnx2x_softc *sc)
 
        /* only E2 and onwards support FLR */
        if (CHIP_IS_E1x(sc)) {
 
        /* only E2 and onwards support FLR */
        if (CHIP_IS_E1x(sc)) {
-               PMD_DRV_LOG(WARNING, "FLR not supported in E1H");
+               PMD_DRV_LOG(WARNING, sc, "FLR not supported in E1H");
                return -1;
        }
 
        /* only bootcode REQ_BC_VER_4_INITIATE_FLR and onwards support flr */
        if (sc->devinfo.bc_ver < REQ_BC_VER_4_INITIATE_FLR) {
                return -1;
        }
 
        /* only bootcode REQ_BC_VER_4_INITIATE_FLR and onwards support flr */
        if (sc->devinfo.bc_ver < REQ_BC_VER_4_INITIATE_FLR) {
-               PMD_DRV_LOG(WARNING,
+               PMD_DRV_LOG(WARNING, sc,
                            "FLR not supported by BC_VER: 0x%08x",
                            sc->devinfo.bc_ver);
                return -1;
                            "FLR not supported by BC_VER: 0x%08x",
                            sc->devinfo.bc_ver);
                return -1;
@@ -9095,7 +9163,7 @@ static int bnx2x_do_flr(struct bnx2x_softc *sc)
                }
        }
 
                }
        }
 
-       PMD_DRV_LOG(NOTICE, "PCIE transaction is not cleared, "
+       PMD_DRV_LOG(NOTICE, sc, "PCIE transaction is not cleared, "
                    "proceeding with reset anyway");
 
 clear:
                    "proceeding with reset anyway");
 
 clear:
@@ -9243,7 +9311,7 @@ static int bnx2x_prev_unload_common(struct bnx2x_softc *sc)
                if (reset_reg & MISC_REGISTERS_RESET_REG_1_RST_DORQ) {
                        tmp_reg = REG_RD(sc, DORQ_REG_NORM_CID_OFST);
                        if (tmp_reg == 0x7) {
                if (reset_reg & MISC_REGISTERS_RESET_REG_1_RST_DORQ) {
                        tmp_reg = REG_RD(sc, DORQ_REG_NORM_CID_OFST);
                        if (tmp_reg == 0x7) {
-                               PMD_DRV_LOG(DEBUG, "UNDI previously loaded");
+                               PMD_DRV_LOG(DEBUG, sc, "UNDI previously loaded");
                                prev_undi = TRUE;
                                /* clear the UNDI indication */
                                REG_WR(sc, DORQ_REG_NORM_CID_OFST, 0);
                                prev_undi = TRUE;
                                /* clear the UNDI indication */
                                REG_WR(sc, DORQ_REG_NORM_CID_OFST, 0);
@@ -9262,7 +9330,7 @@ static int bnx2x_prev_unload_common(struct bnx2x_softc *sc)
                                break;
                        }
 
                                break;
                        }
 
-                       PMD_DRV_LOG(DEBUG, "BRB still has 0x%08x", tmp_reg);
+                       PMD_DRV_LOG(DEBUG, sc, "BRB still has 0x%08x", tmp_reg);
 
                        /* reset timer as long as BRB actually gets emptied */
                        if (prev_brb > tmp_reg) {
 
                        /* reset timer as long as BRB actually gets emptied */
                        if (prev_brb > tmp_reg) {
@@ -9280,7 +9348,7 @@ static int bnx2x_prev_unload_common(struct bnx2x_softc *sc)
                }
 
                if (!timer_count) {
                }
 
                if (!timer_count) {
-                       PMD_DRV_LOG(NOTICE, "Failed to empty BRB");
+                       PMD_DRV_LOG(NOTICE, sc, "Failed to empty BRB");
                }
        }
 
                }
        }
 
@@ -9335,7 +9403,7 @@ static int bnx2x_prev_unload_uncommon(struct bnx2x_softc *sc)
                return 0;
        }
 
                return 0;
        }
 
-       PMD_DRV_LOG(INFO, "Could not FLR");
+       PMD_DRV_LOG(INFO, sc, "Could not FLR");
 
        /* Close the MCP request, return failure */
        rc = bnx2x_prev_mcp_done(sc);
 
        /* Close the MCP request, return failure */
        rc = bnx2x_prev_mcp_done(sc);
@@ -9352,6 +9420,8 @@ static int bnx2x_prev_unload(struct bnx2x_softc *sc)
        uint32_t fw, hw_lock_reg, hw_lock_val;
        uint32_t rc = 0;
 
        uint32_t fw, hw_lock_reg, hw_lock_val;
        uint32_t rc = 0;
 
+       PMD_INIT_FUNC_TRACE(sc);
+
        /*
         * Clear HW from errors which may have resulted from an interrupted
         * DMAE transaction.
        /*
         * Clear HW from errors which may have resulted from an interrupted
         * DMAE transaction.
@@ -9359,22 +9429,23 @@ static int bnx2x_prev_unload(struct bnx2x_softc *sc)
        bnx2x_prev_interrupted_dmae(sc);
 
        /* Release previously held locks */
        bnx2x_prev_interrupted_dmae(sc);
 
        /* Release previously held locks */
-       if (SC_FUNC(sc) <= 5)
-               hw_lock_reg = (MISC_REG_DRIVER_CONTROL_1 + SC_FUNC(sc) * 8);
-       else
-               hw_lock_reg =
-                   (MISC_REG_DRIVER_CONTROL_7 + (SC_FUNC(sc) - 6) * 8);
+       hw_lock_reg = (SC_FUNC(sc) <= 5) ?
+                       (MISC_REG_DRIVER_CONTROL_1 + SC_FUNC(sc) * 8) :
+                       (MISC_REG_DRIVER_CONTROL_7 + (SC_FUNC(sc) - 6) * 8);
 
        hw_lock_val = (REG_RD(sc, hw_lock_reg));
        if (hw_lock_val) {
                if (hw_lock_val & HW_LOCK_RESOURCE_NVRAM) {
 
        hw_lock_val = (REG_RD(sc, hw_lock_reg));
        if (hw_lock_val) {
                if (hw_lock_val & HW_LOCK_RESOURCE_NVRAM) {
+                       PMD_DRV_LOG(DEBUG, sc, "Releasing previously held NVRAM lock\n");
                        REG_WR(sc, MCP_REG_MCPR_NVM_SW_ARB,
                               (MCPR_NVM_SW_ARB_ARB_REQ_CLR1 << SC_PORT(sc)));
                }
                        REG_WR(sc, MCP_REG_MCPR_NVM_SW_ARB,
                               (MCPR_NVM_SW_ARB_ARB_REQ_CLR1 << SC_PORT(sc)));
                }
+               PMD_DRV_LOG(DEBUG, sc, "Releasing previously held HW lock\n");
                REG_WR(sc, hw_lock_reg, 0xffffffff);
        }
 
        if (MCPR_ACCESS_LOCK_LOCK & REG_RD(sc, MCP_REG_MCPR_ACCESS_LOCK)) {
                REG_WR(sc, hw_lock_reg, 0xffffffff);
        }
 
        if (MCPR_ACCESS_LOCK_LOCK & REG_RD(sc, MCP_REG_MCPR_ACCESS_LOCK)) {
+               PMD_DRV_LOG(DEBUG, sc, "Releasing previously held ALR\n");
                REG_WR(sc, MCP_REG_MCPR_ACCESS_LOCK, 0);
        }
 
                REG_WR(sc, MCP_REG_MCPR_ACCESS_LOCK, 0);
        }
 
@@ -9382,7 +9453,7 @@ static int bnx2x_prev_unload(struct bnx2x_softc *sc)
                /* Lock MCP using an unload request */
                fw = bnx2x_fw_command(sc, DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS, 0);
                if (!fw) {
                /* Lock MCP using an unload request */
                fw = bnx2x_fw_command(sc, DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS, 0);
                if (!fw) {
-                       PMD_DRV_LOG(NOTICE, "MCP response failure, aborting");
+                       PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting");
                        rc = -1;
                        break;
                }
                        rc = -1;
                        break;
                }
@@ -9402,7 +9473,7 @@ static int bnx2x_prev_unload(struct bnx2x_softc *sc)
        } while (--time_counter);
 
        if (!time_counter || rc) {
        } while (--time_counter);
 
        if (!time_counter || rc) {
-               PMD_DRV_LOG(NOTICE, "Failed to unload previous driver!");
+               PMD_DRV_LOG(NOTICE, sc, "Failed to unload previous driver!");
                rc = -1;
        }
 
                rc = -1;
        }
 
@@ -9419,7 +9490,7 @@ bnx2x_dcbx_set_state(struct bnx2x_softc *sc, uint8_t dcb_on, uint32_t dcbx_enabl
                sc->dcb_state = FALSE;
                sc->dcbx_enabled = BNX2X_DCBX_ENABLED_INVALID;
        }
                sc->dcb_state = FALSE;
                sc->dcbx_enabled = BNX2X_DCBX_ENABLED_INVALID;
        }
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
                    "DCB state [%s:%s]",
                    dcb_on ? "ON" : "OFF",
                    (dcbx_enabled == BNX2X_DCBX_ENABLED_OFF) ? "user-mode" :
                    "DCB state [%s:%s]",
                    dcb_on ? "ON" : "OFF",
                    (dcbx_enabled == BNX2X_DCBX_ENABLED_OFF) ? "user-mode" :
@@ -9452,7 +9523,7 @@ static void bnx2x_init_multi_cos(struct bnx2x_softc *sc)
                if (cos < sc->max_cos) {
                        sc->prio_to_cos[pri] = cos;
                } else {
                if (cos < sc->max_cos) {
                        sc->prio_to_cos[pri] = cos;
                } else {
-                       PMD_DRV_LOG(WARNING,
+                       PMD_DRV_LOG(WARNING, sc,
                                    "Invalid COS %d for priority %d "
                                    "(max COS is %d), setting to 0", cos, pri,
                                    (sc->max_cos - 1));
                                    "Invalid COS %d for priority %d "
                                    "(max COS is %d), setting to 0", cos, pri,
                                    (sc->max_cos - 1));
@@ -9473,7 +9544,7 @@ static int bnx2x_pci_get_caps(struct bnx2x_softc *sc)
        cap = sc->pci_caps = rte_zmalloc("caps", sizeof(struct bnx2x_pci_cap),
                                         RTE_CACHE_LINE_SIZE);
        if (!cap) {
        cap = sc->pci_caps = rte_zmalloc("caps", sizeof(struct bnx2x_pci_cap),
                                         RTE_CACHE_LINE_SIZE);
        if (!cap) {
-               PMD_DRV_LOG(NOTICE, "Failed to allocate memory");
+               PMD_DRV_LOG(NOTICE, sc, "Failed to allocate memory");
                return -ENOMEM;
        }
 
                return -ENOMEM;
        }
 
@@ -9484,7 +9555,7 @@ static int bnx2x_pci_get_caps(struct bnx2x_softc *sc)
        pci_read(sc, PCIR_STATUS, &status, 2);
        if (!(status & PCIM_STATUS_CAPPRESENT)) {
 #endif
        pci_read(sc, PCIR_STATUS, &status, 2);
        if (!(status & PCIM_STATUS_CAPPRESENT)) {
 #endif
-               PMD_DRV_LOG(NOTICE, "PCIe capability reading failed");
+               PMD_DRV_LOG(NOTICE, sc, "PCIe capability reading failed");
                return -1;
        }
 
                return -1;
        }
 
@@ -9504,7 +9575,7 @@ static int bnx2x_pci_get_caps(struct bnx2x_softc *sc)
                                        sizeof(struct bnx2x_pci_cap),
                                        RTE_CACHE_LINE_SIZE);
                if (!cap->next) {
                                        sizeof(struct bnx2x_pci_cap),
                                        RTE_CACHE_LINE_SIZE);
                if (!cap->next) {
-                       PMD_DRV_LOG(NOTICE, "Failed to allocate memory");
+                       PMD_DRV_LOG(NOTICE, sc, "Failed to allocate memory");
                        return -ENOMEM;
                }
                cap = cap->next;
                        return -ENOMEM;
                }
                cap = cap->next;
@@ -9540,25 +9611,25 @@ void bnx2x_load_firmware(struct bnx2x_softc *sc)
                ? FW_NAME_57711 : FW_NAME_57810;
        f = open(fwname, O_RDONLY);
        if (f < 0) {
                ? FW_NAME_57711 : FW_NAME_57810;
        f = open(fwname, O_RDONLY);
        if (f < 0) {
-               PMD_DRV_LOG(NOTICE, "Can't open firmware file");
+               PMD_DRV_LOG(NOTICE, sc, "Can't open firmware file");
                return;
        }
 
        if (fstat(f, &st) < 0) {
                return;
        }
 
        if (fstat(f, &st) < 0) {
-               PMD_DRV_LOG(NOTICE, "Can't stat firmware file");
+               PMD_DRV_LOG(NOTICE, sc, "Can't stat firmware file");
                close(f);
                return;
        }
 
        sc->firmware = rte_zmalloc("bnx2x_fw", st.st_size, RTE_CACHE_LINE_SIZE);
        if (!sc->firmware) {
                close(f);
                return;
        }
 
        sc->firmware = rte_zmalloc("bnx2x_fw", st.st_size, RTE_CACHE_LINE_SIZE);
        if (!sc->firmware) {
-               PMD_DRV_LOG(NOTICE, "Can't allocate memory for firmware");
+               PMD_DRV_LOG(NOTICE, sc, "Can't allocate memory for firmware");
                close(f);
                return;
        }
 
        if (read(f, sc->firmware, st.st_size) != st.st_size) {
                close(f);
                return;
        }
 
        if (read(f, sc->firmware, st.st_size) != st.st_size) {
-               PMD_DRV_LOG(NOTICE, "Can't read firmware data");
+               PMD_DRV_LOG(NOTICE, sc, "Can't read firmware data");
                close(f);
                return;
        }
                close(f);
                return;
        }
@@ -9566,10 +9637,11 @@ void bnx2x_load_firmware(struct bnx2x_softc *sc)
 
        sc->fw_len = st.st_size;
        if (sc->fw_len < FW_HEADER_LEN) {
 
        sc->fw_len = st.st_size;
        if (sc->fw_len < FW_HEADER_LEN) {
-               PMD_DRV_LOG(NOTICE, "Invalid fw size: %" PRIu64, sc->fw_len);
+               PMD_DRV_LOG(NOTICE, sc,
+                           "Invalid fw size: %" PRIu64, sc->fw_len);
                return;
        }
                return;
        }
-       PMD_DRV_LOG(DEBUG, "fw_len = %" PRIu64, sc->fw_len);
+       PMD_DRV_LOG(DEBUG, sc, "fw_len = %" PRIu64, sc->fw_len);
 }
 
 static void
 }
 
 static void
@@ -9636,11 +9708,11 @@ int bnx2x_attach(struct bnx2x_softc *sc)
 {
        int rc;
 
 {
        int rc;
 
-       PMD_DRV_LOG(DEBUG, "Starting attach...");
+       PMD_DRV_LOG(DEBUG, sc, "Starting attach...");
 
        rc = bnx2x_pci_get_caps(sc);
        if (rc) {
 
        rc = bnx2x_pci_get_caps(sc);
        if (rc) {
-               PMD_DRV_LOG(NOTICE, "PCIe caps reading was failed");
+               PMD_DRV_LOG(NOTICE, sc, "PCIe caps reading was failed");
                return rc;
        }
 
                return rc;
        }
 
@@ -9679,7 +9751,7 @@ int bnx2x_attach(struct bnx2x_softc *sc)
 
                /* get device info and set params */
                if (bnx2x_get_device_info(sc) != 0) {
 
                /* get device info and set params */
                if (bnx2x_get_device_info(sc) != 0) {
-                       PMD_DRV_LOG(NOTICE, "getting device info");
+                       PMD_DRV_LOG(NOTICE, sc, "getting device info");
                        return -ENXIO;
                }
 
                        return -ENXIO;
                }
 
@@ -9703,6 +9775,8 @@ int bnx2x_attach(struct bnx2x_softc *sc)
                sc->fw_seq =
                    (SHMEM_RD(sc, func_mb[SC_FW_MB_IDX(sc)].drv_mb_header) &
                     DRV_MSG_SEQ_NUMBER_MASK);
                sc->fw_seq =
                    (SHMEM_RD(sc, func_mb[SC_FW_MB_IDX(sc)].drv_mb_header) &
                     DRV_MSG_SEQ_NUMBER_MASK);
+               PMD_DRV_LOG(DEBUG, sc, "prev unload fw_seq 0x%04x",
+                           sc->fw_seq);
                bnx2x_prev_unload(sc);
        }
 
                bnx2x_prev_unload(sc);
        }
 
@@ -9778,7 +9852,7 @@ bnx2x_igu_clear_sb_gen(struct bnx2x_softc *sc, uint8_t func, uint8_t idu_sb_id,
 
        mb();
 
 
        mb();
 
-       PMD_DRV_LOG(DEBUG, "write 0x%08x to IGU(via GRC) addr 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "write 0x%08x to IGU(via GRC) addr 0x%x",
                    ctl, igu_addr_ctl);
        REG_WR(sc, igu_addr_ctl, ctl);
 
                    ctl, igu_addr_ctl);
        REG_WR(sc, igu_addr_ctl, ctl);
 
@@ -9790,7 +9864,7 @@ bnx2x_igu_clear_sb_gen(struct bnx2x_softc *sc, uint8_t func, uint8_t idu_sb_id,
        }
 
        if (!(REG_RD(sc, igu_addr_ack) & sb_bit)) {
        }
 
        if (!(REG_RD(sc, igu_addr_ack) & sb_bit)) {
-               PMD_DRV_LOG(DEBUG,
+               PMD_DRV_LOG(DEBUG, sc,
                            "Unable to finish IGU cleanup: "
                            "idu_sb_id %d offset %d bit %d (cnt %d)",
                            idu_sb_id, idu_sb_id / 32, idu_sb_id % 32, cnt);
                            "Unable to finish IGU cleanup: "
                            "idu_sb_id %d offset %d bit %d (cnt %d)",
                            idu_sb_id, idu_sb_id / 32, idu_sb_id % 32, cnt);
@@ -9810,7 +9884,7 @@ static void bnx2x_reset_common(struct bnx2x_softc *sc)
 {
        uint32_t val = 0x1400;
 
 {
        uint32_t val = 0x1400;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        /* reset_common */
        REG_WR(sc, (GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR),
 
        /* reset_common */
        REG_WR(sc, (GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR),
@@ -9844,8 +9918,10 @@ static void bnx2x_common_init_phy(struct bnx2x_softc *sc)
                shmem2_base[1] = SHMEM2_RD(sc, other_shmem2_base_addr);
        }
 
                shmem2_base[1] = SHMEM2_RD(sc, other_shmem2_base_addr);
        }
 
+       bnx2x_acquire_phy_lock(sc);
        elink_common_init_phy(sc, shmem_base, shmem2_base,
                              sc->devinfo.chip_id, 0);
        elink_common_init_phy(sc, shmem_base, shmem2_base,
                              sc->devinfo.chip_id, 0);
+       bnx2x_release_phy_lock(sc);
 }
 
 static void bnx2x_pf_disable(struct bnx2x_softc *sc)
 }
 
 static void bnx2x_pf_disable(struct bnx2x_softc *sc)
@@ -10019,7 +10095,8 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc)
        uint8_t abs_func_id;
        uint32_t val;
 
        uint8_t abs_func_id;
        uint32_t val;
 
-       PMD_DRV_LOG(DEBUG, "starting common init for func %d", SC_ABS_FUNC(sc));
+       PMD_DRV_LOG(DEBUG, sc,
+                   "starting common init for func %d", SC_ABS_FUNC(sc));
 
        /*
         * take the RESET lock to protect undi_unload flow from accessing
 
        /*
         * take the RESET lock to protect undi_unload flow from accessing
@@ -10102,12 +10179,12 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc)
 
        val = REG_RD(sc, PXP2_REG_RQ_CFG_DONE);
        if (val != 1) {
 
        val = REG_RD(sc, PXP2_REG_RQ_CFG_DONE);
        if (val != 1) {
-               PMD_DRV_LOG(NOTICE, "PXP2 CFG failed");
+               PMD_DRV_LOG(NOTICE, sc, "PXP2 CFG failed");
                return -1;
        }
        val = REG_RD(sc, PXP2_REG_RD_INIT_DONE);
        if (val != 1) {
                return -1;
        }
        val = REG_RD(sc, PXP2_REG_RD_INIT_DONE);
        if (val != 1) {
-               PMD_DRV_LOG(NOTICE, "PXP2 RD_INIT failed");
+               PMD_DRV_LOG(NOTICE, sc, "PXP2 RD_INIT failed");
                return -1;
        }
 
                return -1;
        }
 
@@ -10229,7 +10306,7 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc)
                } while (factor-- && (val != 1));
 
                if (val != 1) {
                } while (factor-- && (val != 1));
 
                if (val != 1) {
-                       PMD_DRV_LOG(NOTICE, "ATC_INIT failed");
+                       PMD_DRV_LOG(NOTICE, sc, "ATC_INIT failed");
                        return -1;
                }
        }
                        return -1;
                }
        }
@@ -10367,7 +10444,7 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc)
 
        if (sizeof(union cdu_context) != 1024) {
 /* we currently assume that a context is 1024 bytes */
 
        if (sizeof(union cdu_context) != 1024) {
 /* we currently assume that a context is 1024 bytes */
-               PMD_DRV_LOG(NOTICE,
+               PMD_DRV_LOG(NOTICE, sc,
                            "please adjust the size of cdu_context(%ld)",
                            (long)sizeof(union cdu_context));
        }
                            "please adjust the size of cdu_context(%ld)",
                            (long)sizeof(union cdu_context));
        }
@@ -10429,17 +10506,17 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc)
        /* finish CFC init */
        val = reg_poll(sc, CFC_REG_LL_INIT_DONE, 1, 100, 10);
        if (val != 1) {
        /* finish CFC init */
        val = reg_poll(sc, CFC_REG_LL_INIT_DONE, 1, 100, 10);
        if (val != 1) {
-               PMD_DRV_LOG(NOTICE, "CFC LL_INIT failed");
+               PMD_DRV_LOG(NOTICE, sc, "CFC LL_INIT failed");
                return -1;
        }
        val = reg_poll(sc, CFC_REG_AC_INIT_DONE, 1, 100, 10);
        if (val != 1) {
                return -1;
        }
        val = reg_poll(sc, CFC_REG_AC_INIT_DONE, 1, 100, 10);
        if (val != 1) {
-               PMD_DRV_LOG(NOTICE, "CFC AC_INIT failed");
+               PMD_DRV_LOG(NOTICE, sc, "CFC AC_INIT failed");
                return -1;
        }
        val = reg_poll(sc, CFC_REG_CAM_INIT_DONE, 1, 100, 10);
        if (val != 1) {
                return -1;
        }
        val = reg_poll(sc, CFC_REG_CAM_INIT_DONE, 1, 100, 10);
        if (val != 1) {
-               PMD_DRV_LOG(NOTICE, "CFC CAM_INIT failed");
+               PMD_DRV_LOG(NOTICE, sc, "CFC CAM_INIT failed");
                return -1;
        }
        REG_WR(sc, CFC_REG_DEBUG0, 0);
                return -1;
        }
        REG_WR(sc, CFC_REG_DEBUG0, 0);
@@ -10492,7 +10569,7 @@ static int bnx2x_init_hw_port(struct bnx2x_softc *sc)
        uint32_t low, high;
        uint32_t val;
 
        uint32_t low, high;
        uint32_t val;
 
-       PMD_DRV_LOG(DEBUG, "starting port init for port %d", port);
+       PMD_DRV_LOG(DEBUG, sc, "starting port init for port %d", port);
 
        REG_WR(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4, 0);
 
 
        REG_WR(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4, 0);
 
@@ -10719,7 +10796,7 @@ bnx2x_flr_clnup_poll_hw_counter(struct bnx2x_softc *sc, uint32_t reg,
        uint32_t val = bnx2x_flr_clnup_reg_poll(sc, reg, 0, poll_cnt);
 
        if (val != 0) {
        uint32_t val = bnx2x_flr_clnup_reg_poll(sc, reg, 0, poll_cnt);
 
        if (val != 0) {
-               PMD_DRV_LOG(NOTICE, "%s usage count=%d", msg, val);
+               PMD_DRV_LOG(NOTICE, sc, "%s usage count=%d", msg, val);
                return -1;
        }
 
                return -1;
        }
 
@@ -10811,7 +10888,7 @@ bnx2x_send_final_clnup(struct bnx2x_softc *sc, uint8_t clnup_func,
        int ret = 0;
 
        if (REG_RD(sc, comp_addr)) {
        int ret = 0;
 
        if (REG_RD(sc, comp_addr)) {
-               PMD_DRV_LOG(NOTICE,
+               PMD_DRV_LOG(NOTICE, sc,
                            "Cleanup complete was not 0 before sending");
                return -1;
        }
                            "Cleanup complete was not 0 before sending");
                return -1;
        }
@@ -10824,8 +10901,8 @@ bnx2x_send_final_clnup(struct bnx2x_softc *sc, uint8_t clnup_func,
        REG_WR(sc, XSDM_REG_OPERATION_GEN, op_gen_command);
 
        if (bnx2x_flr_clnup_reg_poll(sc, comp_addr, 1, poll_cnt) != 1) {
        REG_WR(sc, XSDM_REG_OPERATION_GEN, op_gen_command);
 
        if (bnx2x_flr_clnup_reg_poll(sc, comp_addr, 1, poll_cnt) != 1) {
-               PMD_DRV_LOG(NOTICE, "FW final cleanup did not succeed");
-               PMD_DRV_LOG(DEBUG, "At timeout completion address contained %x",
+               PMD_DRV_LOG(NOTICE, sc, "FW final cleanup did not succeed");
+               PMD_DRV_LOG(DEBUG, sc, "At timeout completion address contained %x",
                            (REG_RD(sc, comp_addr)));
                rte_panic("FLR cleanup failed");
                return -1;
                            (REG_RD(sc, comp_addr)));
                rte_panic("FLR cleanup failed");
                return -1;
@@ -10941,28 +11018,30 @@ static void bnx2x_hw_enable_status(struct bnx2x_softc *sc)
        __rte_unused uint32_t val;
 
        val = REG_RD(sc, CFC_REG_WEAK_ENABLE_PF);
        __rte_unused uint32_t val;
 
        val = REG_RD(sc, CFC_REG_WEAK_ENABLE_PF);
-       PMD_DRV_LOG(DEBUG, "CFC_REG_WEAK_ENABLE_PF is 0x%x", val);
+       PMD_DRV_LOG(DEBUG, sc, "CFC_REG_WEAK_ENABLE_PF is 0x%x", val);
 
        val = REG_RD(sc, PBF_REG_DISABLE_PF);
 
        val = REG_RD(sc, PBF_REG_DISABLE_PF);
-       PMD_DRV_LOG(DEBUG, "PBF_REG_DISABLE_PF is 0x%x", val);
+       PMD_DRV_LOG(DEBUG, sc, "PBF_REG_DISABLE_PF is 0x%x", val);
 
        val = REG_RD(sc, IGU_REG_PCI_PF_MSI_EN);
 
        val = REG_RD(sc, IGU_REG_PCI_PF_MSI_EN);
-       PMD_DRV_LOG(DEBUG, "IGU_REG_PCI_PF_MSI_EN is 0x%x", val);
+       PMD_DRV_LOG(DEBUG, sc, "IGU_REG_PCI_PF_MSI_EN is 0x%x", val);
 
        val = REG_RD(sc, IGU_REG_PCI_PF_MSIX_EN);
 
        val = REG_RD(sc, IGU_REG_PCI_PF_MSIX_EN);
-       PMD_DRV_LOG(DEBUG, "IGU_REG_PCI_PF_MSIX_EN is 0x%x", val);
+       PMD_DRV_LOG(DEBUG, sc, "IGU_REG_PCI_PF_MSIX_EN is 0x%x", val);
 
        val = REG_RD(sc, IGU_REG_PCI_PF_MSIX_FUNC_MASK);
 
        val = REG_RD(sc, IGU_REG_PCI_PF_MSIX_FUNC_MASK);
-       PMD_DRV_LOG(DEBUG, "IGU_REG_PCI_PF_MSIX_FUNC_MASK is 0x%x", val);
+       PMD_DRV_LOG(DEBUG, sc, "IGU_REG_PCI_PF_MSIX_FUNC_MASK is 0x%x", val);
 
        val = REG_RD(sc, PGLUE_B_REG_SHADOW_BME_PF_7_0_CLR);
 
        val = REG_RD(sc, PGLUE_B_REG_SHADOW_BME_PF_7_0_CLR);
-       PMD_DRV_LOG(DEBUG, "PGLUE_B_REG_SHADOW_BME_PF_7_0_CLR is 0x%x", val);
+       PMD_DRV_LOG(DEBUG, sc,
+                   "PGLUE_B_REG_SHADOW_BME_PF_7_0_CLR is 0x%x", val);
 
        val = REG_RD(sc, PGLUE_B_REG_FLR_REQUEST_PF_7_0_CLR);
 
        val = REG_RD(sc, PGLUE_B_REG_FLR_REQUEST_PF_7_0_CLR);
-       PMD_DRV_LOG(DEBUG, "PGLUE_B_REG_FLR_REQUEST_PF_7_0_CLR is 0x%x", val);
+       PMD_DRV_LOG(DEBUG, sc,
+                   "PGLUE_B_REG_FLR_REQUEST_PF_7_0_CLR is 0x%x", val);
 
        val = REG_RD(sc, PGLUE_B_REG_INTERNAL_PFID_ENABLE_MASTER);
 
        val = REG_RD(sc, PGLUE_B_REG_INTERNAL_PFID_ENABLE_MASTER);
-       PMD_DRV_LOG(DEBUG, "PGLUE_B_REG_INTERNAL_PFID_ENABLE_MASTER is 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "PGLUE_B_REG_INTERNAL_PFID_ENABLE_MASTER is 0x%x",
                    val);
 }
 
                    val);
 }
 
@@ -11006,7 +11085,7 @@ static int bnx2x_pf_flr_clnup(struct bnx2x_softc *sc)
 
        /* Verify no pending pci transactions */
        if (bnx2x_is_pcie_pending(sc)) {
 
        /* Verify no pending pci transactions */
        if (bnx2x_is_pcie_pending(sc)) {
-               PMD_DRV_LOG(NOTICE, "PCIE Transactions still pending");
+               PMD_DRV_LOG(NOTICE, sc, "PCIE Transactions still pending");
        }
 
        /* Debug */
        }
 
        /* Debug */
@@ -11033,13 +11112,13 @@ static int bnx2x_init_hw_func(struct bnx2x_softc *sc)
        int main_mem_width, rc;
        uint32_t i;
 
        int main_mem_width, rc;
        uint32_t i;
 
-       PMD_DRV_LOG(DEBUG, "starting func init for func %d", func);
+       PMD_DRV_LOG(DEBUG, sc, "starting func init for func %d", func);
 
        /* FLR cleanup */
        if (!CHIP_IS_E1x(sc)) {
                rc = bnx2x_pf_flr_clnup(sc);
                if (rc) {
 
        /* FLR cleanup */
        if (!CHIP_IS_E1x(sc)) {
                rc = bnx2x_pf_flr_clnup(sc);
                if (rc) {
-                       PMD_DRV_LOG(NOTICE, "FLR cleanup failed!");
+                       PMD_DRV_LOG(NOTICE, sc, "FLR cleanup failed!");
                        return rc;
                }
        }
                        return rc;
                }
        }
@@ -11286,7 +11365,7 @@ static int bnx2x_init_hw_func(struct bnx2x_softc *sc)
 
                val = REG_RD(sc, main_mem_prty_clr);
                if (val) {
 
                val = REG_RD(sc, main_mem_prty_clr);
                if (val) {
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "Parity errors in HC block during function init (0x%x)!",
                                    val);
                }
                                    "Parity errors in HC block during function init (0x%x)!",
                                    val);
                }
@@ -11321,10 +11400,12 @@ static int bnx2x_init_hw_func(struct bnx2x_softc *sc)
 static void bnx2x_link_reset(struct bnx2x_softc *sc)
 {
        if (!BNX2X_NOMCP(sc)) {
 static void bnx2x_link_reset(struct bnx2x_softc *sc)
 {
        if (!BNX2X_NOMCP(sc)) {
+               bnx2x_acquire_phy_lock(sc);
                elink_lfa_reset(&sc->link_params, &sc->link_vars);
                elink_lfa_reset(&sc->link_params, &sc->link_vars);
+               bnx2x_release_phy_lock(sc);
        } else {
                if (!CHIP_REV_IS_SLOW(sc)) {
        } else {
                if (!CHIP_REV_IS_SLOW(sc)) {
-                       PMD_DRV_LOG(WARNING,
+                       PMD_DRV_LOG(WARNING, sc,
                                    "Bootcode is missing - cannot reset link");
                }
        }
                                    "Bootcode is missing - cannot reset link");
                }
        }
@@ -11354,7 +11435,7 @@ static void bnx2x_reset_port(struct bnx2x_softc *sc)
        /* Check for BRB port occupancy */
        val = REG_RD(sc, BRB1_REG_PORT_NUM_OCC_BLOCKS_0 + port * 4);
        if (val) {
        /* Check for BRB port occupancy */
        val = REG_RD(sc, BRB1_REG_PORT_NUM_OCC_BLOCKS_0 + port * 4);
        if (val) {
-               PMD_DRV_LOG(DEBUG,
+               PMD_DRV_LOG(DEBUG, sc,
                            "BRB1 is not empty, %d blocks are occupied", val);
        }
 }
                            "BRB1 is not empty, %d blocks are occupied", val);
        }
 }
@@ -11548,10 +11629,10 @@ static int ecore_gunzip(struct bnx2x_softc *sc, const uint8_t * zbuf, int len)
        int ret;
        int data_begin = cut_gzip_prefix(zbuf, len);
 
        int ret;
        int data_begin = cut_gzip_prefix(zbuf, len);
 
-       PMD_DRV_LOG(DEBUG, "ecore_gunzip %d", len);
+       PMD_DRV_LOG(DEBUG, sc, "ecore_gunzip %d", len);
 
        if (data_begin <= 0) {
 
        if (data_begin <= 0) {
-               PMD_DRV_LOG(NOTICE, "bad gzip prefix");
+               PMD_DRV_LOG(NOTICE, sc, "bad gzip prefix");
                return -1;
        }
 
                return -1;
        }
 
@@ -11563,19 +11644,19 @@ static int ecore_gunzip(struct bnx2x_softc *sc, const uint8_t * zbuf, int len)
 
        ret = inflateInit2(&zlib_stream, -MAX_WBITS);
        if (ret != Z_OK) {
 
        ret = inflateInit2(&zlib_stream, -MAX_WBITS);
        if (ret != Z_OK) {
-               PMD_DRV_LOG(NOTICE, "zlib inflateInit2 error");
+               PMD_DRV_LOG(NOTICE, sc, "zlib inflateInit2 error");
                return ret;
        }
 
        ret = inflate(&zlib_stream, Z_FINISH);
        if ((ret != Z_STREAM_END) && (ret != Z_OK)) {
                return ret;
        }
 
        ret = inflate(&zlib_stream, Z_FINISH);
        if ((ret != Z_STREAM_END) && (ret != Z_OK)) {
-               PMD_DRV_LOG(NOTICE, "zlib inflate error: %d %s", ret,
+               PMD_DRV_LOG(NOTICE, sc, "zlib inflate error: %d %s", ret,
                            zlib_stream.msg);
        }
 
        sc->gz_outlen = zlib_stream.total_out;
        if (sc->gz_outlen & 0x3) {
                            zlib_stream.msg);
        }
 
        sc->gz_outlen = zlib_stream.total_out;
        if (sc->gz_outlen & 0x3) {
-               PMD_DRV_LOG(NOTICE, "firmware is not aligned. gz_outlen == %d",
+               PMD_DRV_LOG(NOTICE, sc, "firmware is not aligned. gz_outlen == %d",
                            sc->gz_outlen);
        }
        sc->gz_outlen >>= 2;
                            sc->gz_outlen);
        }
        sc->gz_outlen >>= 2;
@@ -11605,7 +11686,7 @@ ecore_storm_memset_struct(struct bnx2x_softc *sc, uint32_t addr, size_t size,
        }
 }
 
        }
 }
 
-static const char *get_ext_phy_type(uint32_t ext_phy_type)
+__rte_unused static const char *get_ext_phy_type(uint32_t ext_phy_type)
 {
        uint32_t phy_type_idx = ext_phy_type >> 8;
        static const char *types[] =
 {
        uint32_t phy_type_idx = ext_phy_type >> 8;
        static const char *types[] =
@@ -11623,7 +11704,7 @@ static const char *get_ext_phy_type(uint32_t ext_phy_type)
                return types[13];
 }
 
                return types[13];
 }
 
-static const char *get_state(uint32_t state)
+__rte_unused static const char *get_state(uint32_t state)
 {
        uint32_t state_idx = state >> 12;
        static const char *states[] = { "CLOSED", "OPENING_WAIT4_LOAD",
 {
        uint32_t state_idx = state >> 12;
        static const char *states[] = { "CLOSED", "OPENING_WAIT4_LOAD",
@@ -11639,7 +11720,7 @@ static const char *get_state(uint32_t state)
                return states[0x10];
 }
 
                return states[0x10];
 }
 
-static const char *get_recovery_state(uint32_t state)
+__rte_unused static const char *get_recovery_state(uint32_t state)
 {
        static const char *states[] = { "NONE", "DONE", "INIT",
                "WAIT", "FAILED", "NIC_LOADING"
 {
        static const char *states[] = { "NONE", "DONE", "INIT",
                "WAIT", "FAILED", "NIC_LOADING"
@@ -11647,7 +11728,7 @@ static const char *get_recovery_state(uint32_t state)
        return states[state];
 }
 
        return states[state];
 }
 
-static const char *get_rx_mode(uint32_t mode)
+__rte_unused static const char *get_rx_mode(uint32_t mode)
 {
        static const char *modes[] = { "NONE", "NORMAL", "ALLMULTI",
                "PROMISC", "MAX_MULTICAST", "ERROR"
 {
        static const char *modes[] = { "NONE", "NORMAL", "ALLMULTI",
                "PROMISC", "MAX_MULTICAST", "ERROR"
@@ -11662,7 +11743,7 @@ static const char *get_rx_mode(uint32_t mode)
 }
 
 #define BNX2X_INFO_STR_MAX 256
 }
 
 #define BNX2X_INFO_STR_MAX 256
-static const char *get_bnx2x_flags(uint32_t flags)
+__rte_unused static const char *get_bnx2x_flags(uint32_t flags)
 {
        int i;
        static const char *flag[] = { "ONE_PORT ", "NO_ISCSI ",
 {
        int i;
        static const char *flag[] = { "ONE_PORT ", "NO_ISCSI ",
@@ -11694,7 +11775,7 @@ void bnx2x_print_adapter_info(struct bnx2x_softc *sc)
        int i = 0;
        __rte_unused uint32_t ext_phy_type;
 
        int i = 0;
        __rte_unused uint32_t ext_phy_type;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
        if (sc->link_vars.phy_flags & PHY_XGXS_FLAG)
                ext_phy_type = ELINK_XGXS_EXT_PHY_TYPE(REG_RD(sc,
                                                              sc->
        if (sc->link_vars.phy_flags & PHY_XGXS_FLAG)
                ext_phy_type = ELINK_XGXS_EXT_PHY_TYPE(REG_RD(sc,
                                                              sc->
@@ -11713,97 +11794,102 @@ void bnx2x_print_adapter_info(struct bnx2x_softc *sc)
                                                                         dev_info.port_hw_config
                                                                         [0].external_phy_config)));
 
                                                                         dev_info.port_hw_config
                                                                         [0].external_phy_config)));
 
-       PMD_INIT_LOG(DEBUG, "\n\n===================================\n");
+       PMD_DRV_LOG(INFO, sc, "\n\n===================================\n");
        /* Hardware chip info. */
        /* Hardware chip info. */
-       PMD_INIT_LOG(DEBUG, "%12s : %#08x", "ASIC", sc->devinfo.chip_id);
-       PMD_INIT_LOG(DEBUG, "%12s : %c%d", "Rev", (CHIP_REV(sc) >> 12) + 'A',
+       PMD_DRV_LOG(INFO, sc, "%12s : %#08x", "ASIC", sc->devinfo.chip_id);
+       PMD_DRV_LOG(INFO, sc, "%12s : %c%d", "Rev", (CHIP_REV(sc) >> 12) + 'A',
                     (CHIP_METAL(sc) >> 4));
 
        /* Bus info. */
                     (CHIP_METAL(sc) >> 4));
 
        /* Bus info. */
-       PMD_INIT_LOG(DEBUG, "%12s : %d, ", "Bus PCIe", sc->devinfo.pcie_link_width);
+       PMD_DRV_LOG(INFO, sc,
+                   "%12s : %d, ", "Bus PCIe", sc->devinfo.pcie_link_width);
        switch (sc->devinfo.pcie_link_speed) {
        case 1:
        switch (sc->devinfo.pcie_link_speed) {
        case 1:
-               PMD_INIT_LOG(DEBUG, "%23s", "2.5 Gbps");
+               PMD_DRV_LOG(INFO, sc, "%23s", "2.5 Gbps");
                break;
        case 2:
                break;
        case 2:
-               PMD_INIT_LOG(DEBUG, "%21s", "5 Gbps");
+               PMD_DRV_LOG(INFO, sc, "%21s", "5 Gbps");
                break;
        case 4:
                break;
        case 4:
-               PMD_INIT_LOG(DEBUG, "%21s", "8 Gbps");
+               PMD_DRV_LOG(INFO, sc, "%21s", "8 Gbps");
                break;
        default:
                break;
        default:
-               PMD_INIT_LOG(DEBUG, "%33s", "Unknown link speed");
+               PMD_DRV_LOG(INFO, sc, "%33s", "Unknown link speed");
        }
 
        /* Device features. */
        }
 
        /* Device features. */
-       PMD_INIT_LOG(DEBUG, "%12s : ", "Flags");
+       PMD_DRV_LOG(INFO, sc, "%12s : ", "Flags");
 
        /* Miscellaneous flags. */
        if (sc->devinfo.pcie_cap_flags & BNX2X_MSI_CAPABLE_FLAG) {
 
        /* Miscellaneous flags. */
        if (sc->devinfo.pcie_cap_flags & BNX2X_MSI_CAPABLE_FLAG) {
-               PMD_INIT_LOG(DEBUG, "%18s", "MSI");
+               PMD_DRV_LOG(INFO, sc, "%18s", "MSI");
                i++;
        }
 
        if (sc->devinfo.pcie_cap_flags & BNX2X_MSIX_CAPABLE_FLAG) {
                if (i > 0)
                i++;
        }
 
        if (sc->devinfo.pcie_cap_flags & BNX2X_MSIX_CAPABLE_FLAG) {
                if (i > 0)
-                       PMD_INIT_LOG(DEBUG, "|");
-               PMD_INIT_LOG(DEBUG, "%20s", "MSI-X");
+                       PMD_DRV_LOG(INFO, sc, "|");
+               PMD_DRV_LOG(INFO, sc, "%20s", "MSI-X");
                i++;
        }
 
        if (IS_PF(sc)) {
                i++;
        }
 
        if (IS_PF(sc)) {
-               PMD_INIT_LOG(DEBUG, "%12s : ", "Queues");
+               PMD_DRV_LOG(INFO, sc, "%12s : ", "Queues");
                switch (sc->sp->rss_rdata.rss_mode) {
                case ETH_RSS_MODE_DISABLED:
                switch (sc->sp->rss_rdata.rss_mode) {
                case ETH_RSS_MODE_DISABLED:
-                       PMD_INIT_LOG(DEBUG, "%19s", "None");
+                       PMD_DRV_LOG(INFO, sc, "%19s", "None");
                        break;
                case ETH_RSS_MODE_REGULAR:
                        break;
                case ETH_RSS_MODE_REGULAR:
-                       PMD_INIT_LOG(DEBUG, "%18s : %d", "RSS", sc->num_queues);
+                       PMD_DRV_LOG(INFO, sc,
+                                   "%18s : %d", "RSS", sc->num_queues);
                        break;
                default:
                        break;
                default:
-                       PMD_INIT_LOG(DEBUG, "%22s", "Unknown");
+                       PMD_DRV_LOG(INFO, sc, "%22s", "Unknown");
                        break;
                }
        }
 
        /* RTE and Driver versions */
                        break;
                }
        }
 
        /* RTE and Driver versions */
-       PMD_INIT_LOG(DEBUG, "%12s : %s", "DPDK",
-                    rte_version());
-       PMD_INIT_LOG(DEBUG, "%12s : %s", "Driver",
-                    bnx2x_pmd_version());
+       PMD_DRV_LOG(INFO, sc, "%12s : %s", "DPDK",
+                       rte_version());
+       PMD_DRV_LOG(INFO, sc, "%12s : %s", "Driver",
+                       bnx2x_pmd_version());
 
        /* Firmware versions and device features. */
 
        /* Firmware versions and device features. */
-       PMD_INIT_LOG(DEBUG, "%12s : %d.%d.%d",
+       PMD_DRV_LOG(INFO, sc, "%12s : %d.%d.%d",
                     "Firmware",
                     BNX2X_5710_FW_MAJOR_VERSION,
                     BNX2X_5710_FW_MINOR_VERSION,
                     BNX2X_5710_FW_REVISION_VERSION);
                     "Firmware",
                     BNX2X_5710_FW_MAJOR_VERSION,
                     BNX2X_5710_FW_MINOR_VERSION,
                     BNX2X_5710_FW_REVISION_VERSION);
-       PMD_INIT_LOG(DEBUG, "%12s : %s",
+       PMD_DRV_LOG(INFO, sc, "%12s : %s",
                     "Bootcode", sc->devinfo.bc_ver_str);
 
                     "Bootcode", sc->devinfo.bc_ver_str);
 
-       PMD_INIT_LOG(DEBUG, "\n\n===================================\n");
-       PMD_INIT_LOG(DEBUG, "%12s : %u", "Bnx2x Func", sc->pcie_func);
-       PMD_INIT_LOG(DEBUG, "%12s : %s", "Bnx2x Flags", get_bnx2x_flags(sc->flags));
-       PMD_INIT_LOG(DEBUG, "%12s : %s", "DMAE Is",
+       PMD_DRV_LOG(INFO, sc, "\n\n===================================\n");
+       PMD_DRV_LOG(INFO, sc, "%12s : %u", "Bnx2x Func", sc->pcie_func);
+       PMD_DRV_LOG(INFO, sc,
+                   "%12s : %s", "Bnx2x Flags", get_bnx2x_flags(sc->flags));
+       PMD_DRV_LOG(INFO, sc, "%12s : %s", "DMAE Is",
                     (sc->dmae_ready ? "Ready" : "Not Ready"));
                     (sc->dmae_ready ? "Ready" : "Not Ready"));
-       PMD_INIT_LOG(DEBUG, "%12s : %s", "OVLAN", (OVLAN(sc) ? "YES" : "NO"));
-       PMD_INIT_LOG(DEBUG, "%12s : %s", "MF", (IS_MF(sc) ? "YES" : "NO"));
-       PMD_INIT_LOG(DEBUG, "%12s : %u", "MTU", sc->mtu);
-       PMD_INIT_LOG(DEBUG, "%12s : %s", "PHY Type", get_ext_phy_type(ext_phy_type));
-       PMD_INIT_LOG(DEBUG, "%12s : %x:%x:%x:%x:%x:%x", "MAC Addr",
+       PMD_DRV_LOG(INFO, sc, "%12s : %s", "OVLAN", (OVLAN(sc) ? "YES" : "NO"));
+       PMD_DRV_LOG(INFO, sc, "%12s : %s", "MF", (IS_MF(sc) ? "YES" : "NO"));
+       PMD_DRV_LOG(INFO, sc, "%12s : %u", "MTU", sc->mtu);
+       PMD_DRV_LOG(INFO, sc,
+                   "%12s : %s", "PHY Type", get_ext_phy_type(ext_phy_type));
+       PMD_DRV_LOG(INFO, sc, "%12s : %x:%x:%x:%x:%x:%x", "MAC Addr",
                        sc->link_params.mac_addr[0],
                        sc->link_params.mac_addr[1],
                        sc->link_params.mac_addr[2],
                        sc->link_params.mac_addr[3],
                        sc->link_params.mac_addr[4],
                        sc->link_params.mac_addr[5]);
                        sc->link_params.mac_addr[0],
                        sc->link_params.mac_addr[1],
                        sc->link_params.mac_addr[2],
                        sc->link_params.mac_addr[3],
                        sc->link_params.mac_addr[4],
                        sc->link_params.mac_addr[5]);
-       PMD_INIT_LOG(DEBUG, "%12s : %s", "RX Mode", get_rx_mode(sc->rx_mode));
-       PMD_INIT_LOG(DEBUG, "%12s : %s", "State", get_state(sc->state));
+       PMD_DRV_LOG(INFO, sc, "%12s : %s", "RX Mode", get_rx_mode(sc->rx_mode));
+       PMD_DRV_LOG(INFO, sc, "%12s : %s", "State", get_state(sc->state));
        if (sc->recovery_state)
        if (sc->recovery_state)
-               PMD_INIT_LOG(DEBUG, "%12s : %s", "Recovery",
+               PMD_DRV_LOG(INFO, sc, "%12s : %s", "Recovery",
                             get_recovery_state(sc->recovery_state));
                             get_recovery_state(sc->recovery_state));
-       PMD_INIT_LOG(DEBUG, "%12s : CQ = %lx,  EQ = %lx", "SPQ Left",
+       PMD_DRV_LOG(INFO, sc, "%12s : CQ = %lx,  EQ = %lx", "SPQ Left",
                     sc->cq_spq_left, sc->eq_spq_left);
                     sc->cq_spq_left, sc->eq_spq_left);
-       PMD_INIT_LOG(DEBUG, "%12s : %x", "Switch", sc->link_params.switch_cfg);
-       PMD_INIT_LOG(DEBUG, "\n\n===================================\n");
+       PMD_DRV_LOG(INFO, sc,
+                   "%12s : %x", "Switch", sc->link_params.switch_cfg);
+       PMD_DRV_LOG(INFO, sc, "\n\n===================================\n");
 }
 }
index 5709305..5dfd2f8 100644 (file)
@@ -725,6 +725,13 @@ struct bnx2x_port {
 
     uint32_t    phy_addr;
 
 
     uint32_t    phy_addr;
 
+       /* Used to synchronize phy accesses. */
+       rte_spinlock_t  phy_mtx;
+       char            phy_mtx_name[32];
+
+#define BNX2X_PHY_LOCK(sc)          rte_spinlock_lock(&sc->port.phy_mtx)
+#define BNX2X_PHY_UNLOCK(sc)        rte_spinlock_unlock(&sc->port.phy_mtx)
+
     /*
      * MCP scratchpad address for port specific statistics.
      * The device is responsible for writing statistcss
     /*
      * MCP scratchpad address for port specific statistics.
      * The device is responsible for writing statistcss
@@ -803,6 +810,10 @@ struct bnx2x_mf_info {
 
 /* Device information data structure. */
 struct bnx2x_devinfo {
 
 /* Device information data structure. */
 struct bnx2x_devinfo {
+#if 1
+#define NAME_SIZE 128
+       char name[NAME_SIZE];
+#endif
        /* PCIe info */
        uint16_t vendor_id;
        uint16_t device_id;
        /* PCIe info */
        uint16_t vendor_id;
        uint16_t device_id;
@@ -1418,7 +1429,7 @@ struct bnx2x_func_init_params {
 static inline void
 bnx2x_reg_write8(struct bnx2x_softc *sc, size_t offset, uint8_t val)
 {
 static inline void
 bnx2x_reg_write8(struct bnx2x_softc *sc, size_t offset, uint8_t val)
 {
-       PMD_DEBUG_PERIODIC_LOG(DEBUG, "offset=0x%08lx val=0x%02x",
+       PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "offset=0x%08lx val=0x%02x",
                               (unsigned long)offset, val);
        *((volatile uint8_t*)
          ((uintptr_t)sc->bar[BAR0].base_addr + offset)) = val;
                               (unsigned long)offset, val);
        *((volatile uint8_t*)
          ((uintptr_t)sc->bar[BAR0].base_addr + offset)) = val;
@@ -1429,10 +1440,10 @@ bnx2x_reg_write16(struct bnx2x_softc *sc, size_t offset, uint16_t val)
 {
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
        if ((offset % 2) != 0)
 {
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
        if ((offset % 2) != 0)
-               PMD_DRV_LOG(NOTICE, "Unaligned 16-bit write to 0x%08lx",
+               PMD_DRV_LOG(NOTICE, sc, "Unaligned 16-bit write to 0x%08lx",
                            (unsigned long)offset);
 #endif
                            (unsigned long)offset);
 #endif
-       PMD_DEBUG_PERIODIC_LOG(DEBUG, "offset=0x%08lx val=0x%04x",
+       PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "offset=0x%08lx val=0x%04x",
                               (unsigned long)offset, val);
        *((volatile uint16_t*)
          ((uintptr_t)sc->bar[BAR0].base_addr + offset)) = val;
                               (unsigned long)offset, val);
        *((volatile uint16_t*)
          ((uintptr_t)sc->bar[BAR0].base_addr + offset)) = val;
@@ -1443,11 +1454,11 @@ bnx2x_reg_write32(struct bnx2x_softc *sc, size_t offset, uint32_t val)
 {
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
        if ((offset % 4) != 0)
 {
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
        if ((offset % 4) != 0)
-               PMD_DRV_LOG(NOTICE, "Unaligned 32-bit write to 0x%08lx",
+               PMD_DRV_LOG(NOTICE, sc, "Unaligned 32-bit write to 0x%08lx",
                            (unsigned long)offset);
 #endif
 
                            (unsigned long)offset);
 #endif
 
-       PMD_DEBUG_PERIODIC_LOG(DEBUG, "offset=0x%08lx val=0x%08x",
+       PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "offset=0x%08lx val=0x%08x",
                               (unsigned long)offset, val);
        *((volatile uint32_t*)
          ((uintptr_t)sc->bar[BAR0].base_addr + offset)) = val;
                               (unsigned long)offset, val);
        *((volatile uint32_t*)
          ((uintptr_t)sc->bar[BAR0].base_addr + offset)) = val;
@@ -1460,7 +1471,7 @@ bnx2x_reg_read8(struct bnx2x_softc *sc, size_t offset)
 
        val = (uint8_t)(*((volatile uint8_t*)
                          ((uintptr_t)sc->bar[BAR0].base_addr + offset)));
 
        val = (uint8_t)(*((volatile uint8_t*)
                          ((uintptr_t)sc->bar[BAR0].base_addr + offset)));
-       PMD_DEBUG_PERIODIC_LOG(DEBUG, "offset=0x%08lx val=0x%02x",
+       PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "offset=0x%08lx val=0x%02x",
                               (unsigned long)offset, val);
 
        return val;
                               (unsigned long)offset, val);
 
        return val;
@@ -1473,13 +1484,13 @@ bnx2x_reg_read16(struct bnx2x_softc *sc, size_t offset)
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
        if ((offset % 2) != 0)
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
        if ((offset % 2) != 0)
-               PMD_DRV_LOG(NOTICE, "Unaligned 16-bit read from 0x%08lx",
+               PMD_DRV_LOG(NOTICE, sc, "Unaligned 16-bit read from 0x%08lx",
                            (unsigned long)offset);
 #endif
 
        val = (uint16_t)(*((volatile uint16_t*)
                           ((uintptr_t)sc->bar[BAR0].base_addr + offset)));
                            (unsigned long)offset);
 #endif
 
        val = (uint16_t)(*((volatile uint16_t*)
                           ((uintptr_t)sc->bar[BAR0].base_addr + offset)));
-       PMD_DEBUG_PERIODIC_LOG(DEBUG, "offset=0x%08lx val=0x%08x",
+       PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "offset=0x%08lx val=0x%08x",
                               (unsigned long)offset, val);
 
        return val;
                               (unsigned long)offset, val);
 
        return val;
@@ -1492,13 +1503,13 @@ bnx2x_reg_read32(struct bnx2x_softc *sc, size_t offset)
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
        if ((offset % 4) != 0)
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
        if ((offset % 4) != 0)
-               PMD_DRV_LOG(NOTICE, "Unaligned 32-bit read from 0x%08lx",
+               PMD_DRV_LOG(NOTICE, sc, "Unaligned 32-bit read from 0x%08lx",
                            (unsigned long)offset);
 #endif
 
        val = (uint32_t)(*((volatile uint32_t*)
                           ((uintptr_t)sc->bar[BAR0].base_addr + offset)));
                            (unsigned long)offset);
 #endif
 
        val = (uint32_t)(*((volatile uint32_t*)
                           ((uintptr_t)sc->bar[BAR0].base_addr + offset)));
-       PMD_DEBUG_PERIODIC_LOG(DEBUG, "offset=0x%08lx val=0x%08x",
+       PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "offset=0x%08lx val=0x%08x",
                               (unsigned long)offset, val);
 
        return val;
                               (unsigned long)offset, val);
 
        return val;
@@ -1976,7 +1987,7 @@ bnx2x_set_rx_mode(struct bnx2x_softc *sc)
                        bnx2x_vf_set_rx_mode(sc);
                }
        } else {
                        bnx2x_vf_set_rx_mode(sc);
                }
        } else {
-               PMD_DRV_LOG(NOTICE, "Card is not ready to change mode");
+               PMD_DRV_LOG(NOTICE, sc, "Card is not ready to change mode");
        }
 }
 
        }
 }
 
@@ -1984,7 +1995,7 @@ static inline int pci_read(struct bnx2x_softc *sc, size_t addr,
                           void *val, uint8_t size)
 {
        if (rte_eal_pci_read_config(sc->pci_dev, val, size, addr) <= 0) {
                           void *val, uint8_t size)
 {
        if (rte_eal_pci_read_config(sc->pci_dev, val, size, addr) <= 0) {
-               PMD_DRV_LOG(ERR, "Can't read from PCI config space");
+               PMD_DRV_LOG(ERR, sc, "Can't read from PCI config space");
                return ENXIO;
        }
 
                return ENXIO;
        }
 
@@ -1997,7 +2008,7 @@ static inline int pci_write_word(struct bnx2x_softc *sc, size_t addr, off_t val)
 
        if (rte_eal_pci_write_config(sc->pci_dev, &val16,
                                     sizeof(val16), addr) <= 0) {
 
        if (rte_eal_pci_write_config(sc->pci_dev, &val16,
                                     sizeof(val16), addr) <= 0) {
-               PMD_DRV_LOG(ERR, "Can't write to PCI config space");
+               PMD_DRV_LOG(ERR, sc, "Can't write to PCI config space");
                return ENXIO;
        }
 
                return ENXIO;
        }
 
@@ -2009,7 +2020,7 @@ static inline int pci_write_long(struct bnx2x_softc *sc, size_t addr, off_t val)
        uint32_t val32 = val;
        if (rte_eal_pci_write_config(sc->pci_dev, &val32,
                                     sizeof(val32), addr) <= 0) {
        uint32_t val32 = val;
        if (rte_eal_pci_write_config(sc->pci_dev, &val32,
                                     sizeof(val32), addr) <= 0) {
-               PMD_DRV_LOG(ERR, "Can't write to PCI config space");
+               PMD_DRV_LOG(ERR, sc, "Can't write to PCI config space");
                return ENXIO;
        }
 
                return ENXIO;
        }
 
index a8aebbe..d3733f7 100644 (file)
@@ -82,7 +82,7 @@ bnx2x_link_update(struct rte_eth_dev *dev)
 {
        struct bnx2x_softc *sc = dev->data->dev_private;
 
 {
        struct bnx2x_softc *sc = dev->data->dev_private;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
        bnx2x_link_status_update(sc);
        mb();
        dev->data->dev_link.link_speed = sc->link_vars.line_speed;
        bnx2x_link_status_update(sc);
        mb();
        dev->data->dev_link.link_speed = sc->link_vars.line_speed;
@@ -105,7 +105,7 @@ bnx2x_interrupt_action(struct rte_eth_dev *dev)
        struct bnx2x_softc *sc = dev->data->dev_private;
        uint32_t link_status;
 
        struct bnx2x_softc *sc = dev->data->dev_private;
        uint32_t link_status;
 
-       PMD_DEBUG_PERIODIC_LOG(INFO, "Interrupt handled");
+       PMD_DEBUG_PERIODIC_LOG(INFO, sc, "Interrupt handled");
 
        bnx2x_intr_legacy(sc, 0);
 
 
        bnx2x_intr_legacy(sc, 0);
 
@@ -122,8 +122,11 @@ static __rte_unused void
 bnx2x_interrupt_handler(__rte_unused struct rte_intr_handle *handle, void *param)
 {
        struct rte_eth_dev *dev = (struct rte_eth_dev *)param;
 bnx2x_interrupt_handler(__rte_unused struct rte_intr_handle *handle, void *param)
 {
        struct rte_eth_dev *dev = (struct rte_eth_dev *)param;
+       struct bnx2x_softc *sc = dev->data->dev_private;
 
 
+       atomic_store_rel_long(&sc->periodic_flags, PERIODIC_STOP);
        bnx2x_interrupt_action(dev);
        bnx2x_interrupt_action(dev);
+       atomic_store_rel_long(&sc->periodic_flags, PERIODIC_GO);
        rte_intr_enable(&(dev->pci_dev->intr_handle));
 }
 
        rte_intr_enable(&(dev->pci_dev->intr_handle));
 }
 
@@ -137,34 +140,34 @@ bnx2x_dev_configure(struct rte_eth_dev *dev)
        struct bnx2x_softc *sc = dev->data->dev_private;
        int mp_ncpus = sysconf(_SC_NPROCESSORS_CONF);
 
        struct bnx2x_softc *sc = dev->data->dev_private;
        int mp_ncpus = sysconf(_SC_NPROCESSORS_CONF);
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        if (dev->data->dev_conf.rxmode.jumbo_frame)
                sc->mtu = dev->data->dev_conf.rxmode.max_rx_pkt_len;
 
        if (dev->data->nb_tx_queues > dev->data->nb_rx_queues) {
 
        if (dev->data->dev_conf.rxmode.jumbo_frame)
                sc->mtu = dev->data->dev_conf.rxmode.max_rx_pkt_len;
 
        if (dev->data->nb_tx_queues > dev->data->nb_rx_queues) {
-               PMD_DRV_LOG(ERR, "The number of TX queues is greater than number of RX queues");
+               PMD_DRV_LOG(ERR, sc, "The number of TX queues is greater than number of RX queues");
                return -EINVAL;
        }
 
        sc->num_queues = MAX(dev->data->nb_rx_queues, dev->data->nb_tx_queues);
        if (sc->num_queues > mp_ncpus) {
                return -EINVAL;
        }
 
        sc->num_queues = MAX(dev->data->nb_rx_queues, dev->data->nb_tx_queues);
        if (sc->num_queues > mp_ncpus) {
-               PMD_DRV_LOG(ERR, "The number of queues is more than number of CPUs");
+               PMD_DRV_LOG(ERR, sc, "The number of queues is more than number of CPUs");
                return -EINVAL;
        }
 
                return -EINVAL;
        }
 
-       PMD_DRV_LOG(DEBUG, "num_queues=%d, mtu=%d",
+       PMD_DRV_LOG(DEBUG, sc, "num_queues=%d, mtu=%d",
                       sc->num_queues, sc->mtu);
 
        /* allocate ilt */
        if (bnx2x_alloc_ilt_mem(sc) != 0) {
                       sc->num_queues, sc->mtu);
 
        /* allocate ilt */
        if (bnx2x_alloc_ilt_mem(sc) != 0) {
-               PMD_DRV_LOG(ERR, "bnx2x_alloc_ilt_mem was failed");
+               PMD_DRV_LOG(ERR, sc, "bnx2x_alloc_ilt_mem was failed");
                return -ENXIO;
        }
 
        /* allocate the host hardware/software hsi structures */
        if (bnx2x_alloc_hsi_mem(sc) != 0) {
                return -ENXIO;
        }
 
        /* allocate the host hardware/software hsi structures */
        if (bnx2x_alloc_hsi_mem(sc) != 0) {
-               PMD_DRV_LOG(ERR, "bnx2x_alloc_hsi_mem was failed");
+               PMD_DRV_LOG(ERR, sc, "bnx2x_alloc_hsi_mem was failed");
                bnx2x_free_ilt_mem(sc);
                return -ENXIO;
        }
                bnx2x_free_ilt_mem(sc);
                return -ENXIO;
        }
@@ -178,11 +181,11 @@ bnx2x_dev_start(struct rte_eth_dev *dev)
        struct bnx2x_softc *sc = dev->data->dev_private;
        int ret = 0;
 
        struct bnx2x_softc *sc = dev->data->dev_private;
        int ret = 0;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        ret = bnx2x_init(sc);
        if (ret) {
 
        ret = bnx2x_init(sc);
        if (ret) {
-               PMD_DRV_LOG(DEBUG, "bnx2x_init failed (%d)", ret);
+               PMD_DRV_LOG(DEBUG, sc, "bnx2x_init failed (%d)", ret);
                return -1;
        }
 
                return -1;
        }
 
@@ -191,12 +194,12 @@ bnx2x_dev_start(struct rte_eth_dev *dev)
                                bnx2x_interrupt_handler, (void *)dev);
 
                if(rte_intr_enable(&(dev->pci_dev->intr_handle)))
                                bnx2x_interrupt_handler, (void *)dev);
 
                if(rte_intr_enable(&(dev->pci_dev->intr_handle)))
-                       PMD_DRV_LOG(ERR, "rte_intr_enable failed");
+                       PMD_DRV_LOG(ERR, sc, "rte_intr_enable failed");
        }
 
        ret = bnx2x_dev_rx_init(dev);
        if (ret != 0) {
        }
 
        ret = bnx2x_dev_rx_init(dev);
        if (ret != 0) {
-               PMD_DRV_LOG(DEBUG, "bnx2x_dev_rx_init returned error code");
+               PMD_DRV_LOG(DEBUG, sc, "bnx2x_dev_rx_init returned error code");
                return -3;
        }
 
                return -3;
        }
 
@@ -212,7 +215,7 @@ bnx2x_dev_stop(struct rte_eth_dev *dev)
        struct bnx2x_softc *sc = dev->data->dev_private;
        int ret = 0;
 
        struct bnx2x_softc *sc = dev->data->dev_private;
        int ret = 0;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        if (IS_PF(sc)) {
                rte_intr_disable(&(dev->pci_dev->intr_handle));
 
        if (IS_PF(sc)) {
                rte_intr_disable(&(dev->pci_dev->intr_handle));
@@ -222,7 +225,7 @@ bnx2x_dev_stop(struct rte_eth_dev *dev)
 
        ret = bnx2x_nic_unload(sc, UNLOAD_NORMAL, FALSE);
        if (ret) {
 
        ret = bnx2x_nic_unload(sc, UNLOAD_NORMAL, FALSE);
        if (ret) {
-               PMD_DRV_LOG(DEBUG, "bnx2x_nic_unload failed (%d)", ret);
+               PMD_DRV_LOG(DEBUG, sc, "bnx2x_nic_unload failed (%d)", ret);
                return;
        }
 
                return;
        }
 
@@ -234,7 +237,7 @@ bnx2x_dev_close(struct rte_eth_dev *dev)
 {
        struct bnx2x_softc *sc = dev->data->dev_private;
 
 {
        struct bnx2x_softc *sc = dev->data->dev_private;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        if (IS_VF(sc))
                bnx2x_vf_close(sc);
 
        if (IS_VF(sc))
                bnx2x_vf_close(sc);
@@ -254,7 +257,7 @@ bnx2x_promisc_enable(struct rte_eth_dev *dev)
 {
        struct bnx2x_softc *sc = dev->data->dev_private;
 
 {
        struct bnx2x_softc *sc = dev->data->dev_private;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
        sc->rx_mode = BNX2X_RX_MODE_PROMISC;
        if (rte_eth_allmulticast_get(dev->data->port_id) == 1)
                sc->rx_mode = BNX2X_RX_MODE_ALLMULTI_PROMISC;
        sc->rx_mode = BNX2X_RX_MODE_PROMISC;
        if (rte_eth_allmulticast_get(dev->data->port_id) == 1)
                sc->rx_mode = BNX2X_RX_MODE_ALLMULTI_PROMISC;
@@ -266,7 +269,7 @@ bnx2x_promisc_disable(struct rte_eth_dev *dev)
 {
        struct bnx2x_softc *sc = dev->data->dev_private;
 
 {
        struct bnx2x_softc *sc = dev->data->dev_private;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
        sc->rx_mode = BNX2X_RX_MODE_NORMAL;
        if (rte_eth_allmulticast_get(dev->data->port_id) == 1)
                sc->rx_mode = BNX2X_RX_MODE_ALLMULTI;
        sc->rx_mode = BNX2X_RX_MODE_NORMAL;
        if (rte_eth_allmulticast_get(dev->data->port_id) == 1)
                sc->rx_mode = BNX2X_RX_MODE_ALLMULTI;
@@ -278,7 +281,7 @@ bnx2x_dev_allmulticast_enable(struct rte_eth_dev *dev)
 {
        struct bnx2x_softc *sc = dev->data->dev_private;
 
 {
        struct bnx2x_softc *sc = dev->data->dev_private;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
        sc->rx_mode = BNX2X_RX_MODE_ALLMULTI;
        if (rte_eth_promiscuous_get(dev->data->port_id) == 1)
                sc->rx_mode = BNX2X_RX_MODE_ALLMULTI_PROMISC;
        sc->rx_mode = BNX2X_RX_MODE_ALLMULTI;
        if (rte_eth_promiscuous_get(dev->data->port_id) == 1)
                sc->rx_mode = BNX2X_RX_MODE_ALLMULTI_PROMISC;
@@ -290,7 +293,7 @@ bnx2x_dev_allmulticast_disable(struct rte_eth_dev *dev)
 {
        struct bnx2x_softc *sc = dev->data->dev_private;
 
 {
        struct bnx2x_softc *sc = dev->data->dev_private;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
        sc->rx_mode = BNX2X_RX_MODE_NORMAL;
        if (rte_eth_promiscuous_get(dev->data->port_id) == 1)
                sc->rx_mode = BNX2X_RX_MODE_PROMISC;
        sc->rx_mode = BNX2X_RX_MODE_NORMAL;
        if (rte_eth_promiscuous_get(dev->data->port_id) == 1)
                sc->rx_mode = BNX2X_RX_MODE_PROMISC;
@@ -300,7 +303,9 @@ bnx2x_dev_allmulticast_disable(struct rte_eth_dev *dev)
 static int
 bnx2x_dev_link_update(struct rte_eth_dev *dev, __rte_unused int wait_to_complete)
 {
 static int
 bnx2x_dev_link_update(struct rte_eth_dev *dev, __rte_unused int wait_to_complete)
 {
-       PMD_INIT_FUNC_TRACE();
+       struct bnx2x_softc *sc = dev->data->dev_private;
+
+       PMD_INIT_FUNC_TRACE(sc);
 
        int old_link_status = dev->data->dev_link.link_status;
 
 
        int old_link_status = dev->data->dev_link.link_status;
 
@@ -319,7 +324,7 @@ bnx2xvf_dev_link_update(struct rte_eth_dev *dev, __rte_unused int wait_to_comple
 
        bnx2x_check_bull(sc);
        if (sc->old_bulletin.valid_bitmap & (1 << CHANNEL_DOWN)) {
 
        bnx2x_check_bull(sc);
        if (sc->old_bulletin.valid_bitmap & (1 << CHANNEL_DOWN)) {
-               PMD_DRV_LOG(ERR, "PF indicated channel is down."
+               PMD_DRV_LOG(ERR, sc, "PF indicated channel is down."
                                "VF device is no longer operational");
                dev->data->dev_link.link_status = ETH_LINK_DOWN;
        }
                                "VF device is no longer operational");
                dev->data->dev_link.link_status = ETH_LINK_DOWN;
        }
@@ -335,7 +340,7 @@ bnx2x_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
        uint64_t brb_drops;
        uint64_t brb_truncates;
 
        uint64_t brb_drops;
        uint64_t brb_truncates;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        bnx2x_stats_handle(sc, STATS_EVENT_UPDATE);
 
 
        bnx2x_stats_handle(sc, STATS_EVENT_UPDATE);
 
@@ -520,27 +525,35 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf)
 {
        int ret = 0;
        struct rte_pci_device *pci_dev;
 {
        int ret = 0;
        struct rte_pci_device *pci_dev;
+       struct rte_pci_addr pci_addr;
        struct bnx2x_softc *sc;
 
        struct bnx2x_softc *sc;
 
-       PMD_INIT_FUNC_TRACE();
+       /* Extract key data structures */
+       sc = eth_dev->data->dev_private;
+       pci_dev = eth_dev->pci_dev;
+       pci_addr = pci_dev->addr;
+
+       snprintf(sc->devinfo.name, NAME_SIZE, PCI_SHORT_PRI_FMT ":dpdk-port-%u",
+                pci_addr.bus, pci_addr.devid, pci_addr.function,
+                eth_dev->data->port_id);
+
+       PMD_INIT_FUNC_TRACE(sc);
 
        eth_dev->dev_ops = is_vf ? &bnx2xvf_eth_dev_ops : &bnx2x_eth_dev_ops;
 
        eth_dev->dev_ops = is_vf ? &bnx2xvf_eth_dev_ops : &bnx2x_eth_dev_ops;
-       pci_dev = eth_dev->pci_dev;
 
        rte_eth_copy_pci_info(eth_dev, pci_dev);
 
 
        rte_eth_copy_pci_info(eth_dev, pci_dev);
 
-       sc = eth_dev->data->dev_private;
        sc->pcie_bus    = pci_dev->addr.bus;
        sc->pcie_device = pci_dev->addr.devid;
 
        sc->pcie_bus    = pci_dev->addr.bus;
        sc->pcie_device = pci_dev->addr.devid;
 
-       if (is_vf)
-               sc->flags = BNX2X_IS_VF_FLAG;
-
        sc->devinfo.vendor_id    = pci_dev->id.vendor_id;
        sc->devinfo.device_id    = pci_dev->id.device_id;
        sc->devinfo.subvendor_id = pci_dev->id.subsystem_vendor_id;
        sc->devinfo.subdevice_id = pci_dev->id.subsystem_device_id;
 
        sc->devinfo.vendor_id    = pci_dev->id.vendor_id;
        sc->devinfo.device_id    = pci_dev->id.device_id;
        sc->devinfo.subvendor_id = pci_dev->id.subsystem_vendor_id;
        sc->devinfo.subdevice_id = pci_dev->id.subsystem_device_id;
 
+       if (is_vf)
+               sc->flags = BNX2X_IS_VF_FLAG;
+
        sc->pcie_func = pci_dev->addr.function;
        sc->bar[BAR0].base_addr = (void *)pci_dev->mem_resource[0].addr;
        if (is_vf)
        sc->pcie_func = pci_dev->addr.function;
        sc->bar[BAR0].base_addr = (void *)pci_dev->mem_resource[0].addr;
        if (is_vf)
@@ -568,19 +581,19 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf)
        sc->pci_dev = pci_dev;
        ret = bnx2x_attach(sc);
        if (ret) {
        sc->pci_dev = pci_dev;
        ret = bnx2x_attach(sc);
        if (ret) {
-               PMD_DRV_LOG(ERR, "bnx2x_attach failed (%d)", ret);
+               PMD_DRV_LOG(ERR, sc, "bnx2x_attach failed (%d)", ret);
                return ret;
        }
 
        eth_dev->data->mac_addrs = (struct ether_addr *)sc->link_params.mac_addr;
 
                return ret;
        }
 
        eth_dev->data->mac_addrs = (struct ether_addr *)sc->link_params.mac_addr;
 
-       PMD_DRV_LOG(INFO, "pcie_bus=%d, pcie_device=%d",
+       PMD_DRV_LOG(INFO, sc, "pcie_bus=%d, pcie_device=%d",
                        sc->pcie_bus, sc->pcie_device);
                        sc->pcie_bus, sc->pcie_device);
-       PMD_DRV_LOG(INFO, "bar0.addr=%p, bar1.addr=%p",
+       PMD_DRV_LOG(INFO, sc, "bar0.addr=%p, bar1.addr=%p",
                        sc->bar[BAR0].base_addr, sc->bar[BAR1].base_addr);
                        sc->bar[BAR0].base_addr, sc->bar[BAR1].base_addr);
-       PMD_DRV_LOG(INFO, "port=%d, path=%d, vnic=%d, func=%d",
+       PMD_DRV_LOG(INFO, sc, "port=%d, path=%d, vnic=%d, func=%d",
                        PORT_ID(sc), PATH_ID(sc), VNIC_ID(sc), FUNC_ID(sc));
                        PORT_ID(sc), PATH_ID(sc), VNIC_ID(sc), FUNC_ID(sc));
-       PMD_DRV_LOG(INFO, "portID=%d vendorID=0x%x deviceID=0x%x",
+       PMD_DRV_LOG(INFO, sc, "portID=%d vendorID=0x%x deviceID=0x%x",
                        eth_dev->data->port_id, pci_dev->id.vendor_id, pci_dev->id.device_id);
 
        if (IS_VF(sc)) {
                        eth_dev->data->port_id, pci_dev->id.vendor_id, pci_dev->id.device_id);
 
        if (IS_VF(sc)) {
@@ -614,14 +627,16 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf)
 static int
 eth_bnx2x_dev_init(struct rte_eth_dev *eth_dev)
 {
 static int
 eth_bnx2x_dev_init(struct rte_eth_dev *eth_dev)
 {
-       PMD_INIT_FUNC_TRACE();
+       struct bnx2x_softc *sc = eth_dev->data->dev_private;
+       PMD_INIT_FUNC_TRACE(sc);
        return bnx2x_common_dev_init(eth_dev, 0);
 }
 
 static int
 eth_bnx2xvf_dev_init(struct rte_eth_dev *eth_dev)
 {
        return bnx2x_common_dev_init(eth_dev, 0);
 }
 
 static int
 eth_bnx2xvf_dev_init(struct rte_eth_dev *eth_dev)
 {
-       PMD_INIT_FUNC_TRACE();
+       struct bnx2x_softc *sc = eth_dev->data->dev_private;
+       PMD_INIT_FUNC_TRACE(sc);
        return bnx2x_common_dev_init(eth_dev, 1);
 }
 
        return bnx2x_common_dev_init(eth_dev, 1);
 }
 
index dff014d..7b6252f 100644 (file)
 #ifndef _PMD_LOGS_H_
 #define _PMD_LOGS_H_
 
 #ifndef _PMD_LOGS_H_
 #define _PMD_LOGS_H_
 
-#define PMD_INIT_LOG(level, fmt, args...) \
-       RTE_LOG(level, PMD, "%s(): " fmt "\n", __func__, ##args)
+#define PMD_INIT_LOG(level, sc, fmt, args...) \
+       RTE_LOG(level, PMD, \
+       "[bnx2x_pmd: %s] %s() " fmt "\n", (sc)->devinfo.name, __func__, ##args)
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_INIT
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_INIT
-#define PMD_INIT_FUNC_TRACE() PMD_INIT_LOG(DEBUG, " >>")
+#define PMD_INIT_FUNC_TRACE(sc) PMD_INIT_LOG(DEBUG, sc, " >>")
 #else
 #else
-#define PMD_INIT_FUNC_TRACE() do { } while(0)
+#define PMD_INIT_FUNC_TRACE(sc) do { (void)sc; } while(0)
 #endif
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_RX
 #endif
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_RX
 #endif
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG
 #endif
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG
-#define PMD_DRV_LOG_RAW(level, fmt, args...) \
-       RTE_LOG(level, PMD, "%s(): " fmt, __func__, ## args)
+#define PMD_DRV_LOG_RAW(level, sc, fmt, args...) \
+       RTE_LOG(level, PMD, "[%s:%d(%s)] " fmt, __func__, __LINE__, \
+               (sc)->devinfo.name ? (sc)->devinfo.name : "", ## args)
 #else
 #else
-#define PMD_DRV_LOG_RAW(level, fmt, args...) do { } while (0)
+#define PMD_DRV_LOG_RAW(level, sc, fmt, args...) do { } while (0)
 #endif
 
 #endif
 
-#define PMD_DRV_LOG(level, fmt, args...) \
-       PMD_DRV_LOG_RAW(level, fmt "\n", ## args)
+#define PMD_DRV_LOG(level, sc, fmt, args...) \
+       PMD_DRV_LOG_RAW(level, sc, fmt "\n", ## args)
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
-#define PMD_DEBUG_PERIODIC_LOG(level, fmt, args...) \
-       RTE_LOG(level, PMD, "%s(): " fmt "\n", __func__, ## args)
+#define PMD_DEBUG_PERIODIC_LOG(level, sc, fmt, args...) \
+       RTE_LOG(level, PMD, "%s(%s): " fmt "\n", __func__, \
+               (sc)->devinfo.name ? (sc)->devinfo.name : "", ## args)
 #else
 #else
-#define PMD_DEBUG_PERIODIC_LOG(level, fmt, args...) do { } while(0)
+#define PMD_DEBUG_PERIODIC_LOG(level, sc, fmt, args...) do { } while (0)
 #endif
 
 
 #endif
 
 
index adf0309..a9b8e56 100644 (file)
@@ -78,7 +78,7 @@ bnx2x_dev_rx_queue_setup(struct rte_eth_dev *dev,
        rxq = rte_zmalloc_socket("ethdev RX queue", sizeof(struct bnx2x_rx_queue),
                                 RTE_CACHE_LINE_SIZE, socket_id);
        if (NULL == rxq) {
        rxq = rte_zmalloc_socket("ethdev RX queue", sizeof(struct bnx2x_rx_queue),
                                 RTE_CACHE_LINE_SIZE, socket_id);
        if (NULL == rxq) {
-               PMD_INIT_LOG(ERR, "rte_zmalloc for rxq failed!");
+               PMD_DRV_LOG(ERR, sc, "rte_zmalloc for rxq failed!");
                return -ENOMEM;
        }
        rxq->sc = sc;
                return -ENOMEM;
        }
        rxq->sc = sc;
@@ -94,7 +94,7 @@ bnx2x_dev_rx_queue_setup(struct rte_eth_dev *dev,
        sc->rx_ring_size = USABLE_RX_BD(rxq);
        rxq->nb_cq_pages = RCQ_BD_PAGES(rxq);
 
        sc->rx_ring_size = USABLE_RX_BD(rxq);
        rxq->nb_cq_pages = RCQ_BD_PAGES(rxq);
 
-       PMD_INIT_LOG(DEBUG, "fp[%02d] req_bd=%u, usable_bd=%lu, "
+       PMD_DRV_LOG(DEBUG, sc, "fp[%02d] req_bd=%u, usable_bd=%lu, "
                       "total_bd=%lu, rx_pages=%u, cq_pages=%u",
                       queue_idx, nb_desc, (unsigned long)USABLE_RX_BD(rxq),
                       (unsigned long)TOTAL_RX_BD(rxq), rxq->nb_rx_pages,
                       "total_bd=%lu, rx_pages=%u, cq_pages=%u",
                       queue_idx, nb_desc, (unsigned long)USABLE_RX_BD(rxq),
                       (unsigned long)TOTAL_RX_BD(rxq), rxq->nb_rx_pages,
@@ -276,7 +276,7 @@ bnx2x_dev_tx_queue_setup(struct rte_eth_dev *dev,
        txq->tx_free_thresh = min(txq->tx_free_thresh,
                                  txq->nb_tx_desc - BDS_PER_TX_PKT);
 
        txq->tx_free_thresh = min(txq->tx_free_thresh,
                                  txq->nb_tx_desc - BDS_PER_TX_PKT);
 
-       PMD_INIT_LOG(DEBUG, "fp[%02d] req_bd=%u, thresh=%u, usable_bd=%lu, "
+       PMD_DRV_LOG(DEBUG, sc, "fp[%02d] req_bd=%u, thresh=%u, usable_bd=%lu, "
                     "total_bd=%lu, tx_pages=%u",
                     queue_idx, nb_desc, txq->tx_free_thresh,
                     (unsigned long)USABLE_TX_BD(txq),
                     "total_bd=%lu, tx_pages=%u",
                     queue_idx, nb_desc, txq->tx_free_thresh,
                     (unsigned long)USABLE_TX_BD(txq),
@@ -302,7 +302,7 @@ bnx2x_dev_tx_queue_setup(struct rte_eth_dev *dev,
                return -ENOMEM;
        }
 
                return -ENOMEM;
        }
 
-       /* PMD_DRV_LOG(DEBUG, "sw_ring=%p hw_ring=%p dma_addr=0x%"PRIx64,
+       /* PMD_DRV_LOG(DEBUG, sc, "sw_ring=%p hw_ring=%p dma_addr=0x%"PRIx64,
           txq->sw_ring, txq->tx_ring, txq->tx_ring_phys_addr); */
 
        /* Link TX pages */
           txq->sw_ring, txq->tx_ring, txq->tx_ring_phys_addr); */
 
        /* Link TX pages */
@@ -311,7 +311,9 @@ bnx2x_dev_tx_queue_setup(struct rte_eth_dev *dev,
                busaddr = txq->tx_ring_phys_addr + BNX2X_PAGE_SIZE * (i % txq->nb_tx_pages);
                tx_n_bd->addr_hi = rte_cpu_to_le_32(U64_HI(busaddr));
                tx_n_bd->addr_lo = rte_cpu_to_le_32(U64_LO(busaddr));
                busaddr = txq->tx_ring_phys_addr + BNX2X_PAGE_SIZE * (i % txq->nb_tx_pages);
                tx_n_bd->addr_hi = rte_cpu_to_le_32(U64_HI(busaddr));
                tx_n_bd->addr_lo = rte_cpu_to_le_32(U64_LO(busaddr));
-               /* PMD_DRV_LOG(DEBUG, "link tx page %lu", (TOTAL_TX_BD_PER_PAGE * i - 1)); */
+               /* PMD_DRV_LOG(DEBUG, sc, "link tx page %lu",
+                *          (TOTAL_TX_BD_PER_PAGE * i - 1));
+                */
        }
 
        txq->queue_id = queue_idx;
        }
 
        txq->queue_id = queue_idx;
@@ -461,9 +463,10 @@ bnx2x_dev_rx_init(struct rte_eth_dev *dev)
 void
 bnx2x_dev_clear_queues(struct rte_eth_dev *dev)
 {
 void
 bnx2x_dev_clear_queues(struct rte_eth_dev *dev)
 {
+       struct bnx2x_softc *sc = dev->data->dev_private;
        uint8_t i;
 
        uint8_t i;
 
-       PMD_INIT_FUNC_TRACE();
+       PMD_INIT_FUNC_TRACE(sc);
 
        for (i = 0; i < dev->data->nb_tx_queues; i++) {
                struct bnx2x_tx_queue *txq = dev->data->tx_queues[i];
 
        for (i = 0; i < dev->data->nb_tx_queues; i++) {
                struct bnx2x_tx_queue *txq = dev->data->tx_queues[i];
index c489cbe..2a068ac 100644 (file)
@@ -84,7 +84,7 @@ bnx2x_storm_stats_post(struct bnx2x_softc *sc)
                sc->fw_stats_req->hdr.drv_stats_counter =
                        htole16(sc->stats_counter++);
 
                sc->fw_stats_req->hdr.drv_stats_counter =
                        htole16(sc->stats_counter++);
 
-               PMD_DEBUG_PERIODIC_LOG(DEBUG,
+               PMD_DEBUG_PERIODIC_LOG(DEBUG, sc,
                                "sending statistics ramrod %d",
                                le16toh(sc->fw_stats_req->hdr.drv_stats_counter));
 
                                "sending statistics ramrod %d",
                                le16toh(sc->fw_stats_req->hdr.drv_stats_counter));
 
@@ -156,7 +156,7 @@ bnx2x_stats_comp(struct bnx2x_softc *sc)
 
        while (*stats_comp != DMAE_COMP_VAL) {
                if (!cnt) {
 
        while (*stats_comp != DMAE_COMP_VAL) {
                if (!cnt) {
-                       PMD_DRV_LOG(ERR, "Timeout waiting for stats finished");
+                       PMD_DRV_LOG(ERR, sc, "Timeout waiting for stats finished");
                        break;
                }
 
                        break;
                }
 
@@ -191,7 +191,7 @@ bnx2x_stats_pmf_update(struct bnx2x_softc *sc)
        }
        /* sanity */
        if (!sc->port.pmf || !sc->port.port_stx) {
        }
        /* sanity */
        if (!sc->port.pmf || !sc->port.port_stx) {
-               PMD_DRV_LOG(ERR, "BUG!");
+               PMD_DRV_LOG(ERR, sc, "BUG!");
                return;
        }
 
                return;
        }
 
@@ -241,7 +241,7 @@ bnx2x_port_stats_init(struct bnx2x_softc *sc)
 
     /* sanity */
     if (!sc->link_vars.link_up || !sc->port.pmf) {
 
     /* sanity */
     if (!sc->link_vars.link_up || !sc->port.pmf) {
-       PMD_DRV_LOG(ERR, "BUG!");
+       PMD_DRV_LOG(ERR, sc, "BUG!");
        return;
     }
 
        return;
     }
 
@@ -465,7 +465,7 @@ bnx2x_func_stats_init(struct bnx2x_softc *sc)
 
     /* sanity */
     if (!sc->func_stx) {
 
     /* sanity */
     if (!sc->func_stx) {
-       PMD_DRV_LOG(ERR, "BUG!");
+       PMD_DRV_LOG(ERR, sc, "BUG!");
        return;
     }
 
        return;
     }
 
@@ -799,12 +799,12 @@ bnx2x_hw_stats_update(struct bnx2x_softc *sc)
        break;
 
     case ELINK_MAC_TYPE_NONE: /* unreached */
        break;
 
     case ELINK_MAC_TYPE_NONE: /* unreached */
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
              "stats updated by DMAE but no MAC active");
        return -1;
 
     default: /* unreached */
              "stats updated by DMAE but no MAC active");
        return -1;
 
     default: /* unreached */
-       PMD_DRV_LOG(ERR, "stats update failed, unknown MAC type");
+       PMD_DRV_LOG(ERR, sc, "stats update failed, unknown MAC type");
     }
 
     ADD_EXTEND_64(pstats->brb_drop_hi, pstats->brb_drop_lo,
     }
 
     ADD_EXTEND_64(pstats->brb_drop_hi, pstats->brb_drop_lo,
@@ -839,7 +839,7 @@ bnx2x_hw_stats_update(struct bnx2x_softc *sc)
        nig_timer_max = SHMEM_RD(sc, port_mb[SC_PORT(sc)].stat_nig_timer);
        if (nig_timer_max != estats->nig_timer_max) {
            estats->nig_timer_max = nig_timer_max;
        nig_timer_max = SHMEM_RD(sc, port_mb[SC_PORT(sc)].stat_nig_timer);
        if (nig_timer_max != estats->nig_timer_max) {
            estats->nig_timer_max = nig_timer_max;
-           PMD_DRV_LOG(ERR, "invalid NIG timer max (%u)",
+           PMD_DRV_LOG(ERR, sc, "invalid NIG timer max (%u)",
                  estats->nig_timer_max);
        }
     }
                  estats->nig_timer_max);
        }
     }
@@ -861,7 +861,7 @@ bnx2x_storm_stats_validate_counters(struct bnx2x_softc *sc)
 
     /* are storm stats valid? */
     if (le16toh(counters->xstats_counter) != cur_stats_counter) {
 
     /* are storm stats valid? */
     if (le16toh(counters->xstats_counter) != cur_stats_counter) {
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
              "stats not updated by xstorm, "
              "counter 0x%x != stats_counter 0x%x",
              le16toh(counters->xstats_counter), sc->stats_counter);
              "stats not updated by xstorm, "
              "counter 0x%x != stats_counter 0x%x",
              le16toh(counters->xstats_counter), sc->stats_counter);
@@ -869,7 +869,7 @@ bnx2x_storm_stats_validate_counters(struct bnx2x_softc *sc)
     }
 
     if (le16toh(counters->ustats_counter) != cur_stats_counter) {
     }
 
     if (le16toh(counters->ustats_counter) != cur_stats_counter) {
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
              "stats not updated by ustorm, "
              "counter 0x%x != stats_counter 0x%x",
              le16toh(counters->ustats_counter), sc->stats_counter);
              "stats not updated by ustorm, "
              "counter 0x%x != stats_counter 0x%x",
              le16toh(counters->ustats_counter), sc->stats_counter);
@@ -877,7 +877,7 @@ bnx2x_storm_stats_validate_counters(struct bnx2x_softc *sc)
     }
 
     if (le16toh(counters->cstats_counter) != cur_stats_counter) {
     }
 
     if (le16toh(counters->cstats_counter) != cur_stats_counter) {
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
              "stats not updated by cstorm, "
              "counter 0x%x != stats_counter 0x%x",
              le16toh(counters->cstats_counter), sc->stats_counter);
              "stats not updated by cstorm, "
              "counter 0x%x != stats_counter 0x%x",
              le16toh(counters->cstats_counter), sc->stats_counter);
@@ -885,7 +885,7 @@ bnx2x_storm_stats_validate_counters(struct bnx2x_softc *sc)
     }
 
     if (le16toh(counters->tstats_counter) != cur_stats_counter) {
     }
 
     if (le16toh(counters->tstats_counter) != cur_stats_counter) {
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
              "stats not updated by tstorm, "
              "counter 0x%x != stats_counter 0x%x",
              le16toh(counters->tstats_counter), sc->stats_counter);
              "stats not updated by tstorm, "
              "counter 0x%x != stats_counter 0x%x",
              le16toh(counters->tstats_counter), sc->stats_counter);
@@ -931,12 +931,13 @@ bnx2x_storm_stats_update(struct bnx2x_softc *sc)
 
                uint32_t diff;
 
 
                uint32_t diff;
 
-               /* PMD_DRV_LOG(DEBUG,
+               /* PMD_DRV_LOG(DEBUG, sc,
                                "queue[%d]: ucast_sent 0x%x bcast_sent 0x%x mcast_sent 0x%x",
                                i, xclient->ucast_pkts_sent, xclient->bcast_pkts_sent,
                                xclient->mcast_pkts_sent);
 
                                "queue[%d]: ucast_sent 0x%x bcast_sent 0x%x mcast_sent 0x%x",
                                i, xclient->ucast_pkts_sent, xclient->bcast_pkts_sent,
                                xclient->mcast_pkts_sent);
 
-               PMD_DRV_LOG(DEBUG, "---------------"); */
+               PMD_DRV_LOG(DEBUG, sc, "---------------");
+                */
 
                UPDATE_QSTAT(tclient->rcv_bcast_bytes,
                                total_broadcast_bytes_received);
 
                UPDATE_QSTAT(tclient->rcv_bcast_bytes,
                                total_broadcast_bytes_received);
@@ -1290,7 +1291,7 @@ void bnx2x_stats_handle(struct bnx2x_softc *sc, enum bnx2x_stats_event event)
        bnx2x_stats_stm[state][event].action(sc);
 
        if (event != STATS_EVENT_UPDATE) {
        bnx2x_stats_stm[state][event].action(sc);
 
        if (event != STATS_EVENT_UPDATE) {
-               PMD_DRV_LOG(DEBUG,
+               PMD_DRV_LOG(DEBUG, sc,
                                "state %d -> event %d -> state %d",
                                state, event, sc->stats_state);
        }
                                "state %d -> event %d -> state %d",
                                state, event, sc->stats_state);
        }
@@ -1304,7 +1305,7 @@ bnx2x_port_stats_base_init(struct bnx2x_softc *sc)
 
     /* sanity */
     if (!sc->port.pmf || !sc->port.port_stx) {
 
     /* sanity */
     if (!sc->port.pmf || !sc->port.port_stx) {
-       PMD_DRV_LOG(ERR, "BUG!");
+       PMD_DRV_LOG(ERR, sc, "BUG!");
        return;
     }
 
        return;
     }
 
@@ -1476,7 +1477,7 @@ bnx2x_stats_init(struct bnx2x_softc *sc)
                sc->func_stx = 0;
        }
 
                sc->func_stx = 0;
        }
 
-       PMD_DRV_LOG(DEBUG, "port_stx 0x%x func_stx 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "port_stx 0x%x func_stx 0x%x",
                        sc->port.port_stx, sc->func_stx);
 
        /* pmf should retrieve port statistics from SP on a non-init*/
                        sc->port.port_stx, sc->func_stx);
 
        /* pmf should retrieve port statistics from SP on a non-init*/
index 0ca0df8..e58e9af 100644 (file)
@@ -40,12 +40,12 @@ bnx2x_check_bull(struct bnx2x_softc *sc)
                        if (bull->crc == bnx2x_vf_crc(bull))
                                break;
 
                        if (bull->crc == bnx2x_vf_crc(bull))
                                break;
 
-                       PMD_DRV_LOG(ERR, "bad crc on bulletin board. contained %x computed %x",
+                       PMD_DRV_LOG(ERR, sc, "bad crc on bulletin board. contained %x computed %x",
                                        bull->crc, bnx2x_vf_crc(bull));
                        ++tries;
                }
                if (tries == BNX2X_VF_BULLETIN_TRIES) {
                                        bull->crc, bnx2x_vf_crc(bull));
                        ++tries;
                }
                if (tries == BNX2X_VF_BULLETIN_TRIES) {
-                       PMD_DRV_LOG(ERR, "pf to vf bulletin board crc was wrong %d consecutive times. Aborting",
+                       PMD_DRV_LOG(ERR, sc, "pf to vf bulletin board crc was wrong %d consecutive times. Aborting",
                                        tries);
                        return FALSE;
                }
                                        tries);
                        return FALSE;
                }
@@ -85,7 +85,7 @@ bnx2x_vf_prep(struct bnx2x_softc *sc, struct vf_first_tlv *first_tlv,
 
        rte_spinlock_lock(&sc->vf2pf_lock);
 
 
        rte_spinlock_lock(&sc->vf2pf_lock);
 
-       PMD_DRV_LOG(DEBUG, "Preparing %d tlv for sending", type);
+       PMD_DRV_LOG(DEBUG, sc, "Preparing %d tlv for sending", type);
 
        memset(mbox, 0, sizeof(struct bnx2x_vf_mbx_msg));
 
 
        memset(mbox, 0, sizeof(struct bnx2x_vf_mbx_msg));
 
@@ -100,7 +100,7 @@ static void
 bnx2x_vf_finalize(struct bnx2x_softc *sc,
                  __rte_unused struct vf_first_tlv *first_tlv)
 {
 bnx2x_vf_finalize(struct bnx2x_softc *sc,
                  __rte_unused struct vf_first_tlv *first_tlv)
 {
-       PMD_DRV_LOG(DEBUG, "done sending [%d] tlv over vf pf channel",
+       PMD_DRV_LOG(DEBUG, sc, "done sending [%d] tlv over vf pf channel",
                    first_tlv->tl.type);
 
        rte_spinlock_unlock(&sc->vf2pf_lock);
                    first_tlv->tl.type);
 
        rte_spinlock_unlock(&sc->vf2pf_lock);
@@ -119,14 +119,14 @@ bnx2x_do_req4pf(struct bnx2x_softc *sc, phys_addr_t phys_addr)
        uint8_t i;
 
        if (*status) {
        uint8_t i;
 
        if (*status) {
-               PMD_DRV_LOG(ERR, "status should be zero before message"
+               PMD_DRV_LOG(ERR, sc, "status should be zero before message"
                                 " to pf was sent");
                return -EINVAL;
        }
 
        bnx2x_check_bull(sc);
        if (sc->old_bulletin.valid_bitmap & (1 << CHANNEL_DOWN)) {
                                 " to pf was sent");
                return -EINVAL;
        }
 
        bnx2x_check_bull(sc);
        if (sc->old_bulletin.valid_bitmap & (1 << CHANNEL_DOWN)) {
-               PMD_DRV_LOG(ERR, "channel is down. Aborting message sending");
+               PMD_DRV_LOG(ERR, sc, "channel is down. Aborting message sending");
                return -EINVAL;
        }
 
                return -EINVAL;
        }
 
@@ -146,11 +146,11 @@ bnx2x_do_req4pf(struct bnx2x_softc *sc, phys_addr_t phys_addr)
        }
 
        if (!*status) {
        }
 
        if (!*status) {
-               PMD_DRV_LOG(ERR, "Response from PF timed out");
+               PMD_DRV_LOG(ERR, sc, "Response from PF timed out");
                return -EAGAIN;
        }
 
                return -EAGAIN;
        }
 
-       PMD_DRV_LOG(DEBUG, "Response from PF was received");
+       PMD_DRV_LOG(DEBUG, sc, "Response from PF was received");
        return 0;
 }
 
        return 0;
 }
 
@@ -198,7 +198,7 @@ int bnx2x_loop_obtain_resources(struct bnx2x_softc *sc)
        int rc;
 
        do {
        int rc;
 
        do {
-               PMD_DRV_LOG(DEBUG, "trying to get resources");
+               PMD_DRV_LOG(DEBUG, sc, "trying to get resources");
 
                rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
                if (rc)
 
                rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
                if (rc)
@@ -210,11 +210,11 @@ int bnx2x_loop_obtain_resources(struct bnx2x_softc *sc)
 
                /* check PF to request acceptance */
                if (sc_resp->status == BNX2X_VF_STATUS_SUCCESS) {
 
                /* check PF to request acceptance */
                if (sc_resp->status == BNX2X_VF_STATUS_SUCCESS) {
-                       PMD_DRV_LOG(DEBUG, "resources obtained successfully");
+                       PMD_DRV_LOG(DEBUG, sc, "resources obtained successfully");
                        res_obtained = true;
                } else if (sc_resp->status == BNX2X_VF_STATUS_NO_RESOURCES &&
                           tries < BNX2X_VF_OBTAIN_MAX_TRIES) {
                        res_obtained = true;
                } else if (sc_resp->status == BNX2X_VF_STATUS_NO_RESOURCES &&
                           tries < BNX2X_VF_OBTAIN_MAX_TRIES) {
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                           "PF cannot allocate requested amount of resources");
 
                        res_query = &sc->vf2pf_mbox->query[0].acquire.res_query;
                           "PF cannot allocate requested amount of resources");
 
                        res_query = &sc->vf2pf_mbox->query[0].acquire.res_query;
@@ -230,7 +230,7 @@ int bnx2x_loop_obtain_resources(struct bnx2x_softc *sc)
 
                        memset(&sc->vf2pf_mbox->resp, 0, sizeof(union resp_tlvs));
                } else {
 
                        memset(&sc->vf2pf_mbox->resp, 0, sizeof(union resp_tlvs));
                } else {
-                       PMD_DRV_LOG(ERR, "Failed to get the requested "
+                       PMD_DRV_LOG(ERR, sc, "Failed to get the requested "
                                         "amount of resources: %d.",
                                         sc_resp->status);
                        return -EINVAL;
                                         "amount of resources: %d.",
                                         sc_resp->status);
                        return -EINVAL;
@@ -299,7 +299,7 @@ int bnx2x_vf_get_resources(struct bnx2x_softc *sc, uint8_t tx_count, uint8_t rx_
        sc->doorbell_size = sc_resp.db_size;
        sc->flags |= BNX2X_NO_WOL_FLAG | BNX2X_NO_ISCSI_OOO_FLAG | BNX2X_NO_ISCSI_FLAG | BNX2X_NO_FCOE_FLAG;
 
        sc->doorbell_size = sc_resp.db_size;
        sc->flags |= BNX2X_NO_WOL_FLAG | BNX2X_NO_ISCSI_OOO_FLAG | BNX2X_NO_ISCSI_FLAG | BNX2X_NO_FCOE_FLAG;
 
-       PMD_DRV_LOG(DEBUG, "status block count = %d, base status block = %x",
+       PMD_DRV_LOG(DEBUG, sc, "status block count = %d, base status block = %x",
                sc->igu_sb_cnt, sc->igu_base_sb);
        strncpy(sc->fw_ver, sc_resp.fw_ver, sizeof(sc->fw_ver));
 
                sc->igu_sb_cnt, sc->igu_base_sb);
        strncpy(sc->fw_ver, sc_resp.fw_ver, sizeof(sc->fw_ver));
 
@@ -336,7 +336,7 @@ bnx2x_vf_close(struct bnx2x_softc *sc)
 
                rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
                if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
 
                rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
                if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
-                       PMD_DRV_LOG(ERR, "Failed to release VF");
+                       PMD_DRV_LOG(ERR, sc, "Failed to release VF");
 
                bnx2x_vf_finalize(sc, &query->first_tlv);
        }
 
                bnx2x_vf_finalize(sc, &query->first_tlv);
        }
@@ -370,12 +370,12 @@ bnx2x_vf_init(struct bnx2x_softc *sc)
        if (rc)
                goto out;
        if (reply->status != BNX2X_VF_STATUS_SUCCESS) {
        if (rc)
                goto out;
        if (reply->status != BNX2X_VF_STATUS_SUCCESS) {
-               PMD_DRV_LOG(ERR, "Failed to init VF");
+               PMD_DRV_LOG(ERR, sc, "Failed to init VF");
                rc = -EINVAL;
                goto out;
        }
 
                rc = -EINVAL;
                goto out;
        }
 
-       PMD_DRV_LOG(DEBUG, "VF was initialized");
+       PMD_DRV_LOG(DEBUG, sc, "VF was initialized");
 out:
        bnx2x_vf_finalize(sc, &query->first_tlv);
        return rc;
 out:
        bnx2x_vf_finalize(sc, &query->first_tlv);
        return rc;
@@ -406,7 +406,7 @@ bnx2x_vf_unload(struct bnx2x_softc *sc)
 
                        rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
                        if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
 
                        rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
                        if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
-                               PMD_DRV_LOG(ERR,
+                               PMD_DRV_LOG(ERR, sc,
                                            "Bad reply for vf_q %d teardown", i);
 
                        bnx2x_vf_finalize(sc, &query_op->first_tlv);
                                            "Bad reply for vf_q %d teardown", i);
 
                        bnx2x_vf_finalize(sc, &query_op->first_tlv);
@@ -426,7 +426,7 @@ bnx2x_vf_unload(struct bnx2x_softc *sc)
 
                rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
                if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
 
                rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
                if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
-                       PMD_DRV_LOG(ERR,
+                       PMD_DRV_LOG(ERR, sc,
                                    "Bad reply from PF for close message");
 
                bnx2x_vf_finalize(sc, &query->first_tlv);
                                    "Bad reply from PF for close message");
 
                bnx2x_vf_finalize(sc, &query->first_tlv);
@@ -453,7 +453,7 @@ bnx2x_vf_rx_q_prep(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
 
        rxq = sc->rx_queues[fp->index];
        if (!rxq) {
 
        rxq = sc->rx_queues[fp->index];
        if (!rxq) {
-               PMD_DRV_LOG(ERR, "RX queue %d is NULL", fp->index);
+               PMD_DRV_LOG(ERR, sc, "RX queue %d is NULL", fp->index);
                return;
        }
 
                return;
        }
 
@@ -477,7 +477,7 @@ bnx2x_vf_tx_q_prep(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
 
        txq = sc->tx_queues[fp->index];
        if (!txq) {
 
        txq = sc->tx_queues[fp->index];
        if (!txq) {
-               PMD_DRV_LOG(ERR, "TX queue %d is NULL", fp->index);
+               PMD_DRV_LOG(ERR, sc, "TX queue %d is NULL", fp->index);
                return;
        }
 
                return;
        }
 
@@ -514,7 +514,7 @@ bnx2x_vf_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, int lead
        if (rc)
                goto out;
        if (reply->status != BNX2X_VF_STATUS_SUCCESS) {
        if (rc)
                goto out;
        if (reply->status != BNX2X_VF_STATUS_SUCCESS) {
-               PMD_DRV_LOG(ERR, "Failed to setup VF queue[%d]",
+               PMD_DRV_LOG(ERR, sc, "Failed to setup VF queue[%d]",
                                 fp->index);
                rc = -EINVAL;
        }
                                 fp->index);
                rc = -EINVAL;
        }
@@ -569,7 +569,7 @@ bnx2x_vf_set_mac(struct bnx2x_softc *sc, int set)
        }
 
        if (BNX2X_VF_STATUS_SUCCESS != reply->status) {
        }
 
        if (BNX2X_VF_STATUS_SUCCESS != reply->status) {
-               PMD_DRV_LOG(ERR, "Bad reply from PF for SET MAC message: %d",
+               PMD_DRV_LOG(ERR, sc, "Bad reply from PF for SET MAC message: %d",
                                reply->status);
                rc = -EINVAL;
        }
                                reply->status);
                rc = -EINVAL;
        }
@@ -611,7 +611,7 @@ bnx2x_vf_config_rss(struct bnx2x_softc *sc,
                goto out;
 
        if (reply->status != BNX2X_VF_STATUS_SUCCESS) {
                goto out;
 
        if (reply->status != BNX2X_VF_STATUS_SUCCESS) {
-               PMD_DRV_LOG(ERR, "Failed to configure RSS");
+               PMD_DRV_LOG(ERR, sc, "Failed to configure RSS");
                rc = -EINVAL;
        }
 out:
                rc = -EINVAL;
        }
 out:
@@ -655,7 +655,7 @@ bnx2x_vf_set_rx_mode(struct bnx2x_softc *sc)
                query->rx_mask |= VFPF_RX_MASK_ACCEPT_BROADCAST;
                break;
        default:
                query->rx_mask |= VFPF_RX_MASK_ACCEPT_BROADCAST;
                break;
        default:
-               PMD_DRV_LOG(ERR, "BAD rx mode (%d)", sc->rx_mode);
+               PMD_DRV_LOG(ERR, sc, "BAD rx mode (%d)", sc->rx_mode);
                rc = -EINVAL;
                goto out;
        }
                rc = -EINVAL;
                goto out;
        }
@@ -669,7 +669,7 @@ bnx2x_vf_set_rx_mode(struct bnx2x_softc *sc)
                goto out;
 
        if (reply->status != BNX2X_VF_STATUS_SUCCESS) {
                goto out;
 
        if (reply->status != BNX2X_VF_STATUS_SUCCESS) {
-               PMD_DRV_LOG(ERR, "Failed to set RX mode");
+               PMD_DRV_LOG(ERR, sc, "Failed to set RX mode");
                rc = -EINVAL;
        }
 
                rc = -EINVAL;
        }
 
index d25e280..7a96be7 100644 (file)
@@ -743,7 +743,7 @@ static inline void ecore_disable_blocks_parity(struct bnx2x_softc *sc)
                if (dis_mask) {
                        REG_WR(sc, ecore_blocks_parity_data[i].mask_addr,
                               dis_mask);
                if (dis_mask) {
                        REG_WR(sc, ecore_blocks_parity_data[i].mask_addr,
                               dis_mask);
-                       ECORE_MSG("Setting parity mask "
+                       ECORE_MSG(sc, "Setting parity mask "
                                                 "for %s to\t\t0x%x",
                                    ecore_blocks_parity_data[i].name, dis_mask);
                }
                                                 "for %s to\t\t0x%x",
                                    ecore_blocks_parity_data[i].name, dis_mask);
                }
@@ -778,7 +778,7 @@ static inline void ecore_clear_blocks_parity(struct bnx2x_softc *sc)
                        reg_val = REG_RD(sc, ecore_blocks_parity_data[i].
                                         sts_clr_addr);
                        if (reg_val & reg_mask)
                        reg_val = REG_RD(sc, ecore_blocks_parity_data[i].
                                         sts_clr_addr);
                        if (reg_val & reg_mask)
-                               ECORE_MSG("Parity errors in %s: 0x%x",
+                               ECORE_MSG(sc, "Parity errors in %s: 0x%x",
                                           ecore_blocks_parity_data[i].name,
                                           reg_val & reg_mask);
                }
                                           ecore_blocks_parity_data[i].name,
                                           reg_val & reg_mask);
                }
@@ -787,7 +787,7 @@ static inline void ecore_clear_blocks_parity(struct bnx2x_softc *sc)
        /* Check if there were parity attentions in MCP */
        reg_val = REG_RD(sc, MISC_REG_AEU_AFTER_INVERT_4_MCP);
        if (reg_val & mcp_aeu_bits)
        /* Check if there were parity attentions in MCP */
        reg_val = REG_RD(sc, MISC_REG_AEU_AFTER_INVERT_4_MCP);
        if (reg_val & mcp_aeu_bits)
-               ECORE_MSG("Parity error in MCP: 0x%x",
+               ECORE_MSG(sc, "Parity error in MCP: 0x%x",
                           reg_val & mcp_aeu_bits);
 
        /* Clear parity attentions in MCP:
                           reg_val & mcp_aeu_bits);
 
        /* Clear parity attentions in MCP:
index b6f9832..474185b 100644 (file)
@@ -426,20 +426,20 @@ static void ecore_init_pxp_arb(struct bnx2x_softc *sc, int r_order,
        uint32_t val, i;
 
        if (r_order > MAX_RD_ORD) {
        uint32_t val, i;
 
        if (r_order > MAX_RD_ORD) {
-               ECORE_MSG("read order of %d  order adjusted to %d",
+               ECORE_MSG(sc, "read order of %d  order adjusted to %d",
                           r_order, MAX_RD_ORD);
                r_order = MAX_RD_ORD;
        }
        if (w_order > MAX_WR_ORD) {
                           r_order, MAX_RD_ORD);
                r_order = MAX_RD_ORD;
        }
        if (w_order > MAX_WR_ORD) {
-               ECORE_MSG("write order of %d  order adjusted to %d",
+               ECORE_MSG(sc, "write order of %d  order adjusted to %d",
                           w_order, MAX_WR_ORD);
                w_order = MAX_WR_ORD;
        }
        if (CHIP_REV_IS_FPGA(sc)) {
                           w_order, MAX_WR_ORD);
                w_order = MAX_WR_ORD;
        }
        if (CHIP_REV_IS_FPGA(sc)) {
-               ECORE_MSG("write order adjusted to 1 for FPGA");
+               ECORE_MSG(sc, "write order adjusted to 1 for FPGA");
                w_order = 0;
        }
                w_order = 0;
        }
-       ECORE_MSG("read order %d  write order %d", r_order, w_order);
+       ECORE_MSG(sc, "read order %d  write order %d", r_order, w_order);
 
        for (i = 0; i < NUM_RD_Q-1; i++) {
                REG_WR(sc, read_arb_addr[i].l, read_arb_data[i][r_order].l);
 
        for (i = 0; i < NUM_RD_Q-1; i++) {
                REG_WR(sc, read_arb_addr[i].l, read_arb_data[i][r_order].l);
index d8203b4..33cea4e 100644 (file)
 #define HW_LOCK_MAX_RESOURCE_VALUE              31
 #define HW_LOCK_RESOURCE_DRV_FLAGS              10
 #define HW_LOCK_RESOURCE_GPIO                   1
 #define HW_LOCK_MAX_RESOURCE_VALUE              31
 #define HW_LOCK_RESOURCE_DRV_FLAGS              10
 #define HW_LOCK_RESOURCE_GPIO                   1
+#define HW_LOCK_RESOURCE_MDIO                   0
 #define HW_LOCK_RESOURCE_NVRAM                  12
 #define HW_LOCK_RESOURCE_PORT0_ATT_MASK                 3
 #define HW_LOCK_RESOURCE_RECOVERY_LEADER_0      8
 #define HW_LOCK_RESOURCE_NVRAM                  12
 #define HW_LOCK_RESOURCE_PORT0_ATT_MASK                 3
 #define HW_LOCK_RESOURCE_RECOVERY_LEADER_0      8
index e6fecd8..07376d8 100644 (file)
@@ -55,14 +55,14 @@ ecore_exe_queue_init(struct bnx2x_softc *sc __rte_unused,
        o->execute = exec;
        o->get = get;
 
        o->execute = exec;
        o->get = get;
 
-       ECORE_MSG("Setup the execution queue with the chunk length of %d",
+       ECORE_MSG(sc, "Setup the execution queue with the chunk length of %d",
                  exe_len);
 }
 
 static void ecore_exe_queue_free_elem(struct bnx2x_softc *sc __rte_unused,
                                      struct ecore_exeq_elem *elem)
 {
                  exe_len);
 }
 
 static void ecore_exe_queue_free_elem(struct bnx2x_softc *sc __rte_unused,
                                      struct ecore_exeq_elem *elem)
 {
-       ECORE_MSG("Deleting an exe_queue element");
+       ECORE_MSG(sc, "Deleting an exe_queue element");
        ECORE_FREE(sc, elem, sizeof(*elem));
 }
 
        ECORE_FREE(sc, elem, sizeof(*elem));
 }
 
@@ -108,7 +108,7 @@ static int ecore_exe_queue_add(struct bnx2x_softc *sc,
                /* Check if this request is ok */
                rc = o->validate(sc, o->owner, elem);
                if (rc) {
                /* Check if this request is ok */
                rc = o->validate(sc, o->owner, elem);
                if (rc) {
-                       ECORE_MSG("Preamble failed: %d", rc);
+                       ECORE_MSG(sc, "Preamble failed: %d", rc);
                        goto free_and_exit;
                }
        }
                        goto free_and_exit;
                }
        }
@@ -178,8 +178,8 @@ static int ecore_exe_queue_step(struct bnx2x_softc *sc,
         */
        if (!ECORE_LIST_IS_EMPTY(&o->pending_comp)) {
                if (ECORE_TEST_BIT(RAMROD_DRV_CLR_ONLY, ramrod_flags)) {
         */
        if (!ECORE_LIST_IS_EMPTY(&o->pending_comp)) {
                if (ECORE_TEST_BIT(RAMROD_DRV_CLR_ONLY, ramrod_flags)) {
-                       ECORE_MSG
-                           ("RAMROD_DRV_CLR_ONLY requested: resetting a pending_comp list");
+                       ECORE_MSG(sc,
+                                 "RAMROD_DRV_CLR_ONLY requested: resetting a pending_comp list");
                        __ecore_exe_queue_reset_pending(sc, o);
                } else {
                        return ECORE_PENDING;
                        __ecore_exe_queue_reset_pending(sc, o);
                } else {
                        return ECORE_PENDING;
@@ -242,7 +242,7 @@ static struct ecore_exeq_elem *ecore_exe_queue_alloc_elem(struct
                                                          bnx2x_softc *sc
                                                          __rte_unused)
 {
                                                          bnx2x_softc *sc
                                                          __rte_unused)
 {
-       ECORE_MSG("Allocating a new exe_queue element");
+       ECORE_MSG(sc, "Allocating a new exe_queue element");
        return ECORE_ZALLOC(sizeof(struct ecore_exeq_elem), GFP_ATOMIC, sc);
 }
 
        return ECORE_ZALLOC(sizeof(struct ecore_exeq_elem), GFP_ATOMIC, sc);
 }
 
@@ -292,14 +292,14 @@ static int ecore_state_wait(struct bnx2x_softc *sc, int state,
        if (CHIP_REV_IS_EMUL(sc))
                cnt *= 20;
 
        if (CHIP_REV_IS_EMUL(sc))
                cnt *= 20;
 
-       ECORE_MSG("waiting for state to become %d", state);
+       ECORE_MSG(sc, "waiting for state to become %d", state);
 
        ECORE_MIGHT_SLEEP();
        while (cnt--) {
                bnx2x_intr_legacy(sc, 1);
                if (!ECORE_TEST_BIT(state, pstate)) {
 #ifdef ECORE_STOP_ON_ERROR
 
        ECORE_MIGHT_SLEEP();
        while (cnt--) {
                bnx2x_intr_legacy(sc, 1);
                if (!ECORE_TEST_BIT(state, pstate)) {
 #ifdef ECORE_STOP_ON_ERROR
-                       ECORE_MSG("exit  (cnt %d)", 5000 - cnt);
+                       ECORE_MSG(sc, "exit  (cnt %d)", 5000 - cnt);
 #endif
                        return ECORE_SUCCESS;
                }
 #endif
                        return ECORE_SUCCESS;
                }
@@ -311,7 +311,7 @@ static int ecore_state_wait(struct bnx2x_softc *sc, int state,
        }
 
        /* timeout! */
        }
 
        /* timeout! */
-       PMD_DRV_LOG(ERR, "timeout waiting for state %d", state);
+       PMD_DRV_LOG(ERR, sc, "timeout waiting for state %d", state);
 #ifdef ECORE_STOP_ON_ERROR
        ecore_panic();
 #endif
 #ifdef ECORE_STOP_ON_ERROR
        ecore_panic();
 #endif
@@ -372,11 +372,11 @@ static int __ecore_vlan_mac_h_write_trylock(struct bnx2x_softc *sc __rte_unused,
                                            struct ecore_vlan_mac_obj *o)
 {
        if (o->head_reader) {
                                            struct ecore_vlan_mac_obj *o)
 {
        if (o->head_reader) {
-               ECORE_MSG("vlan_mac_lock writer - There are readers; Busy");
+               ECORE_MSG(sc, "vlan_mac_lock writer - There are readers; Busy");
                return ECORE_BUSY;
        }
 
                return ECORE_BUSY;
        }
 
-       ECORE_MSG("vlan_mac_lock writer - Taken");
+       ECORE_MSG(sc, "vlan_mac_lock writer - Taken");
        return ECORE_SUCCESS;
 }
 
        return ECORE_SUCCESS;
 }
 
@@ -396,13 +396,13 @@ static void __ecore_vlan_mac_h_exec_pending(struct bnx2x_softc *sc,
        int rc;
        unsigned long ramrod_flags = o->saved_ramrod_flags;
 
        int rc;
        unsigned long ramrod_flags = o->saved_ramrod_flags;
 
-       ECORE_MSG("vlan_mac_lock execute pending command with ramrod flags %lu",
+       ECORE_MSG(sc, "vlan_mac_lock execute pending command with ramrod flags %lu",
                  ramrod_flags);
        o->head_exe_request = FALSE;
        o->saved_ramrod_flags = 0;
        rc = ecore_exe_queue_step(sc, &o->exe_queue, &ramrod_flags);
        if (rc != ECORE_SUCCESS) {
                  ramrod_flags);
        o->head_exe_request = FALSE;
        o->saved_ramrod_flags = 0;
        rc = ecore_exe_queue_step(sc, &o->exe_queue, &ramrod_flags);
        if (rc != ECORE_SUCCESS) {
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "execution of pending commands failed with rc %d",
                            rc);
 #ifdef ECORE_STOP_ON_ERROR
                            "execution of pending commands failed with rc %d",
                            rc);
 #ifdef ECORE_STOP_ON_ERROR
@@ -427,7 +427,7 @@ static void __ecore_vlan_mac_h_pend(struct bnx2x_softc *sc __rte_unused,
 {
        o->head_exe_request = TRUE;
        o->saved_ramrod_flags = ramrod_flags;
 {
        o->head_exe_request = TRUE;
        o->saved_ramrod_flags = ramrod_flags;
-       ECORE_MSG("Placing pending execution with ramrod flags %lu",
+       ECORE_MSG(sc, "Placing pending execution with ramrod flags %lu",
                  ramrod_flags);
 }
 
                  ramrod_flags);
 }
 
@@ -448,8 +448,8 @@ static void __ecore_vlan_mac_h_write_unlock(struct bnx2x_softc *sc,
         * executed. If so, execute again. [Ad infinitum]
         */
        while (o->head_exe_request) {
         * executed. If so, execute again. [Ad infinitum]
         */
        while (o->head_exe_request) {
-               ECORE_MSG
-                   ("vlan_mac_lock - writer release encountered a pending request");
+               ECORE_MSG(sc,
+                         "vlan_mac_lock - writer release encountered a pending request");
                __ecore_vlan_mac_h_exec_pending(sc, o);
        }
 }
                __ecore_vlan_mac_h_exec_pending(sc, o);
        }
 }
@@ -485,7 +485,8 @@ static int __ecore_vlan_mac_h_read_lock(struct bnx2x_softc *sc __rte_unused,
 {
        /* If we got here, we're holding lock --> no WRITER exists */
        o->head_reader++;
 {
        /* If we got here, we're holding lock --> no WRITER exists */
        o->head_reader++;
-       ECORE_MSG("vlan_mac_lock - locked reader - number %d", o->head_reader);
+       ECORE_MSG(sc,
+                 "vlan_mac_lock - locked reader - number %d", o->head_reader);
 
        return ECORE_SUCCESS;
 }
 
        return ECORE_SUCCESS;
 }
@@ -524,14 +525,14 @@ static void __ecore_vlan_mac_h_read_unlock(struct bnx2x_softc *sc,
                                           struct ecore_vlan_mac_obj *o)
 {
        if (!o->head_reader) {
                                           struct ecore_vlan_mac_obj *o)
 {
        if (!o->head_reader) {
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "Need to release vlan mac reader lock, but lock isn't taken");
 #ifdef ECORE_STOP_ON_ERROR
                ecore_panic();
 #endif
        } else {
                o->head_reader--;
                            "Need to release vlan mac reader lock, but lock isn't taken");
 #ifdef ECORE_STOP_ON_ERROR
                ecore_panic();
 #endif
        } else {
                o->head_reader--;
-               PMD_DRV_LOG(INFO,
+               PMD_DRV_LOG(INFO, sc,
                            "vlan_mac_lock - decreased readers to %d",
                            o->head_reader);
        }
                            "vlan_mac_lock - decreased readers to %d",
                            o->head_reader);
        }
@@ -540,7 +541,7 @@ static void __ecore_vlan_mac_h_read_unlock(struct bnx2x_softc *sc,
         * was last - if so we need to execute the command.
         */
        if (!o->head_reader && o->head_exe_request) {
         * was last - if so we need to execute the command.
         */
        if (!o->head_reader && o->head_exe_request) {
-               PMD_DRV_LOG(INFO,
+               PMD_DRV_LOG(INFO, sc,
                            "vlan_mac_lock - reader release encountered a pending request");
 
                /* Writer release will do the trick */
                            "vlan_mac_lock - reader release encountered a pending request");
 
                /* Writer release will do the trick */
@@ -583,10 +584,10 @@ static int ecore_get_n_elements(struct bnx2x_softc *sc,
        uint8_t *next = base;
        int counter = 0, read_lock;
 
        uint8_t *next = base;
        int counter = 0, read_lock;
 
-       ECORE_MSG("get_n_elements - taking vlan_mac_lock (reader)");
+       ECORE_MSG(sc, "get_n_elements - taking vlan_mac_lock (reader)");
        read_lock = ecore_vlan_mac_h_read_lock(sc, o);
        if (read_lock != ECORE_SUCCESS)
        read_lock = ecore_vlan_mac_h_read_lock(sc, o);
        if (read_lock != ECORE_SUCCESS)
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "get_n_elements failed to get vlan mac reader lock; Access without lock");
 
        /* traverse list */
                            "get_n_elements failed to get vlan mac reader lock; Access without lock");
 
        /* traverse list */
@@ -595,15 +596,15 @@ static int ecore_get_n_elements(struct bnx2x_softc *sc,
                if (counter < n) {
                        ECORE_MEMCPY(next, &pos->u, size);
                        counter++;
                if (counter < n) {
                        ECORE_MEMCPY(next, &pos->u, size);
                        counter++;
-                       ECORE_MSG
-                           ("copied element number %d to address %p element was:",
+                           ECORE_MSG
+                           (sc, "copied element number %d to address %p element was:",
                             counter, next);
                        next += stride + size;
                }
        }
 
        if (read_lock == ECORE_SUCCESS) {
                             counter, next);
                        next += stride + size;
                }
        }
 
        if (read_lock == ECORE_SUCCESS) {
-               ECORE_MSG("get_n_elements - releasing vlan_mac_lock (reader)");
+               ECORE_MSG(sc, "get_n_elements - releasing vlan_mac_lock (reader)");
                ecore_vlan_mac_h_read_unlock(sc, o);
        }
 
                ecore_vlan_mac_h_read_unlock(sc, o);
        }
 
@@ -617,7 +618,7 @@ static int ecore_check_mac_add(struct bnx2x_softc *sc __rte_unused,
 {
        struct ecore_vlan_mac_registry_elem *pos;
 
 {
        struct ecore_vlan_mac_registry_elem *pos;
 
-       ECORE_MSG("Checking MAC %02x:%02x:%02x:%02x:%02x:%02x for ADD command",
+       ECORE_MSG(sc, "Checking MAC %02x:%02x:%02x:%02x:%02x:%02x for ADD command",
                  data->mac.mac[0], data->mac.mac[1], data->mac.mac[2],
                  data->mac.mac[3], data->mac.mac[4], data->mac.mac[5]);
 
                  data->mac.mac[0], data->mac.mac[1], data->mac.mac[2],
                  data->mac.mac[3], data->mac.mac[4], data->mac.mac[5]);
 
@@ -646,7 +647,7 @@ static struct ecore_vlan_mac_registry_elem *ecore_check_mac_del(struct bnx2x_sof
 {
        struct ecore_vlan_mac_registry_elem *pos;
 
 {
        struct ecore_vlan_mac_registry_elem *pos;
 
-       ECORE_MSG("Checking MAC %02x:%02x:%02x:%02x:%02x:%02x for DEL command",
+       ECORE_MSG(sc, "Checking MAC %02x:%02x:%02x:%02x:%02x:%02x for DEL command",
                  data->mac.mac[0], data->mac.mac[1], data->mac.mac[2],
                  data->mac.mac[3], data->mac.mac[4], data->mac.mac[5]);
 
                  data->mac.mac[0], data->mac.mac[1], data->mac.mac[2],
                  data->mac.mac[3], data->mac.mac[4], data->mac.mac[5]);
 
@@ -724,7 +725,7 @@ static void ecore_set_mac_in_nig(struct bnx2x_softc *sc,
        if (index > ECORE_LLH_CAM_MAX_PF_LINE)
                return;
 
        if (index > ECORE_LLH_CAM_MAX_PF_LINE)
                return;
 
-       ECORE_MSG("Going to %s LLH configuration at entry %d",
+       ECORE_MSG(sc, "Going to %s LLH configuration at entry %d",
                  (add ? "ADD" : "DELETE"), index);
 
        if (add) {
                  (add ? "ADD" : "DELETE"), index);
 
        if (add) {
@@ -840,7 +841,7 @@ static void ecore_set_one_mac_e2(struct bnx2x_softc *sc,
        ecore_vlan_mac_set_cmd_hdr_e2(o, add, CLASSIFY_RULE_OPCODE_MAC,
                                      &rule_entry->mac.header);
 
        ecore_vlan_mac_set_cmd_hdr_e2(o, add, CLASSIFY_RULE_OPCODE_MAC,
                                      &rule_entry->mac.header);
 
-       ECORE_MSG("About to %s MAC %02x:%02x:%02x:%02x:%02x:%02x for Queue %d",
+       ECORE_MSG(sc, "About to %s MAC %02x:%02x:%02x:%02x:%02x:%02x for Queue %d",
                  (add ? "add" : "delete"), mac[0], mac[1], mac[2], mac[3],
                  mac[4], mac[5], raw->cl_id);
 
                  (add ? "add" : "delete"), mac[0], mac[1], mac[2], mac[3],
                  mac[4], mac[5], raw->cl_id);
 
@@ -945,7 +946,7 @@ static void ecore_vlan_mac_set_rdata_e1x(struct bnx2x_softc *sc
        ecore_vlan_mac_set_cfg_entry_e1x(o, add, opcode, mac, vlan_id,
                                         cfg_entry);
 
        ecore_vlan_mac_set_cfg_entry_e1x(o, add, opcode, mac, vlan_id,
                                         cfg_entry);
 
-       ECORE_MSG("%s MAC %02x:%02x:%02x:%02x:%02x:%02x CLID %d CAM offset %d",
+       ECORE_MSG(sc, "%s MAC %02x:%02x:%02x:%02x:%02x:%02x CLID %d CAM offset %d",
                  (add ? "setting" : "clearing"),
                  mac[0], mac[1], mac[2], mac[3], mac[4], mac[5],
                  o->raw.cl_id, cam_offset);
                  (add ? "setting" : "clearing"),
                  mac[0], mac[1], mac[2], mac[3], mac[4], mac[5],
                  o->raw.cl_id, cam_offset);
@@ -1090,8 +1091,8 @@ static int ecore_validate_vlan_mac_add(struct bnx2x_softc *sc,
        /* Check the registry */
        rc = o->check_add(sc, o, &elem->cmd_data.vlan_mac.u);
        if (rc) {
        /* Check the registry */
        rc = o->check_add(sc, o, &elem->cmd_data.vlan_mac.u);
        if (rc) {
-               ECORE_MSG
-                   ("ADD command is not allowed considering current registry state.");
+               ECORE_MSG(sc,
+                         "ADD command is not allowed considering current registry state.");
                return rc;
        }
 
                return rc;
        }
 
@@ -1099,7 +1100,7 @@ static int ecore_validate_vlan_mac_add(struct bnx2x_softc *sc,
         * MAC/VLAN/VLAN-MAC. Return an error if there is.
         */
        if (exeq->get(exeq, elem)) {
         * MAC/VLAN/VLAN-MAC. Return an error if there is.
         */
        if (exeq->get(exeq, elem)) {
-               ECORE_MSG("There is a pending ADD command already");
+               ECORE_MSG(sc, "There is a pending ADD command already");
                return ECORE_EXISTS;
        }
 
                return ECORE_EXISTS;
        }
 
@@ -1138,8 +1139,8 @@ static int ecore_validate_vlan_mac_del(struct bnx2x_softc *sc,
         */
        pos = o->check_del(sc, o, &elem->cmd_data.vlan_mac.u);
        if (!pos) {
         */
        pos = o->check_del(sc, o, &elem->cmd_data.vlan_mac.u);
        if (!pos) {
-               ECORE_MSG
-                   ("DEL command is not allowed considering current registry state");
+               ECORE_MSG(sc,
+                         "DEL command is not allowed considering current registry state");
                return ECORE_EXISTS;
        }
 
                return ECORE_EXISTS;
        }
 
@@ -1151,13 +1152,13 @@ static int ecore_validate_vlan_mac_del(struct bnx2x_softc *sc,
        /* Check for MOVE commands */
        query_elem.cmd_data.vlan_mac.cmd = ECORE_VLAN_MAC_MOVE;
        if (exeq->get(exeq, &query_elem)) {
        /* Check for MOVE commands */
        query_elem.cmd_data.vlan_mac.cmd = ECORE_VLAN_MAC_MOVE;
        if (exeq->get(exeq, &query_elem)) {
-               PMD_DRV_LOG(ERR, "There is a pending MOVE command already");
+               PMD_DRV_LOG(ERR, sc, "There is a pending MOVE command already");
                return ECORE_INVAL;
        }
 
        /* Check for DEL commands */
        if (exeq->get(exeq, elem)) {
                return ECORE_INVAL;
        }
 
        /* Check for DEL commands */
        if (exeq->get(exeq, elem)) {
-               ECORE_MSG("There is a pending DEL command already");
+               ECORE_MSG(sc, "There is a pending DEL command already");
                return ECORE_EXISTS;
        }
 
                return ECORE_EXISTS;
        }
 
@@ -1165,7 +1166,7 @@ static int ecore_validate_vlan_mac_del(struct bnx2x_softc *sc,
        if (!(ECORE_TEST_BIT(ECORE_DONT_CONSUME_CAM_CREDIT,
                             &elem->cmd_data.vlan_mac.vlan_mac_flags) ||
              o->put_credit(o))) {
        if (!(ECORE_TEST_BIT(ECORE_DONT_CONSUME_CAM_CREDIT,
                             &elem->cmd_data.vlan_mac.vlan_mac_flags) ||
              o->put_credit(o))) {
-               PMD_DRV_LOG(ERR, "Failed to return a credit");
+               PMD_DRV_LOG(ERR, sc, "Failed to return a credit");
                return ECORE_INVAL;
        }
 
                return ECORE_INVAL;
        }
 
@@ -1198,8 +1199,8 @@ static int ecore_validate_vlan_mac_move(struct bnx2x_softc *sc,
         * state.
         */
        if (!src_o->check_move(sc, src_o, dest_o, &elem->cmd_data.vlan_mac.u)) {
         * state.
         */
        if (!src_o->check_move(sc, src_o, dest_o, &elem->cmd_data.vlan_mac.u)) {
-               ECORE_MSG
-                   ("MOVE command is not allowed considering current registry state");
+               ECORE_MSG(sc,
+                         "MOVE command is not allowed considering current registry state");
                return ECORE_INVAL;
        }
 
                return ECORE_INVAL;
        }
 
@@ -1212,21 +1213,21 @@ static int ecore_validate_vlan_mac_move(struct bnx2x_softc *sc,
        /* Check DEL on source */
        query_elem.cmd_data.vlan_mac.cmd = ECORE_VLAN_MAC_DEL;
        if (src_exeq->get(src_exeq, &query_elem)) {
        /* Check DEL on source */
        query_elem.cmd_data.vlan_mac.cmd = ECORE_VLAN_MAC_DEL;
        if (src_exeq->get(src_exeq, &query_elem)) {
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "There is a pending DEL command on the source queue already");
                return ECORE_INVAL;
        }
 
        /* Check MOVE on source */
        if (src_exeq->get(src_exeq, elem)) {
                            "There is a pending DEL command on the source queue already");
                return ECORE_INVAL;
        }
 
        /* Check MOVE on source */
        if (src_exeq->get(src_exeq, elem)) {
-               ECORE_MSG("There is a pending MOVE command already");
+               ECORE_MSG(sc, "There is a pending MOVE command already");
                return ECORE_EXISTS;
        }
 
        /* Check ADD on destination */
        query_elem.cmd_data.vlan_mac.cmd = ECORE_VLAN_MAC_ADD;
        if (dest_exeq->get(dest_exeq, &query_elem)) {
                return ECORE_EXISTS;
        }
 
        /* Check ADD on destination */
        query_elem.cmd_data.vlan_mac.cmd = ECORE_VLAN_MAC_ADD;
        if (dest_exeq->get(dest_exeq, &query_elem)) {
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "There is a pending ADD command on the destination queue already");
                return ECORE_INVAL;
        }
                            "There is a pending ADD command on the destination queue already");
                return ECORE_INVAL;
        }
@@ -1331,7 +1332,7 @@ static int __ecore_vlan_mac_execute_step(struct bnx2x_softc *sc,
 
        ECORE_SPIN_LOCK_BH(&o->exe_queue.lock);
 
 
        ECORE_SPIN_LOCK_BH(&o->exe_queue.lock);
 
-       ECORE_MSG("vlan_mac_execute_step - trying to take writer lock");
+       ECORE_MSG(sc, "vlan_mac_execute_step - trying to take writer lock");
        rc = __ecore_vlan_mac_h_write_trylock(sc, o);
 
        if (rc != ECORE_SUCCESS) {
        rc = __ecore_vlan_mac_h_write_trylock(sc, o);
 
        if (rc != ECORE_SUCCESS) {
@@ -1428,17 +1429,17 @@ static int ecore_optimize_vlan_mac(struct bnx2x_softc *sc,
                                    &pos->cmd_data.vlan_mac.vlan_mac_flags)) {
                        if ((query.cmd_data.vlan_mac.cmd ==
                             ECORE_VLAN_MAC_ADD) && !o->put_credit(o)) {
                                    &pos->cmd_data.vlan_mac.vlan_mac_flags)) {
                        if ((query.cmd_data.vlan_mac.cmd ==
                             ECORE_VLAN_MAC_ADD) && !o->put_credit(o)) {
-                               PMD_DRV_LOG(ERR,
+                               PMD_DRV_LOG(ERR, sc,
                                            "Failed to return the credit for the optimized ADD command");
                                return ECORE_INVAL;
                        } else if (!o->get_credit(o)) { /* VLAN_MAC_DEL */
                                            "Failed to return the credit for the optimized ADD command");
                                return ECORE_INVAL;
                        } else if (!o->get_credit(o)) { /* VLAN_MAC_DEL */
-                               PMD_DRV_LOG(ERR,
+                               PMD_DRV_LOG(ERR, sc,
                                            "Failed to recover the credit from the optimized DEL command");
                                return ECORE_INVAL;
                        }
                }
 
                                            "Failed to recover the credit from the optimized DEL command");
                                return ECORE_INVAL;
                        }
                }
 
-               ECORE_MSG("Optimizing %s command",
+               ECORE_MSG(sc, "Optimizing %s command",
                          (elem->cmd_data.vlan_mac.cmd == ECORE_VLAN_MAC_ADD) ?
                          "ADD" : "DEL");
 
                          (elem->cmd_data.vlan_mac.cmd == ECORE_VLAN_MAC_ADD) ?
                          "ADD" : "DEL");
 
@@ -1488,7 +1489,7 @@ static int ecore_vlan_mac_get_registry_elem(struct bnx2x_softc *sc,
                        return ECORE_INVAL;
                }
 
                        return ECORE_INVAL;
                }
 
-               ECORE_MSG("Got cam offset %d", reg_elem->cam_offset);
+               ECORE_MSG(sc, "Got cam offset %d", reg_elem->cam_offset);
 
                /* Set a VLAN-MAC data */
                ECORE_MEMCPY(&reg_elem->u, &elem->cmd_data.vlan_mac.u,
 
                /* Set a VLAN-MAC data */
                ECORE_MEMCPY(&reg_elem->u, &elem->cmd_data.vlan_mac.u,
@@ -1697,8 +1698,8 @@ int ecore_config_vlan_mac(struct bnx2x_softc *sc,
                rc = ECORE_PENDING;
 
        if (ECORE_TEST_BIT(RAMROD_DRV_CLR_ONLY, ramrod_flags)) {
                rc = ECORE_PENDING;
 
        if (ECORE_TEST_BIT(RAMROD_DRV_CLR_ONLY, ramrod_flags)) {
-               ECORE_MSG
-                   ("RAMROD_DRV_CLR_ONLY requested: clearing a pending bit.");
+               ECORE_MSG(sc,
+                         "RAMROD_DRV_CLR_ONLY requested: clearing a pending bit.");
                raw->clear_pending(raw);
        }
 
                raw->clear_pending(raw);
        }
 
@@ -1777,7 +1778,7 @@ static int ecore_vlan_mac_del_all(struct bnx2x_softc *sc,
                    *vlan_mac_flags) {
                        rc = exeq->remove(sc, exeq->owner, exeq_pos);
                        if (rc) {
                    *vlan_mac_flags) {
                        rc = exeq->remove(sc, exeq->owner, exeq_pos);
                        if (rc) {
-                               PMD_DRV_LOG(ERR, "Failed to remove command");
+                               PMD_DRV_LOG(ERR, sc, "Failed to remove command");
                                ECORE_SPIN_UNLOCK_BH(&exeq->lock);
                                return rc;
                        }
                                ECORE_SPIN_UNLOCK_BH(&exeq->lock);
                                return rc;
                        }
@@ -1802,7 +1803,7 @@ static int ecore_vlan_mac_del_all(struct bnx2x_softc *sc,
        ECORE_CLEAR_BIT_NA(RAMROD_EXEC, &p.ramrod_flags);
        ECORE_CLEAR_BIT_NA(RAMROD_CONT, &p.ramrod_flags);
 
        ECORE_CLEAR_BIT_NA(RAMROD_EXEC, &p.ramrod_flags);
        ECORE_CLEAR_BIT_NA(RAMROD_CONT, &p.ramrod_flags);
 
-       ECORE_MSG("vlan_mac_del_all -- taking vlan_mac_lock (reader)");
+       ECORE_MSG(sc, "vlan_mac_del_all -- taking vlan_mac_lock (reader)");
        read_lock = ecore_vlan_mac_h_read_lock(sc, o);
        if (read_lock != ECORE_SUCCESS)
                return read_lock;
        read_lock = ecore_vlan_mac_h_read_lock(sc, o);
        if (read_lock != ECORE_SUCCESS)
                return read_lock;
@@ -1814,7 +1815,7 @@ static int ecore_vlan_mac_del_all(struct bnx2x_softc *sc,
                        ECORE_MEMCPY(&p.user_req.u, &pos->u, sizeof(pos->u));
                        rc = ecore_config_vlan_mac(sc, &p);
                        if (rc < 0) {
                        ECORE_MEMCPY(&p.user_req.u, &pos->u, sizeof(pos->u));
                        rc = ecore_config_vlan_mac(sc, &p);
                        if (rc < 0) {
-                               PMD_DRV_LOG(ERR,
+                               PMD_DRV_LOG(ERR, sc,
                                            "Failed to add a new DEL command");
                                ecore_vlan_mac_h_read_unlock(sc, o);
                                return rc;
                                            "Failed to add a new DEL command");
                                ecore_vlan_mac_h_read_unlock(sc, o);
                                return rc;
@@ -1822,7 +1823,7 @@ static int ecore_vlan_mac_del_all(struct bnx2x_softc *sc,
                }
        }
 
                }
        }
 
-       ECORE_MSG("vlan_mac_del_all -- releasing vlan_mac_lock (reader)");
+       ECORE_MSG(sc, "vlan_mac_del_all -- releasing vlan_mac_lock (reader)");
        ecore_vlan_mac_h_read_unlock(sc, o);
 
        p.ramrod_flags = *ramrod_flags;
        ecore_vlan_mac_h_read_unlock(sc, o);
 
        p.ramrod_flags = *ramrod_flags;
@@ -2009,7 +2010,7 @@ static int ecore_set_rx_mode_e1x(struct bnx2x_softc *sc,
            mac_filters->unmatched_unicast | mask :
            mac_filters->unmatched_unicast & ~mask;
 
            mac_filters->unmatched_unicast | mask :
            mac_filters->unmatched_unicast & ~mask;
 
-       ECORE_MSG("drop_ucast 0x%xdrop_mcast 0x%x accp_ucast 0x%x"
+       ECORE_MSG(sc, "drop_ucast 0x%xdrop_mcast 0x%x accp_ucast 0x%x"
                  "accp_mcast 0x%xaccp_bcast 0x%x",
                  mac_filters->ucast_drop_all, mac_filters->mcast_drop_all,
                  mac_filters->ucast_accept_all, mac_filters->mcast_accept_all,
                  "accp_mcast 0x%xaccp_bcast 0x%x",
                  mac_filters->ucast_drop_all, mac_filters->mcast_drop_all,
                  mac_filters->ucast_accept_all, mac_filters->mcast_accept_all,
@@ -2155,8 +2156,8 @@ static int ecore_set_rx_mode_e2(struct bnx2x_softc *sc,
         */
        ecore_rx_mode_set_rdata_hdr_e2(p->cid, &data->header, rule_idx);
 
         */
        ecore_rx_mode_set_rdata_hdr_e2(p->cid, &data->header, rule_idx);
 
-       ECORE_MSG
-           ("About to configure %d rules, rx_accept_flags 0x%lx, tx_accept_flags 0x%lx",
+           ECORE_MSG
+           (sc, "About to configure %d rules, rx_accept_flags 0x%lx, tx_accept_flags 0x%lx",
             data->header.rule_cnt, p->rx_accept_flags, p->tx_accept_flags);
 
        /* No need for an explicit memory barrier here as long we would
             data->header.rule_cnt, p->rx_accept_flags, p->tx_accept_flags);
 
        /* No need for an explicit memory barrier here as long we would
@@ -2209,7 +2210,7 @@ int ecore_config_rx_mode(struct bnx2x_softc *sc,
                                return rc;
                }
        } else {
                                return rc;
                }
        } else {
-               ECORE_MSG("ERROR: config_rx_mode is NULL");
+               ECORE_MSG(sc, "ERROR: config_rx_mode is NULL");
                return -1;
        }
 
                return -1;
        }
 
@@ -2290,7 +2291,7 @@ static int ecore_mcast_enqueue_cmd(struct bnx2x_softc *sc __rte_unused,
        if (!new_cmd)
                return ECORE_NOMEM;
 
        if (!new_cmd)
                return ECORE_NOMEM;
 
-       ECORE_MSG("About to enqueue a new %d command. macs_list_len=%d",
+       ECORE_MSG(sc, "About to enqueue a new %d command. macs_list_len=%d",
                  cmd, macs_list_len);
 
        ECORE_LIST_INIT(&new_cmd->data.macs_head);
                  cmd, macs_list_len);
 
        ECORE_LIST_INIT(&new_cmd->data.macs_head);
@@ -2326,7 +2327,7 @@ static int ecore_mcast_enqueue_cmd(struct bnx2x_softc *sc __rte_unused,
 
        default:
                ECORE_FREE(sc, new_cmd, total_sz);
 
        default:
                ECORE_FREE(sc, new_cmd, total_sz);
-               PMD_DRV_LOG(ERR, "Unknown command: %d", cmd);
+               PMD_DRV_LOG(ERR, sc, "Unknown command: %d", cmd);
                return ECORE_INVAL;
        }
 
                return ECORE_INVAL;
        }
 
@@ -2438,11 +2439,11 @@ static void ecore_mcast_set_one_rule_e2(struct bnx2x_softc *sc __rte_unused,
                break;
 
        default:
                break;
 
        default:
-               PMD_DRV_LOG(ERR, "Unknown command: %d", cmd);
+               PMD_DRV_LOG(ERR, sc, "Unknown command: %d", cmd);
                return;
        }
 
                return;
        }
 
-       ECORE_MSG("%s bin %d",
+       ECORE_MSG(sc, "%s bin %d",
                  ((rx_tx_add_flag & ETH_MULTICAST_RULES_CMD_IS_ADD) ?
                   "Setting" : "Clearing"), bin);
 
                  ((rx_tx_add_flag & ETH_MULTICAST_RULES_CMD_IS_ADD) ?
                   "Setting" : "Clearing"), bin);
 
@@ -2477,7 +2478,7 @@ static int ecore_mcast_handle_restore_cmd_e2(struct bnx2x_softc *sc,
 
                cnt++;
 
 
                cnt++;
 
-               ECORE_MSG("About to configure a bin %d", cur_bin);
+               ECORE_MSG(sc, "About to configure a bin %d", cur_bin);
 
                /* Break if we reached the maximum number
                 * of rules.
 
                /* Break if we reached the maximum number
                 * of rules.
@@ -2509,8 +2510,8 @@ static void ecore_mcast_hdl_pending_add_e2(struct bnx2x_softc *sc,
 
                cnt++;
 
 
                cnt++;
 
-               ECORE_MSG
-                   ("About to configure %02x:%02x:%02x:%02x:%02x:%02x mcast MAC",
+                   ECORE_MSG
+                   (sc, "About to configure %02x:%02x:%02x:%02x:%02x:%02x mcast MAC",
                     pmac_pos->mac[0], pmac_pos->mac[1], pmac_pos->mac[2],
                     pmac_pos->mac[3], pmac_pos->mac[4], pmac_pos->mac[5]);
 
                     pmac_pos->mac[0], pmac_pos->mac[1], pmac_pos->mac[2],
                     pmac_pos->mac[3], pmac_pos->mac[4], pmac_pos->mac[5]);
 
@@ -2545,7 +2546,7 @@ static void ecore_mcast_hdl_pending_del_e2(struct bnx2x_softc *sc,
 
                cmd_pos->data.macs_num--;
 
 
                cmd_pos->data.macs_num--;
 
-               ECORE_MSG("Deleting MAC. %d left,cnt is %d",
+               ECORE_MSG(sc, "Deleting MAC. %d left,cnt is %d",
                          cmd_pos->data.macs_num, cnt);
 
                /* Break if we reached the maximum
                          cmd_pos->data.macs_num, cnt);
 
                /* Break if we reached the maximum
@@ -2604,7 +2605,8 @@ static int ecore_mcast_handle_pending_cmds_e2(struct bnx2x_softc *sc, struct
                        break;
 
                default:
                        break;
 
                default:
-                       PMD_DRV_LOG(ERR, "Unknown command: %d", cmd_pos->type);
+                       PMD_DRV_LOG(ERR, sc,
+                                   "Unknown command: %d", cmd_pos->type);
                        return ECORE_INVAL;
                }
 
                        return ECORE_INVAL;
                }
 
@@ -2641,8 +2643,8 @@ static void ecore_mcast_hdl_add(struct bnx2x_softc *sc,
 
                cnt++;
 
 
                cnt++;
 
-               ECORE_MSG
-                   ("About to configure %02x:%02x:%02x:%02x:%02x:%02x mcast MAC",
+                   ECORE_MSG
+                   (sc, "About to configure %02x:%02x:%02x:%02x:%02x:%02x mcast MAC",
                     mlist_pos->mac[0], mlist_pos->mac[1], mlist_pos->mac[2],
                     mlist_pos->mac[3], mlist_pos->mac[4], mlist_pos->mac[5]);
        }
                     mlist_pos->mac[0], mlist_pos->mac[1], mlist_pos->mac[2],
                     mlist_pos->mac[3], mlist_pos->mac[4], mlist_pos->mac[5]);
        }
@@ -2662,7 +2664,8 @@ static void ecore_mcast_hdl_del(struct bnx2x_softc *sc,
 
                cnt++;
 
 
                cnt++;
 
-               ECORE_MSG("Deleting MAC. %d left", p->mcast_list_len - i - 1);
+               ECORE_MSG(sc,
+                         "Deleting MAC. %d left", p->mcast_list_len - i - 1);
        }
 
        *line_idx = cnt;
        }
 
        *line_idx = cnt;
@@ -2688,7 +2691,7 @@ static int ecore_mcast_handle_current_cmd(struct bnx2x_softc *sc, struct
        struct ecore_mcast_obj *o = p->mcast_obj;
        int cnt = start_cnt;
 
        struct ecore_mcast_obj *o = p->mcast_obj;
        int cnt = start_cnt;
 
-       ECORE_MSG("p->mcast_list_len=%d", p->mcast_list_len);
+       ECORE_MSG(sc, "p->mcast_list_len=%d", p->mcast_list_len);
 
        switch (cmd) {
        case ECORE_MCAST_CMD_ADD:
 
        switch (cmd) {
        case ECORE_MCAST_CMD_ADD:
@@ -2704,7 +2707,7 @@ static int ecore_mcast_handle_current_cmd(struct bnx2x_softc *sc, struct
                break;
 
        default:
                break;
 
        default:
-               PMD_DRV_LOG(ERR, "Unknown command: %d", cmd);
+               PMD_DRV_LOG(ERR, sc, "Unknown command: %d", cmd);
                return ECORE_INVAL;
        }
 
                return ECORE_INVAL;
        }
 
@@ -2749,7 +2752,7 @@ static int ecore_mcast_validate_e2(__rte_unused struct bnx2x_softc *sc,
                break;
 
        default:
                break;
 
        default:
-               PMD_DRV_LOG(ERR, "Unknown command: %d", cmd);
+               PMD_DRV_LOG(ERR, sc, "Unknown command: %d", cmd);
                return ECORE_INVAL;
        }
 
                return ECORE_INVAL;
        }
 
@@ -2935,8 +2938,8 @@ static void ecore_mcast_hdl_add_e1h(struct bnx2x_softc *sc __rte_unused,
                bit = ecore_mcast_bin_from_mac(mlist_pos->mac);
                ECORE_57711_SET_MC_FILTER(mc_filter, bit);
 
                bit = ecore_mcast_bin_from_mac(mlist_pos->mac);
                ECORE_57711_SET_MC_FILTER(mc_filter, bit);
 
-               ECORE_MSG
-                   ("About to configure %02x:%02x:%02x:%02x:%02x:%02x mcast MAC, bin %d",
+                   ECORE_MSG
+                   (sc, "About to configure %02x:%02x:%02x:%02x:%02x:%02x mcast MAC, bin %d",
                     mlist_pos->mac[0], mlist_pos->mac[1], mlist_pos->mac[2],
                     mlist_pos->mac[3], mlist_pos->mac[4], mlist_pos->mac[5],
                     bit);
                     mlist_pos->mac[0], mlist_pos->mac[1], mlist_pos->mac[2],
                     mlist_pos->mac[3], mlist_pos->mac[4], mlist_pos->mac[5],
                     bit);
@@ -2956,7 +2959,7 @@ static void ecore_mcast_hdl_restore_e1h(struct bnx2x_softc *sc
        for (bit = ecore_mcast_get_next_bin(o, 0);
             bit >= 0; bit = ecore_mcast_get_next_bin(o, bit + 1)) {
                ECORE_57711_SET_MC_FILTER(mc_filter, bit);
        for (bit = ecore_mcast_get_next_bin(o, 0);
             bit >= 0; bit = ecore_mcast_get_next_bin(o, bit + 1)) {
                ECORE_57711_SET_MC_FILTER(mc_filter, bit);
-               ECORE_MSG("About to set bin %d", bit);
+               ECORE_MSG(sc, "About to set bin %d", bit);
        }
 }
 
        }
 }
 
@@ -2987,7 +2990,7 @@ static int ecore_mcast_setup_e1h(struct bnx2x_softc *sc,
                        break;
 
                case ECORE_MCAST_CMD_DEL:
                        break;
 
                case ECORE_MCAST_CMD_DEL:
-                       ECORE_MSG("Invalidating multicast MACs configuration");
+                       ECORE_MSG(sc, "Invalidating multicast MACs configuration");
 
                        /* clear the registry */
                        ECORE_MEMSET(o->registry.aprox_match.vec, 0,
 
                        /* clear the registry */
                        ECORE_MEMSET(o->registry.aprox_match.vec, 0,
@@ -2999,7 +3002,7 @@ static int ecore_mcast_setup_e1h(struct bnx2x_softc *sc,
                        break;
 
                default:
                        break;
 
                default:
-                       PMD_DRV_LOG(ERR, "Unknown command: %d", cmd);
+                       PMD_DRV_LOG(ERR, sc, "Unknown command: %d", cmd);
                        return ECORE_INVAL;
                }
 
                        return ECORE_INVAL;
                }
 
@@ -3050,8 +3053,8 @@ int ecore_config_mcast(struct bnx2x_softc *sc,
        if ((!p->mcast_list_len) && (!o->check_sched(o)))
                return ECORE_SUCCESS;
 
        if ((!p->mcast_list_len) && (!o->check_sched(o)))
                return ECORE_SUCCESS;
 
-       ECORE_MSG
-           ("o->total_pending_num=%d p->mcast_list_len=%d o->max_cmd_len=%d",
+           ECORE_MSG
+           (sc, "o->total_pending_num=%d p->mcast_list_len=%d o->max_cmd_len=%d",
             o->total_pending_num, p->mcast_list_len, o->max_cmd_len);
 
        /* Enqueue the current command to the pending list if we can't complete
             o->total_pending_num, p->mcast_list_len, o->max_cmd_len);
 
        /* Enqueue the current command to the pending list if we can't complete
@@ -3480,7 +3483,7 @@ static int ecore_setup_rss(struct bnx2x_softc *sc,
 
        ECORE_MEMSET(data, 0, sizeof(*data));
 
 
        ECORE_MEMSET(data, 0, sizeof(*data));
 
-       ECORE_MSG("Configuring RSS");
+       ECORE_MSG(sc, "Configuring RSS");
 
        /* Set an echo field */
        data->echo = ECORE_CPU_TO_LE32((r->cid & ECORE_SWCID_MASK) |
 
        /* Set an echo field */
        data->echo = ECORE_CPU_TO_LE32((r->cid & ECORE_SWCID_MASK) |
@@ -3494,7 +3497,7 @@ static int ecore_setup_rss(struct bnx2x_softc *sc,
 
        data->rss_mode = rss_mode;
 
 
        data->rss_mode = rss_mode;
 
-       ECORE_MSG("rss_mode=%d", rss_mode);
+       ECORE_MSG(sc, "rss_mode=%d", rss_mode);
 
        /* RSS capabilities */
        if (ECORE_TEST_BIT(ECORE_RSS_IPV4, &p->rss_flags))
 
        /* RSS capabilities */
        if (ECORE_TEST_BIT(ECORE_RSS_IPV4, &p->rss_flags))
@@ -3534,7 +3537,7 @@ static int ecore_setup_rss(struct bnx2x_softc *sc,
        /* RSS engine ID */
        data->rss_engine_id = o->engine_id;
 
        /* RSS engine ID */
        data->rss_engine_id = o->engine_id;
 
-       ECORE_MSG("rss_engine_id=%d", data->rss_engine_id);
+       ECORE_MSG(sc, "rss_engine_id=%d", data->rss_engine_id);
 
        /* Indirection table */
        ECORE_MEMCPY(data->indirection_table, p->ind_table,
 
        /* Indirection table */
        ECORE_MEMCPY(data->indirection_table, p->ind_table,
@@ -3629,15 +3632,15 @@ int ecore_queue_state_change(struct bnx2x_softc *sc,
        /* Check that the requested transition is legal */
        rc = o->check_transition(sc, o, params);
        if (rc) {
        /* Check that the requested transition is legal */
        rc = o->check_transition(sc, o, params);
        if (rc) {
-               PMD_DRV_LOG(ERR, "check transition returned an error. rc %d",
+               PMD_DRV_LOG(ERR, sc, "check transition returned an error. rc %d",
                            rc);
                return ECORE_INVAL;
        }
 
        /* Set "pending" bit */
                            rc);
                return ECORE_INVAL;
        }
 
        /* Set "pending" bit */
-       ECORE_MSG("pending bit was=%lx", o->pending);
+       ECORE_MSG(sc, "pending bit was=%lx", o->pending);
        pending_bit = o->set_pending(o, params);
        pending_bit = o->set_pending(o, params);
-       ECORE_MSG("pending bit now=%lx", o->pending);
+       ECORE_MSG(sc, "pending bit now=%lx", o->pending);
 
        /* Don't send a command if only driver cleanup was requested */
        if (ECORE_TEST_BIT(RAMROD_DRV_CLR_ONLY, &params->ramrod_flags))
 
        /* Don't send a command if only driver cleanup was requested */
        if (ECORE_TEST_BIT(RAMROD_DRV_CLR_ONLY, &params->ramrod_flags))
@@ -3704,7 +3707,7 @@ static int ecore_queue_comp_cmd(struct bnx2x_softc *sc __rte_unused,
        unsigned long cur_pending = o->pending;
 
        if (!ECORE_TEST_AND_CLEAR_BIT(cmd, &cur_pending)) {
        unsigned long cur_pending = o->pending;
 
        if (!ECORE_TEST_AND_CLEAR_BIT(cmd, &cur_pending)) {
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "Bad MC reply %d for queue %d in state %d pending 0x%lx, next_state %d",
                            cmd, o->cids[ECORE_PRIMARY_CID_INDEX], o->state,
                            cur_pending, o->next_state);
                            "Bad MC reply %d for queue %d in state %d pending 0x%lx, next_state %d",
                            cmd, o->cids[ECORE_PRIMARY_CID_INDEX], o->state,
                            cur_pending, o->next_state);
@@ -3715,15 +3718,15 @@ static int ecore_queue_comp_cmd(struct bnx2x_softc *sc __rte_unused,
                /* >= because tx only must always be smaller than cos since the
                 * primary connection supports COS 0
                 */
                /* >= because tx only must always be smaller than cos since the
                 * primary connection supports COS 0
                 */
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "illegal value for next tx_only: %d. max cos was %d",
                            o->next_tx_only, o->max_cos);
 
                            "illegal value for next tx_only: %d. max cos was %d",
                            o->next_tx_only, o->max_cos);
 
-       ECORE_MSG("Completing command %d for queue %d, setting state to %d",
+       ECORE_MSG(sc, "Completing command %d for queue %d, setting state to %d",
                  cmd, o->cids[ECORE_PRIMARY_CID_INDEX], o->next_state);
 
        if (o->next_tx_only)    /* print num tx-only if any exist */
                  cmd, o->cids[ECORE_PRIMARY_CID_INDEX], o->next_state);
 
        if (o->next_tx_only)    /* print num tx-only if any exist */
-               ECORE_MSG("primary cid %d: num tx-only cons %d",
+               ECORE_MSG(sc, "primary cid %d: num tx-only cons %d",
                          o->cids[ECORE_PRIMARY_CID_INDEX], o->next_tx_only);
 
        o->state = o->next_state;
                          o->cids[ECORE_PRIMARY_CID_INDEX], o->next_tx_only);
 
        o->state = o->next_state;
@@ -3784,7 +3787,7 @@ static void ecore_q_fill_init_general_data(struct bnx2x_softc *sc __rte_unused,
            ECORE_TEST_BIT(ECORE_Q_FLG_FCOE, flags) ?
            LLFC_TRAFFIC_TYPE_FCOE : LLFC_TRAFFIC_TYPE_NW;
 
            ECORE_TEST_BIT(ECORE_Q_FLG_FCOE, flags) ?
            LLFC_TRAFFIC_TYPE_FCOE : LLFC_TRAFFIC_TYPE_NW;
 
-       ECORE_MSG("flags: active %d, cos %d, stats en %d",
+       ECORE_MSG(sc, "flags: active %d, cos %d, stats en %d",
                  gen_data->activate_flg, gen_data->cos,
                  gen_data->statistics_en_flg);
 }
                  gen_data->activate_flg, gen_data->cos,
                  gen_data->statistics_en_flg);
 }
@@ -3925,7 +3928,7 @@ static void ecore_q_fill_setup_tx_only(struct bnx2x_softc *sc, struct ecore_queu
        ecore_q_fill_init_tx_data(&cmd_params->params.tx_only.txq_params,
                                  &data->tx, &cmd_params->params.tx_only.flags);
 
        ecore_q_fill_init_tx_data(&cmd_params->params.tx_only.txq_params,
                                  &data->tx, &cmd_params->params.tx_only.flags);
 
-       ECORE_MSG("cid %d, tx bd page lo %x hi %x",
+       ECORE_MSG(sc, "cid %d, tx bd page lo %x hi %x",
                  cmd_params->q_obj->cids[0],
                  data->tx.tx_bd_page_base.lo, data->tx.tx_bd_page_base.hi);
 }
                  cmd_params->q_obj->cids[0],
                  data->tx.tx_bd_page_base.lo, data->tx.tx_bd_page_base.hi);
 }
@@ -3975,9 +3978,9 @@ static int ecore_q_init(struct bnx2x_softc *sc,
 
        /* Set CDU context validation values */
        for (cos = 0; cos < o->max_cos; cos++) {
 
        /* Set CDU context validation values */
        for (cos = 0; cos < o->max_cos; cos++) {
-               ECORE_MSG("setting context validation. cid %d, cos %d",
+               ECORE_MSG(sc, "setting context validation. cid %d, cos %d",
                          o->cids[cos], cos);
                          o->cids[cos], cos);
-               ECORE_MSG("context pointer %p", init->cxts[cos]);
+               ECORE_MSG(sc, "context pointer %p", init->cxts[cos]);
                ECORE_SET_CTX_VALIDATION(sc, init->cxts[cos], o->cids[cos]);
        }
 
                ECORE_SET_CTX_VALIDATION(sc, init->cxts[cos], o->cids[cos]);
        }
 
@@ -4061,15 +4064,15 @@ static int ecore_q_send_setup_tx_only(struct bnx2x_softc *sc, struct ecore_queue
 
        if (ECORE_TEST_BIT(ECORE_Q_TYPE_FWD, &o->type))
                ramrod = RAMROD_CMD_ID_ETH_FORWARD_SETUP;
 
        if (ECORE_TEST_BIT(ECORE_Q_TYPE_FWD, &o->type))
                ramrod = RAMROD_CMD_ID_ETH_FORWARD_SETUP;
-       ECORE_MSG("sending forward tx-only ramrod");
+       ECORE_MSG(sc, "sending forward tx-only ramrod");
 
        if (cid_index >= o->max_cos) {
 
        if (cid_index >= o->max_cos) {
-               PMD_DRV_LOG(ERR, "queue[%d]: cid_index (%d) is out of range",
+               PMD_DRV_LOG(ERR, sc, "queue[%d]: cid_index (%d) is out of range",
                            o->cl_id, cid_index);
                return ECORE_INVAL;
        }
 
                            o->cl_id, cid_index);
                return ECORE_INVAL;
        }
 
-       ECORE_MSG("parameters received: cos: %d sp-id: %d",
+       ECORE_MSG(sc, "parameters received: cos: %d sp-id: %d",
                  tx_only_params->gen_params.cos,
                  tx_only_params->gen_params.spcl_id);
 
                  tx_only_params->gen_params.cos,
                  tx_only_params->gen_params.spcl_id);
 
@@ -4079,8 +4082,8 @@ static int ecore_q_send_setup_tx_only(struct bnx2x_softc *sc, struct ecore_queue
        /* Fill the ramrod data */
        ecore_q_fill_setup_tx_only(sc, params, rdata);
 
        /* Fill the ramrod data */
        ecore_q_fill_setup_tx_only(sc, params, rdata);
 
-       ECORE_MSG
-           ("sending tx-only ramrod: cid %d, client-id %d, sp-client id %d, cos %d",
+           ECORE_MSG
+           (sc, "sending tx-only ramrod: cid %d, client-id %d, sp-client id %d, cos %d",
             o->cids[cid_index], rdata->general.client_id,
             rdata->general.sp_client_id, rdata->general.cos);
 
             o->cids[cid_index], rdata->general.client_id,
             rdata->general.sp_client_id, rdata->general.cos);
 
@@ -4175,7 +4178,7 @@ static int ecore_q_send_update(struct bnx2x_softc *sc,
        uint8_t cid_index = update_params->cid_index;
 
        if (cid_index >= o->max_cos) {
        uint8_t cid_index = update_params->cid_index;
 
        if (cid_index >= o->max_cos) {
-               PMD_DRV_LOG(ERR, "queue[%d]: cid_index (%d) is out of range",
+               PMD_DRV_LOG(ERR, sc, "queue[%d]: cid_index (%d) is out of range",
                            o->cl_id, cid_index);
                return ECORE_INVAL;
        }
                            o->cl_id, cid_index);
                return ECORE_INVAL;
        }
@@ -4269,7 +4272,7 @@ static int ecore_q_send_cfc_del(struct bnx2x_softc *sc,
        uint8_t cid_idx = params->params.cfc_del.cid_index;
 
        if (cid_idx >= o->max_cos) {
        uint8_t cid_idx = params->params.cfc_del.cid_index;
 
        if (cid_idx >= o->max_cos) {
-               PMD_DRV_LOG(ERR, "queue[%d]: cid_index (%d) is out of range",
+               PMD_DRV_LOG(ERR, sc, "queue[%d]: cid_index (%d) is out of range",
                            o->cl_id, cid_idx);
                return ECORE_INVAL;
        }
                            o->cl_id, cid_idx);
                return ECORE_INVAL;
        }
@@ -4285,7 +4288,7 @@ static int ecore_q_send_terminate(struct bnx2x_softc *sc, struct ecore_queue_sta
        uint8_t cid_index = params->params.terminate.cid_index;
 
        if (cid_index >= o->max_cos) {
        uint8_t cid_index = params->params.terminate.cid_index;
 
        if (cid_index >= o->max_cos) {
-               PMD_DRV_LOG(ERR, "queue[%d]: cid_index (%d) is out of range",
+               PMD_DRV_LOG(ERR, sc, "queue[%d]: cid_index (%d) is out of range",
                            o->cl_id, cid_index);
                return ECORE_INVAL;
        }
                            o->cl_id, cid_index);
                return ECORE_INVAL;
        }
@@ -4329,7 +4332,7 @@ static int ecore_queue_send_cmd_cmn(struct bnx2x_softc *sc, struct ecore_queue_s
        case ECORE_Q_CMD_EMPTY:
                return ecore_q_send_empty(sc, params);
        default:
        case ECORE_Q_CMD_EMPTY:
                return ecore_q_send_empty(sc, params);
        default:
-               PMD_DRV_LOG(ERR, "Unknown command: %d", params->cmd);
+               PMD_DRV_LOG(ERR, sc, "Unknown command: %d", params->cmd);
                return ECORE_INVAL;
        }
 }
                return ECORE_INVAL;
        }
 }
@@ -4352,7 +4355,7 @@ static int ecore_queue_send_cmd_e1x(struct bnx2x_softc *sc,
        case ECORE_Q_CMD_EMPTY:
                return ecore_queue_send_cmd_cmn(sc, params);
        default:
        case ECORE_Q_CMD_EMPTY:
                return ecore_queue_send_cmd_cmn(sc, params);
        default:
-               PMD_DRV_LOG(ERR, "Unknown command: %d", params->cmd);
+               PMD_DRV_LOG(ERR, sc, "Unknown command: %d", params->cmd);
                return ECORE_INVAL;
        }
 }
                return ECORE_INVAL;
        }
 }
@@ -4375,7 +4378,7 @@ static int ecore_queue_send_cmd_e2(struct bnx2x_softc *sc,
        case ECORE_Q_CMD_EMPTY:
                return ecore_queue_send_cmd_cmn(sc, params);
        default:
        case ECORE_Q_CMD_EMPTY:
                return ecore_queue_send_cmd_cmn(sc, params);
        default:
-               PMD_DRV_LOG(ERR, "Unknown command: %d", params->cmd);
+               PMD_DRV_LOG(ERR, sc, "Unknown command: %d", params->cmd);
                return ECORE_INVAL;
        }
 }
                return ECORE_INVAL;
        }
 }
@@ -4418,7 +4421,7 @@ static int ecore_queue_chk_transition(struct bnx2x_softc *sc __rte_unused,
         * the previous one.
         */
        if (o->pending) {
         * the previous one.
         */
        if (o->pending) {
-               PMD_DRV_LOG(ERR, "Blocking transition since pending was %lx",
+               PMD_DRV_LOG(ERR, sc, "Blocking transition since pending was %lx",
                            o->pending);
                return ECORE_BUSY;
        }
                            o->pending);
                return ECORE_BUSY;
        }
@@ -4545,19 +4548,19 @@ static int ecore_queue_chk_transition(struct bnx2x_softc *sc __rte_unused,
 
                break;
        default:
 
                break;
        default:
-               PMD_DRV_LOG(ERR, "Illegal state: %d", state);
+               PMD_DRV_LOG(ERR, sc, "Illegal state: %d", state);
        }
 
        /* Transition is assured */
        if (next_state != ECORE_Q_STATE_MAX) {
        }
 
        /* Transition is assured */
        if (next_state != ECORE_Q_STATE_MAX) {
-               ECORE_MSG("Good state transition: %d(%d)->%d",
+               ECORE_MSG(sc, "Good state transition: %d(%d)->%d",
                          state, cmd, next_state);
                o->next_state = next_state;
                o->next_tx_only = next_tx_only;
                return ECORE_SUCCESS;
        }
 
                          state, cmd, next_state);
                o->next_state = next_state;
                o->next_tx_only = next_tx_only;
                return ECORE_SUCCESS;
        }
 
-       ECORE_MSG("Bad state transition request: %d %d", state, cmd);
+       ECORE_MSG(sc, "Bad state transition request: %d %d", state, cmd);
 
        return ECORE_INVAL;
 }
 
        return ECORE_INVAL;
 }
@@ -4608,18 +4611,18 @@ static int ecore_queue_chk_fwd_transition(struct bnx2x_softc *sc __rte_unused,
 
                break;
        default:
 
                break;
        default:
-               PMD_DRV_LOG(ERR, "Illegal state: %d", state);
+               PMD_DRV_LOG(ERR, sc, "Illegal state: %d", state);
        }
 
        /* Transition is assured */
        if (next_state != ECORE_Q_STATE_MAX) {
        }
 
        /* Transition is assured */
        if (next_state != ECORE_Q_STATE_MAX) {
-               ECORE_MSG("Good state transition: %d(%d)->%d",
+               ECORE_MSG(sc, "Good state transition: %d(%d)->%d",
                          state, cmd, next_state);
                o->next_state = next_state;
                return ECORE_SUCCESS;
        }
 
                          state, cmd, next_state);
                o->next_state = next_state;
                return ECORE_SUCCESS;
        }
 
-       ECORE_MSG("Bad state transition request: %d %d", state, cmd);
+       ECORE_MSG(sc, "Bad state transition request: %d %d", state, cmd);
        return ECORE_INVAL;
 }
 
        return ECORE_INVAL;
 }
 
@@ -4699,14 +4702,14 @@ ecore_func_state_change_comp(struct bnx2x_softc *sc __rte_unused,
        unsigned long cur_pending = o->pending;
 
        if (!ECORE_TEST_AND_CLEAR_BIT(cmd, &cur_pending)) {
        unsigned long cur_pending = o->pending;
 
        if (!ECORE_TEST_AND_CLEAR_BIT(cmd, &cur_pending)) {
-               PMD_DRV_LOG(ERR,
+               PMD_DRV_LOG(ERR, sc,
                            "Bad MC reply %d for func %d in state %d pending 0x%lx, next_state %d",
                            cmd, ECORE_FUNC_ID(sc), o->state, cur_pending,
                            o->next_state);
                return ECORE_INVAL;
        }
 
                            "Bad MC reply %d for func %d in state %d pending 0x%lx, next_state %d",
                            cmd, ECORE_FUNC_ID(sc), o->state, cur_pending,
                            o->next_state);
                return ECORE_INVAL;
        }
 
-       ECORE_MSG("Completing command %d for func %d, setting state to %d",
+       ECORE_MSG(sc, "Completing command %d for func %d, setting state to %d",
                  cmd, ECORE_FUNC_ID(sc), o->next_state);
 
        o->state = o->next_state;
                  cmd, ECORE_FUNC_ID(sc), o->next_state);
 
        o->state = o->next_state;
@@ -4829,18 +4832,19 @@ static int ecore_func_chk_transition(struct bnx2x_softc *sc __rte_unused,
 
                break;
        default:
 
                break;
        default:
-               PMD_DRV_LOG(ERR, "Unknown state: %d", state);
+               PMD_DRV_LOG(ERR, sc, "Unknown state: %d", state);
        }
 
        /* Transition is assured */
        if (next_state != ECORE_F_STATE_MAX) {
        }
 
        /* Transition is assured */
        if (next_state != ECORE_F_STATE_MAX) {
-               ECORE_MSG("Good function state transition: %d(%d)->%d",
+               ECORE_MSG(sc, "Good function state transition: %d(%d)->%d",
                          state, cmd, next_state);
                o->next_state = next_state;
                return ECORE_SUCCESS;
        }
 
                          state, cmd, next_state);
                o->next_state = next_state;
                return ECORE_SUCCESS;
        }
 
-       ECORE_MSG("Bad function state transition request: %d %d", state, cmd);
+       ECORE_MSG(sc,
+                 "Bad function state transition request: %d %d", state, cmd);
 
        return ECORE_INVAL;
 }
 
        return ECORE_INVAL;
 }
@@ -4930,13 +4934,13 @@ static int ecore_func_hw_init(struct bnx2x_softc *sc,
        const struct ecore_func_sp_drv_ops *drv = o->drv;
        int rc = 0;
 
        const struct ecore_func_sp_drv_ops *drv = o->drv;
        int rc = 0;
 
-       ECORE_MSG("function %d  load_code %x",
+       ECORE_MSG(sc, "function %d  load_code %x",
                  ECORE_ABS_FUNC_ID(sc), load_code);
 
        /* Prepare FW */
        rc = drv->init_fw(sc);
        if (rc) {
                  ECORE_ABS_FUNC_ID(sc), load_code);
 
        /* Prepare FW */
        rc = drv->init_fw(sc);
        if (rc) {
-               PMD_DRV_LOG(ERR, "Error loading firmware");
+               PMD_DRV_LOG(ERR, sc, "Error loading firmware");
                goto init_err;
        }
 
                goto init_err;
        }
 
@@ -4967,7 +4971,7 @@ static int ecore_func_hw_init(struct bnx2x_softc *sc,
 
                break;
        default:
 
                break;
        default:
-               PMD_DRV_LOG(ERR, "Unknown load_code (0x%x) from MCP",
+               PMD_DRV_LOG(ERR, sc, "Unknown load_code (0x%x) from MCP",
                            load_code);
                rc = ECORE_INVAL;
        }
                            load_code);
                rc = ECORE_INVAL;
        }
@@ -5043,7 +5047,7 @@ static int ecore_func_hw_reset(struct bnx2x_softc *sc,
        struct ecore_func_sp_obj *o = params->f_obj;
        const struct ecore_func_sp_drv_ops *drv = o->drv;
 
        struct ecore_func_sp_obj *o = params->f_obj;
        const struct ecore_func_sp_drv_ops *drv = o->drv;
 
-       ECORE_MSG("function %d  reset_phase %x", ECORE_ABS_FUNC_ID(sc),
+       ECORE_MSG(sc, "function %d  reset_phase %x", ECORE_ABS_FUNC_ID(sc),
                  reset_phase);
 
        switch (reset_phase) {
                  reset_phase);
 
        switch (reset_phase) {
@@ -5057,7 +5061,7 @@ static int ecore_func_hw_reset(struct bnx2x_softc *sc,
                ecore_func_reset_func(sc, drv);
                break;
        default:
                ecore_func_reset_func(sc, drv);
                break;
        default:
-               PMD_DRV_LOG(ERR, "Unknown reset_phase (0x%x) from MCP",
+               PMD_DRV_LOG(ERR, sc, "Unknown reset_phase (0x%x) from MCP",
                            reset_phase);
                break;
        }
                            reset_phase);
                break;
        }
@@ -5148,7 +5152,7 @@ static int ecore_func_send_afex_update(struct bnx2x_softc *sc, struct ecore_func
         *  read and we will have to put a full memory barrier there
         *  (inside ecore_sp_post()).
         */
         *  read and we will have to put a full memory barrier there
         *  (inside ecore_sp_post()).
         */
-       ECORE_MSG("afex: sending func_update vif_id 0x%x dvlan 0x%x prio 0x%x",
+       ECORE_MSG(sc, "afex: sending func_update vif_id 0x%x dvlan 0x%x prio 0x%x",
                  rdata->vif_id,
                  rdata->afex_default_vlan, rdata->allowed_priorities);
 
                  rdata->vif_id,
                  rdata->afex_default_vlan, rdata->allowed_priorities);
 
@@ -5186,8 +5190,8 @@ inline int ecore_func_send_afex_viflists(struct bnx2x_softc *sc,
         *  (inside ecore_sp_post()).
         */
 
         *  (inside ecore_sp_post()).
         */
 
-       ECORE_MSG
-           ("afex: ramrod lists, cmd 0x%x index 0x%x func_bit_map 0x%x func_to_clr 0x%x",
+           ECORE_MSG
+           (sc, "afex: ramrod lists, cmd 0x%x index 0x%x func_bit_map 0x%x func_to_clr 0x%x",
             rdata->afex_vif_list_command, rdata->vif_list_index,
             rdata->func_bit_map, rdata->func_to_clear);
 
             rdata->afex_vif_list_command, rdata->vif_list_index,
             rdata->func_bit_map, rdata->func_to_clear);
 
@@ -5258,7 +5262,7 @@ static int ecore_func_send_cmd(struct bnx2x_softc *sc,
        case ECORE_F_CMD_SWITCH_UPDATE:
                return ecore_func_send_switch_update(sc, params);
        default:
        case ECORE_F_CMD_SWITCH_UPDATE:
                return ecore_func_send_switch_update(sc, params);
        default:
-               PMD_DRV_LOG(ERR, "Unknown command: %d", params->cmd);
+               PMD_DRV_LOG(ERR, sc, "Unknown command: %d", params->cmd);
                return ECORE_INVAL;
        }
 }
                return ECORE_INVAL;
        }
 }
@@ -5319,7 +5323,7 @@ int ecore_func_state_change(struct bnx2x_softc *sc,
                }
                if (rc == ECORE_BUSY) {
                        ECORE_MUTEX_UNLOCK(&o->one_pending_mutex);
                }
                if (rc == ECORE_BUSY) {
                        ECORE_MUTEX_UNLOCK(&o->one_pending_mutex);
-                       PMD_DRV_LOG(ERR,
+                       PMD_DRV_LOG(ERR, sc,
                                    "timeout waiting for previous ramrod completion");
                        return rc;
                }
                                    "timeout waiting for previous ramrod completion");
                        return rc;
                }
index 9c1f55d..b8fad24 100644 (file)
@@ -217,8 +217,8 @@ ECORE_CRC32_LE(uint32_t seed, uint8_t *mac, uint32_t len)
     } while (0)
 
 
     } while (0)
 
 
-#define ECORE_MSG(m, ...) \
-       PMD_DRV_LOG(DEBUG, m, ##__VA_ARGS__)
+#define ECORE_MSG(sc, m, ...) \
+       PMD_DRV_LOG(DEBUG, sc, m, ##__VA_ARGS__)
 
 typedef struct _ecore_list_entry_t
 {
 
 typedef struct _ecore_list_entry_t
 {
index 8974710..95b4e75 100644 (file)
@@ -944,7 +944,7 @@ static int elink_check_lfa(struct elink_params *params)
         * to verify DCC bit is cleared in any case!
         */
        if (additional_config & NO_LFA_DUE_TO_DCC_MASK) {
         * to verify DCC bit is cleared in any case!
         */
        if (additional_config & NO_LFA_DUE_TO_DCC_MASK) {
-               PMD_DRV_LOG(DEBUG, "No LFA due to DCC flap after clp exit");
+               PMD_DRV_LOG(DEBUG, sc, "No LFA due to DCC flap after clp exit");
                REG_WR(sc, params->lfa_base +
                       offsetof(struct shmem_lfa, additional_config),
                       additional_config & ~NO_LFA_DUE_TO_DCC_MASK);
                REG_WR(sc, params->lfa_base +
                       offsetof(struct shmem_lfa, additional_config),
                       additional_config & ~NO_LFA_DUE_TO_DCC_MASK);
@@ -985,7 +985,7 @@ static int elink_check_lfa(struct elink_params *params)
                           offsetof(struct shmem_lfa, req_duplex));
        req_val = params->req_duplex[0] | (params->req_duplex[1] << 16);
        if ((saved_val & lfa_mask) != (req_val & lfa_mask)) {
                           offsetof(struct shmem_lfa, req_duplex));
        req_val = params->req_duplex[0] | (params->req_duplex[1] << 16);
        if ((saved_val & lfa_mask) != (req_val & lfa_mask)) {
-               PMD_DRV_LOG(INFO, "Duplex mismatch %x vs. %x",
+               PMD_DRV_LOG(INFO, sc, "Duplex mismatch %x vs. %x",
                            (saved_val & lfa_mask), (req_val & lfa_mask));
                return LFA_DUPLEX_MISMATCH;
        }
                            (saved_val & lfa_mask), (req_val & lfa_mask));
                return LFA_DUPLEX_MISMATCH;
        }
@@ -994,7 +994,7 @@ static int elink_check_lfa(struct elink_params *params)
                           offsetof(struct shmem_lfa, req_flow_ctrl));
        req_val = params->req_flow_ctrl[0] | (params->req_flow_ctrl[1] << 16);
        if ((saved_val & lfa_mask) != (req_val & lfa_mask)) {
                           offsetof(struct shmem_lfa, req_flow_ctrl));
        req_val = params->req_flow_ctrl[0] | (params->req_flow_ctrl[1] << 16);
        if ((saved_val & lfa_mask) != (req_val & lfa_mask)) {
-               PMD_DRV_LOG(DEBUG, "Flow control mismatch %x vs. %x",
+               PMD_DRV_LOG(DEBUG, sc, "Flow control mismatch %x vs. %x",
                            (saved_val & lfa_mask), (req_val & lfa_mask));
                return LFA_FLOW_CTRL_MISMATCH;
        }
                            (saved_val & lfa_mask), (req_val & lfa_mask));
                return LFA_FLOW_CTRL_MISMATCH;
        }
@@ -1003,7 +1003,7 @@ static int elink_check_lfa(struct elink_params *params)
                           offsetof(struct shmem_lfa, req_line_speed));
        req_val = params->req_line_speed[0] | (params->req_line_speed[1] << 16);
        if ((saved_val & lfa_mask) != (req_val & lfa_mask)) {
                           offsetof(struct shmem_lfa, req_line_speed));
        req_val = params->req_line_speed[0] | (params->req_line_speed[1] << 16);
        if ((saved_val & lfa_mask) != (req_val & lfa_mask)) {
-               PMD_DRV_LOG(DEBUG, "Link speed mismatch %x vs. %x",
+               PMD_DRV_LOG(DEBUG, sc, "Link speed mismatch %x vs. %x",
                            (saved_val & lfa_mask), (req_val & lfa_mask));
                return LFA_LINK_SPEED_MISMATCH;
        }
                            (saved_val & lfa_mask), (req_val & lfa_mask));
                return LFA_LINK_SPEED_MISMATCH;
        }
@@ -1014,7 +1014,7 @@ static int elink_check_lfa(struct elink_params *params)
                                                     speed_cap_mask[cfg_idx]));
 
                if (cur_speed_cap_mask != params->speed_cap_mask[cfg_idx]) {
                                                     speed_cap_mask[cfg_idx]));
 
                if (cur_speed_cap_mask != params->speed_cap_mask[cfg_idx]) {
-                       PMD_DRV_LOG(DEBUG, "Speed Cap mismatch %x vs. %x",
+                       PMD_DRV_LOG(DEBUG, sc, "Speed Cap mismatch %x vs. %x",
                                    cur_speed_cap_mask,
                                    params->speed_cap_mask[cfg_idx]);
                        return LFA_SPEED_CAP_MISMATCH;
                                    cur_speed_cap_mask,
                                    params->speed_cap_mask[cfg_idx]);
                        return LFA_SPEED_CAP_MISMATCH;
@@ -1027,7 +1027,7 @@ static int elink_check_lfa(struct elink_params *params)
            REQ_FC_AUTO_ADV_MASK;
 
        if ((uint16_t) cur_req_fc_auto_adv != params->req_fc_auto_adv) {
            REQ_FC_AUTO_ADV_MASK;
 
        if ((uint16_t) cur_req_fc_auto_adv != params->req_fc_auto_adv) {
-               PMD_DRV_LOG(DEBUG, "Flow Ctrl AN mismatch %x vs. %x",
+               PMD_DRV_LOG(DEBUG, sc, "Flow Ctrl AN mismatch %x vs. %x",
                            cur_req_fc_auto_adv, params->req_fc_auto_adv);
                return LFA_FLOW_CTRL_MISMATCH;
        }
                            cur_req_fc_auto_adv, params->req_fc_auto_adv);
                return LFA_FLOW_CTRL_MISMATCH;
        }
@@ -1040,7 +1040,8 @@ static int elink_check_lfa(struct elink_params *params)
             (params->eee_mode & ELINK_EEE_MODE_ENABLE_LPI)) ||
            ((eee_status & SHMEM_EEE_REQUESTED_BIT) ^
             (params->eee_mode & ELINK_EEE_MODE_ADV_LPI))) {
             (params->eee_mode & ELINK_EEE_MODE_ENABLE_LPI)) ||
            ((eee_status & SHMEM_EEE_REQUESTED_BIT) ^
             (params->eee_mode & ELINK_EEE_MODE_ADV_LPI))) {
-               PMD_DRV_LOG(DEBUG, "EEE mismatch %x vs. %x", params->eee_mode,
+               PMD_DRV_LOG(DEBUG, sc,
+                           "EEE mismatch %x vs. %x", params->eee_mode,
                            eee_status);
                return LFA_EEE_MISMATCH;
        }
                            eee_status);
                return LFA_EEE_MISMATCH;
        }
@@ -1059,7 +1060,7 @@ static void elink_get_epio(struct bnx2x_softc *sc, uint32_t epio_pin,
        *en = 0;
        /* Sanity check */
        if (epio_pin > 31) {
        *en = 0;
        /* Sanity check */
        if (epio_pin > 31) {
-               PMD_DRV_LOG(DEBUG, "Invalid EPIO pin %d to get", epio_pin);
+               PMD_DRV_LOG(DEBUG, sc, "Invalid EPIO pin %d to get", epio_pin);
                return;
        }
 
                return;
        }
 
@@ -1077,10 +1078,10 @@ static void elink_set_epio(struct bnx2x_softc *sc, uint32_t epio_pin, uint32_t e
 
        /* Sanity check */
        if (epio_pin > 31) {
 
        /* Sanity check */
        if (epio_pin > 31) {
-               PMD_DRV_LOG(DEBUG, "Invalid EPIO pin %d to set", epio_pin);
+               PMD_DRV_LOG(DEBUG, sc, "Invalid EPIO pin %d to set", epio_pin);
                return;
        }
                return;
        }
-       PMD_DRV_LOG(DEBUG, "Setting EPIO pin %d to %d", epio_pin, en);
+       PMD_DRV_LOG(DEBUG, sc, "Setting EPIO pin %d to %d", epio_pin, en);
        epio_mask = 1 << epio_pin;
        /* Set this EPIO to output */
        gp_output = REG_RD(sc, MCP_REG_MCPR_GP_OUTPUTS);
        epio_mask = 1 << epio_pin;
        /* Set this EPIO to output */
        gp_output = REG_RD(sc, MCP_REG_MCPR_GP_OUTPUTS);
@@ -1211,7 +1212,7 @@ static void elink_set_mdio_clk(struct bnx2x_softc *sc, uint32_t emac_base)
        new_mode |= clc_cnt;
        new_mode |= (EMAC_MDIO_MODE_CLAUSE_45);
 
        new_mode |= clc_cnt;
        new_mode |= (EMAC_MDIO_MODE_CLAUSE_45);
 
-       PMD_DRV_LOG(DEBUG, "Changing emac_mode from 0x%x to 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "Changing emac_mode from 0x%x to 0x%x",
                    cur_mode, new_mode);
        REG_WR(sc, emac_base + EMAC_REG_EMAC_MDIO_MODE, new_mode);
        DELAY(40);
                    cur_mode, new_mode);
        REG_WR(sc, emac_base + EMAC_REG_EMAC_MDIO_MODE, new_mode);
        DELAY(40);
@@ -1264,9 +1265,9 @@ static void elink_emac_init(struct elink_params *params)
        timeout = 200;
        do {
                val = REG_RD(sc, emac_base + EMAC_REG_EMAC_MODE);
        timeout = 200;
        do {
                val = REG_RD(sc, emac_base + EMAC_REG_EMAC_MODE);
-               PMD_DRV_LOG(DEBUG, "EMAC reset reg is %u", val);
+               PMD_DRV_LOG(DEBUG, sc, "EMAC reset reg is %u", val);
                if (!timeout) {
                if (!timeout) {
-                       PMD_DRV_LOG(DEBUG, "EMAC timeout!");
+                       PMD_DRV_LOG(DEBUG, sc, "EMAC timeout!");
                        return;
                }
                timeout--;
                        return;
                }
                timeout--;
@@ -1329,7 +1330,7 @@ static void elink_umac_enable(struct elink_params *params,
        REG_WR(sc, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET,
               (MISC_REGISTERS_RESET_REG_2_UMAC0 << params->port));
 
        REG_WR(sc, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET,
               (MISC_REGISTERS_RESET_REG_2_UMAC0 << params->port));
 
-       PMD_DRV_LOG(DEBUG, "enabling UMAC");
+       PMD_DRV_LOG(DEBUG, sc, "enabling UMAC");
 
        /* This register opens the gate for the UMAC despite its name */
        REG_WR(sc, NIG_REG_EGRESS_EMAC0_PORT + params->port * 4, 1);
 
        /* This register opens the gate for the UMAC despite its name */
        REG_WR(sc, NIG_REG_EGRESS_EMAC0_PORT + params->port * 4, 1);
@@ -1352,7 +1353,7 @@ static void elink_umac_enable(struct elink_params *params,
                val |= (3 << 2);
                break;
        default:
                val |= (3 << 2);
                break;
        default:
-               PMD_DRV_LOG(DEBUG, "Invalid speed for UMAC %d",
+               PMD_DRV_LOG(DEBUG, sc, "Invalid speed for UMAC %d",
                            vars->line_speed);
                break;
        }
                            vars->line_speed);
                break;
        }
@@ -1370,7 +1371,7 @@ static void elink_umac_enable(struct elink_params *params,
 
        /* Configure UMAC for EEE */
        if (vars->eee_status & SHMEM_EEE_ADV_STATUS_MASK) {
 
        /* Configure UMAC for EEE */
        if (vars->eee_status & SHMEM_EEE_ADV_STATUS_MASK) {
-               PMD_DRV_LOG(DEBUG, "configured UMAC for EEE");
+               PMD_DRV_LOG(DEBUG, sc, "configured UMAC for EEE");
                REG_WR(sc, umac_base + UMAC_REG_UMAC_EEE_CTRL,
                       UMAC_UMAC_EEE_CTRL_REG_EEE_EN);
                REG_WR(sc, umac_base + UMAC_REG_EEE_WAKE_TIMER, 0x11);
                REG_WR(sc, umac_base + UMAC_REG_UMAC_EEE_CTRL,
                       UMAC_UMAC_EEE_CTRL_REG_EEE_EN);
                REG_WR(sc, umac_base + UMAC_REG_EEE_WAKE_TIMER, 0x11);
@@ -1428,7 +1429,7 @@ static void elink_xmac_init(struct elink_params *params, uint32_t max_speed)
            is_port4mode &&
            (REG_RD(sc, MISC_REG_RESET_REG_2) &
             MISC_REGISTERS_RESET_REG_2_XMAC)) {
            is_port4mode &&
            (REG_RD(sc, MISC_REG_RESET_REG_2) &
             MISC_REGISTERS_RESET_REG_2_XMAC)) {
-               PMD_DRV_LOG(DEBUG, "XMAC already out of reset in 4-port mode");
+               PMD_DRV_LOG(DEBUG, sc, "XMAC already out of reset in 4-port mode");
                return;
        }
 
                return;
        }
 
@@ -1440,7 +1441,7 @@ static void elink_xmac_init(struct elink_params *params, uint32_t max_speed)
        REG_WR(sc, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET,
               MISC_REGISTERS_RESET_REG_2_XMAC);
        if (is_port4mode) {
        REG_WR(sc, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET,
               MISC_REGISTERS_RESET_REG_2_XMAC);
        if (is_port4mode) {
-               PMD_DRV_LOG(DEBUG, "Init XMAC to 2 ports x 10G per path");
+               PMD_DRV_LOG(DEBUG, sc, "Init XMAC to 2 ports x 10G per path");
 
                /* Set the number of ports on the system side to up to 2 */
                REG_WR(sc, MISC_REG_XMAC_CORE_PORT_MODE, 1);
 
                /* Set the number of ports on the system side to up to 2 */
                REG_WR(sc, MISC_REG_XMAC_CORE_PORT_MODE, 1);
@@ -1451,12 +1452,12 @@ static void elink_xmac_init(struct elink_params *params, uint32_t max_speed)
                /* Set the number of ports on the system side to 1 */
                REG_WR(sc, MISC_REG_XMAC_CORE_PORT_MODE, 0);
                if (max_speed == ELINK_SPEED_10000) {
                /* Set the number of ports on the system side to 1 */
                REG_WR(sc, MISC_REG_XMAC_CORE_PORT_MODE, 0);
                if (max_speed == ELINK_SPEED_10000) {
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "Init XMAC to 10G x 1 port per path");
                        /* Set the number of ports on the Warp Core to 10G */
                        REG_WR(sc, MISC_REG_XMAC_PHY_PORT_MODE, 3);
                } else {
                                    "Init XMAC to 10G x 1 port per path");
                        /* Set the number of ports on the Warp Core to 10G */
                        REG_WR(sc, MISC_REG_XMAC_PHY_PORT_MODE, 3);
                } else {
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "Init XMAC to 20G x 2 ports per path");
                        /* Set the number of ports on the Warp Core to 20G */
                        REG_WR(sc, MISC_REG_XMAC_PHY_PORT_MODE, 1);
                                    "Init XMAC to 20G x 2 ports per path");
                        /* Set the number of ports on the Warp Core to 20G */
                        REG_WR(sc, MISC_REG_XMAC_PHY_PORT_MODE, 1);
@@ -1489,7 +1490,7 @@ static void elink_set_xmac_rxtx(struct elink_params *params, uint8_t en)
                       (pfc_ctrl & ~(1 << 1)));
                REG_WR(sc, xmac_base + XMAC_REG_PFC_CTRL_HI,
                       (pfc_ctrl | (1 << 1)));
                       (pfc_ctrl & ~(1 << 1)));
                REG_WR(sc, xmac_base + XMAC_REG_PFC_CTRL_HI,
                       (pfc_ctrl | (1 << 1)));
-               PMD_DRV_LOG(DEBUG, "Disable XMAC on port %x", port);
+               PMD_DRV_LOG(DEBUG, sc, "Disable XMAC on port %x", port);
                val = REG_RD(sc, xmac_base + XMAC_REG_CTRL);
                if (en)
                        val |= (XMAC_CTRL_REG_TX_EN | XMAC_CTRL_REG_RX_EN);
                val = REG_RD(sc, xmac_base + XMAC_REG_CTRL);
                if (en)
                        val |= (XMAC_CTRL_REG_TX_EN | XMAC_CTRL_REG_RX_EN);
@@ -1504,7 +1505,7 @@ static elink_status_t elink_xmac_enable(struct elink_params *params,
 {
        uint32_t val, xmac_base;
        struct bnx2x_softc *sc = params->sc;
 {
        uint32_t val, xmac_base;
        struct bnx2x_softc *sc = params->sc;
-       PMD_DRV_LOG(DEBUG, "enabling XMAC");
+       PMD_DRV_LOG(DEBUG, sc, "enabling XMAC");
 
        xmac_base = (params->port) ? GRCBASE_XMAC1 : GRCBASE_XMAC0;
 
 
        xmac_base = (params->port) ? GRCBASE_XMAC1 : GRCBASE_XMAC0;
 
@@ -1541,7 +1542,7 @@ static elink_status_t elink_xmac_enable(struct elink_params *params,
        elink_update_pfc_xmac(params, vars);
 
        if (vars->eee_status & SHMEM_EEE_ADV_STATUS_MASK) {
        elink_update_pfc_xmac(params, vars);
 
        if (vars->eee_status & SHMEM_EEE_ADV_STATUS_MASK) {
-               PMD_DRV_LOG(DEBUG, "Setting XMAC for EEE");
+               PMD_DRV_LOG(DEBUG, sc, "Setting XMAC for EEE");
                REG_WR(sc, xmac_base + XMAC_REG_EEE_TIMERS_HI, 0x1380008);
                REG_WR(sc, xmac_base + XMAC_REG_EEE_CTRL, 0x1);
        } else {
                REG_WR(sc, xmac_base + XMAC_REG_EEE_TIMERS_HI, 0x1380008);
                REG_WR(sc, xmac_base + XMAC_REG_EEE_CTRL, 0x1);
        } else {
@@ -1577,7 +1578,7 @@ static elink_status_t elink_emac_enable(struct elink_params *params,
        uint32_t emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
        uint32_t val;
 
        uint32_t emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
        uint32_t val;
 
-       PMD_DRV_LOG(DEBUG, "enabling EMAC");
+       PMD_DRV_LOG(DEBUG, sc, "enabling EMAC");
 
        /* Disable BMAC */
        REG_WR(sc, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR,
 
        /* Disable BMAC */
        REG_WR(sc, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR,
@@ -1591,14 +1592,14 @@ static elink_status_t elink_emac_enable(struct elink_params *params,
                                      PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >>
                                     PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT);
 
                                      PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >>
                                     PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT);
 
-               PMD_DRV_LOG(DEBUG, "XGXS");
+               PMD_DRV_LOG(DEBUG, sc, "XGXS");
                /* select the master lanes (out of 0-3) */
                REG_WR(sc, NIG_REG_XGXS_LANE_SEL_P0 + port * 4, ser_lane);
                /* select XGXS */
                REG_WR(sc, NIG_REG_XGXS_SERDES0_MODE_SEL + port * 4, 1);
 
        } else {                /* SerDes */
                /* select the master lanes (out of 0-3) */
                REG_WR(sc, NIG_REG_XGXS_LANE_SEL_P0 + port * 4, ser_lane);
                /* select XGXS */
                REG_WR(sc, NIG_REG_XGXS_SERDES0_MODE_SEL + port * 4, 1);
 
        } else {                /* SerDes */
-               PMD_DRV_LOG(DEBUG, "SerDes");
+               PMD_DRV_LOG(DEBUG, sc, "SerDes");
                /* select SerDes */
                REG_WR(sc, NIG_REG_XGXS_SERDES0_MODE_SEL + port * 4, 0);
        }
                /* select SerDes */
                REG_WR(sc, NIG_REG_XGXS_SERDES0_MODE_SEL + port * 4, 0);
        }
@@ -1644,7 +1645,7 @@ static elink_status_t elink_emac_enable(struct elink_params *params,
         */
        elink_cb_reg_write(sc, emac_base + EMAC_REG_RX_PFC_MODE, 0);
        if (params->feature_config_flags & ELINK_FEATURE_CONFIG_PFC_ENABLED) {
         */
        elink_cb_reg_write(sc, emac_base + EMAC_REG_RX_PFC_MODE, 0);
        if (params->feature_config_flags & ELINK_FEATURE_CONFIG_PFC_ENABLED) {
-               PMD_DRV_LOG(DEBUG, "PFC is enabled");
+               PMD_DRV_LOG(DEBUG, sc, "PFC is enabled");
                /* Enable PFC again */
                elink_cb_reg_write(sc, emac_base + EMAC_REG_RX_PFC_MODE,
                                   EMAC_REG_RX_PFC_MODE_RX_EN |
                /* Enable PFC again */
                elink_cb_reg_write(sc, emac_base + EMAC_REG_RX_PFC_MODE,
                                   EMAC_REG_RX_PFC_MODE_RX_EN |
@@ -1764,7 +1765,7 @@ static void elink_update_pfc_bmac2(struct elink_params *params,
        REG_WR_DMAE(sc, bmac_addr + BIGMAC2_REGISTER_TX_CONTROL, wb_data, 2);
 
        if (params->feature_config_flags & ELINK_FEATURE_CONFIG_PFC_ENABLED) {
        REG_WR_DMAE(sc, bmac_addr + BIGMAC2_REGISTER_TX_CONTROL, wb_data, 2);
 
        if (params->feature_config_flags & ELINK_FEATURE_CONFIG_PFC_ENABLED) {
-               PMD_DRV_LOG(DEBUG, "PFC is enabled");
+               PMD_DRV_LOG(DEBUG, sc, "PFC is enabled");
                /* Enable PFC RX & TX & STATS and set 8 COS  */
                wb_data[0] = 0x0;
                wb_data[0] |= (1 << 0); /* RX */
                /* Enable PFC RX & TX & STATS and set 8 COS  */
                wb_data[0] = 0x0;
                wb_data[0] |= (1 << 0); /* RX */
@@ -1778,7 +1779,7 @@ static void elink_update_pfc_bmac2(struct elink_params *params,
                /* Clear the force Xon */
                wb_data[0] &= ~(1 << 2);
        } else {
                /* Clear the force Xon */
                wb_data[0] &= ~(1 << 2);
        } else {
-               PMD_DRV_LOG(DEBUG, "PFC is disabled");
+               PMD_DRV_LOG(DEBUG, sc, "PFC is disabled");
                /* Disable PFC RX & TX & STATS and set 8 COS */
                wb_data[0] = 0x8;
                wb_data[1] = 0;
                /* Disable PFC RX & TX & STATS and set 8 COS */
                wb_data[0] = 0x8;
                wb_data[1] = 0;
@@ -1804,7 +1805,7 @@ static void elink_update_pfc_bmac2(struct elink_params *params,
        val = 0x3;              /* Enable RX and TX */
        if (is_lb) {
                val |= 0x4;     /* Local loopback */
        val = 0x3;              /* Enable RX and TX */
        if (is_lb) {
                val |= 0x4;     /* Local loopback */
-               PMD_DRV_LOG(DEBUG, "enable bmac loopback");
+               PMD_DRV_LOG(DEBUG, sc, "enable bmac loopback");
        }
        /* When PFC enabled, Pass pause frames towards the NIG. */
        if (params->feature_config_flags & ELINK_FEATURE_CONFIG_PFC_ENABLED)
        }
        /* When PFC enabled, Pass pause frames towards the NIG. */
        if (params->feature_config_flags & ELINK_FEATURE_CONFIG_PFC_ENABLED)
@@ -1898,7 +1899,7 @@ static void elink_update_pfc_nig(struct elink_params *params,
 
        int set_pfc = params->feature_config_flags &
            ELINK_FEATURE_CONFIG_PFC_ENABLED;
 
        int set_pfc = params->feature_config_flags &
            ELINK_FEATURE_CONFIG_PFC_ENABLED;
-       PMD_DRV_LOG(DEBUG, "updating pfc nig parameters");
+       PMD_DRV_LOG(DEBUG, sc, "updating pfc nig parameters");
 
        /* When NIG_LLH0_XCM_MASK_REG_LLHX_XCM_MASK_BCN bit is set
         * MAC control frames (that are not pause packets)
 
        /* When NIG_LLH0_XCM_MASK_REG_LLHX_XCM_MASK_BCN bit is set
         * MAC control frames (that are not pause packets)
@@ -2010,7 +2011,7 @@ elink_status_t elink_update_pfc(struct elink_params *params,
        if (!vars->link_up)
                return elink_status;
 
        if (!vars->link_up)
                return elink_status;
 
-       PMD_DRV_LOG(DEBUG, "About to update PFC in BMAC");
+       PMD_DRV_LOG(DEBUG, sc, "About to update PFC in BMAC");
 
        if (CHIP_IS_E3(sc)) {
                if (vars->mac_type == ELINK_MAC_TYPE_XMAC)
 
        if (CHIP_IS_E3(sc)) {
                if (vars->mac_type == ELINK_MAC_TYPE_XMAC)
@@ -2020,7 +2021,7 @@ elink_status_t elink_update_pfc(struct elink_params *params,
                if ((val &
                     (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << params->port))
                    == 0) {
                if ((val &
                     (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << params->port))
                    == 0) {
-                       PMD_DRV_LOG(DEBUG, "About to update PFC in EMAC");
+                       PMD_DRV_LOG(DEBUG, sc, "About to update PFC in EMAC");
                        elink_emac_enable(params, vars, 0);
                        return elink_status;
                }
                        elink_emac_enable(params, vars, 0);
                        return elink_status;
                }
@@ -2049,7 +2050,7 @@ static elink_status_t elink_bmac1_enable(struct elink_params *params,
        uint32_t wb_data[2];
        uint32_t val;
 
        uint32_t wb_data[2];
        uint32_t val;
 
-       PMD_DRV_LOG(DEBUG, "Enabling BigMAC1");
+       PMD_DRV_LOG(DEBUG, sc, "Enabling BigMAC1");
 
        /* XGXS control */
        wb_data[0] = 0x3c;
 
        /* XGXS control */
        wb_data[0] = 0x3c;
@@ -2068,7 +2069,7 @@ static elink_status_t elink_bmac1_enable(struct elink_params *params,
        val = 0x3;
        if (is_lb) {
                val |= 0x4;
        val = 0x3;
        if (is_lb) {
                val |= 0x4;
-               PMD_DRV_LOG(DEBUG, "enable bmac loopback");
+               PMD_DRV_LOG(DEBUG, sc, "enable bmac loopback");
        }
        wb_data[0] = val;
        wb_data[1] = 0;
        }
        wb_data[0] = val;
        wb_data[1] = 0;
@@ -2109,7 +2110,7 @@ static elink_status_t elink_bmac2_enable(struct elink_params *params,
            NIG_REG_INGRESS_BMAC0_MEM;
        uint32_t wb_data[2];
 
            NIG_REG_INGRESS_BMAC0_MEM;
        uint32_t wb_data[2];
 
-       PMD_DRV_LOG(DEBUG, "Enabling BigMAC2");
+       PMD_DRV_LOG(DEBUG, sc, "Enabling BigMAC2");
 
        wb_data[0] = 0;
        wb_data[1] = 0;
 
        wb_data[0] = 0;
        wb_data[1] = 0;
@@ -2247,7 +2248,7 @@ static elink_status_t elink_pbf_update(struct elink_params *params,
        /* Wait for init credit */
        init_crd = REG_RD(sc, PBF_REG_P0_INIT_CRD + port * 4);
        crd = REG_RD(sc, PBF_REG_P0_CREDIT + port * 8);
        /* Wait for init credit */
        init_crd = REG_RD(sc, PBF_REG_P0_INIT_CRD + port * 4);
        crd = REG_RD(sc, PBF_REG_P0_CREDIT + port * 8);
-       PMD_DRV_LOG(DEBUG, "init_crd 0x%x  crd 0x%x", init_crd, crd);
+       PMD_DRV_LOG(DEBUG, sc, "init_crd 0x%x  crd 0x%x", init_crd, crd);
 
        while ((init_crd != crd) && count) {
                DELAY(1000 * 5);
 
        while ((init_crd != crd) && count) {
                DELAY(1000 * 5);
@@ -2256,7 +2257,7 @@ static elink_status_t elink_pbf_update(struct elink_params *params,
        }
        crd = REG_RD(sc, PBF_REG_P0_CREDIT + port * 8);
        if (init_crd != crd) {
        }
        crd = REG_RD(sc, PBF_REG_P0_CREDIT + port * 8);
        if (init_crd != crd) {
-               PMD_DRV_LOG(DEBUG, "BUG! init_crd 0x%x != crd 0x%x",
+               PMD_DRV_LOG(DEBUG, sc, "BUG! init_crd 0x%x != crd 0x%x",
                            init_crd, crd);
                return ELINK_STATUS_ERROR;
        }
                            init_crd, crd);
                return ELINK_STATUS_ERROR;
        }
@@ -2283,13 +2284,13 @@ static elink_status_t elink_pbf_update(struct elink_params *params,
                        init_crd = thresh + 553 - 22;
                        break;
                default:
                        init_crd = thresh + 553 - 22;
                        break;
                default:
-                       PMD_DRV_LOG(DEBUG, "Invalid line_speed 0x%x",
+                       PMD_DRV_LOG(DEBUG, sc, "Invalid line_speed 0x%x",
                                    line_speed);
                        return ELINK_STATUS_ERROR;
                }
        }
        REG_WR(sc, PBF_REG_P0_INIT_CRD + port * 4, init_crd);
                                    line_speed);
                        return ELINK_STATUS_ERROR;
                }
        }
        REG_WR(sc, PBF_REG_P0_INIT_CRD + port * 4, init_crd);
-       PMD_DRV_LOG(DEBUG, "PBF updated to speed %d credit %d",
+       PMD_DRV_LOG(DEBUG, sc, "PBF updated to speed %d credit %d",
                    line_speed, init_crd);
 
        /* Probe the credit changes */
                    line_speed, init_crd);
 
        /* Probe the credit changes */
@@ -2379,7 +2380,7 @@ static elink_status_t elink_cl22_write(struct bnx2x_softc *sc,
                }
        }
        if (tmp & EMAC_MDIO_COMM_START_BUSY) {
                }
        }
        if (tmp & EMAC_MDIO_COMM_START_BUSY) {
-               PMD_DRV_LOG(DEBUG, "write phy register failed");
+               PMD_DRV_LOG(DEBUG, sc, "write phy register failed");
                rc = ELINK_STATUS_TIMEOUT;
        }
        REG_WR(sc, phy->mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, mode);
                rc = ELINK_STATUS_TIMEOUT;
        }
        REG_WR(sc, phy->mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, mode);
@@ -2415,7 +2416,7 @@ static elink_status_t elink_cl22_read(struct bnx2x_softc *sc,
                }
        }
        if (val & EMAC_MDIO_COMM_START_BUSY) {
                }
        }
        if (val & EMAC_MDIO_COMM_START_BUSY) {
-               PMD_DRV_LOG(DEBUG, "read phy register failed");
+               PMD_DRV_LOG(DEBUG, sc, "read phy register failed");
 
                *ret_val = 0;
                rc = ELINK_STATUS_TIMEOUT;
 
                *ret_val = 0;
                rc = ELINK_STATUS_TIMEOUT;
@@ -2456,7 +2457,7 @@ static elink_status_t elink_cl45_read(struct bnx2x_softc *sc,
                }
        }
        if (val & EMAC_MDIO_COMM_START_BUSY) {
                }
        }
        if (val & EMAC_MDIO_COMM_START_BUSY) {
-               PMD_DRV_LOG(DEBUG, "read phy register failed");
+               PMD_DRV_LOG(DEBUG, sc, "read phy register failed");
                elink_cb_event_log(sc, ELINK_LOG_ID_MDIO_ACCESS_TIMEOUT);       // "MDC/MDIO access timeout"
 
                *ret_val = 0;
                elink_cb_event_log(sc, ELINK_LOG_ID_MDIO_ACCESS_TIMEOUT);       // "MDC/MDIO access timeout"
 
                *ret_val = 0;
@@ -2480,7 +2481,7 @@ static elink_status_t elink_cl45_read(struct bnx2x_softc *sc,
                        }
                }
                if (val & EMAC_MDIO_COMM_START_BUSY) {
                        }
                }
                if (val & EMAC_MDIO_COMM_START_BUSY) {
-                       PMD_DRV_LOG(DEBUG, "read phy register failed");
+                       PMD_DRV_LOG(DEBUG, sc, "read phy register failed");
                        elink_cb_event_log(sc, ELINK_LOG_ID_MDIO_ACCESS_TIMEOUT);       // "MDC/MDIO access timeout"
 
                        *ret_val = 0;
                        elink_cb_event_log(sc, ELINK_LOG_ID_MDIO_ACCESS_TIMEOUT);       // "MDC/MDIO access timeout"
 
                        *ret_val = 0;
@@ -2532,7 +2533,7 @@ static elink_status_t elink_cl45_write(struct bnx2x_softc *sc,
                }
        }
        if (tmp & EMAC_MDIO_COMM_START_BUSY) {
                }
        }
        if (tmp & EMAC_MDIO_COMM_START_BUSY) {
-               PMD_DRV_LOG(DEBUG, "write phy register failed");
+               PMD_DRV_LOG(DEBUG, sc, "write phy register failed");
                elink_cb_event_log(sc, ELINK_LOG_ID_MDIO_ACCESS_TIMEOUT);       // "MDC/MDIO access timeout"
 
                rc = ELINK_STATUS_TIMEOUT;
                elink_cb_event_log(sc, ELINK_LOG_ID_MDIO_ACCESS_TIMEOUT);       // "MDC/MDIO access timeout"
 
                rc = ELINK_STATUS_TIMEOUT;
@@ -2554,7 +2555,7 @@ static elink_status_t elink_cl45_write(struct bnx2x_softc *sc,
                        }
                }
                if (tmp & EMAC_MDIO_COMM_START_BUSY) {
                        }
                }
                if (tmp & EMAC_MDIO_COMM_START_BUSY) {
-                       PMD_DRV_LOG(DEBUG, "write phy register failed");
+                       PMD_DRV_LOG(DEBUG, sc, "write phy register failed");
                        elink_cb_event_log(sc, ELINK_LOG_ID_MDIO_ACCESS_TIMEOUT);       // "MDC/MDIO access timeout"
 
                        rc = ELINK_STATUS_TIMEOUT;
                        elink_cb_event_log(sc, ELINK_LOG_ID_MDIO_ACCESS_TIMEOUT);       // "MDC/MDIO access timeout"
 
                        rc = ELINK_STATUS_TIMEOUT;
@@ -2677,7 +2678,7 @@ static elink_status_t elink_eee_set_timers(struct elink_params *params,
        } else if ((params->eee_mode & ELINK_EEE_MODE_ENABLE_LPI) &&
                   (params->eee_mode & ELINK_EEE_MODE_OVERRIDE_NVRAM) &&
                   (params->eee_mode & ELINK_EEE_MODE_OUTPUT_TIME)) {
        } else if ((params->eee_mode & ELINK_EEE_MODE_ENABLE_LPI) &&
                   (params->eee_mode & ELINK_EEE_MODE_OVERRIDE_NVRAM) &&
                   (params->eee_mode & ELINK_EEE_MODE_OUTPUT_TIME)) {
-               PMD_DRV_LOG(DEBUG, "Error: Tx LPI is enabled with timer 0");
+               PMD_DRV_LOG(DEBUG, sc, "Error: Tx LPI is enabled with timer 0");
                return ELINK_STATUS_ERROR;
        }
 
                return ELINK_STATUS_ERROR;
        }
 
@@ -2744,11 +2745,11 @@ static elink_status_t elink_eee_advertise(struct elink_phy *phy,
        REG_WR(sc, MISC_REG_CPMU_LP_MASK_EXT_P0 + (params->port << 2), 0xfc20);
 
        if (modes & SHMEM_EEE_10G_ADV) {
        REG_WR(sc, MISC_REG_CPMU_LP_MASK_EXT_P0 + (params->port << 2), 0xfc20);
 
        if (modes & SHMEM_EEE_10G_ADV) {
-               PMD_DRV_LOG(DEBUG, "Advertise 10GBase-T EEE");
+               PMD_DRV_LOG(DEBUG, sc, "Advertise 10GBase-T EEE");
                val |= 0x8;
        }
        if (modes & SHMEM_EEE_1G_ADV) {
                val |= 0x8;
        }
        if (modes & SHMEM_EEE_1G_ADV) {
-               PMD_DRV_LOG(DEBUG, "Advertise 1GBase-T EEE");
+               PMD_DRV_LOG(DEBUG, sc, "Advertise 1GBase-T EEE");
                val |= 0x4;
        }
 
                val |= 0x4;
        }
 
@@ -2788,7 +2789,7 @@ static void elink_eee_an_resolve(struct elink_phy *phy,
                if (adv & 0x2) {
                        if (vars->line_speed == ELINK_SPEED_100)
                                neg = 1;
                if (adv & 0x2) {
                        if (vars->line_speed == ELINK_SPEED_100)
                                neg = 1;
-                       PMD_DRV_LOG(DEBUG, "EEE negotiated - 100M");
+                       PMD_DRV_LOG(DEBUG, sc, "EEE negotiated - 100M");
                }
        }
        if (lp & 0x14) {
                }
        }
        if (lp & 0x14) {
@@ -2796,7 +2797,7 @@ static void elink_eee_an_resolve(struct elink_phy *phy,
                if (adv & 0x14) {
                        if (vars->line_speed == ELINK_SPEED_1000)
                                neg = 1;
                if (adv & 0x14) {
                        if (vars->line_speed == ELINK_SPEED_1000)
                                neg = 1;
-                       PMD_DRV_LOG(DEBUG, "EEE negotiated - 1G");
+                       PMD_DRV_LOG(DEBUG, sc, "EEE negotiated - 1G");
                }
        }
        if (lp & 0x68) {
                }
        }
        if (lp & 0x68) {
@@ -2804,7 +2805,7 @@ static void elink_eee_an_resolve(struct elink_phy *phy,
                if (adv & 0x68) {
                        if (vars->line_speed == ELINK_SPEED_10000)
                                neg = 1;
                if (adv & 0x68) {
                        if (vars->line_speed == ELINK_SPEED_10000)
                                neg = 1;
-                       PMD_DRV_LOG(DEBUG, "EEE negotiated - 10G");
+                       PMD_DRV_LOG(DEBUG, sc, "EEE negotiated - 10G");
                }
        }
 
                }
        }
 
@@ -2812,7 +2813,7 @@ static void elink_eee_an_resolve(struct elink_phy *phy,
        vars->eee_status |= (lp_adv << SHMEM_EEE_LP_ADV_STATUS_SHIFT);
 
        if (neg) {
        vars->eee_status |= (lp_adv << SHMEM_EEE_LP_ADV_STATUS_SHIFT);
 
        if (neg) {
-               PMD_DRV_LOG(DEBUG, "EEE is active");
+               PMD_DRV_LOG(DEBUG, sc, "EEE is active");
                vars->eee_status |= SHMEM_EEE_ACTIVE_BIT;
        }
 }
                vars->eee_status |= SHMEM_EEE_ACTIVE_BIT;
        }
 }
@@ -2842,7 +2843,7 @@ static void elink_bsc_module_sel(struct elink_params *params)
                                   e3_cmn_pin_cfg));
        i2c_val[I2C_BSC0] = (sfp_ctrl & PORT_HW_CFG_E3_I2C_MUX0_MASK) > 0;
        i2c_val[I2C_BSC1] = (sfp_ctrl & PORT_HW_CFG_E3_I2C_MUX1_MASK) > 0;
                                   e3_cmn_pin_cfg));
        i2c_val[I2C_BSC0] = (sfp_ctrl & PORT_HW_CFG_E3_I2C_MUX0_MASK) > 0;
        i2c_val[I2C_BSC1] = (sfp_ctrl & PORT_HW_CFG_E3_I2C_MUX1_MASK) > 0;
-       PMD_DRV_LOG(DEBUG, "Setting BSC switch");
+       PMD_DRV_LOG(DEBUG, sc, "Setting BSC switch");
        for (idx = 0; idx < I2C_SWITCH_WIDTH; idx++)
                elink_set_cfg_pin(sc, i2c_pins[idx], i2c_val[idx]);
 }
        for (idx = 0; idx < I2C_SWITCH_WIDTH; idx++)
                elink_set_cfg_pin(sc, i2c_pins[idx], i2c_val[idx]);
 }
@@ -2858,7 +2859,7 @@ static elink_status_t elink_bsc_read(struct elink_params *params,
        elink_status_t rc = ELINK_STATUS_OK;
 
        if (xfer_cnt > 16) {
        elink_status_t rc = ELINK_STATUS_OK;
 
        if (xfer_cnt > 16) {
-               PMD_DRV_LOG(DEBUG, "invalid xfer_cnt %d. Max is 16 bytes",
+               PMD_DRV_LOG(DEBUG, sc, "invalid xfer_cnt %d. Max is 16 bytes",
                            xfer_cnt);
                return ELINK_STATUS_ERROR;
        }
                            xfer_cnt);
                return ELINK_STATUS_ERROR;
        }
@@ -2890,7 +2891,7 @@ static elink_status_t elink_bsc_read(struct elink_params *params,
                DELAY(10);
                val = REG_RD(sc, MCP_REG_MCPR_IMC_COMMAND);
                if (i++ > 1000) {
                DELAY(10);
                val = REG_RD(sc, MCP_REG_MCPR_IMC_COMMAND);
                if (i++ > 1000) {
-                       PMD_DRV_LOG(DEBUG, "wr 0 byte timed out after %d try",
+                       PMD_DRV_LOG(DEBUG, sc, "wr 0 byte timed out after %d try",
                                    i);
                        rc = ELINK_STATUS_TIMEOUT;
                        break;
                                    i);
                        rc = ELINK_STATUS_TIMEOUT;
                        break;
@@ -2914,7 +2915,8 @@ static elink_status_t elink_bsc_read(struct elink_params *params,
                DELAY(10);
                val = REG_RD(sc, MCP_REG_MCPR_IMC_COMMAND);
                if (i++ > 1000) {
                DELAY(10);
                val = REG_RD(sc, MCP_REG_MCPR_IMC_COMMAND);
                if (i++ > 1000) {
-                       PMD_DRV_LOG(DEBUG, "rd op timed out after %d try", i);
+                       PMD_DRV_LOG(DEBUG, sc,
+                                   "rd op timed out after %d try", i);
                        rc = ELINK_STATUS_TIMEOUT;
                        break;
                }
                        rc = ELINK_STATUS_TIMEOUT;
                        break;
                }
@@ -3059,7 +3061,7 @@ static void elink_serdes_deassert(struct bnx2x_softc *sc, uint8_t port)
 {
        uint32_t val;
 
 {
        uint32_t val;
 
-       PMD_DRV_LOG(DEBUG, "elink_serdes_deassert");
+       PMD_DRV_LOG(DEBUG, sc, "elink_serdes_deassert");
 
        val = ELINK_SERDES_RESET_BITS << (port * 16);
 
 
        val = ELINK_SERDES_RESET_BITS << (port * 16);
 
@@ -3094,7 +3096,7 @@ static void elink_xgxs_deassert(struct elink_params *params)
        struct bnx2x_softc *sc = params->sc;
        uint8_t port;
        uint32_t val;
        struct bnx2x_softc *sc = params->sc;
        uint8_t port;
        uint32_t val;
-       PMD_DRV_LOG(DEBUG, "elink_xgxs_deassert");
+       PMD_DRV_LOG(DEBUG, sc, "elink_xgxs_deassert");
        port = params->port;
 
        val = ELINK_XGXS_RESET_BITS << (port * 16);
        port = params->port;
 
        val = ELINK_XGXS_RESET_BITS << (port * 16);
@@ -3145,7 +3147,7 @@ static void elink_calc_ieee_aneg_adv(struct elink_phy *phy,
                *ieee_fc |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE;
                break;
        }
                *ieee_fc |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE;
                break;
        }
-       PMD_DRV_LOG(DEBUG, "ieee_fc = 0x%x", *ieee_fc);
+       PMD_DRV_LOG(DEBUG, params->sc, "ieee_fc = 0x%x", *ieee_fc);
 }
 
 static void set_phy_vars(struct elink_params *params, struct elink_vars *vars)
 }
 
 static void set_phy_vars(struct elink_params *params, struct elink_vars *vars)
@@ -3179,7 +3181,7 @@ static void set_phy_vars(struct elink_params *params, struct elink_vars *vars)
                    ELINK_SPEED_AUTO_NEG)
                        vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED;
 
                    ELINK_SPEED_AUTO_NEG)
                        vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED;
 
-               PMD_DRV_LOG(DEBUG, "req_flow_ctrl %x, req_line_speed %x,"
+               PMD_DRV_LOG(DEBUG, params->sc, "req_flow_ctrl %x, req_line_speed %x,"
                            " speed_cap_mask %x",
                            params->phy[actual_phy_idx].req_flow_ctrl,
                            params->phy[actual_phy_idx].req_line_speed,
                            " speed_cap_mask %x",
                            params->phy[actual_phy_idx].req_flow_ctrl,
                            params->phy[actual_phy_idx].req_line_speed,
@@ -3210,7 +3212,7 @@ static void elink_ext_phy_set_pause(struct elink_params *params,
            MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) {
                val |= MDIO_AN_REG_ADV_PAUSE_PAUSE;
        }
            MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) {
                val |= MDIO_AN_REG_ADV_PAUSE_PAUSE;
        }
-       PMD_DRV_LOG(DEBUG, "Ext phy AN advertize 0x%x", val);
+       PMD_DRV_LOG(DEBUG, sc, "Ext phy AN advertize 0x%x", val);
        elink_cl45_write(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_ADV_PAUSE, val);
 }
 
        elink_cl45_write(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_ADV_PAUSE, val);
 }
 
@@ -3289,7 +3291,7 @@ static void elink_ext_phy_update_adv_fc(struct elink_phy *phy,
        }
        pause_result = (ld_pause & MDIO_AN_REG_ADV_PAUSE_MASK) >> 8;
        pause_result |= (lp_pause & MDIO_AN_REG_ADV_PAUSE_MASK) >> 10;
        }
        pause_result = (ld_pause & MDIO_AN_REG_ADV_PAUSE_MASK) >> 8;
        pause_result |= (lp_pause & MDIO_AN_REG_ADV_PAUSE_MASK) >> 10;
-       PMD_DRV_LOG(DEBUG, "Ext PHY pause result 0x%x", pause_result);
+       PMD_DRV_LOG(DEBUG, sc, "Ext PHY pause result 0x%x", pause_result);
        elink_pause_resolve(vars, pause_result);
 
 }
        elink_pause_resolve(vars, pause_result);
 
 }
@@ -3358,7 +3360,7 @@ static void elink_warpcore_enable_AN_KR2(struct elink_phy *phy,
                {MDIO_WC_DEVAD, MDIO_WC_REG_ETA_CL73_LD_BAM_CODE, 0x0157},
                {MDIO_WC_DEVAD, MDIO_WC_REG_ETA_CL73_LD_UD_CODE, 0x0620}
        };
                {MDIO_WC_DEVAD, MDIO_WC_REG_ETA_CL73_LD_BAM_CODE, 0x0157},
                {MDIO_WC_DEVAD, MDIO_WC_REG_ETA_CL73_LD_UD_CODE, 0x0620}
        };
-       PMD_DRV_LOG(DEBUG, "Enabling 20G-KR2");
+       PMD_DRV_LOG(DEBUG, sc, "Enabling 20G-KR2");
 
        elink_cl45_read_or_write(sc, phy, MDIO_WC_DEVAD,
                                 MDIO_WC_REG_CL49_USERB0_CTRL, (3 << 6));
 
        elink_cl45_read_or_write(sc, phy, MDIO_WC_DEVAD,
                                 MDIO_WC_REG_CL49_USERB0_CTRL, (3 << 6));
@@ -3395,7 +3397,7 @@ static void elink_disable_kr2(struct elink_params *params,
                {MDIO_WC_DEVAD, MDIO_WC_REG_ETA_CL73_LD_BAM_CODE, 0x0002},
                {MDIO_WC_DEVAD, MDIO_WC_REG_ETA_CL73_LD_UD_CODE, 0x0000}
        };
                {MDIO_WC_DEVAD, MDIO_WC_REG_ETA_CL73_LD_BAM_CODE, 0x0002},
                {MDIO_WC_DEVAD, MDIO_WC_REG_ETA_CL73_LD_UD_CODE, 0x0000}
        };
-       PMD_DRV_LOG(DEBUG, "Disabling 20G-KR2");
+       PMD_DRV_LOG(DEBUG, sc, "Disabling 20G-KR2");
 
        for (i = 0; i < ARRAY_SIZE(reg_set); i++)
                elink_cl45_write(sc, phy, reg_set[i].devad, reg_set[i].reg,
 
        for (i = 0; i < ARRAY_SIZE(reg_set); i++)
                elink_cl45_write(sc, phy, reg_set[i].devad, reg_set[i].reg,
@@ -3411,7 +3413,7 @@ static void elink_warpcore_set_lpi_passthrough(struct elink_phy *phy,
 {
        struct bnx2x_softc *sc = params->sc;
 
 {
        struct bnx2x_softc *sc = params->sc;
 
-       PMD_DRV_LOG(DEBUG, "Configure WC for LPI pass through");
+       PMD_DRV_LOG(DEBUG, sc, "Configure WC for LPI pass through");
        elink_cl45_write(sc, phy, MDIO_WC_DEVAD,
                         MDIO_WC_REG_EEE_COMBO_CONTROL0, 0x7c);
        elink_cl45_read_or_write(sc, phy, MDIO_WC_DEVAD,
        elink_cl45_write(sc, phy, MDIO_WC_DEVAD,
                         MDIO_WC_REG_EEE_COMBO_CONTROL0, 0x7c);
        elink_cl45_read_or_write(sc, phy, MDIO_WC_DEVAD,
@@ -3449,7 +3451,7 @@ static void elink_warpcore_enable_AN_KR(struct elink_phy *phy,
                {MDIO_PMA_DEVAD, MDIO_WC_REG_PMD_KR_CONTROL, 0x2},
                {MDIO_WC_DEVAD, MDIO_WC_REG_CL72_USERB0_CL72_TX_FIR_TAP, 0},
        };
                {MDIO_PMA_DEVAD, MDIO_WC_REG_PMD_KR_CONTROL, 0x2},
                {MDIO_WC_DEVAD, MDIO_WC_REG_CL72_USERB0_CL72_TX_FIR_TAP, 0},
        };
-       PMD_DRV_LOG(DEBUG, "Enable Auto Negotiation for KR");
+       PMD_DRV_LOG(DEBUG, sc, "Enable Auto Negotiation for KR");
        /* Set to default registers that may be overriden by 10G force */
        for (i = 0; i < ARRAY_SIZE(reg_set); i++)
                elink_cl45_write(sc, phy, reg_set[i].devad, reg_set[i].reg,
        /* Set to default registers that may be overriden by 10G force */
        for (i = 0; i < ARRAY_SIZE(reg_set); i++)
                elink_cl45_write(sc, phy, reg_set[i].devad, reg_set[i].reg,
@@ -3471,7 +3473,7 @@ static void elink_warpcore_enable_AN_KR(struct elink_phy *phy,
 
                /* Enable CL37 1G Parallel Detect */
                elink_cl45_read_or_write(sc, phy, MDIO_WC_DEVAD, addr, 0x1);
 
                /* Enable CL37 1G Parallel Detect */
                elink_cl45_read_or_write(sc, phy, MDIO_WC_DEVAD, addr, 0x1);
-               PMD_DRV_LOG(DEBUG, "Advertize 1G");
+               PMD_DRV_LOG(DEBUG, sc, "Advertize 1G");
        }
        if (((vars->line_speed == ELINK_SPEED_AUTO_NEG) &&
             (phy->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) ||
        }
        if (((vars->line_speed == ELINK_SPEED_AUTO_NEG) &&
             (phy->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) ||
@@ -3485,7 +3487,7 @@ static void elink_warpcore_enable_AN_KR(struct elink_phy *phy,
                elink_cl45_write(sc, phy, MDIO_AN_DEVAD,
                                 MDIO_WC_REG_PAR_DET_10G_CTRL, 1);
                elink_set_aer_mmd(params, phy);
                elink_cl45_write(sc, phy, MDIO_AN_DEVAD,
                                 MDIO_WC_REG_PAR_DET_10G_CTRL, 1);
                elink_set_aer_mmd(params, phy);
-               PMD_DRV_LOG(DEBUG, "Advertize 10G");
+               PMD_DRV_LOG(DEBUG, sc, "Advertize 10G");
        }
 
        /* Set Transmit PMD settings */
        }
 
        /* Set Transmit PMD settings */
@@ -3522,7 +3524,7 @@ static void elink_warpcore_enable_AN_KR(struct elink_phy *phy,
                elink_cl45_read_or_write(sc, phy, MDIO_WC_DEVAD,
                                         MDIO_WC_REG_DIGITAL6_MP5_NEXTPAGECTRL,
                                         1);
                elink_cl45_read_or_write(sc, phy, MDIO_WC_DEVAD,
                                         MDIO_WC_REG_DIGITAL6_MP5_NEXTPAGECTRL,
                                         1);
-               PMD_DRV_LOG(DEBUG, "Enable CL37 BAM on KR");
+               PMD_DRV_LOG(DEBUG, sc, "Enable CL37 BAM on KR");
        }
 
        /* Advertise pause */
        }
 
        /* Advertise pause */
@@ -3859,7 +3861,7 @@ static void elink_warpcore_set_sgmii_speed(struct elink_phy *phy,
                elink_cl45_read_or_write(sc, phy, MDIO_WC_DEVAD,
                                         MDIO_WC_REG_COMBO_IEEE0_MIICTRL,
                                         0x1000);
                elink_cl45_read_or_write(sc, phy, MDIO_WC_DEVAD,
                                         MDIO_WC_REG_COMBO_IEEE0_MIICTRL,
                                         0x1000);
-               PMD_DRV_LOG(DEBUG, "set SGMII AUTONEG");
+               PMD_DRV_LOG(DEBUG, sc, "set SGMII AUTONEG");
        } else {
                elink_cl45_read(sc, phy, MDIO_WC_DEVAD,
                                MDIO_WC_REG_COMBO_IEEE0_MIICTRL, &val16);
        } else {
                elink_cl45_read(sc, phy, MDIO_WC_DEVAD,
                                MDIO_WC_REG_COMBO_IEEE0_MIICTRL, &val16);
@@ -3874,7 +3876,7 @@ static void elink_warpcore_set_sgmii_speed(struct elink_phy *phy,
                        val16 |= 0x0040;
                        break;
                default:
                        val16 |= 0x0040;
                        break;
                default:
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "Speed not supported: 0x%x",
                                    phy->req_line_speed);
                        return;
                                    "Speed not supported: 0x%x",
                                    phy->req_line_speed);
                        return;
@@ -3886,11 +3888,11 @@ static void elink_warpcore_set_sgmii_speed(struct elink_phy *phy,
                elink_cl45_write(sc, phy, MDIO_WC_DEVAD,
                                 MDIO_WC_REG_COMBO_IEEE0_MIICTRL, val16);
 
                elink_cl45_write(sc, phy, MDIO_WC_DEVAD,
                                 MDIO_WC_REG_COMBO_IEEE0_MIICTRL, val16);
 
-               PMD_DRV_LOG(DEBUG, "set SGMII force speed %d",
+               PMD_DRV_LOG(DEBUG, sc, "set SGMII force speed %d",
                            phy->req_line_speed);
                elink_cl45_read(sc, phy, MDIO_WC_DEVAD,
                                MDIO_WC_REG_COMBO_IEEE0_MIICTRL, &val16);
                            phy->req_line_speed);
                elink_cl45_read(sc, phy, MDIO_WC_DEVAD,
                                MDIO_WC_REG_COMBO_IEEE0_MIICTRL, &val16);
-               PMD_DRV_LOG(DEBUG, "  (readback) %x", val16);
+               PMD_DRV_LOG(DEBUG, sc, "  (readback) %x", val16);
        }
 
        /* SGMII Slave mode and disable signal detect */
        }
 
        /* SGMII Slave mode and disable signal detect */
@@ -4001,7 +4003,7 @@ static elink_status_t elink_get_mod_abs_int_cfg(struct bnx2x_softc *sc,
                 */
                if ((cfg_pin < PIN_CFG_GPIO0_P0) ||
                    (cfg_pin > PIN_CFG_GPIO3_P1)) {
                 */
                if ((cfg_pin < PIN_CFG_GPIO0_P0) ||
                    (cfg_pin > PIN_CFG_GPIO3_P1)) {
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "No cfg pin %x for module detect indication",
                                    cfg_pin);
                        return ELINK_STATUS_ERROR;
                                    "No cfg pin %x for module detect indication",
                                    cfg_pin);
                        return ELINK_STATUS_ERROR;
@@ -4093,7 +4095,7 @@ static void elink_warpcore_config_runtime(struct elink_phy *phy,
                                                 0x1200);
 
                                vars->rx_tx_asic_rst--;
                                                 0x1200);
 
                                vars->rx_tx_asic_rst--;
-                               PMD_DRV_LOG(DEBUG, "0x%x retry left",
+                               PMD_DRV_LOG(DEBUG, sc, "0x%x retry left",
                                            vars->rx_tx_asic_rst);
                        }
                        break;
                                            vars->rx_tx_asic_rst);
                        }
                        break;
@@ -4115,10 +4117,10 @@ static void elink_warpcore_config_sfi(struct elink_phy *phy,
        if ((params->req_line_speed[ELINK_LINK_CONFIG_IDX(ELINK_INT_PHY)] ==
             ELINK_SPEED_10000) &&
            (phy->media_type != ELINK_ETH_PHY_SFP_1G_FIBER)) {
        if ((params->req_line_speed[ELINK_LINK_CONFIG_IDX(ELINK_INT_PHY)] ==
             ELINK_SPEED_10000) &&
            (phy->media_type != ELINK_ETH_PHY_SFP_1G_FIBER)) {
-               PMD_DRV_LOG(DEBUG, "Setting 10G SFI");
+               PMD_DRV_LOG(DEBUG, params->sc, "Setting 10G SFI");
                elink_warpcore_set_10G_XFI(phy, params, 0);
        } else {
                elink_warpcore_set_10G_XFI(phy, params, 0);
        } else {
-               PMD_DRV_LOG(DEBUG, "Setting 1G Fiber");
+               PMD_DRV_LOG(DEBUG, params->sc, "Setting 1G Fiber");
                elink_warpcore_set_sgmii_speed(phy, params, 1, 0);
        }
 }
                elink_warpcore_set_sgmii_speed(phy, params, 1, 0);
        }
 }
@@ -4135,7 +4137,7 @@ static void elink_sfp_e3_set_transmitter(struct elink_params *params,
                                  dev_info.port_hw_config[port].e3_sfp_ctrl)) &
            PORT_HW_CFG_E3_TX_LASER_MASK;
        /* Set the !tx_en since this pin is DISABLE_TX_LASER */
                                  dev_info.port_hw_config[port].e3_sfp_ctrl)) &
            PORT_HW_CFG_E3_TX_LASER_MASK;
        /* Set the !tx_en since this pin is DISABLE_TX_LASER */
-       PMD_DRV_LOG(DEBUG, "Setting WC TX to %d", tx_en);
+       PMD_DRV_LOG(DEBUG, sc, "Setting WC TX to %d", tx_en);
 
        /* For 20G, the expected pin to be used is 3 pins after the current */
        elink_set_cfg_pin(sc, cfg_pin, tx_en ^ 1);
 
        /* For 20G, the expected pin to be used is 3 pins after the current */
        elink_set_cfg_pin(sc, cfg_pin, tx_en ^ 1);
@@ -4156,7 +4158,7 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
                                         dev_info.port_hw_config[params->port].
                                         default_cfg)) &
                         PORT_HW_CFG_NET_SERDES_IF_MASK);
                                         dev_info.port_hw_config[params->port].
                                         default_cfg)) &
                         PORT_HW_CFG_NET_SERDES_IF_MASK);
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
                    "Begin Warpcore init, link_speed %d, "
                    "serdes_net_if = 0x%x", vars->line_speed, serdes_net_if);
        elink_set_aer_mmd(params, phy);
                    "Begin Warpcore init, link_speed %d, "
                    "serdes_net_if = 0x%x", vars->line_speed, serdes_net_if);
        elink_set_aer_mmd(params, phy);
@@ -4167,7 +4169,7 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
             ((phy->req_line_speed == ELINK_SPEED_100) ||
              (phy->req_line_speed == ELINK_SPEED_10)))) {
                vars->phy_flags |= PHY_SGMII_FLAG;
             ((phy->req_line_speed == ELINK_SPEED_100) ||
              (phy->req_line_speed == ELINK_SPEED_10)))) {
                vars->phy_flags |= PHY_SGMII_FLAG;
-               PMD_DRV_LOG(DEBUG, "Setting SGMII mode");
+               PMD_DRV_LOG(DEBUG, sc, "Setting SGMII mode");
                elink_warpcore_clear_regs(phy, params, lane);
                elink_warpcore_set_sgmii_speed(phy, params, 0, 1);
        } else {
                elink_warpcore_clear_regs(phy, params, lane);
                elink_warpcore_set_sgmii_speed(phy, params, 0, 1);
        } else {
@@ -4177,7 +4179,7 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
                        if (params->loopback_mode != ELINK_LOOPBACK_EXT)
                                elink_warpcore_enable_AN_KR(phy, params, vars);
                        else {
                        if (params->loopback_mode != ELINK_LOOPBACK_EXT)
                                elink_warpcore_enable_AN_KR(phy, params, vars);
                        else {
-                               PMD_DRV_LOG(DEBUG, "Setting KR 10G-Force");
+                               PMD_DRV_LOG(DEBUG, sc, "Setting KR 10G-Force");
                                elink_warpcore_set_10G_KR(phy, params);
                        }
                        break;
                                elink_warpcore_set_10G_KR(phy, params);
                        }
                        break;
@@ -4185,14 +4187,14 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
                case PORT_HW_CFG_NET_SERDES_IF_XFI:
                        elink_warpcore_clear_regs(phy, params, lane);
                        if (vars->line_speed == ELINK_SPEED_10000) {
                case PORT_HW_CFG_NET_SERDES_IF_XFI:
                        elink_warpcore_clear_regs(phy, params, lane);
                        if (vars->line_speed == ELINK_SPEED_10000) {
-                               PMD_DRV_LOG(DEBUG, "Setting 10G XFI");
+                               PMD_DRV_LOG(DEBUG, sc, "Setting 10G XFI");
                                elink_warpcore_set_10G_XFI(phy, params, 1);
                        } else {
                                if (ELINK_SINGLE_MEDIA_DIRECT(params)) {
                                elink_warpcore_set_10G_XFI(phy, params, 1);
                        } else {
                                if (ELINK_SINGLE_MEDIA_DIRECT(params)) {
-                                       PMD_DRV_LOG(DEBUG, "1G Fiber");
+                                       PMD_DRV_LOG(DEBUG, sc, "1G Fiber");
                                        fiber_mode = 1;
                                } else {
                                        fiber_mode = 1;
                                } else {
-                                       PMD_DRV_LOG(DEBUG, "10/100/1G SGMII");
+                                       PMD_DRV_LOG(DEBUG, sc, "10/100/1G SGMII");
                                        fiber_mode = 0;
                                }
                                elink_warpcore_set_sgmii_speed(phy,
                                        fiber_mode = 0;
                                }
                                elink_warpcore_set_sgmii_speed(phy,
@@ -4221,10 +4223,10 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
 
                case PORT_HW_CFG_NET_SERDES_IF_DXGXS:
                        if (vars->line_speed != ELINK_SPEED_20000) {
 
                case PORT_HW_CFG_NET_SERDES_IF_DXGXS:
                        if (vars->line_speed != ELINK_SPEED_20000) {
-                               PMD_DRV_LOG(DEBUG, "Speed not supported yet");
+                               PMD_DRV_LOG(DEBUG, sc, "Speed not supported yet");
                                return 0;
                        }
                                return 0;
                        }
-                       PMD_DRV_LOG(DEBUG, "Setting 20G DXGXS");
+                       PMD_DRV_LOG(DEBUG, sc, "Setting 20G DXGXS");
                        elink_warpcore_set_20G_DXGXS(sc, phy, lane);
                        /* Issue Module detection */
 
                        elink_warpcore_set_20G_DXGXS(sc, phy, lane);
                        /* Issue Module detection */
 
@@ -4234,12 +4236,12 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
                        if (!params->loopback_mode) {
                                elink_warpcore_enable_AN_KR(phy, params, vars);
                        } else {
                        if (!params->loopback_mode) {
                                elink_warpcore_enable_AN_KR(phy, params, vars);
                        } else {
-                               PMD_DRV_LOG(DEBUG, "Setting KR 20G-Force");
+                               PMD_DRV_LOG(DEBUG, sc, "Setting KR 20G-Force");
                                elink_warpcore_set_20G_force_KR2(phy, params);
                        }
                        break;
                default:
                                elink_warpcore_set_20G_force_KR2(phy, params);
                        }
                        break;
                default:
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "Unsupported Serdes Net Interface 0x%x",
                                    serdes_net_if);
                        return 0;
                                    "Unsupported Serdes Net Interface 0x%x",
                                    serdes_net_if);
                        return 0;
@@ -4248,7 +4250,7 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
 
        /* Take lane out of reset after configuration is finished */
        elink_warpcore_reset_lane(sc, phy, 0);
 
        /* Take lane out of reset after configuration is finished */
        elink_warpcore_reset_lane(sc, phy, 0);
-       PMD_DRV_LOG(DEBUG, "Exit config init");
+       PMD_DRV_LOG(DEBUG, sc, "Exit config init");
 
        return 0;
 }
 
        return 0;
 }
@@ -4313,7 +4315,7 @@ static void elink_set_warpcore_loopback(struct elink_phy *phy,
        struct bnx2x_softc *sc = params->sc;
        uint16_t val16;
        uint32_t lane;
        struct bnx2x_softc *sc = params->sc;
        uint16_t val16;
        uint32_t lane;
-       PMD_DRV_LOG(DEBUG, "Setting Warpcore loopback type %x, speed %d",
+       PMD_DRV_LOG(DEBUG, sc, "Setting Warpcore loopback type %x, speed %d",
                    params->loopback_mode, phy->req_line_speed);
 
        if (phy->req_line_speed < ELINK_SPEED_10000 ||
                    params->loopback_mode, phy->req_line_speed);
 
        if (phy->req_line_speed < ELINK_SPEED_10000 ||
@@ -4358,7 +4360,7 @@ static void elink_sync_link(struct elink_params *params,
                vars->phy_flags |= PHY_PHYSICAL_LINK_FLAG;
        vars->link_up = (vars->link_status & LINK_STATUS_LINK_UP);
        if (vars->link_up) {
                vars->phy_flags |= PHY_PHYSICAL_LINK_FLAG;
        vars->link_up = (vars->link_status & LINK_STATUS_LINK_UP);
        if (vars->link_up) {
-               PMD_DRV_LOG(DEBUG, "phy link up");
+               PMD_DRV_LOG(DEBUG, sc, "phy link up");
 
                vars->phy_link_up = 1;
                vars->duplex = DUPLEX_FULL;
 
                vars->phy_link_up = 1;
                vars->duplex = DUPLEX_FULL;
@@ -4436,7 +4438,7 @@ static void elink_sync_link(struct elink_params *params,
                                vars->mac_type = ELINK_MAC_TYPE_EMAC;
                }
        } else {                /* Link down */
                                vars->mac_type = ELINK_MAC_TYPE_EMAC;
                }
        } else {                /* Link down */
-               PMD_DRV_LOG(DEBUG, "phy link down");
+               PMD_DRV_LOG(DEBUG, sc, "phy link down");
 
                vars->phy_link_up = 0;
 
 
                vars->phy_link_up = 0;
 
@@ -4493,7 +4495,7 @@ void elink_link_status_update(struct elink_params *params,
        params->phy[ELINK_EXT_PHY2].media_type =
            (media_types & PORT_HW_CFG_MEDIA_TYPE_PHY2_MASK) >>
            PORT_HW_CFG_MEDIA_TYPE_PHY2_SHIFT;
        params->phy[ELINK_EXT_PHY2].media_type =
            (media_types & PORT_HW_CFG_MEDIA_TYPE_PHY2_MASK) >>
            PORT_HW_CFG_MEDIA_TYPE_PHY2_SHIFT;
-       PMD_DRV_LOG(DEBUG, "media_types = 0x%x", media_types);
+       PMD_DRV_LOG(DEBUG, sc, "media_types = 0x%x", media_types);
 
        /* Sync AEU offset */
        sync_offset = params->shmem_base +
 
        /* Sync AEU offset */
        sync_offset = params->shmem_base +
@@ -4514,9 +4516,9 @@ void elink_link_status_update(struct elink_params *params,
                vars->link_attr_sync = SHMEM2_RD(sc,
                                                 link_attr_sync[params->port]);
 
                vars->link_attr_sync = SHMEM2_RD(sc,
                                                 link_attr_sync[params->port]);
 
-       PMD_DRV_LOG(DEBUG, "link_status 0x%x  phy_link_up %x int_mask 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "link_status 0x%x  phy_link_up %x int_mask 0x%x",
                    vars->link_status, vars->phy_link_up, vars->aeu_int_mask);
                    vars->link_status, vars->phy_link_up, vars->aeu_int_mask);
-       PMD_DRV_LOG(DEBUG, "line_speed %x  duplex %x  flow_ctrl 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "line_speed %x  duplex %x  flow_ctrl 0x%x",
                    vars->line_speed, vars->duplex, vars->flow_ctrl);
 }
 
                    vars->line_speed, vars->duplex, vars->flow_ctrl);
 }
 
@@ -4577,7 +4579,7 @@ static elink_status_t elink_reset_unicore(struct elink_params *params,
        elink_cb_event_log(sc, ELINK_LOG_ID_PHY_UNINITIALIZED, params->port);   // "Warning: PHY was not initialized,"
        // " Port %d",
 
        elink_cb_event_log(sc, ELINK_LOG_ID_PHY_UNINITIALIZED, params->port);   // "Warning: PHY was not initialized,"
        // " Port %d",
 
-       PMD_DRV_LOG(DEBUG, "BUG! XGXS is still in reset!");
+       PMD_DRV_LOG(DEBUG, sc, "BUG! XGXS is still in reset!");
        return ELINK_STATUS_ERROR;
 
 }
        return ELINK_STATUS_ERROR;
 
 }
@@ -4636,7 +4638,7 @@ static void elink_set_parallel_detection(struct elink_phy *phy,
                control2 |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN;
        else
                control2 &= ~MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN;
                control2 |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN;
        else
                control2 &= ~MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN;
-       PMD_DRV_LOG(DEBUG, "phy->speed_cap_mask = 0x%x, control2 = 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "phy->speed_cap_mask = 0x%x, control2 = 0x%x",
                    phy->speed_cap_mask, control2);
        CL22_WR_OVER_CL45(sc, phy,
                          MDIO_REG_BANK_SERDES_DIGITAL,
                    phy->speed_cap_mask, control2);
        CL22_WR_OVER_CL45(sc, phy,
                          MDIO_REG_BANK_SERDES_DIGITAL,
@@ -4644,7 +4646,7 @@ static void elink_set_parallel_detection(struct elink_phy *phy,
 
        if ((phy->type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) &&
            (phy->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) {
 
        if ((phy->type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) &&
            (phy->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) {
-               PMD_DRV_LOG(DEBUG, "XGXS");
+               PMD_DRV_LOG(DEBUG, sc, "XGXS");
 
                CL22_WR_OVER_CL45(sc, phy,
                                  MDIO_REG_BANK_10G_PARALLEL_DETECT,
 
                CL22_WR_OVER_CL45(sc, phy,
                                  MDIO_REG_BANK_10G_PARALLEL_DETECT,
@@ -4797,7 +4799,7 @@ static void elink_program_serdes(struct elink_phy *phy,
                          MDIO_REG_BANK_SERDES_DIGITAL,
                          MDIO_SERDES_DIGITAL_MISC1, &reg_val);
        /* Clearing the speed value before setting the right speed */
                          MDIO_REG_BANK_SERDES_DIGITAL,
                          MDIO_SERDES_DIGITAL_MISC1, &reg_val);
        /* Clearing the speed value before setting the right speed */
-       PMD_DRV_LOG(DEBUG, "MDIO_REG_BANK_SERDES_DIGITAL = 0x%x", reg_val);
+       PMD_DRV_LOG(DEBUG, sc, "MDIO_REG_BANK_SERDES_DIGITAL = 0x%x", reg_val);
 
        reg_val &= ~(MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_MASK |
                     MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL);
 
        reg_val &= ~(MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_MASK |
                     MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL);
@@ -4865,7 +4867,7 @@ static void elink_restart_autoneg(struct elink_phy *phy,
        struct bnx2x_softc *sc = params->sc;
        uint16_t mii_control;
 
        struct bnx2x_softc *sc = params->sc;
        uint16_t mii_control;
 
-       PMD_DRV_LOG(DEBUG, "elink_restart_autoneg");
+       PMD_DRV_LOG(DEBUG, sc, "elink_restart_autoneg");
        /* Enable and restart BAM/CL37 aneg */
 
        if (enable_cl73) {
        /* Enable and restart BAM/CL37 aneg */
 
        if (enable_cl73) {
@@ -4885,7 +4887,7 @@ static void elink_restart_autoneg(struct elink_phy *phy,
                CL22_RD_OVER_CL45(sc, phy,
                                  MDIO_REG_BANK_COMBO_IEEE0,
                                  MDIO_COMBO_IEEE0_MII_CONTROL, &mii_control);
                CL22_RD_OVER_CL45(sc, phy,
                                  MDIO_REG_BANK_COMBO_IEEE0,
                                  MDIO_COMBO_IEEE0_MII_CONTROL, &mii_control);
-               PMD_DRV_LOG(DEBUG,
+               PMD_DRV_LOG(DEBUG, sc,
                            "elink_restart_autoneg mii_control before = 0x%x",
                            mii_control);
                CL22_WR_OVER_CL45(sc, phy,
                            "elink_restart_autoneg mii_control before = 0x%x",
                            mii_control);
                CL22_WR_OVER_CL45(sc, phy,
@@ -4944,7 +4946,7 @@ static void elink_initialize_sgmii_process(struct elink_phy *phy,
                        break;
                default:
                        /* Invalid speed for SGMII */
                        break;
                default:
                        /* Invalid speed for SGMII */
-                       PMD_DRV_LOG(DEBUG, "Invalid line_speed 0x%x",
+                       PMD_DRV_LOG(DEBUG, sc, "Invalid line_speed 0x%x",
                                    vars->line_speed);
                        break;
                }
                                    vars->line_speed);
                        break;
                }
@@ -4979,7 +4981,7 @@ static elink_status_t elink_direct_parallel_detect_used(struct elink_phy *phy,
                          MDIO_REG_BANK_SERDES_DIGITAL,
                          MDIO_SERDES_DIGITAL_A_1000X_STATUS2, &status2_1000x);
        if (status2_1000x & MDIO_SERDES_DIGITAL_A_1000X_STATUS2_AN_DISABLED) {
                          MDIO_REG_BANK_SERDES_DIGITAL,
                          MDIO_SERDES_DIGITAL_A_1000X_STATUS2, &status2_1000x);
        if (status2_1000x & MDIO_SERDES_DIGITAL_A_1000X_STATUS2_AN_DISABLED) {
-               PMD_DRV_LOG(DEBUG, "1G parallel detect link on port %d",
+               PMD_DRV_LOG(DEBUG, sc, "1G parallel detect link on port %d",
                            params->port);
                return ELINK_STATUS_ERROR;
        }
                            params->port);
                return ELINK_STATUS_ERROR;
        }
@@ -4989,7 +4991,7 @@ static elink_status_t elink_direct_parallel_detect_used(struct elink_phy *phy,
                          MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_STATUS, &pd_10g);
 
        if (pd_10g & MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_STATUS_PD_LINK) {
                          MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_STATUS, &pd_10g);
 
        if (pd_10g & MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_STATUS_PD_LINK) {
-               PMD_DRV_LOG(DEBUG, "10G parallel detect link on port %d",
+               PMD_DRV_LOG(DEBUG, sc, "10G parallel detect link on port %d",
                            params->port);
                return ELINK_STATUS_ERROR;
        }
                            params->port);
                return ELINK_STATUS_ERROR;
        }
@@ -5020,7 +5022,7 @@ static void elink_update_adv_fc(struct elink_phy *phy,
                                MDIO_CL73_IEEEB1_AN_ADV1_PAUSE_MASK) >> 8;
                pause_result |= (lp_pause &
                                 MDIO_CL73_IEEEB1_AN_LP_ADV1_PAUSE_MASK) >> 10;
                                MDIO_CL73_IEEEB1_AN_ADV1_PAUSE_MASK) >> 8;
                pause_result |= (lp_pause &
                                 MDIO_CL73_IEEEB1_AN_LP_ADV1_PAUSE_MASK) >> 10;
-               PMD_DRV_LOG(DEBUG, "pause_result CL73 0x%x", pause_result);
+               PMD_DRV_LOG(DEBUG, sc, "pause_result CL73 0x%x", pause_result);
        } else {
                CL22_RD_OVER_CL45(sc, phy,
                                  MDIO_REG_BANK_COMBO_IEEE0,
        } else {
                CL22_RD_OVER_CL45(sc, phy,
                                  MDIO_REG_BANK_COMBO_IEEE0,
@@ -5033,7 +5035,7 @@ static void elink_update_adv_fc(struct elink_phy *phy,
                                MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK) >> 5;
                pause_result |= (lp_pause &
                                 MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK) >> 7;
                                MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK) >> 5;
                pause_result |= (lp_pause &
                                 MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK) >> 7;
-               PMD_DRV_LOG(DEBUG, "pause_result CL37 0x%x", pause_result);
+               PMD_DRV_LOG(DEBUG, sc, "pause_result CL37 0x%x", pause_result);
        }
        elink_pause_resolve(vars, pause_result);
 
        }
        elink_pause_resolve(vars, pause_result);
 
@@ -5062,7 +5064,7 @@ static void elink_flow_ctrl_resolve(struct elink_phy *phy,
                }
                elink_update_adv_fc(phy, params, vars, gp_status);
        }
                }
                elink_update_adv_fc(phy, params, vars, gp_status);
        }
-       PMD_DRV_LOG(DEBUG, "flow_ctrl 0x%x", vars->flow_ctrl);
+       PMD_DRV_LOG(DEBUG, params->sc, "flow_ctrl 0x%x", vars->flow_ctrl);
 }
 
 static void elink_check_fallback_to_cl37(struct elink_phy *phy,
 }
 
 static void elink_check_fallback_to_cl37(struct elink_phy *phy,
@@ -5070,13 +5072,13 @@ static void elink_check_fallback_to_cl37(struct elink_phy *phy,
 {
        struct bnx2x_softc *sc = params->sc;
        uint16_t rx_status, ustat_val, cl37_fsm_received;
 {
        struct bnx2x_softc *sc = params->sc;
        uint16_t rx_status, ustat_val, cl37_fsm_received;
-       PMD_DRV_LOG(DEBUG, "elink_check_fallback_to_cl37");
+       PMD_DRV_LOG(DEBUG, sc, "elink_check_fallback_to_cl37");
        /* Step 1: Make sure signal is detected */
        CL22_RD_OVER_CL45(sc, phy,
                          MDIO_REG_BANK_RX0, MDIO_RX0_RX_STATUS, &rx_status);
        if ((rx_status & MDIO_RX0_RX_STATUS_SIGDET) !=
            (MDIO_RX0_RX_STATUS_SIGDET)) {
        /* Step 1: Make sure signal is detected */
        CL22_RD_OVER_CL45(sc, phy,
                          MDIO_REG_BANK_RX0, MDIO_RX0_RX_STATUS, &rx_status);
        if ((rx_status & MDIO_RX0_RX_STATUS_SIGDET) !=
            (MDIO_RX0_RX_STATUS_SIGDET)) {
-               PMD_DRV_LOG(DEBUG, "Signal is not detected. Restoring CL73."
+               PMD_DRV_LOG(DEBUG, sc, "Signal is not detected. Restoring CL73."
                            "rx_status(0x80b0) = 0x%x", rx_status);
                CL22_WR_OVER_CL45(sc, phy,
                                  MDIO_REG_BANK_CL73_IEEEB0,
                            "rx_status(0x80b0) = 0x%x", rx_status);
                CL22_WR_OVER_CL45(sc, phy,
                                  MDIO_REG_BANK_CL73_IEEEB0,
@@ -5093,7 +5095,7 @@ static void elink_check_fallback_to_cl37(struct elink_phy *phy,
              MDIO_CL73_USERB0_CL73_USTAT1_AN_GOOD_CHECK_BAM37)) !=
            (MDIO_CL73_USERB0_CL73_USTAT1_LINK_STATUS_CHECK |
             MDIO_CL73_USERB0_CL73_USTAT1_AN_GOOD_CHECK_BAM37)) {
              MDIO_CL73_USERB0_CL73_USTAT1_AN_GOOD_CHECK_BAM37)) !=
            (MDIO_CL73_USERB0_CL73_USTAT1_LINK_STATUS_CHECK |
             MDIO_CL73_USERB0_CL73_USTAT1_AN_GOOD_CHECK_BAM37)) {
-               PMD_DRV_LOG(DEBUG, "CL73 state-machine is not stable. "
+               PMD_DRV_LOG(DEBUG, sc, "CL73 state-machine is not stable. "
                            "ustat_val(0x8371) = 0x%x", ustat_val);
                return;
        }
                            "ustat_val(0x8371) = 0x%x", ustat_val);
                return;
        }
@@ -5108,7 +5110,7 @@ static void elink_check_fallback_to_cl37(struct elink_phy *phy,
              MDIO_REMOTE_PHY_MISC_RX_STATUS_CL37_FSM_RECEIVED_BRCM_OUI_MSG)) !=
            (MDIO_REMOTE_PHY_MISC_RX_STATUS_CL37_FSM_RECEIVED_OVER1G_MSG |
             MDIO_REMOTE_PHY_MISC_RX_STATUS_CL37_FSM_RECEIVED_BRCM_OUI_MSG)) {
              MDIO_REMOTE_PHY_MISC_RX_STATUS_CL37_FSM_RECEIVED_BRCM_OUI_MSG)) !=
            (MDIO_REMOTE_PHY_MISC_RX_STATUS_CL37_FSM_RECEIVED_OVER1G_MSG |
             MDIO_REMOTE_PHY_MISC_RX_STATUS_CL37_FSM_RECEIVED_BRCM_OUI_MSG)) {
-               PMD_DRV_LOG(DEBUG, "No CL37 FSM were received. "
+               PMD_DRV_LOG(DEBUG, sc, "No CL37 FSM were received. "
                            "misc_rx_status(0x8330) = 0x%x", cl37_fsm_received);
                return;
        }
                            "misc_rx_status(0x8330) = 0x%x", cl37_fsm_received);
                return;
        }
@@ -5124,7 +5126,7 @@ static void elink_check_fallback_to_cl37(struct elink_phy *phy,
                          MDIO_CL73_IEEEB0_CL73_AN_CONTROL, 0);
        /* Restart CL37 autoneg */
        elink_restart_autoneg(phy, params, 0);
                          MDIO_CL73_IEEEB0_CL73_AN_CONTROL, 0);
        /* Restart CL37 autoneg */
        elink_restart_autoneg(phy, params, 0);
-       PMD_DRV_LOG(DEBUG, "Disabling CL73, and restarting CL37 autoneg");
+       PMD_DRV_LOG(DEBUG, sc, "Disabling CL73, and restarting CL37 autoneg");
 }
 
 static void elink_xgxs_an_resolve(struct elink_phy *phy,
 }
 
 static void elink_xgxs_an_resolve(struct elink_phy *phy,
@@ -5148,7 +5150,7 @@ static elink_status_t elink_get_link_speed_duplex(struct elink_phy *phy,
        if (phy->req_line_speed == ELINK_SPEED_AUTO_NEG)
                vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED;
        if (is_link_up) {
        if (phy->req_line_speed == ELINK_SPEED_AUTO_NEG)
                vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED;
        if (is_link_up) {
-               PMD_DRV_LOG(DEBUG, "phy link up");
+               PMD_DRV_LOG(DEBUG, params->sc, "phy link up");
 
                vars->phy_link_up = 1;
                vars->link_status |= LINK_STATUS_LINK_UP;
 
                vars->phy_link_up = 1;
                vars->link_status |= LINK_STATUS_LINK_UP;
@@ -5189,7 +5191,7 @@ static elink_status_t elink_get_link_speed_duplex(struct elink_phy *phy,
 
                case ELINK_GP_STATUS_5G:
                case ELINK_GP_STATUS_6G:
 
                case ELINK_GP_STATUS_5G:
                case ELINK_GP_STATUS_6G:
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, params->sc,
                                    "link speed unsupported  gp_status 0x%x",
                                    speed_mask);
                        return ELINK_STATUS_ERROR;
                                    "link speed unsupported  gp_status 0x%x",
                                    speed_mask);
                        return ELINK_STATUS_ERROR;
@@ -5209,13 +5211,13 @@ static elink_status_t elink_get_link_speed_duplex(struct elink_phy *phy,
                        vars->link_status |= ELINK_LINK_20GTFD;
                        break;
                default:
                        vars->link_status |= ELINK_LINK_20GTFD;
                        break;
                default:
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, params->sc,
                                    "link speed unsupported gp_status 0x%x",
                                    speed_mask);
                        return ELINK_STATUS_ERROR;
                }
        } else {                /* link_down */
                                    "link speed unsupported gp_status 0x%x",
                                    speed_mask);
                        return ELINK_STATUS_ERROR;
                }
        } else {                /* link_down */
-               PMD_DRV_LOG(DEBUG, "phy link down");
+               PMD_DRV_LOG(DEBUG, params->sc, "phy link down");
 
                vars->phy_link_up = 0;
 
 
                vars->phy_link_up = 0;
 
@@ -5223,7 +5225,7 @@ static elink_status_t elink_get_link_speed_duplex(struct elink_phy *phy,
                vars->flow_ctrl = ELINK_FLOW_CTRL_NONE;
                vars->mac_type = ELINK_MAC_TYPE_NONE;
        }
                vars->flow_ctrl = ELINK_FLOW_CTRL_NONE;
                vars->mac_type = ELINK_MAC_TYPE_NONE;
        }
-       PMD_DRV_LOG(DEBUG, " phy_link_up %x line_speed %d",
+       PMD_DRV_LOG(DEBUG, params->sc, " phy_link_up %x line_speed %d",
                    vars->phy_link_up, vars->line_speed);
        return ELINK_STATUS_OK;
 }
                    vars->phy_link_up, vars->line_speed);
        return ELINK_STATUS_OK;
 }
@@ -5246,7 +5248,7 @@ static uint8_t elink_link_settings_status(struct elink_phy *phy,
        if (gp_status & MDIO_GP_STATUS_TOP_AN_STATUS1_LINK_STATUS)
                link_up = 1;
        speed_mask = gp_status & ELINK_GP_STATUS_SPEED_MASK;
        if (gp_status & MDIO_GP_STATUS_TOP_AN_STATUS1_LINK_STATUS)
                link_up = 1;
        speed_mask = gp_status & ELINK_GP_STATUS_SPEED_MASK;
-       PMD_DRV_LOG(DEBUG, "gp_status 0x%x, is_link_up %d, speed_mask 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "gp_status 0x%x, is_link_up %d, speed_mask 0x%x",
                    gp_status, link_up, speed_mask);
        rc = elink_get_link_speed_duplex(phy, params, vars, link_up, speed_mask,
                                         duplex);
                    gp_status, link_up, speed_mask);
        rc = elink_get_link_speed_duplex(phy, params, vars, link_up, speed_mask,
                                         duplex);
@@ -5296,7 +5298,7 @@ static uint8_t elink_link_settings_status(struct elink_phy *phy,
                            LINK_STATUS_LINK_PARTNER_10GXFD_CAPABLE;
        }
 
                            LINK_STATUS_LINK_PARTNER_10GXFD_CAPABLE;
        }
 
-       PMD_DRV_LOG(DEBUG, "duplex %x  flow_ctrl 0x%x link_status 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "duplex %x  flow_ctrl 0x%x link_status 0x%x",
                    vars->duplex, vars->flow_ctrl, vars->link_status);
        return rc;
 }
                    vars->duplex, vars->flow_ctrl, vars->link_status);
        return rc;
 }
@@ -5322,7 +5324,7 @@ static uint8_t elink_warpcore_read_status(struct elink_phy *phy,
                uint16_t temp_link_up;
                elink_cl45_read(sc, phy, MDIO_WC_DEVAD, 1, &temp_link_up);
                elink_cl45_read(sc, phy, MDIO_WC_DEVAD, 1, &link_up);
                uint16_t temp_link_up;
                elink_cl45_read(sc, phy, MDIO_WC_DEVAD, 1, &temp_link_up);
                elink_cl45_read(sc, phy, MDIO_WC_DEVAD, 1, &link_up);
-               PMD_DRV_LOG(DEBUG, "PCS RX link status = 0x%x-->0x%x",
+               PMD_DRV_LOG(DEBUG, sc, "PCS RX link status = 0x%x-->0x%x",
                            temp_link_up, link_up);
                link_up &= (1 << 2);
                if (link_up)
                            temp_link_up, link_up);
                link_up &= (1 << 2);
                if (link_up)
@@ -5330,7 +5332,7 @@ static uint8_t elink_warpcore_read_status(struct elink_phy *phy,
        } else {
                elink_cl45_read(sc, phy, MDIO_WC_DEVAD,
                                MDIO_WC_REG_GP2_STATUS_GP_2_1, &gp_status1);
        } else {
                elink_cl45_read(sc, phy, MDIO_WC_DEVAD,
                                MDIO_WC_REG_GP2_STATUS_GP_2_1, &gp_status1);
-               PMD_DRV_LOG(DEBUG, "0x81d1 = 0x%x", gp_status1);
+               PMD_DRV_LOG(DEBUG, sc, "0x81d1 = 0x%x", gp_status1);
                /* Check for either KR, 1G, or AN up. */
                link_up = ((gp_status1 >> 8) |
                           (gp_status1 >> 12) | (gp_status1)) & (1 << lane);
                /* Check for either KR, 1G, or AN up. */
                link_up = ((gp_status1 >> 8) |
                           (gp_status1 >> 12) | (gp_status1)) & (1 << lane);
@@ -5400,7 +5402,7 @@ static uint8_t elink_warpcore_read_status(struct elink_phy *phy,
                elink_cl45_read(sc, phy, MDIO_WC_DEVAD,
                                MDIO_WC_REG_GP2_STATUS_GP_2_3, &gp_speed);
        }
                elink_cl45_read(sc, phy, MDIO_WC_DEVAD,
                                MDIO_WC_REG_GP2_STATUS_GP_2_3, &gp_speed);
        }
-       PMD_DRV_LOG(DEBUG, "lane %d gp_speed 0x%x", lane, gp_speed);
+       PMD_DRV_LOG(DEBUG, sc, "lane %d gp_speed 0x%x", lane, gp_speed);
 
        if ((lane & 1) == 0)
                gp_speed <<= 8;
 
        if ((lane & 1) == 0)
                gp_speed <<= 8;
@@ -5416,7 +5418,7 @@ static uint8_t elink_warpcore_read_status(struct elink_phy *phy,
            (!(phy->flags & ELINK_FLAGS_WC_DUAL_MODE)))
                vars->rx_tx_asic_rst = MAX_KR_LINK_RETRY;
 
            (!(phy->flags & ELINK_FLAGS_WC_DUAL_MODE)))
                vars->rx_tx_asic_rst = MAX_KR_LINK_RETRY;
 
-       PMD_DRV_LOG(DEBUG, "duplex %x  flow_ctrl 0x%x link_status 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "duplex %x  flow_ctrl 0x%x link_status 0x%x",
                    vars->duplex, vars->flow_ctrl, vars->link_status);
        return rc;
 }
                    vars->duplex, vars->flow_ctrl, vars->link_status);
        return rc;
 }
@@ -5463,7 +5465,7 @@ static elink_status_t elink_emac_program(struct elink_params *params,
        uint8_t port = params->port;
        uint16_t mode = 0;
 
        uint8_t port = params->port;
        uint16_t mode = 0;
 
-       PMD_DRV_LOG(DEBUG, "setting link speed & duplex");
+       PMD_DRV_LOG(DEBUG, sc, "setting link speed & duplex");
        elink_bits_dis(sc, GRCBASE_EMAC0 + port * 0x400 +
                       EMAC_REG_EMAC_MODE,
                       (EMAC_MODE_25G_MODE |
        elink_bits_dis(sc, GRCBASE_EMAC0 + port * 0x400 +
                       EMAC_REG_EMAC_MODE,
                       (EMAC_MODE_25G_MODE |
@@ -5487,7 +5489,8 @@ static elink_status_t elink_emac_program(struct elink_params *params,
 
        default:
                /* 10G not valid for EMAC */
 
        default:
                /* 10G not valid for EMAC */
-               PMD_DRV_LOG(DEBUG, "Invalid line_speed 0x%x", vars->line_speed);
+               PMD_DRV_LOG(DEBUG, sc,
+                           "Invalid line_speed 0x%x", vars->line_speed);
                return ELINK_STATUS_ERROR;
        }
 
                return ELINK_STATUS_ERROR;
        }
 
@@ -5539,7 +5542,7 @@ static uint8_t elink_xgxs_config_init(struct elink_phy *phy,
                if (vars->line_speed != ELINK_SPEED_AUTO_NEG ||
                    (ELINK_SINGLE_MEDIA_DIRECT(params) &&
                     params->loopback_mode == ELINK_LOOPBACK_EXT)) {
                if (vars->line_speed != ELINK_SPEED_AUTO_NEG ||
                    (ELINK_SINGLE_MEDIA_DIRECT(params) &&
                     params->loopback_mode == ELINK_LOOPBACK_EXT)) {
-                       PMD_DRV_LOG(DEBUG, "not SGMII, no AN");
+                       PMD_DRV_LOG(DEBUG, params->sc, "not SGMII, no AN");
 
                        /* Disable autoneg */
                        elink_set_autoneg(phy, params, vars, 0);
 
                        /* Disable autoneg */
                        elink_set_autoneg(phy, params, vars, 0);
@@ -5548,7 +5551,7 @@ static uint8_t elink_xgxs_config_init(struct elink_phy *phy,
                        elink_program_serdes(phy, params, vars);
 
                } else {        /* AN_mode */
                        elink_program_serdes(phy, params, vars);
 
                } else {        /* AN_mode */
-                       PMD_DRV_LOG(DEBUG, "not SGMII, AN");
+                       PMD_DRV_LOG(DEBUG, params->sc, "not SGMII, AN");
 
                        /* AN enabled */
                        elink_set_brcm_cl37_advertisement(phy, params);
 
                        /* AN enabled */
                        elink_set_brcm_cl37_advertisement(phy, params);
@@ -5565,7 +5568,7 @@ static uint8_t elink_xgxs_config_init(struct elink_phy *phy,
                }
 
        } else {                /* SGMII mode */
                }
 
        } else {                /* SGMII mode */
-               PMD_DRV_LOG(DEBUG, "SGMII");
+               PMD_DRV_LOG(DEBUG, params->sc, "SGMII");
 
                elink_initialize_sgmii_process(phy, params, vars);
        }
 
                elink_initialize_sgmii_process(phy, params, vars);
        }
@@ -5634,7 +5637,7 @@ static uint16_t elink_wait_reset_complete(struct bnx2x_softc *sc,
                elink_cb_event_log(sc, ELINK_LOG_ID_PHY_UNINITIALIZED, params->port);   // "Warning: PHY was not initialized,"
        // " Port %d",
 
                elink_cb_event_log(sc, ELINK_LOG_ID_PHY_UNINITIALIZED, params->port);   // "Warning: PHY was not initialized,"
        // " Port %d",
 
-       PMD_DRV_LOG(DEBUG, "control reg 0x%x (after %d ms)", ctrl, cnt);
+       PMD_DRV_LOG(DEBUG, sc, "control reg 0x%x (after %d ms)", ctrl, cnt);
        return cnt;
 }
 
        return cnt;
 }
 
@@ -5652,35 +5655,35 @@ static void elink_link_int_enable(struct elink_params *params)
        } else if (params->switch_cfg == ELINK_SWITCH_CFG_10G) {
                mask = (ELINK_NIG_MASK_XGXS0_LINK10G |
                        ELINK_NIG_MASK_XGXS0_LINK_STATUS);
        } else if (params->switch_cfg == ELINK_SWITCH_CFG_10G) {
                mask = (ELINK_NIG_MASK_XGXS0_LINK10G |
                        ELINK_NIG_MASK_XGXS0_LINK_STATUS);
-               PMD_DRV_LOG(DEBUG, "enabled XGXS interrupt");
+               PMD_DRV_LOG(DEBUG, sc, "enabled XGXS interrupt");
                if (!(ELINK_SINGLE_MEDIA_DIRECT(params)) &&
                    params->phy[ELINK_INT_PHY].type !=
                    PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE) {
                        mask |= ELINK_NIG_MASK_MI_INT;
                if (!(ELINK_SINGLE_MEDIA_DIRECT(params)) &&
                    params->phy[ELINK_INT_PHY].type !=
                    PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE) {
                        mask |= ELINK_NIG_MASK_MI_INT;
-                       PMD_DRV_LOG(DEBUG, "enabled external phy int");
+                       PMD_DRV_LOG(DEBUG, sc, "enabled external phy int");
                }
 
        } else {                /* SerDes */
                mask = ELINK_NIG_MASK_SERDES0_LINK_STATUS;
                }
 
        } else {                /* SerDes */
                mask = ELINK_NIG_MASK_SERDES0_LINK_STATUS;
-               PMD_DRV_LOG(DEBUG, "enabled SerDes interrupt");
+               PMD_DRV_LOG(DEBUG, sc, "enabled SerDes interrupt");
                if (!(ELINK_SINGLE_MEDIA_DIRECT(params)) &&
                    params->phy[ELINK_INT_PHY].type !=
                    PORT_HW_CFG_SERDES_EXT_PHY_TYPE_NOT_CONN) {
                        mask |= ELINK_NIG_MASK_MI_INT;
                if (!(ELINK_SINGLE_MEDIA_DIRECT(params)) &&
                    params->phy[ELINK_INT_PHY].type !=
                    PORT_HW_CFG_SERDES_EXT_PHY_TYPE_NOT_CONN) {
                        mask |= ELINK_NIG_MASK_MI_INT;
-                       PMD_DRV_LOG(DEBUG, "enabled external phy int");
+                       PMD_DRV_LOG(DEBUG, sc, "enabled external phy int");
                }
        }
        elink_bits_en(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4, mask);
 
                }
        }
        elink_bits_en(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4, mask);
 
-       PMD_DRV_LOG(DEBUG, "port %x, is_xgxs %x, int_status 0x%x", port,
+       PMD_DRV_LOG(DEBUG, sc, "port %x, is_xgxs %x, int_status 0x%x", port,
                    (params->switch_cfg == ELINK_SWITCH_CFG_10G),
                    REG_RD(sc, NIG_REG_STATUS_INTERRUPT_PORT0 + port * 4));
                    (params->switch_cfg == ELINK_SWITCH_CFG_10G),
                    REG_RD(sc, NIG_REG_STATUS_INTERRUPT_PORT0 + port * 4));
-       PMD_DRV_LOG(DEBUG, " int_mask 0x%x, MI_INT %x, SERDES_LINK %x",
+       PMD_DRV_LOG(DEBUG, sc, " int_mask 0x%x, MI_INT %x, SERDES_LINK %x",
                    REG_RD(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4),
                    REG_RD(sc, NIG_REG_EMAC0_STATUS_MISC_MI_INT + port * 0x18),
                    REG_RD(sc,
                           NIG_REG_SERDES0_STATUS_LINK_STATUS + port * 0x3c));
                    REG_RD(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4),
                    REG_RD(sc, NIG_REG_EMAC0_STATUS_MISC_MI_INT + port * 0x18),
                    REG_RD(sc,
                           NIG_REG_SERDES0_STATUS_LINK_STATUS + port * 0x3c));
-       PMD_DRV_LOG(DEBUG, " 10G %x, XGXS_LINK %x",
+       PMD_DRV_LOG(DEBUG, sc, " 10G %x, XGXS_LINK %x",
                    REG_RD(sc, NIG_REG_XGXS0_STATUS_LINK10G + port * 0x68),
                    REG_RD(sc, NIG_REG_XGXS0_STATUS_LINK_STATUS + port * 0x68));
 }
                    REG_RD(sc, NIG_REG_XGXS0_STATUS_LINK10G + port * 0x68),
                    REG_RD(sc, NIG_REG_XGXS0_STATUS_LINK_STATUS + port * 0x68));
 }
@@ -5696,7 +5699,7 @@ static void elink_rearm_latch_signal(struct bnx2x_softc *sc, uint8_t port,
         */
        /* Read Latched signals */
        latch_status = REG_RD(sc, NIG_REG_LATCH_STATUS_0 + port * 8);
         */
        /* Read Latched signals */
        latch_status = REG_RD(sc, NIG_REG_LATCH_STATUS_0 + port * 8);
-       PMD_DRV_LOG(DEBUG, "latch_status = 0x%x", latch_status);
+       PMD_DRV_LOG(DEBUG, sc, "latch_status = 0x%x", latch_status);
        /* Handle only those with latched-signal=up. */
        if (exp_mi_int)
                elink_bits_en(sc,
        /* Handle only those with latched-signal=up. */
        if (exp_mi_int)
                elink_bits_en(sc,
@@ -5748,7 +5751,7 @@ static void elink_link_int_ack(struct elink_params *params,
                        } else
                                mask = ELINK_NIG_STATUS_SERDES0_LINK_STATUS;
                }
                        } else
                                mask = ELINK_NIG_STATUS_SERDES0_LINK_STATUS;
                }
-               PMD_DRV_LOG(DEBUG, "Ack link up interrupt with mask 0x%x",
+               PMD_DRV_LOG(DEBUG, sc, "Ack link up interrupt with mask 0x%x",
                            mask);
                elink_bits_en(sc,
                              NIG_REG_STATUS_INTERRUPT_PORT0 + port * 4, mask);
                            mask);
                elink_bits_en(sc,
                              NIG_REG_STATUS_INTERRUPT_PORT0 + port * 4, mask);
@@ -5811,7 +5814,7 @@ static void elink_set_xgxs_loopback(struct elink_phy *phy,
        if (phy->req_line_speed != ELINK_SPEED_1000) {
                uint32_t md_devad = 0;
 
        if (phy->req_line_speed != ELINK_SPEED_1000) {
                uint32_t md_devad = 0;
 
-               PMD_DRV_LOG(DEBUG, "XGXS 10G loopback enable");
+               PMD_DRV_LOG(DEBUG, sc, "XGXS 10G loopback enable");
 
                if (!CHIP_IS_E3(sc)) {
                        /* Change the uni_phy_addr in the nig */
 
                if (!CHIP_IS_E3(sc)) {
                        /* Change the uni_phy_addr in the nig */
@@ -5843,7 +5846,7 @@ static void elink_set_xgxs_loopback(struct elink_phy *phy,
                }
        } else {
                uint16_t mii_ctrl;
                }
        } else {
                uint16_t mii_ctrl;
-               PMD_DRV_LOG(DEBUG, "XGXS 1G loopback enable");
+               PMD_DRV_LOG(DEBUG, sc, "XGXS 1G loopback enable");
                elink_cl45_read(sc, phy, 5,
                                (MDIO_REG_BANK_COMBO_IEEE0 +
                                 (MDIO_COMBO_IEEE0_MII_CONTROL & 0xf)),
                elink_cl45_read(sc, phy, 5,
                                (MDIO_REG_BANK_COMBO_IEEE0 +
                                 (MDIO_COMBO_IEEE0_MII_CONTROL & 0xf)),
@@ -5867,8 +5870,9 @@ elink_status_t elink_set_led(struct elink_params *params,
        uint32_t tmp;
        uint32_t emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
        struct bnx2x_softc *sc = params->sc;
        uint32_t tmp;
        uint32_t emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
        struct bnx2x_softc *sc = params->sc;
-       PMD_DRV_LOG(DEBUG, "elink_set_led: port %x, mode %d", port, mode);
-       PMD_DRV_LOG(DEBUG, "speed 0x%x, hw_led_mode 0x%x", speed, hw_led_mode);
+       PMD_DRV_LOG(DEBUG, sc, "elink_set_led: port %x, mode %d", port, mode);
+       PMD_DRV_LOG(DEBUG, sc,
+                   "speed 0x%x, hw_led_mode 0x%x", speed, hw_led_mode);
        /* In case */
        for (phy_idx = ELINK_EXT_PHY1; phy_idx < ELINK_MAX_PHYS; phy_idx++) {
                if (params->phy[phy_idx].set_link_led) {
        /* In case */
        for (phy_idx = ELINK_EXT_PHY1; phy_idx < ELINK_MAX_PHYS; phy_idx++) {
                if (params->phy[phy_idx].set_link_led) {
@@ -5987,7 +5991,8 @@ elink_status_t elink_set_led(struct elink_params *params,
 
        default:
                rc = ELINK_STATUS_ERROR;
 
        default:
                rc = ELINK_STATUS_ERROR;
-               PMD_DRV_LOG(DEBUG, "elink_set_led: Invalid led mode %d", mode);
+               PMD_DRV_LOG(DEBUG, sc,
+                           "elink_set_led: Invalid led mode %d", mode);
                break;
        }
        return rc;
                break;
        }
        return rc;
@@ -6054,7 +6059,7 @@ static elink_status_t elink_link_initialize(struct elink_params *params,
                        if (phy_index == ELINK_EXT_PHY2 &&
                            (elink_phy_selection(params) ==
                             PORT_HW_CFG_PHY_SELECTION_FIRST_PHY)) {
                        if (phy_index == ELINK_EXT_PHY2 &&
                            (elink_phy_selection(params) ==
                             PORT_HW_CFG_PHY_SELECTION_FIRST_PHY)) {
-                               PMD_DRV_LOG(DEBUG,
+                               PMD_DRV_LOG(DEBUG, sc,
                                            "Not initializing second phy");
                                continue;
                        }
                                            "Not initializing second phy");
                                continue;
                        }
@@ -6095,7 +6100,7 @@ static void elink_common_ext_link_reset(__rte_unused struct elink_phy *phy,
                            MISC_REGISTERS_GPIO_OUTPUT_LOW, gpio_port);
        elink_cb_gpio_write(sc, MISC_REGISTERS_GPIO_2,
                            MISC_REGISTERS_GPIO_OUTPUT_LOW, gpio_port);
                            MISC_REGISTERS_GPIO_OUTPUT_LOW, gpio_port);
        elink_cb_gpio_write(sc, MISC_REGISTERS_GPIO_2,
                            MISC_REGISTERS_GPIO_OUTPUT_LOW, gpio_port);
-       PMD_DRV_LOG(DEBUG, "reset external PHY");
+       PMD_DRV_LOG(DEBUG, sc, "reset external PHY");
 }
 
 static elink_status_t elink_update_link_down(struct elink_params *params,
 }
 
 static elink_status_t elink_update_link_down(struct elink_params *params,
@@ -6104,7 +6109,7 @@ static elink_status_t elink_update_link_down(struct elink_params *params,
        struct bnx2x_softc *sc = params->sc;
        uint8_t port = params->port;
 
        struct bnx2x_softc *sc = params->sc;
        uint8_t port = params->port;
 
-       PMD_DRV_LOG(DEBUG, "Port %x: Link is down", port);
+       PMD_DRV_LOG(DEBUG, sc, "Port %x: Link is down", port);
        elink_set_led(params, vars, ELINK_LED_MODE_OFF, 0);
        vars->phy_flags &= ~PHY_PHYSICAL_LINK_FLAG;
        /* Indicate no mac active */
        elink_set_led(params, vars, ELINK_LED_MODE_OFF, 0);
        vars->phy_flags &= ~PHY_PHYSICAL_LINK_FLAG;
        /* Indicate no mac active */
@@ -6165,7 +6170,7 @@ static elink_status_t elink_update_link_up(struct elink_params *params,
                if (link_10g) {
                        if (elink_xmac_enable(params, vars, 0) ==
                            ELINK_STATUS_NO_LINK) {
                if (link_10g) {
                        if (elink_xmac_enable(params, vars, 0) ==
                            ELINK_STATUS_NO_LINK) {
-                               PMD_DRV_LOG(DEBUG, "Found errors on XMAC");
+                               PMD_DRV_LOG(DEBUG, sc, "Found errors on XMAC");
                                vars->link_up = 0;
                                vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG;
                                vars->link_status &= ~LINK_STATUS_LINK_UP;
                                vars->link_up = 0;
                                vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG;
                                vars->link_status &= ~LINK_STATUS_LINK_UP;
@@ -6177,7 +6182,7 @@ static elink_status_t elink_update_link_up(struct elink_params *params,
 
                if ((vars->eee_status & SHMEM_EEE_ACTIVE_BIT) &&
                    (vars->eee_status & SHMEM_EEE_LPI_REQUESTED_BIT)) {
 
                if ((vars->eee_status & SHMEM_EEE_ACTIVE_BIT) &&
                    (vars->eee_status & SHMEM_EEE_LPI_REQUESTED_BIT)) {
-                       PMD_DRV_LOG(DEBUG, "Enabling LPI assertion");
+                       PMD_DRV_LOG(DEBUG, sc, "Enabling LPI assertion");
                        REG_WR(sc, MISC_REG_CPMU_LP_FW_ENABLE_P0 +
                               (params->port << 2), 1);
                        REG_WR(sc, MISC_REG_CPMU_LP_DR_ENABLE, 1);
                        REG_WR(sc, MISC_REG_CPMU_LP_FW_ENABLE_P0 +
                               (params->port << 2), 1);
                        REG_WR(sc, MISC_REG_CPMU_LP_DR_ENABLE, 1);
@@ -6189,7 +6194,7 @@ static elink_status_t elink_update_link_up(struct elink_params *params,
                if (link_10g) {
                        if (elink_bmac_enable(params, vars, 0, 1) ==
                            ELINK_STATUS_NO_LINK) {
                if (link_10g) {
                        if (elink_bmac_enable(params, vars, 0, 1) ==
                            ELINK_STATUS_NO_LINK) {
-                               PMD_DRV_LOG(DEBUG, "Found errors on BMAC");
+                               PMD_DRV_LOG(DEBUG, sc, "Found errors on BMAC");
                                vars->link_up = 0;
                                vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG;
                                vars->link_status &= ~LINK_STATUS_LINK_UP;
                                vars->link_up = 0;
                                vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG;
                                vars->link_status &= ~LINK_STATUS_LINK_UP;
@@ -6274,19 +6279,19 @@ elink_status_t elink_link_update(struct elink_params * params,
        if (USES_WARPCORE(sc))
                elink_set_aer_mmd(params, &params->phy[ELINK_INT_PHY]);
 
        if (USES_WARPCORE(sc))
                elink_set_aer_mmd(params, &params->phy[ELINK_INT_PHY]);
 
-       PMD_DRV_LOG(DEBUG, "port %x, XGXS?%x, int_status 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "port %x, XGXS?%x, int_status 0x%x",
                    port, (vars->phy_flags & PHY_XGXS_FLAG),
                    REG_RD(sc, NIG_REG_STATUS_INTERRUPT_PORT0 + port * 4));
 
        is_mi_int = (uint8_t) (REG_RD(sc, NIG_REG_EMAC0_STATUS_MISC_MI_INT +
                                      port * 0x18) > 0);
                    port, (vars->phy_flags & PHY_XGXS_FLAG),
                    REG_RD(sc, NIG_REG_STATUS_INTERRUPT_PORT0 + port * 4));
 
        is_mi_int = (uint8_t) (REG_RD(sc, NIG_REG_EMAC0_STATUS_MISC_MI_INT +
                                      port * 0x18) > 0);
-       PMD_DRV_LOG(DEBUG, "int_mask 0x%x MI_INT %x, SERDES_LINK %x",
+       PMD_DRV_LOG(DEBUG, sc, "int_mask 0x%x MI_INT %x, SERDES_LINK %x",
                    REG_RD(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4),
                    is_mi_int,
                    REG_RD(sc,
                           NIG_REG_SERDES0_STATUS_LINK_STATUS + port * 0x3c));
 
                    REG_RD(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4),
                    is_mi_int,
                    REG_RD(sc,
                           NIG_REG_SERDES0_STATUS_LINK_STATUS + port * 0x3c));
 
-       PMD_DRV_LOG(DEBUG, " 10G %x, XGXS_LINK %x",
+       PMD_DRV_LOG(DEBUG, sc, " 10G %x, XGXS_LINK %x",
                    REG_RD(sc, NIG_REG_XGXS0_STATUS_LINK10G + port * 0x68),
                    REG_RD(sc, NIG_REG_XGXS0_STATUS_LINK_STATUS + port * 0x68));
 
                    REG_RD(sc, NIG_REG_XGXS0_STATUS_LINK10G + port * 0x68),
                    REG_RD(sc, NIG_REG_XGXS0_STATUS_LINK_STATUS + port * 0x68));
 
@@ -6310,10 +6315,10 @@ elink_status_t elink_link_update(struct elink_params * params,
                cur_link_up = phy->read_status(phy, params,
                                               &phy_vars[phy_index]);
                if (cur_link_up) {
                cur_link_up = phy->read_status(phy, params,
                                               &phy_vars[phy_index]);
                if (cur_link_up) {
-                       PMD_DRV_LOG(DEBUG, "phy in index %d link is up",
+                       PMD_DRV_LOG(DEBUG, sc, "phy in index %d link is up",
                                    phy_index);
                } else {
                                    phy_index);
                } else {
-                       PMD_DRV_LOG(DEBUG, "phy in index %d link is down",
+                       PMD_DRV_LOG(DEBUG, sc, "phy in index %d link is down",
                                    phy_index);
                        continue;
                }
                                    phy_index);
                        continue;
                }
@@ -6346,7 +6351,7 @@ elink_status_t elink_link_update(struct elink_params * params,
                                 * to link up by itself (using configuration)
                                 * - DEFAULT should be overriden during initialiazation
                                 */
                                 * to link up by itself (using configuration)
                                 * - DEFAULT should be overriden during initialiazation
                                 */
-                               PMD_DRV_LOG(DEBUG, "Invalid link indication"
+                               PMD_DRV_LOG(DEBUG, sc, "Invalid link indication"
                                            "mpc=0x%x. DISABLING LINK !!!",
                                            params->multi_phy_config);
                                ext_phy_link_up = 0;
                                            "mpc=0x%x. DISABLING LINK !!!",
                                            params->multi_phy_config);
                                ext_phy_link_up = 0;
@@ -6384,7 +6389,7 @@ elink_status_t elink_link_update(struct elink_params * params,
                 */
                if (active_external_phy == ELINK_EXT_PHY1) {
                        if (params->phy[ELINK_EXT_PHY2].phy_specific_func) {
                 */
                if (active_external_phy == ELINK_EXT_PHY1) {
                        if (params->phy[ELINK_EXT_PHY2].phy_specific_func) {
-                               PMD_DRV_LOG(DEBUG, "Disabling TX on EXT_PHY2");
+                               PMD_DRV_LOG(DEBUG, sc, "Disabling TX on EXT_PHY2");
                                params->phy[ELINK_EXT_PHY2].
                                    phy_specific_func(&params->
                                                      phy[ELINK_EXT_PHY2],
                                params->phy[ELINK_EXT_PHY2].
                                    phy_specific_func(&params->
                                                      phy[ELINK_EXT_PHY2],
@@ -6402,7 +6407,7 @@ elink_status_t elink_link_update(struct elink_params * params,
 
                vars->eee_status = phy_vars[active_external_phy].eee_status;
 
 
                vars->eee_status = phy_vars[active_external_phy].eee_status;
 
-               PMD_DRV_LOG(DEBUG, "Active external phy selected: %x",
+               PMD_DRV_LOG(DEBUG, sc, "Active external phy selected: %x",
                            active_external_phy);
        }
 
                            active_external_phy);
        }
 
@@ -6416,7 +6421,7 @@ elink_status_t elink_link_update(struct elink_params * params,
                        break;
                }
        }
                        break;
                }
        }
-       PMD_DRV_LOG(DEBUG, "vars->flow_ctrl = 0x%x, vars->link_status = 0x%x,"
+       PMD_DRV_LOG(DEBUG, sc, "vars->flow_ctrl = 0x%x, vars->link_status = 0x%x,"
                    " ext_phy_line_speed = %d", vars->flow_ctrl,
                    vars->link_status, ext_phy_line_speed);
        /* Upon link speed change set the NIG into drain mode. Comes to
                    " ext_phy_line_speed = %d", vars->flow_ctrl,
                    vars->link_status, ext_phy_line_speed);
        /* Upon link speed change set the NIG into drain mode. Comes to
@@ -6427,7 +6432,7 @@ elink_status_t elink_link_update(struct elink_params * params,
        if (vars->phy_link_up) {
                if (!(ELINK_SINGLE_MEDIA_DIRECT(params)) && ext_phy_link_up &&
                    (ext_phy_line_speed != vars->line_speed)) {
        if (vars->phy_link_up) {
                if (!(ELINK_SINGLE_MEDIA_DIRECT(params)) && ext_phy_link_up &&
                    (ext_phy_line_speed != vars->line_speed)) {
-                       PMD_DRV_LOG(DEBUG, "Internal link speed %d is"
+                       PMD_DRV_LOG(DEBUG, sc, "Internal link speed %d is"
                                    " different than the external"
                                    " link speed %d", vars->line_speed,
                                    ext_phy_line_speed);
                                    " different than the external"
                                    " link speed %d", vars->line_speed,
                                    ext_phy_line_speed);
@@ -6453,7 +6458,7 @@ elink_status_t elink_link_update(struct elink_params * params,
         * initialize it
         */
        if (!(ELINK_SINGLE_MEDIA_DIRECT(params))) {
         * initialize it
         */
        if (!(ELINK_SINGLE_MEDIA_DIRECT(params))) {
-               PMD_DRV_LOG(DEBUG, "ext_phy_link_up = %d, int_link_up = %d,"
+               PMD_DRV_LOG(DEBUG, sc, "ext_phy_link_up = %d, int_link_up = %d,"
                            " init_preceding = %d", ext_phy_link_up,
                            vars->phy_link_up,
                            params->phy[ELINK_EXT_PHY1].flags &
                            " init_preceding = %d", ext_phy_link_up,
                            vars->phy_link_up,
                            params->phy[ELINK_EXT_PHY1].flags &
@@ -6518,7 +6523,7 @@ static void elink_save_spirom_version(struct bnx2x_softc *sc,
                                      __rte_unused uint8_t port,
                                      uint32_t spirom_ver, uint32_t ver_addr)
 {
                                      __rte_unused uint8_t port,
                                      uint32_t spirom_ver, uint32_t ver_addr)
 {
-       PMD_DRV_LOG(DEBUG, "FW version 0x%x:0x%x for port %d",
+       PMD_DRV_LOG(DEBUG, sc, "FW version 0x%x:0x%x for port %d",
                    (uint16_t) (spirom_ver >> 16), (uint16_t) spirom_ver, port);
 
        if (ver_addr)
                    (uint16_t) (spirom_ver >> 16), (uint16_t) spirom_ver, port);
 
        if (ver_addr)
@@ -6584,7 +6589,7 @@ static void elink_8073_resolve_fc(struct elink_phy *phy,
                                 MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) >> 7;
 
                elink_pause_resolve(vars, pause_result);
                                 MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) >> 7;
 
                elink_pause_resolve(vars, pause_result);
-               PMD_DRV_LOG(DEBUG, "Ext PHY CL37 pause result 0x%x",
+               PMD_DRV_LOG(DEBUG, sc, "Ext PHY CL37 pause result 0x%x",
                            pause_result);
        }
 }
                            pause_result);
        }
 }
@@ -6628,7 +6633,7 @@ static elink_status_t elink_8073_8727_external_rom_boot(struct bnx2x_softc *sc,
        do {
                count++;
                if (count > 300) {
        do {
                count++;
                if (count > 300) {
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "elink_8073_8727_external_rom_boot port %x:"
                                    "Download failed. fw version = 0x%x",
                                    port, fw_ver1);
                                    "elink_8073_8727_external_rom_boot port %x:"
                                    "Download failed. fw version = 0x%x",
                                    port, fw_ver1);
@@ -6653,7 +6658,7 @@ static elink_status_t elink_8073_8727_external_rom_boot(struct bnx2x_softc *sc,
                         MDIO_PMA_DEVAD, MDIO_PMA_REG_MISC_CTRL1, 0x0000);
        elink_save_bnx2x_spirom_ver(sc, phy, port);
 
                         MDIO_PMA_DEVAD, MDIO_PMA_REG_MISC_CTRL1, 0x0000);
        elink_save_bnx2x_spirom_ver(sc, phy, port);
 
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
                    "elink_8073_8727_external_rom_boot port %x:"
                    "Download complete. fw version = 0x%x", port, fw_ver1);
 
                    "elink_8073_8727_external_rom_boot port %x:"
                    "Download complete. fw version = 0x%x", port, fw_ver1);
 
@@ -6714,10 +6719,10 @@ static elink_status_t elink_8073_xaui_wa(struct bnx2x_softc *sc,
                 * these bits indicate 2.5G or 1G link up).
                 */
                if (!(val & (1 << 14)) || !(val & (1 << 13))) {
                 * these bits indicate 2.5G or 1G link up).
                 */
                if (!(val & (1 << 14)) || !(val & (1 << 13))) {
-                       PMD_DRV_LOG(DEBUG, "XAUI work-around not required");
+                       PMD_DRV_LOG(DEBUG, sc, "XAUI work-around not required");
                        return ELINK_STATUS_OK;
                } else if (!(val & (1 << 15))) {
                        return ELINK_STATUS_OK;
                } else if (!(val & (1 << 15))) {
-                       PMD_DRV_LOG(DEBUG, "bit 15 went off");
+                       PMD_DRV_LOG(DEBUG, sc, "bit 15 went off");
                        /* If bit 15 is 0, then poll Dev1, Reg $C841 until it's
                         * MSB (bit15) goes to 1 (indicating that the XAUI
                         * workaround has completed), then continue on with
                        /* If bit 15 is 0, then poll Dev1, Reg $C841 until it's
                         * MSB (bit15) goes to 1 (indicating that the XAUI
                         * workaround has completed), then continue on with
@@ -6729,7 +6734,7 @@ static elink_status_t elink_8073_xaui_wa(struct bnx2x_softc *sc,
                                                MDIO_PMA_REG_8073_XAUI_WA,
                                                &val);
                                if (val & (1 << 15)) {
                                                MDIO_PMA_REG_8073_XAUI_WA,
                                                &val);
                                if (val & (1 << 15)) {
-                                       PMD_DRV_LOG(DEBUG,
+                                       PMD_DRV_LOG(DEBUG, sc,
                                                    "XAUI workaround has completed");
                                        return ELINK_STATUS_OK;
                                }
                                                    "XAUI workaround has completed");
                                        return ELINK_STATUS_OK;
                                }
@@ -6739,7 +6744,7 @@ static elink_status_t elink_8073_xaui_wa(struct bnx2x_softc *sc,
                }
                DELAY(1000 * 3);
        }
                }
                DELAY(1000 * 3);
        }
-       PMD_DRV_LOG(DEBUG, "Warning: XAUI work-around timeout !!!");
+       PMD_DRV_LOG(DEBUG, sc, "Warning: XAUI work-around timeout !!!");
        return ELINK_STATUS_ERROR;
 }
 
        return ELINK_STATUS_ERROR;
 }
 
@@ -6781,7 +6786,7 @@ static void elink_8073_set_pause_cl37(struct elink_params *params,
            MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) {
                cl37_val |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH;
        }
            MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) {
                cl37_val |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH;
        }
-       PMD_DRV_LOG(DEBUG, "Ext phy AN advertize cl37 0x%x", cl37_val);
+       PMD_DRV_LOG(DEBUG, sc, "Ext phy AN advertize cl37 0x%x", cl37_val);
 
        elink_cl45_write(sc, phy,
                         MDIO_AN_DEVAD, MDIO_AN_REG_CL37_FC_LD, cl37_val);
 
        elink_cl45_write(sc, phy,
                         MDIO_AN_DEVAD, MDIO_AN_REG_CL37_FC_LD, cl37_val);
@@ -6812,7 +6817,7 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
        struct bnx2x_softc *sc = params->sc;
        uint16_t val = 0, tmp1;
        uint8_t gpio_port;
        struct bnx2x_softc *sc = params->sc;
        uint16_t val = 0, tmp1;
        uint8_t gpio_port;
-       PMD_DRV_LOG(DEBUG, "Init 8073");
+       PMD_DRV_LOG(DEBUG, sc, "Init 8073");
 
        if (CHIP_IS_E2(sc))
                gpio_port = SC_PATH(sc);
 
        if (CHIP_IS_E2(sc))
                gpio_port = SC_PATH(sc);
@@ -6833,12 +6838,12 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXSTAT, &tmp1);
 
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXSTAT, &tmp1);
 
-       PMD_DRV_LOG(DEBUG, "Before rom RX_ALARM(port1): 0x%x", tmp1);
+       PMD_DRV_LOG(DEBUG, sc, "Before rom RX_ALARM(port1): 0x%x", tmp1);
 
        /* Swap polarity if required - Must be done only in non-1G mode */
        if (params->lane_config & PORT_HW_CFG_SWAP_PHY_POLARITY_ENABLED) {
                /* Configure the 8073 to swap _P and _N of the KR lines */
 
        /* Swap polarity if required - Must be done only in non-1G mode */
        if (params->lane_config & PORT_HW_CFG_SWAP_PHY_POLARITY_ENABLED) {
                /* Configure the 8073 to swap _P and _N of the KR lines */
-               PMD_DRV_LOG(DEBUG, "Swapping polarity for the 8073");
+               PMD_DRV_LOG(DEBUG, sc, "Swapping polarity for the 8073");
                /* 10G Rx/Tx and 1G Tx signal polarity swap */
                elink_cl45_read(sc, phy,
                                MDIO_PMA_DEVAD,
                /* 10G Rx/Tx and 1G Tx signal polarity swap */
                elink_cl45_read(sc, phy,
                                MDIO_PMA_DEVAD,
@@ -6860,11 +6865,11 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
                                MDIO_AN_DEVAD, MDIO_AN_REG_8073_BAM, &val);
                elink_cl45_write(sc, phy,
                                 MDIO_AN_DEVAD, MDIO_AN_REG_8073_BAM, val | 1);
                                MDIO_AN_DEVAD, MDIO_AN_REG_8073_BAM, &val);
                elink_cl45_write(sc, phy,
                                 MDIO_AN_DEVAD, MDIO_AN_REG_8073_BAM, val | 1);
-               PMD_DRV_LOG(DEBUG, "Enable CL37 BAM on KR");
+               PMD_DRV_LOG(DEBUG, sc, "Enable CL37 BAM on KR");
        }
        if (params->loopback_mode == ELINK_LOOPBACK_EXT) {
                elink_807x_force_10G(sc, phy);
        }
        if (params->loopback_mode == ELINK_LOOPBACK_EXT) {
                elink_807x_force_10G(sc, phy);
-               PMD_DRV_LOG(DEBUG, "Forced speed 10G on 807X");
+               PMD_DRV_LOG(DEBUG, sc, "Forced speed 10G on 807X");
                return ELINK_STATUS_OK;
        } else {
                elink_cl45_write(sc, phy,
                return ELINK_STATUS_OK;
        } else {
                elink_cl45_write(sc, phy,
@@ -6890,7 +6895,7 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
                    (PORT_HW_CFG_SPEED_CAPABILITY_D0_1G |
                     PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G))
                        val |= (1 << 5);
                    (PORT_HW_CFG_SPEED_CAPABILITY_D0_1G |
                     PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G))
                        val |= (1 << 5);
-               PMD_DRV_LOG(DEBUG, "807x autoneg val = 0x%x", val);
+               PMD_DRV_LOG(DEBUG, sc, "807x autoneg val = 0x%x", val);
        }
 
        elink_cl45_write(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_ADV, val);
        }
 
        elink_cl45_write(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_ADV, val);
@@ -6904,13 +6909,13 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
                elink_cl45_read(sc, phy,
                                MDIO_PMA_DEVAD, MDIO_PMA_REG_8073_CHIP_REV,
                                &phy_ver);
                elink_cl45_read(sc, phy,
                                MDIO_PMA_DEVAD, MDIO_PMA_REG_8073_CHIP_REV,
                                &phy_ver);
-               PMD_DRV_LOG(DEBUG, "Add 2.5G");
+               PMD_DRV_LOG(DEBUG, sc, "Add 2.5G");
                if (phy_ver > 0)
                        tmp1 |= 1;
                else
                        tmp1 &= 0xfffe;
        } else {
                if (phy_ver > 0)
                        tmp1 |= 1;
                else
                        tmp1 &= 0xfffe;
        } else {
-               PMD_DRV_LOG(DEBUG, "Disable 2.5G");
+               PMD_DRV_LOG(DEBUG, sc, "Disable 2.5G");
                tmp1 &= 0xfffe;
        }
 
                tmp1 &= 0xfffe;
        }
 
@@ -6944,7 +6949,7 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
        /* Restart autoneg */
        DELAY(1000 * 500);
        elink_cl45_write(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_CTRL, 0x1200);
        /* Restart autoneg */
        DELAY(1000 * 500);
        elink_cl45_write(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_CTRL, 0x1200);
-       PMD_DRV_LOG(DEBUG, "807x Autoneg Restart: Advertise 1G=%x, 10G=%x",
+       PMD_DRV_LOG(DEBUG, sc, "807x Autoneg Restart: Advertise 1G=%x, 10G=%x",
                    ((val & (1 << 5)) > 0), ((val & (1 << 7)) > 0));
        return ELINK_STATUS_OK;
 }
                    ((val & (1 << 5)) > 0), ((val & (1 << 7)) > 0));
        return ELINK_STATUS_OK;
 }
@@ -6961,12 +6966,12 @@ static uint8_t elink_8073_read_status(struct elink_phy *phy,
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val1);
 
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val1);
 
-       PMD_DRV_LOG(DEBUG, "8703 LASI status 0x%x", val1);
+       PMD_DRV_LOG(DEBUG, sc, "8703 LASI status 0x%x", val1);
 
        /* Clear the interrupt LASI status register */
        elink_cl45_read(sc, phy, MDIO_PCS_DEVAD, MDIO_PCS_REG_STATUS, &val2);
        elink_cl45_read(sc, phy, MDIO_PCS_DEVAD, MDIO_PCS_REG_STATUS, &val1);
 
        /* Clear the interrupt LASI status register */
        elink_cl45_read(sc, phy, MDIO_PCS_DEVAD, MDIO_PCS_REG_STATUS, &val2);
        elink_cl45_read(sc, phy, MDIO_PCS_DEVAD, MDIO_PCS_REG_STATUS, &val1);
-       PMD_DRV_LOG(DEBUG, "807x PCS status 0x%x->0x%x", val2, val1);
+       PMD_DRV_LOG(DEBUG, sc, "807x PCS status 0x%x->0x%x", val2, val1);
        /* Clear MSG-OUT */
        elink_cl45_read(sc, phy,
                        MDIO_PMA_DEVAD, MDIO_PMA_REG_M8051_MSGOUT_REG, &val1);
        /* Clear MSG-OUT */
        elink_cl45_read(sc, phy,
                        MDIO_PMA_DEVAD, MDIO_PMA_REG_M8051_MSGOUT_REG, &val1);
@@ -6974,16 +6979,16 @@ static uint8_t elink_8073_read_status(struct elink_phy *phy,
        /* Check the LASI */
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXSTAT, &val2);
 
        /* Check the LASI */
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXSTAT, &val2);
 
-       PMD_DRV_LOG(DEBUG, "KR 0x9003 0x%x", val2);
+       PMD_DRV_LOG(DEBUG, sc, "KR 0x9003 0x%x", val2);
 
        /* Check the link status */
        elink_cl45_read(sc, phy, MDIO_PCS_DEVAD, MDIO_PCS_REG_STATUS, &val2);
 
        /* Check the link status */
        elink_cl45_read(sc, phy, MDIO_PCS_DEVAD, MDIO_PCS_REG_STATUS, &val2);
-       PMD_DRV_LOG(DEBUG, "KR PCS status 0x%x", val2);
+       PMD_DRV_LOG(DEBUG, sc, "KR PCS status 0x%x", val2);
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val2);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val1);
        link_up = ((val1 & 4) == 4);
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val2);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val1);
        link_up = ((val1 & 4) == 4);
-       PMD_DRV_LOG(DEBUG, "PMA_REG_STATUS=0x%x", val1);
+       PMD_DRV_LOG(DEBUG, sc, "PMA_REG_STATUS=0x%x", val1);
 
        if (link_up && ((phy->req_line_speed != ELINK_SPEED_10000))) {
                if (elink_8073_xaui_wa(sc, phy) != 0)
 
        if (link_up && ((phy->req_line_speed != ELINK_SPEED_10000))) {
                if (elink_8073_xaui_wa(sc, phy) != 0)
@@ -6997,7 +7002,7 @@ static uint8_t elink_8073_read_status(struct elink_phy *phy,
        /* Check the link status on 1.1.2 */
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val2);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val1);
        /* Check the link status on 1.1.2 */
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val2);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val1);
-       PMD_DRV_LOG(DEBUG, "KR PMA status 0x%x->0x%x,"
+       PMD_DRV_LOG(DEBUG, sc, "KR PMA status 0x%x->0x%x,"
                    "an_link_status=0x%x", val2, val1, an1000_status);
 
        link_up = (((val1 & 4) == 4) || (an1000_status & (1 << 1)));
                    "an_link_status=0x%x", val2, val1, an1000_status);
 
        link_up = (((val1 & 4) == 4) || (an1000_status & (1 << 1)));
@@ -7023,21 +7028,21 @@ static uint8_t elink_8073_read_status(struct elink_phy *phy,
        if ((link_status & (1 << 2)) && (!(link_status & (1 << 15)))) {
                link_up = 1;
                vars->line_speed = ELINK_SPEED_10000;
        if ((link_status & (1 << 2)) && (!(link_status & (1 << 15)))) {
                link_up = 1;
                vars->line_speed = ELINK_SPEED_10000;
-               PMD_DRV_LOG(DEBUG, "port %x: External link up in 10G",
+               PMD_DRV_LOG(DEBUG, sc, "port %x: External link up in 10G",
                            params->port);
        } else if ((link_status & (1 << 1)) && (!(link_status & (1 << 14)))) {
                link_up = 1;
                vars->line_speed = ELINK_SPEED_2500;
                            params->port);
        } else if ((link_status & (1 << 1)) && (!(link_status & (1 << 14)))) {
                link_up = 1;
                vars->line_speed = ELINK_SPEED_2500;
-               PMD_DRV_LOG(DEBUG, "port %x: External link up in 2.5G",
+               PMD_DRV_LOG(DEBUG, sc, "port %x: External link up in 2.5G",
                            params->port);
        } else if ((link_status & (1 << 0)) && (!(link_status & (1 << 13)))) {
                link_up = 1;
                vars->line_speed = ELINK_SPEED_1000;
                            params->port);
        } else if ((link_status & (1 << 0)) && (!(link_status & (1 << 13)))) {
                link_up = 1;
                vars->line_speed = ELINK_SPEED_1000;
-               PMD_DRV_LOG(DEBUG, "port %x: External link up in 1G",
+               PMD_DRV_LOG(DEBUG, sc, "port %x: External link up in 1G",
                            params->port);
        } else {
                link_up = 0;
                            params->port);
        } else {
                link_up = 0;
-               PMD_DRV_LOG(DEBUG, "port %x: External link is down",
+               PMD_DRV_LOG(DEBUG, sc, "port %x: External link is down",
                            params->port);
        }
 
                            params->port);
        }
 
@@ -7052,7 +7057,7 @@ static uint8_t elink_8073_read_status(struct elink_phy *phy,
                         * when it`s in 10G mode.
                         */
                        if (vars->line_speed == ELINK_SPEED_1000) {
                         * when it`s in 10G mode.
                         */
                        if (vars->line_speed == ELINK_SPEED_1000) {
-                               PMD_DRV_LOG(DEBUG, "Swapping 1G polarity for"
+                               PMD_DRV_LOG(DEBUG, sc, "Swapping 1G polarity for"
                                            "the 8073");
                                val1 |= (1 << 3);
                        } else
                                            "the 8073");
                                val1 |= (1 << 3);
                        } else
@@ -7091,7 +7096,7 @@ static void elink_8073_link_reset(__rte_unused struct elink_phy *phy,
                gpio_port = SC_PATH(sc);
        else
                gpio_port = params->port;
                gpio_port = SC_PATH(sc);
        else
                gpio_port = params->port;
-       PMD_DRV_LOG(DEBUG, "Setting 8073 port %d into low power mode",
+       PMD_DRV_LOG(DEBUG, sc, "Setting 8073 port %d into low power mode",
                    gpio_port);
        elink_cb_gpio_write(sc, MISC_REGISTERS_GPIO_2,
                            MISC_REGISTERS_GPIO_OUTPUT_LOW, gpio_port);
                    gpio_port);
        elink_cb_gpio_write(sc, MISC_REGISTERS_GPIO_2,
                            MISC_REGISTERS_GPIO_OUTPUT_LOW, gpio_port);
@@ -7106,7 +7111,7 @@ static uint8_t elink_8705_config_init(struct elink_phy *phy,
                                             *vars)
 {
        struct bnx2x_softc *sc = params->sc;
                                             *vars)
 {
        struct bnx2x_softc *sc = params->sc;
-       PMD_DRV_LOG(DEBUG, "init 8705");
+       PMD_DRV_LOG(DEBUG, sc, "init 8705");
        /* Restore normal power mode */
        elink_cb_gpio_write(sc, MISC_REGISTERS_GPIO_2,
                            MISC_REGISTERS_GPIO_OUTPUT_HIGH, params->port);
        /* Restore normal power mode */
        elink_cb_gpio_write(sc, MISC_REGISTERS_GPIO_2,
                            MISC_REGISTERS_GPIO_OUTPUT_HIGH, params->port);
@@ -7134,21 +7139,21 @@ static uint8_t elink_8705_read_status(struct elink_phy *phy,
        uint8_t link_up = 0;
        uint16_t val1, rx_sd;
        struct bnx2x_softc *sc = params->sc;
        uint8_t link_up = 0;
        uint16_t val1, rx_sd;
        struct bnx2x_softc *sc = params->sc;
-       PMD_DRV_LOG(DEBUG, "read status 8705");
+       PMD_DRV_LOG(DEBUG, sc, "read status 8705");
        elink_cl45_read(sc, phy,
                        MDIO_WIS_DEVAD, MDIO_WIS_REG_LASI_STATUS, &val1);
        elink_cl45_read(sc, phy,
                        MDIO_WIS_DEVAD, MDIO_WIS_REG_LASI_STATUS, &val1);
-       PMD_DRV_LOG(DEBUG, "8705 LASI status 0x%x", val1);
+       PMD_DRV_LOG(DEBUG, sc, "8705 LASI status 0x%x", val1);
 
        elink_cl45_read(sc, phy,
                        MDIO_WIS_DEVAD, MDIO_WIS_REG_LASI_STATUS, &val1);
 
        elink_cl45_read(sc, phy,
                        MDIO_WIS_DEVAD, MDIO_WIS_REG_LASI_STATUS, &val1);
-       PMD_DRV_LOG(DEBUG, "8705 LASI status 0x%x", val1);
+       PMD_DRV_LOG(DEBUG, sc, "8705 LASI status 0x%x", val1);
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_RX_SD, &rx_sd);
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, 0xc809, &val1);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, 0xc809, &val1);
 
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_RX_SD, &rx_sd);
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, 0xc809, &val1);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, 0xc809, &val1);
 
-       PMD_DRV_LOG(DEBUG, "8705 1.c809 val=0x%x", val1);
+       PMD_DRV_LOG(DEBUG, sc, "8705 1.c809 val=0x%x", val1);
        link_up = ((rx_sd & 0x1) && (val1 & (1 << 9))
                   && ((val1 & (1 << 8)) == 0));
        if (link_up) {
        link_up = ((rx_sd & 0x1) && (val1 & (1 << 9))
                   && ((val1 & (1 << 8)) == 0));
        if (link_up) {
@@ -7172,13 +7177,13 @@ static void elink_set_disable_pmd_transmit(struct elink_params *params,
        if (pmd_dis) {
                if (params->feature_config_flags &
                    ELINK_FEATURE_CONFIG_BC_SUPPORTS_SFP_TX_DISABLED) {
        if (pmd_dis) {
                if (params->feature_config_flags &
                    ELINK_FEATURE_CONFIG_BC_SUPPORTS_SFP_TX_DISABLED) {
-                       PMD_DRV_LOG(DEBUG, "Disabling PMD transmitter");
+                       PMD_DRV_LOG(DEBUG, sc, "Disabling PMD transmitter");
                } else {
                } else {
-                       PMD_DRV_LOG(DEBUG, "NOT disabling PMD transmitter");
+                       PMD_DRV_LOG(DEBUG, sc, "NOT disabling PMD transmitter");
                        return;
                }
        } else {
                        return;
                }
        } else {
-               PMD_DRV_LOG(DEBUG, "Enabling PMD transmitter");
+               PMD_DRV_LOG(DEBUG, sc, "Enabling PMD transmitter");
        }
        elink_cl45_write(sc, phy,
                         MDIO_PMA_DEVAD, MDIO_PMA_REG_TX_DISABLE, pmd_dis);
        }
        elink_cl45_write(sc, phy,
                         MDIO_PMA_DEVAD, MDIO_PMA_REG_TX_DISABLE, pmd_dis);
@@ -7212,7 +7217,7 @@ static void elink_sfp_e1e2_set_transmitter(struct elink_params *params,
                            offsetof(struct shmem_region,
                                     dev_info.port_hw_config[port].sfp_ctrl)) &
            PORT_HW_CFG_TX_LASER_MASK;
                            offsetof(struct shmem_region,
                                     dev_info.port_hw_config[port].sfp_ctrl)) &
            PORT_HW_CFG_TX_LASER_MASK;
-       PMD_DRV_LOG(DEBUG, "Setting transmitter tx_en=%x for port %x "
+       PMD_DRV_LOG(DEBUG, sc, "Setting transmitter tx_en=%x for port %x "
                    "mode = %x", tx_en, port, tx_en_mode);
        switch (tx_en_mode) {
        case PORT_HW_CFG_TX_LASER_MDIO:
                    "mode = %x", tx_en, port, tx_en_mode);
        switch (tx_en_mode) {
        case PORT_HW_CFG_TX_LASER_MDIO:
@@ -7248,7 +7253,8 @@ static void elink_sfp_e1e2_set_transmitter(struct elink_params *params,
                        break;
                }
        default:
                        break;
                }
        default:
-               PMD_DRV_LOG(DEBUG, "Invalid TX_LASER_MDIO 0x%x", tx_en_mode);
+               PMD_DRV_LOG(DEBUG, sc,
+                           "Invalid TX_LASER_MDIO 0x%x", tx_en_mode);
                break;
        }
 }
                break;
        }
 }
@@ -7257,7 +7263,7 @@ static void elink_sfp_set_transmitter(struct elink_params *params,
                                      struct elink_phy *phy, uint8_t tx_en)
 {
        struct bnx2x_softc *sc = params->sc;
                                      struct elink_phy *phy, uint8_t tx_en)
 {
        struct bnx2x_softc *sc = params->sc;
-       PMD_DRV_LOG(DEBUG, "Setting SFP+ transmitter to %d", tx_en);
+       PMD_DRV_LOG(DEBUG, sc, "Setting SFP+ transmitter to %d", tx_en);
        if (CHIP_IS_E3(sc))
                elink_sfp_e3_set_transmitter(params, phy, tx_en);
        else
        if (CHIP_IS_E3(sc))
                elink_sfp_e3_set_transmitter(params, phy, tx_en);
        else
@@ -7278,7 +7284,7 @@ static elink_status_t elink_8726_read_sfp_module_eeprom(struct elink_phy *phy,
        uint16_t val = 0;
        uint16_t i;
        if (byte_cnt > ELINK_SFP_EEPROM_PAGE_SIZE) {
        uint16_t val = 0;
        uint16_t i;
        if (byte_cnt > ELINK_SFP_EEPROM_PAGE_SIZE) {
-               PMD_DRV_LOG(DEBUG, "Reading from eeprom is limited to 0xf");
+               PMD_DRV_LOG(DEBUG, sc, "Reading from eeprom is limited to 0xf");
                return ELINK_STATUS_ERROR;
        }
        /* Set the read command byte count */
                return ELINK_STATUS_ERROR;
        }
        /* Set the read command byte count */
@@ -7309,7 +7315,7 @@ static elink_status_t elink_8726_read_sfp_module_eeprom(struct elink_phy *phy,
 
        if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) !=
            MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_COMPLETE) {
 
        if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) !=
            MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_COMPLETE) {
-               PMD_DRV_LOG(DEBUG,
+               PMD_DRV_LOG(DEBUG, sc,
                            "Got bad status 0x%x when reading from SFP+ EEPROM",
                            (val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK));
                return ELINK_STATUS_ERROR;
                            "Got bad status 0x%x when reading from SFP+ EEPROM",
                            (val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK));
                return ELINK_STATUS_ERROR;
@@ -7350,7 +7356,7 @@ static void elink_warpcore_power_module(struct elink_params *params,
 
        if (pin_cfg == PIN_CFG_NA)
                return;
 
        if (pin_cfg == PIN_CFG_NA)
                return;
-       PMD_DRV_LOG(DEBUG, "Setting SFP+ module power to %d using pin cfg %d",
+       PMD_DRV_LOG(DEBUG, sc, "Setting SFP+ module power to %d using pin cfg %d",
                    power, pin_cfg);
        /* Low ==> corresponding SFP+ module is powered
         * high ==> the SFP+ module is powered down
                    power, pin_cfg);
        /* Low ==> corresponding SFP+ module is powered
         * high ==> the SFP+ module is powered down
@@ -7375,7 +7381,7 @@ static elink_status_t elink_warpcore_read_sfp_module_eeprom(__rte_unused struct
        struct bnx2x_softc *sc = params->sc;
 
        if (byte_cnt > ELINK_SFP_EEPROM_PAGE_SIZE) {
        struct bnx2x_softc *sc = params->sc;
 
        if (byte_cnt > ELINK_SFP_EEPROM_PAGE_SIZE) {
-               PMD_DRV_LOG(DEBUG,
+               PMD_DRV_LOG(DEBUG, sc,
                            "Reading from eeprom is limited to 16 bytes");
                return ELINK_STATUS_ERROR;
        }
                            "Reading from eeprom is limited to 16 bytes");
                return ELINK_STATUS_ERROR;
        }
@@ -7417,7 +7423,7 @@ static elink_status_t elink_8727_read_sfp_module_eeprom(struct elink_phy *phy,
        uint16_t val, i;
 
        if (byte_cnt > ELINK_SFP_EEPROM_PAGE_SIZE) {
        uint16_t val, i;
 
        if (byte_cnt > ELINK_SFP_EEPROM_PAGE_SIZE) {
-               PMD_DRV_LOG(DEBUG, "Reading from eeprom is limited to 0xf");
+               PMD_DRV_LOG(DEBUG, sc, "Reading from eeprom is limited to 0xf");
                return ELINK_STATUS_ERROR;
        }
 
                return ELINK_STATUS_ERROR;
        }
 
@@ -7471,7 +7477,7 @@ static elink_status_t elink_8727_read_sfp_module_eeprom(struct elink_phy *phy,
 
        if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) !=
            MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_COMPLETE) {
 
        if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) !=
            MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_COMPLETE) {
-               PMD_DRV_LOG(DEBUG,
+               PMD_DRV_LOG(DEBUG, sc,
                            "Got bad status 0x%x when reading from SFP+ EEPROM",
                            (val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK));
                return ELINK_STATUS_TIMEOUT;
                            "Got bad status 0x%x when reading from SFP+ EEPROM",
                            (val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK));
                return ELINK_STATUS_TIMEOUT;
@@ -7512,7 +7518,8 @@ static elink_status_t elink_read_sfp_module_eeprom(struct elink_phy *phy,
        read_sfp_module_eeprom_func_p read_func;
 
        if ((dev_addr != 0xa0) && (dev_addr != 0xa2)) {
        read_sfp_module_eeprom_func_p read_func;
 
        if ((dev_addr != 0xa0) && (dev_addr != 0xa2)) {
-               PMD_DRV_LOG(DEBUG, "invalid dev_addr 0x%x", dev_addr);
+               PMD_DRV_LOG(DEBUG, params->sc,
+                           "invalid dev_addr 0x%x", dev_addr);
                return ELINK_STATUS_ERROR;
        }
 
                return ELINK_STATUS_ERROR;
        }
 
@@ -7558,7 +7565,7 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
                                         ELINK_I2C_DEV_ADDR_A0,
                                         ELINK_SFP_EEPROM_CON_TYPE_ADDR,
                                         2, (uint8_t *) val) != 0) {
                                         ELINK_I2C_DEV_ADDR_A0,
                                         ELINK_SFP_EEPROM_CON_TYPE_ADDR,
                                         2, (uint8_t *) val) != 0) {
-               PMD_DRV_LOG(DEBUG, "Failed to read from SFP+ module EEPROM");
+               PMD_DRV_LOG(DEBUG, sc, "Failed to read from SFP+ module EEPROM");
                return ELINK_STATUS_ERROR;
        }
 
                return ELINK_STATUS_ERROR;
        }
 
@@ -7577,7 +7584,7 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
                                                         1,
                                                         &copper_module_type) !=
                            0) {
                                                         1,
                                                         &copper_module_type) !=
                            0) {
-                               PMD_DRV_LOG(DEBUG,
+                               PMD_DRV_LOG(DEBUG, sc,
                                            "Failed to read copper-cable-type"
                                            " from SFP+ EEPROM");
                                return ELINK_STATUS_ERROR;
                                            "Failed to read copper-cable-type"
                                            " from SFP+ EEPROM");
                                return ELINK_STATUS_ERROR;
@@ -7585,7 +7592,7 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
 
                        if (copper_module_type &
                            ELINK_SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_ACTIVE) {
 
                        if (copper_module_type &
                            ELINK_SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_ACTIVE) {
-                               PMD_DRV_LOG(DEBUG,
+                               PMD_DRV_LOG(DEBUG, sc,
                                            "Active Copper cable detected");
                                if (phy->type ==
                                    PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT)
                                            "Active Copper cable detected");
                                if (phy->type ==
                                    PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT)
@@ -7595,11 +7602,11 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
                        } else if (copper_module_type &
                                   ELINK_SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_PASSIVE)
                        {
                        } else if (copper_module_type &
                                   ELINK_SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_PASSIVE)
                        {
-                               PMD_DRV_LOG(DEBUG,
+                               PMD_DRV_LOG(DEBUG, sc,
                                            "Passive Copper cable detected");
                                *edc_mode = ELINK_EDC_MODE_PASSIVE_DAC;
                        } else {
                                            "Passive Copper cable detected");
                                *edc_mode = ELINK_EDC_MODE_PASSIVE_DAC;
                        } else {
-                               PMD_DRV_LOG(DEBUG,
+                               PMD_DRV_LOG(DEBUG, sc,
                                            "Unknown copper-cable-type 0x%x !!!",
                                            copper_module_type);
                                return ELINK_STATUS_ERROR;
                                            "Unknown copper-cable-type 0x%x !!!",
                                            copper_module_type);
                                return ELINK_STATUS_ERROR;
@@ -7612,7 +7619,7 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
                if ((val[1] & (ELINK_SFP_EEPROM_COMP_CODE_SR_MASK |
                               ELINK_SFP_EEPROM_COMP_CODE_LR_MASK |
                               ELINK_SFP_EEPROM_COMP_CODE_LRM_MASK)) == 0) {
                if ((val[1] & (ELINK_SFP_EEPROM_COMP_CODE_SR_MASK |
                               ELINK_SFP_EEPROM_COMP_CODE_LR_MASK |
                               ELINK_SFP_EEPROM_COMP_CODE_LRM_MASK)) == 0) {
-                       PMD_DRV_LOG(DEBUG, "1G SFP module detected");
+                       PMD_DRV_LOG(DEBUG, sc, "1G SFP module detected");
                        gport = params->port;
                        phy->media_type = ELINK_ETH_PHY_SFP_1G_FIBER;
                        if (phy->req_line_speed != ELINK_SPEED_1000) {
                        gport = params->port;
                        phy->media_type = ELINK_ETH_PHY_SFP_1G_FIBER;
                        if (phy->req_line_speed != ELINK_SPEED_1000) {
@@ -7628,7 +7635,7 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
                        }
                } else {
                        int idx, cfg_idx = 0;
                        }
                } else {
                        int idx, cfg_idx = 0;
-                       PMD_DRV_LOG(DEBUG, "10G Optic module detected");
+                       PMD_DRV_LOG(DEBUG, sc, "10G Optic module detected");
                        for (idx = ELINK_INT_PHY; idx < ELINK_MAX_PHYS; idx++) {
                                if (params->phy[idx].type == phy->type) {
                                        cfg_idx = ELINK_LINK_CONFIG_IDX(idx);
                        for (idx = ELINK_INT_PHY; idx < ELINK_MAX_PHYS; idx++) {
                                if (params->phy[idx].type == phy->type) {
                                        cfg_idx = ELINK_LINK_CONFIG_IDX(idx);
@@ -7640,7 +7647,7 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
                }
                break;
        default:
                }
                break;
        default:
-               PMD_DRV_LOG(DEBUG, "Unable to determine module type 0x%x !!!",
+               PMD_DRV_LOG(DEBUG, sc, "Unable to determine module type 0x%x !!!",
                            val[0]);
                return ELINK_STATUS_ERROR;
        }
                            val[0]);
                return ELINK_STATUS_ERROR;
        }
@@ -7670,7 +7677,7 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
                                                 ELINK_SFP_EEPROM_OPTIONS_ADDR,
                                                 ELINK_SFP_EEPROM_OPTIONS_SIZE,
                                                 options) != 0) {
                                                 ELINK_SFP_EEPROM_OPTIONS_ADDR,
                                                 ELINK_SFP_EEPROM_OPTIONS_SIZE,
                                                 options) != 0) {
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "Failed to read Option field from module EEPROM");
                        return ELINK_STATUS_ERROR;
                }
                                    "Failed to read Option field from module EEPROM");
                        return ELINK_STATUS_ERROR;
                }
@@ -7679,7 +7686,7 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
                else
                        *edc_mode = ELINK_EDC_MODE_LIMITING;
        }
                else
                        *edc_mode = ELINK_EDC_MODE_LIMITING;
        }
-       PMD_DRV_LOG(DEBUG, "EDC mode is set to 0x%x", *edc_mode);
+       PMD_DRV_LOG(DEBUG, sc, "EDC mode is set to 0x%x", *edc_mode);
        return ELINK_STATUS_OK;
 }
 
        return ELINK_STATUS_OK;
 }
 
@@ -7701,7 +7708,7 @@ static elink_status_t elink_verify_sfp_module(struct elink_phy *phy,
                              config));
        if ((val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) ==
            PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_NO_ENFORCEMENT) {
                              config));
        if ((val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) ==
            PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_NO_ENFORCEMENT) {
-               PMD_DRV_LOG(DEBUG, "NOT enforcing module verification");
+               PMD_DRV_LOG(DEBUG, sc, "NOT enforcing module verification");
                return ELINK_STATUS_OK;
        }
 
                return ELINK_STATUS_OK;
        }
 
@@ -7713,21 +7720,21 @@ static elink_status_t elink_verify_sfp_module(struct elink_phy *phy,
                   ELINK_FEATURE_CONFIG_BC_SUPPORTS_OPT_MDL_VRFY) {
                /* Use first phy request only in case of non-dual media */
                if (ELINK_DUAL_MEDIA(params)) {
                   ELINK_FEATURE_CONFIG_BC_SUPPORTS_OPT_MDL_VRFY) {
                /* Use first phy request only in case of non-dual media */
                if (ELINK_DUAL_MEDIA(params)) {
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "FW does not support OPT MDL verification");
                        return ELINK_STATUS_ERROR;
                }
                cmd = DRV_MSG_CODE_VRFY_FIRST_PHY_OPT_MDL;
        } else {
                /* No support in OPT MDL detection */
                                    "FW does not support OPT MDL verification");
                        return ELINK_STATUS_ERROR;
                }
                cmd = DRV_MSG_CODE_VRFY_FIRST_PHY_OPT_MDL;
        } else {
                /* No support in OPT MDL detection */
-               PMD_DRV_LOG(DEBUG, "FW does not support OPT MDL verification");
+               PMD_DRV_LOG(DEBUG, sc, "FW does not support OPT MDL verification");
                return ELINK_STATUS_ERROR;
        }
 
        fw_cmd_param = ELINK_FW_PARAM_SET(phy->addr, phy->type, phy->mdio_ctrl);
        fw_resp = elink_cb_fw_command(sc, cmd, fw_cmd_param);
        if (fw_resp == FW_MSG_CODE_VRFY_OPT_MDL_SUCCESS) {
                return ELINK_STATUS_ERROR;
        }
 
        fw_cmd_param = ELINK_FW_PARAM_SET(phy->addr, phy->type, phy->mdio_ctrl);
        fw_resp = elink_cb_fw_command(sc, cmd, fw_cmd_param);
        if (fw_resp == FW_MSG_CODE_VRFY_OPT_MDL_SUCCESS) {
-               PMD_DRV_LOG(DEBUG, "Approved module");
+               PMD_DRV_LOG(DEBUG, sc, "Approved module");
                return ELINK_STATUS_OK;
        }
 
                return ELINK_STATUS_OK;
        }
 
@@ -7783,7 +7790,7 @@ static elink_status_t elink_wait_for_sfp_module_initialized(struct elink_phy
                                                          ELINK_I2C_DEV_ADDR_A0,
                                                          1, 1, &val);
                if (rc == 0) {
                                                          ELINK_I2C_DEV_ADDR_A0,
                                                          1, 1, &val);
                if (rc == 0) {
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, params->sc,
                                    "SFP+ module initialization took %d ms",
                                    timeout * 5);
                        return ELINK_STATUS_OK;
                                    "SFP+ module initialization took %d ms",
                                    timeout * 5);
                        return ELINK_STATUS_OK;
@@ -7834,17 +7841,18 @@ static elink_status_t elink_8726_set_limiting_mode(struct bnx2x_softc *sc,
        elink_cl45_read(sc, phy,
                        MDIO_PMA_DEVAD,
                        MDIO_PMA_REG_ROM_VER2, &cur_limiting_mode);
        elink_cl45_read(sc, phy,
                        MDIO_PMA_DEVAD,
                        MDIO_PMA_REG_ROM_VER2, &cur_limiting_mode);
-       PMD_DRV_LOG(DEBUG, "Current Limiting mode is 0x%x", cur_limiting_mode);
+       PMD_DRV_LOG(DEBUG, sc,
+                   "Current Limiting mode is 0x%x", cur_limiting_mode);
 
        if (edc_mode == ELINK_EDC_MODE_LIMITING) {
 
        if (edc_mode == ELINK_EDC_MODE_LIMITING) {
-               PMD_DRV_LOG(DEBUG, "Setting LIMITING MODE");
+               PMD_DRV_LOG(DEBUG, sc, "Setting LIMITING MODE");
                elink_cl45_write(sc, phy,
                                 MDIO_PMA_DEVAD,
                                 MDIO_PMA_REG_ROM_VER2,
                                 ELINK_EDC_MODE_LIMITING);
        } else {                /* LRM mode ( default ) */
 
                elink_cl45_write(sc, phy,
                                 MDIO_PMA_DEVAD,
                                 MDIO_PMA_REG_ROM_VER2,
                                 ELINK_EDC_MODE_LIMITING);
        } else {                /* LRM mode ( default ) */
 
-               PMD_DRV_LOG(DEBUG, "Setting LRM MODE");
+               PMD_DRV_LOG(DEBUG, sc, "Setting LRM MODE");
 
                /* Changing to LRM mode takes quite few seconds. So do it only
                 * if current mode is limiting (default is LRM)
 
                /* Changing to LRM mode takes quite few seconds. So do it only
                 * if current mode is limiting (default is LRM)
@@ -7934,7 +7942,7 @@ static void elink_8727_specific_func(struct elink_phy *phy,
                                 val);
                break;
        default:
                                 val);
                break;
        default:
-               PMD_DRV_LOG(DEBUG, "Function 0x%x not supported by 8727",
+               PMD_DRV_LOG(DEBUG, sc, "Function 0x%x not supported by 8727",
                            action);
                return;
        }
                            action);
                return;
        }
@@ -7962,14 +7970,14 @@ static void elink_set_e1e2_module_fault_led(struct elink_params *params,
                        uint8_t gpio_port = elink_get_gpio_port(params);
                        uint16_t gpio_pin = fault_led_gpio -
                            PORT_HW_CFG_FAULT_MODULE_LED_GPIO0;
                        uint8_t gpio_port = elink_get_gpio_port(params);
                        uint16_t gpio_pin = fault_led_gpio -
                            PORT_HW_CFG_FAULT_MODULE_LED_GPIO0;
-                       PMD_DRV_LOG(DEBUG, "Set fault module-detected led "
+                       PMD_DRV_LOG(DEBUG, sc, "Set fault module-detected led "
                                    "pin %x port %x mode %x",
                                    gpio_pin, gpio_port, gpio_mode);
                        elink_cb_gpio_write(sc, gpio_pin, gpio_mode, gpio_port);
                }
                break;
        default:
                                    "pin %x port %x mode %x",
                                    gpio_pin, gpio_port, gpio_mode);
                        elink_cb_gpio_write(sc, gpio_pin, gpio_mode, gpio_port);
                }
                break;
        default:
-               PMD_DRV_LOG(DEBUG, "Error: Invalid fault led mode 0x%x",
+               PMD_DRV_LOG(DEBUG, sc, "Error: Invalid fault led mode 0x%x",
                            fault_led_gpio);
        }
 }
                            fault_led_gpio);
        }
 }
@@ -7985,7 +7993,7 @@ static void elink_set_e3_module_fault_led(struct elink_params *params,
                                   dev_info.port_hw_config[port].e3_sfp_ctrl)) &
                   PORT_HW_CFG_E3_FAULT_MDL_LED_MASK) >>
            PORT_HW_CFG_E3_FAULT_MDL_LED_SHIFT;
                                   dev_info.port_hw_config[port].e3_sfp_ctrl)) &
                   PORT_HW_CFG_E3_FAULT_MDL_LED_MASK) >>
            PORT_HW_CFG_E3_FAULT_MDL_LED_SHIFT;
-       PMD_DRV_LOG(DEBUG, "Setting Fault LED to %d using pin cfg %d",
+       PMD_DRV_LOG(DEBUG, sc, "Setting Fault LED to %d using pin cfg %d",
                    gpio_mode, pin_cfg);
        elink_set_cfg_pin(sc, pin_cfg, gpio_mode);
 }
                    gpio_mode, pin_cfg);
        elink_set_cfg_pin(sc, pin_cfg, gpio_mode);
 }
@@ -7994,7 +8002,8 @@ static void elink_set_sfp_module_fault_led(struct elink_params *params,
                                           uint8_t gpio_mode)
 {
        struct bnx2x_softc *sc = params->sc;
                                           uint8_t gpio_mode)
 {
        struct bnx2x_softc *sc = params->sc;
-       PMD_DRV_LOG(DEBUG, "Setting SFP+ module fault LED to %d", gpio_mode);
+       PMD_DRV_LOG(DEBUG, sc,
+                   "Setting SFP+ module fault LED to %d", gpio_mode);
        if (CHIP_IS_E3(sc)) {
                /* Low ==> if SFP+ module is supported otherwise
                 * High ==> if SFP+ module is not on the approved vendor list
        if (CHIP_IS_E3(sc)) {
                /* Low ==> if SFP+ module is supported otherwise
                 * High ==> if SFP+ module is not on the approved vendor list
@@ -8021,7 +8030,7 @@ static void elink_warpcore_hw_reset(__rte_unused struct elink_phy *phy,
 static void elink_power_sfp_module(struct elink_params *params,
                                   struct elink_phy *phy, uint8_t power)
 {
 static void elink_power_sfp_module(struct elink_params *params,
                                   struct elink_phy *phy, uint8_t power)
 {
-       PMD_DRV_LOG(DEBUG, "Setting SFP+ power to %x", power);
+       PMD_DRV_LOG(DEBUG, params->sc, "Setting SFP+ power to %x", power);
 
        switch (phy->type) {
        case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BNX2X8727:
 
        switch (phy->type) {
        case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BNX2X8727:
@@ -8107,16 +8116,16 @@ static elink_status_t elink_sfp_module_detection(struct elink_phy *phy,
                                       config));
        /* Enabled transmitter by default */
        elink_sfp_set_transmitter(params, phy, 1);
                                       config));
        /* Enabled transmitter by default */
        elink_sfp_set_transmitter(params, phy, 1);
-       PMD_DRV_LOG(DEBUG, "SFP+ module plugged in/out detected on port %d",
+       PMD_DRV_LOG(DEBUG, sc, "SFP+ module plugged in/out detected on port %d",
                    params->port);
        /* Power up module */
        elink_power_sfp_module(params, phy, 1);
        if (elink_get_edc_mode(phy, params, &edc_mode) != 0) {
                    params->port);
        /* Power up module */
        elink_power_sfp_module(params, phy, 1);
        if (elink_get_edc_mode(phy, params, &edc_mode) != 0) {
-               PMD_DRV_LOG(DEBUG, "Failed to get valid module type");
+               PMD_DRV_LOG(DEBUG, sc, "Failed to get valid module type");
                return ELINK_STATUS_ERROR;
        } else if (elink_verify_sfp_module(phy, params) != 0) {
                /* Check SFP+ module compatibility */
                return ELINK_STATUS_ERROR;
        } else if (elink_verify_sfp_module(phy, params) != 0) {
                /* Check SFP+ module compatibility */
-               PMD_DRV_LOG(DEBUG, "Module verification failed!!");
+               PMD_DRV_LOG(DEBUG, sc, "Module verification failed!!");
                rc = ELINK_STATUS_ERROR;
                /* Turn on fault module-detected led */
                elink_set_sfp_module_fault_led(params,
                rc = ELINK_STATUS_ERROR;
                /* Turn on fault module-detected led */
                elink_set_sfp_module_fault_led(params,
@@ -8125,7 +8134,7 @@ static elink_status_t elink_sfp_module_detection(struct elink_phy *phy,
                /* Check if need to power down the SFP+ module */
                if ((val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) ==
                    PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_POWER_DOWN) {
                /* Check if need to power down the SFP+ module */
                if ((val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) ==
                    PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_POWER_DOWN) {
-                       PMD_DRV_LOG(DEBUG, "Shutdown SFP+ module!!");
+                       PMD_DRV_LOG(DEBUG, sc, "Shutdown SFP+ module!!");
                        elink_power_sfp_module(params, phy, 0);
                        return rc;
                }
                        elink_power_sfp_module(params, phy, 0);
                        return rc;
                }
@@ -8166,7 +8175,7 @@ void elink_handle_module_detect_int(struct elink_params *params)
        if (elink_get_mod_abs_int_cfg(sc, params->shmem_base,
                                      params->port, &gpio_num, &gpio_port) ==
            ELINK_STATUS_ERROR) {
        if (elink_get_mod_abs_int_cfg(sc, params->shmem_base,
                                      params->port, &gpio_num, &gpio_port) ==
            ELINK_STATUS_ERROR) {
-               PMD_DRV_LOG(DEBUG, "Failed to get MOD_ABS interrupt config");
+               PMD_DRV_LOG(DEBUG, sc, "Failed to get MOD_ABS interrupt config");
                return;
        }
 
                return;
        }
 
@@ -8206,7 +8215,7 @@ void elink_handle_module_detect_int(struct elink_params *params)
                                }
                        }
                } else {
                                }
                        }
                } else {
-                       PMD_DRV_LOG(DEBUG, "SFP+ module is not initialized");
+                       PMD_DRV_LOG(DEBUG, sc, "SFP+ module is not initialized");
                }
        } else {
                elink_cb_gpio_int_write(sc, gpio_num,
                }
        } else {
                elink_cb_gpio_int_write(sc, gpio_num,
@@ -8251,7 +8260,7 @@ static uint8_t elink_8706_8726_read_status(struct elink_phy *phy,
        uint8_t link_up = 0;
        uint16_t val1, val2, rx_sd, pcs_status;
        struct bnx2x_softc *sc = params->sc;
        uint8_t link_up = 0;
        uint16_t val1, val2, rx_sd, pcs_status;
        struct bnx2x_softc *sc = params->sc;
-       PMD_DRV_LOG(DEBUG, "XGXS 8706/8726");
+       PMD_DRV_LOG(DEBUG, sc, "XGXS 8706/8726");
        /* Clear RX Alarm */
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXSTAT, &val2);
 
        /* Clear RX Alarm */
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXSTAT, &val2);
 
@@ -8261,7 +8270,8 @@ static uint8_t elink_8706_8726_read_status(struct elink_phy *phy,
        /* Clear LASI indication */
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val1);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val2);
        /* Clear LASI indication */
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val1);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val2);
-       PMD_DRV_LOG(DEBUG, "8706/8726 LASI status 0x%x--> 0x%x", val1, val2);
+       PMD_DRV_LOG(DEBUG, sc,
+                   "8706/8726 LASI status 0x%x--> 0x%x", val1, val2);
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_RX_SD, &rx_sd);
        elink_cl45_read(sc, phy,
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_RX_SD, &rx_sd);
        elink_cl45_read(sc, phy,
@@ -8269,7 +8279,7 @@ static uint8_t elink_8706_8726_read_status(struct elink_phy *phy,
        elink_cl45_read(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_LINK_STATUS, &val2);
        elink_cl45_read(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_LINK_STATUS, &val2);
 
        elink_cl45_read(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_LINK_STATUS, &val2);
        elink_cl45_read(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_LINK_STATUS, &val2);
 
-       PMD_DRV_LOG(DEBUG, "8706/8726 rx_sd 0x%x pcs_status 0x%x 1Gbps"
+       PMD_DRV_LOG(DEBUG, sc, "8706/8726 rx_sd 0x%x pcs_status 0x%x 1Gbps"
                    " link_status 0x%x", rx_sd, pcs_status, val2);
        /* Link is up if both bit 0 of pmd_rx_sd and bit 0 of pcs_status
         * are set, or if the autoneg bit 1 is set
                    " link_status 0x%x", rx_sd, pcs_status, val2);
        /* Link is up if both bit 0 of pmd_rx_sd and bit 0 of pcs_status
         * are set, or if the autoneg bit 1 is set
@@ -8323,7 +8333,7 @@ static uint8_t elink_8706_config_init(struct elink_phy *phy,
                        break;
                DELAY(1000 * 10);
        }
                        break;
                DELAY(1000 * 10);
        }
-       PMD_DRV_LOG(DEBUG, "XGXS 8706 is initialized after %d ms", cnt);
+       PMD_DRV_LOG(DEBUG, sc, "XGXS 8706 is initialized after %d ms", cnt);
        if ((params->feature_config_flags &
             ELINK_FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) {
                uint8_t i;
        if ((params->feature_config_flags &
             ELINK_FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) {
                uint8_t i;
@@ -8337,14 +8347,14 @@ static uint8_t elink_8706_config_init(struct elink_phy *phy,
                        val &= ~0x7;
                        /* Set control bits according to configuration */
                        val |= (phy->rx_preemphasis[i] & 0x7);
                        val &= ~0x7;
                        /* Set control bits according to configuration */
                        val |= (phy->rx_preemphasis[i] & 0x7);
-                       PMD_DRV_LOG(DEBUG, "Setting RX Equalizer to BNX2X8706"
+                       PMD_DRV_LOG(DEBUG, sc, "Setting RX Equalizer to BNX2X8706"
                                    " reg 0x%x <-- val 0x%x", reg, val);
                        elink_cl45_write(sc, phy, MDIO_XS_DEVAD, reg, val);
                }
        }
        /* Force speed */
        if (phy->req_line_speed == ELINK_SPEED_10000) {
                                    " reg 0x%x <-- val 0x%x", reg, val);
                        elink_cl45_write(sc, phy, MDIO_XS_DEVAD, reg, val);
                }
        }
        /* Force speed */
        if (phy->req_line_speed == ELINK_SPEED_10000) {
-               PMD_DRV_LOG(DEBUG, "XGXS 8706 force 10Gbps");
+               PMD_DRV_LOG(DEBUG, sc, "XGXS 8706 force 10Gbps");
 
                elink_cl45_write(sc, phy,
                                 MDIO_PMA_DEVAD,
 
                elink_cl45_write(sc, phy,
                                 MDIO_PMA_DEVAD,
@@ -8358,7 +8368,7 @@ static uint8_t elink_8706_config_init(struct elink_phy *phy,
                /* Force 1Gbps using autoneg with 1G advertisement */
 
                /* Allow CL37 through CL73 */
                /* Force 1Gbps using autoneg with 1G advertisement */
 
                /* Allow CL37 through CL73 */
-               PMD_DRV_LOG(DEBUG, "XGXS 8706 AutoNeg");
+               PMD_DRV_LOG(DEBUG, sc, "XGXS 8706 AutoNeg");
                elink_cl45_write(sc, phy,
                                 MDIO_AN_DEVAD, MDIO_AN_REG_CL37_CL73, 0x040c);
 
                elink_cl45_write(sc, phy,
                                 MDIO_AN_DEVAD, MDIO_AN_REG_CL37_CL73, 0x040c);
 
@@ -8393,7 +8403,7 @@ static uint8_t elink_8706_config_init(struct elink_phy *phy,
        & PORT_HW_CFG_TX_LASER_MASK;
 
        if (tx_en_mode == PORT_HW_CFG_TX_LASER_GPIO0) {
        & PORT_HW_CFG_TX_LASER_MASK;
 
        if (tx_en_mode == PORT_HW_CFG_TX_LASER_GPIO0) {
-               PMD_DRV_LOG(DEBUG, "Enabling TXONOFF_PWRDN_DIS");
+               PMD_DRV_LOG(DEBUG, sc, "Enabling TXONOFF_PWRDN_DIS");
                elink_cl45_read(sc, phy,
                                MDIO_PMA_DEVAD, MDIO_PMA_REG_DIGITAL_CTRL,
                                &tmp1);
                elink_cl45_read(sc, phy,
                                MDIO_PMA_DEVAD, MDIO_PMA_REG_DIGITAL_CTRL,
                                &tmp1);
@@ -8420,7 +8430,7 @@ static void elink_8726_config_loopback(struct elink_phy *phy,
                                       struct elink_params *params)
 {
        struct bnx2x_softc *sc = params->sc;
                                       struct elink_params *params)
 {
        struct bnx2x_softc *sc = params->sc;
-       PMD_DRV_LOG(DEBUG, "PMA/PMD ext_phy_loopback: 8726");
+       PMD_DRV_LOG(DEBUG, sc, "PMA/PMD ext_phy_loopback: 8726");
        elink_cl45_write(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 0x0001);
 }
 
        elink_cl45_write(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 0x0001);
 }
 
@@ -8472,7 +8482,7 @@ static uint8_t elink_8726_read_status(struct elink_phy *phy,
                                MDIO_PMA_DEVAD, MDIO_PMA_REG_PHY_IDENTIFIER,
                                &val1);
                if (val1 & (1 << 15)) {
                                MDIO_PMA_DEVAD, MDIO_PMA_REG_PHY_IDENTIFIER,
                                &val1);
                if (val1 & (1 << 15)) {
-                       PMD_DRV_LOG(DEBUG, "Tx is disabled");
+                       PMD_DRV_LOG(DEBUG, sc, "Tx is disabled");
                        link_up = 0;
                        vars->line_speed = 0;
                }
                        link_up = 0;
                        vars->line_speed = 0;
                }
@@ -8485,7 +8495,7 @@ static uint8_t elink_8726_config_init(struct elink_phy *phy,
                                      struct elink_vars *vars)
 {
        struct bnx2x_softc *sc = params->sc;
                                      struct elink_vars *vars)
 {
        struct bnx2x_softc *sc = params->sc;
-       PMD_DRV_LOG(DEBUG, "Initializing BNX2X8726");
+       PMD_DRV_LOG(DEBUG, sc, "Initializing BNX2X8726");
 
        elink_cl45_write(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 1 << 15);
        elink_wait_reset_complete(sc, phy, params);
 
        elink_cl45_write(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 1 << 15);
        elink_wait_reset_complete(sc, phy, params);
@@ -8500,7 +8510,7 @@ static uint8_t elink_8726_config_init(struct elink_phy *phy,
        elink_sfp_module_detection(phy, params);
 
        if (phy->req_line_speed == ELINK_SPEED_1000) {
        elink_sfp_module_detection(phy, params);
 
        if (phy->req_line_speed == ELINK_SPEED_1000) {
-               PMD_DRV_LOG(DEBUG, "Setting 1G force");
+               PMD_DRV_LOG(DEBUG, sc, "Setting 1G force");
                elink_cl45_write(sc, phy,
                                 MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 0x40);
                elink_cl45_write(sc, phy,
                elink_cl45_write(sc, phy,
                                 MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 0x40);
                elink_cl45_write(sc, phy,
@@ -8515,7 +8525,7 @@ static uint8_t elink_8726_config_init(struct elink_phy *phy,
                   ((phy->speed_cap_mask &
                     PORT_HW_CFG_SPEED_CAPABILITY_D0_10G) !=
                    PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) {
                   ((phy->speed_cap_mask &
                     PORT_HW_CFG_SPEED_CAPABILITY_D0_10G) !=
                    PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) {
-               PMD_DRV_LOG(DEBUG, "Setting 1G clause37");
+               PMD_DRV_LOG(DEBUG, sc, "Setting 1G clause37");
                /* Set Flow control */
                elink_ext_phy_set_pause(params, phy, vars);
                elink_cl45_write(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_ADV, 0x20);
                /* Set Flow control */
                elink_ext_phy_set_pause(params, phy, vars);
                elink_cl45_write(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_ADV, 0x20);
@@ -8543,7 +8553,7 @@ static uint8_t elink_8726_config_init(struct elink_phy *phy,
        /* Set TX PreEmphasis if needed */
        if ((params->feature_config_flags &
             ELINK_FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) {
        /* Set TX PreEmphasis if needed */
        if ((params->feature_config_flags &
             ELINK_FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) {
-               PMD_DRV_LOG(DEBUG,
+               PMD_DRV_LOG(DEBUG, sc,
                            "Setting TX_CTRL1 0x%x, TX_CTRL2 0x%x",
                            phy->tx_preemphasis[0], phy->tx_preemphasis[1]);
                elink_cl45_write(sc, phy,
                            "Setting TX_CTRL1 0x%x, TX_CTRL2 0x%x",
                            phy->tx_preemphasis[0], phy->tx_preemphasis[1]);
                elink_cl45_write(sc, phy,
@@ -8565,7 +8575,7 @@ static void elink_8726_link_reset(struct elink_phy *phy,
                                  struct elink_params *params)
 {
        struct bnx2x_softc *sc = params->sc;
                                  struct elink_params *params)
 {
        struct bnx2x_softc *sc = params->sc;
-       PMD_DRV_LOG(DEBUG, "elink_8726_link_reset port %d", params->port);
+       PMD_DRV_LOG(DEBUG, sc, "elink_8726_link_reset port %d", params->port);
        /* Set serial boot control for external load */
        elink_cl45_write(sc, phy,
                         MDIO_PMA_DEVAD, MDIO_PMA_REG_GEN_CTRL, 0x0001);
        /* Set serial boot control for external load */
        elink_cl45_write(sc, phy,
                         MDIO_PMA_DEVAD, MDIO_PMA_REG_GEN_CTRL, 0x0001);
@@ -8638,14 +8648,14 @@ static void elink_8727_config_speed(struct elink_phy *phy,
        /* Set option 1G speed */
        if ((phy->req_line_speed == ELINK_SPEED_1000) ||
            (phy->media_type == ELINK_ETH_PHY_SFP_1G_FIBER)) {
        /* Set option 1G speed */
        if ((phy->req_line_speed == ELINK_SPEED_1000) ||
            (phy->media_type == ELINK_ETH_PHY_SFP_1G_FIBER)) {
-               PMD_DRV_LOG(DEBUG, "Setting 1G force");
+               PMD_DRV_LOG(DEBUG, sc, "Setting 1G force");
                elink_cl45_write(sc, phy,
                                 MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 0x40);
                elink_cl45_write(sc, phy,
                                 MDIO_PMA_DEVAD, MDIO_PMA_REG_10G_CTRL2, 0xD);
                elink_cl45_read(sc, phy,
                                MDIO_PMA_DEVAD, MDIO_PMA_REG_10G_CTRL2, &tmp1);
                elink_cl45_write(sc, phy,
                                 MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 0x40);
                elink_cl45_write(sc, phy,
                                 MDIO_PMA_DEVAD, MDIO_PMA_REG_10G_CTRL2, 0xD);
                elink_cl45_read(sc, phy,
                                MDIO_PMA_DEVAD, MDIO_PMA_REG_10G_CTRL2, &tmp1);
-               PMD_DRV_LOG(DEBUG, "1.7 = 0x%x", tmp1);
+               PMD_DRV_LOG(DEBUG, sc, "1.7 = 0x%x", tmp1);
                /* Power down the XAUI until link is up in case of dual-media
                 * and 1G
                 */
                /* Power down the XAUI until link is up in case of dual-media
                 * and 1G
                 */
@@ -8665,7 +8675,7 @@ static void elink_8727_config_speed(struct elink_phy *phy,
                     PORT_HW_CFG_SPEED_CAPABILITY_D0_10G) !=
                    PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) {
 
                     PORT_HW_CFG_SPEED_CAPABILITY_D0_10G) !=
                    PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) {
 
-               PMD_DRV_LOG(DEBUG, "Setting 1G clause37");
+               PMD_DRV_LOG(DEBUG, sc, "Setting 1G clause37");
                elink_cl45_write(sc, phy,
                                 MDIO_AN_DEVAD, MDIO_AN_REG_8727_MISC_CTRL, 0);
                elink_cl45_write(sc, phy,
                elink_cl45_write(sc, phy,
                                 MDIO_AN_DEVAD, MDIO_AN_REG_8727_MISC_CTRL, 0);
                elink_cl45_write(sc, phy,
@@ -8699,7 +8709,7 @@ static uint8_t elink_8727_config_init(struct elink_phy *phy,
 
        elink_wait_reset_complete(sc, phy, params);
 
 
        elink_wait_reset_complete(sc, phy, params);
 
-       PMD_DRV_LOG(DEBUG, "Initializing BNX2X8727");
+       PMD_DRV_LOG(DEBUG, sc, "Initializing BNX2X8727");
 
        elink_8727_specific_func(phy, params, ELINK_PHY_INIT);
        /* Initially configure MOD_ABS to interrupt when module is
 
        elink_8727_specific_func(phy, params, ELINK_PHY_INIT);
        /* Initially configure MOD_ABS to interrupt when module is
@@ -8732,7 +8742,7 @@ static uint8_t elink_8727_config_init(struct elink_phy *phy,
        /* Set TX PreEmphasis if needed */
        if ((params->feature_config_flags &
             ELINK_FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) {
        /* Set TX PreEmphasis if needed */
        if ((params->feature_config_flags &
             ELINK_FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) {
-               PMD_DRV_LOG(DEBUG, "Setting TX_CTRL1 0x%x, TX_CTRL2 0x%x",
+               PMD_DRV_LOG(DEBUG, sc, "Setting TX_CTRL1 0x%x, TX_CTRL2 0x%x",
                            phy->tx_preemphasis[0], phy->tx_preemphasis[1]);
                elink_cl45_write(sc, phy,
                                 MDIO_PMA_DEVAD, MDIO_PMA_REG_8727_TX_CTRL1,
                            phy->tx_preemphasis[0], phy->tx_preemphasis[1]);
                elink_cl45_write(sc, phy,
                                 MDIO_PMA_DEVAD, MDIO_PMA_REG_8727_TX_CTRL1,
@@ -8754,7 +8764,7 @@ static uint8_t elink_8727_config_init(struct elink_phy *phy,
 
        if (tx_en_mode == PORT_HW_CFG_TX_LASER_GPIO0) {
 
 
        if (tx_en_mode == PORT_HW_CFG_TX_LASER_GPIO0) {
 
-               PMD_DRV_LOG(DEBUG, "Enabling TXONOFF_PWRDN_DIS");
+               PMD_DRV_LOG(DEBUG, sc, "Enabling TXONOFF_PWRDN_DIS");
                elink_cl45_read(sc, phy,
                                MDIO_PMA_DEVAD, MDIO_PMA_REG_8727_OPT_CFG_REG,
                                &tmp2);
                elink_cl45_read(sc, phy,
                                MDIO_PMA_DEVAD, MDIO_PMA_REG_8727_OPT_CFG_REG,
                                &tmp2);
@@ -8786,7 +8796,7 @@ static void elink_8727_handle_mod_abs(struct elink_phy *phy,
        if (mod_abs & (1 << 8)) {
 
                /* Module is absent */
        if (mod_abs & (1 << 8)) {
 
                /* Module is absent */
-               PMD_DRV_LOG(DEBUG, "MOD_ABS indication show module is absent");
+               PMD_DRV_LOG(DEBUG, sc, "MOD_ABS indication show module is absent");
                phy->media_type = ELINK_ETH_PHY_NOT_PRESENT;
                /* 1. Set mod_abs to detect next module
                 *    presence event
                phy->media_type = ELINK_ETH_PHY_NOT_PRESENT;
                /* 1. Set mod_abs to detect next module
                 *    presence event
@@ -8811,7 +8821,7 @@ static void elink_8727_handle_mod_abs(struct elink_phy *phy,
 
        } else {
                /* Module is present */
 
        } else {
                /* Module is present */
-               PMD_DRV_LOG(DEBUG, "MOD_ABS indication show module is present");
+               PMD_DRV_LOG(DEBUG, sc, "MOD_ABS indication show module is present");
                /* First disable transmitter, and if the module is ok, the
                 * module_detection will enable it
                 * 1. Set mod_abs to detect next module absent event ( bit 8)
                /* First disable transmitter, and if the module is ok, the
                 * module_detection will enable it
                 * 1. Set mod_abs to detect next module absent event ( bit 8)
@@ -8842,14 +8852,14 @@ static void elink_8727_handle_mod_abs(struct elink_phy *phy,
                if (elink_wait_for_sfp_module_initialized(phy, params) == 0) {
                        elink_sfp_module_detection(phy, params);
                } else {
                if (elink_wait_for_sfp_module_initialized(phy, params) == 0) {
                        elink_sfp_module_detection(phy, params);
                } else {
-                       PMD_DRV_LOG(DEBUG, "SFP+ module is not initialized");
+                       PMD_DRV_LOG(DEBUG, sc, "SFP+ module is not initialized");
                }
 
                /* Reconfigure link speed based on module type limitations */
                elink_8727_config_speed(phy, params);
        }
 
                }
 
                /* Reconfigure link speed based on module type limitations */
                elink_8727_config_speed(phy, params);
        }
 
-       PMD_DRV_LOG(DEBUG, "8727 RX_ALARM_STATUS 0x%x", rx_alarm_status);
+       PMD_DRV_LOG(DEBUG, sc, "8727 RX_ALARM_STATUS 0x%x", rx_alarm_status);
        /* No need to check link status in case of module plugged in/out */
 }
 
        /* No need to check link status in case of module plugged in/out */
 }
 
@@ -8872,14 +8882,14 @@ static uint8_t elink_8727_read_status(struct elink_phy *phy,
        elink_cl45_read(sc, phy,
                        MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXSTAT, &rx_alarm_status);
        vars->line_speed = 0;
        elink_cl45_read(sc, phy,
                        MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXSTAT, &rx_alarm_status);
        vars->line_speed = 0;
-       PMD_DRV_LOG(DEBUG, "8727 RX_ALARM_STATUS  0x%x", rx_alarm_status);
+       PMD_DRV_LOG(DEBUG, sc, "8727 RX_ALARM_STATUS  0x%x", rx_alarm_status);
 
        elink_sfp_mask_fault(sc, phy, MDIO_PMA_LASI_TXSTAT,
                             MDIO_PMA_LASI_TXCTRL);
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val1);
 
 
        elink_sfp_mask_fault(sc, phy, MDIO_PMA_LASI_TXSTAT,
                             MDIO_PMA_LASI_TXCTRL);
 
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val1);
 
-       PMD_DRV_LOG(DEBUG, "8727 LASI status 0x%x", val1);
+       PMD_DRV_LOG(DEBUG, sc, "8727 LASI status 0x%x", val1);
 
        /* Clear MSG-OUT */
        elink_cl45_read(sc, phy,
 
        /* Clear MSG-OUT */
        elink_cl45_read(sc, phy,
@@ -8897,7 +8907,7 @@ static uint8_t elink_8727_read_status(struct elink_phy *phy,
                if ((val1 & (1 << 8)) == 0) {
                        if (!CHIP_IS_E1x(sc))
                                oc_port = SC_PATH(sc) + (params->port << 1);
                if ((val1 & (1 << 8)) == 0) {
                        if (!CHIP_IS_E1x(sc))
                                oc_port = SC_PATH(sc) + (params->port << 1);
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "8727 Power fault has been detected on port %d",
                                    oc_port);
                        elink_cb_event_log(sc, ELINK_LOG_ID_OVER_CURRENT, oc_port);     //"Error: Power fault on Port %d has "
                                    "8727 Power fault has been detected on port %d",
                                    oc_port);
                        elink_cb_event_log(sc, ELINK_LOG_ID_OVER_CURRENT, oc_port);     //"Error: Power fault on Port %d has "
@@ -8940,10 +8950,10 @@ static uint8_t elink_8727_read_status(struct elink_phy *phy,
        }
 
        if (!(phy->flags & ELINK_FLAGS_SFP_NOT_APPROVED)) {
        }
 
        if (!(phy->flags & ELINK_FLAGS_SFP_NOT_APPROVED)) {
-               PMD_DRV_LOG(DEBUG, "Enabling 8727 TX laser");
+               PMD_DRV_LOG(DEBUG, sc, "Enabling 8727 TX laser");
                elink_sfp_set_transmitter(params, phy, 1);
        } else {
                elink_sfp_set_transmitter(params, phy, 1);
        } else {
-               PMD_DRV_LOG(DEBUG, "Tx is disabled");
+               PMD_DRV_LOG(DEBUG, sc, "Tx is disabled");
                return 0;
        }
 
                return 0;
        }
 
@@ -8957,16 +8967,16 @@ static uint8_t elink_8727_read_status(struct elink_phy *phy,
        if ((link_status & (1 << 2)) && (!(link_status & (1 << 15)))) {
                link_up = 1;
                vars->line_speed = ELINK_SPEED_10000;
        if ((link_status & (1 << 2)) && (!(link_status & (1 << 15)))) {
                link_up = 1;
                vars->line_speed = ELINK_SPEED_10000;
-               PMD_DRV_LOG(DEBUG, "port %x: External link up in 10G",
+               PMD_DRV_LOG(DEBUG, sc, "port %x: External link up in 10G",
                            params->port);
        } else if ((link_status & (1 << 0)) && (!(link_status & (1 << 13)))) {
                link_up = 1;
                vars->line_speed = ELINK_SPEED_1000;
                            params->port);
        } else if ((link_status & (1 << 0)) && (!(link_status & (1 << 13)))) {
                link_up = 1;
                vars->line_speed = ELINK_SPEED_1000;
-               PMD_DRV_LOG(DEBUG, "port %x: External link up in 1G",
+               PMD_DRV_LOG(DEBUG, sc, "port %x: External link up in 1G",
                            params->port);
        } else {
                link_up = 0;
                            params->port);
        } else {
                link_up = 0;
-               PMD_DRV_LOG(DEBUG, "port %x: External link is down",
+               PMD_DRV_LOG(DEBUG, sc, "port %x: External link is down",
                            params->port);
        }
 
                            params->port);
        }
 
@@ -8986,7 +8996,7 @@ static uint8_t elink_8727_read_status(struct elink_phy *phy,
        if (link_up) {
                elink_ext_phy_resolve_fc(phy, params, vars);
                vars->duplex = DUPLEX_FULL;
        if (link_up) {
                elink_ext_phy_resolve_fc(phy, params, vars);
                vars->duplex = DUPLEX_FULL;
-               PMD_DRV_LOG(DEBUG, "duplex = 0x%x", vars->duplex);
+               PMD_DRV_LOG(DEBUG, sc, "duplex = 0x%x", vars->duplex);
        }
 
        if ((ELINK_DUAL_MEDIA(params)) &&
        }
 
        if ((ELINK_DUAL_MEDIA(params)) &&
@@ -9058,7 +9068,7 @@ static void elink_save_848xx_spirom_version(struct elink_phy *phy,
                        DELAY(5);
                }
                if (cnt == 100) {
                        DELAY(5);
                }
                if (cnt == 100) {
-                       PMD_DRV_LOG(DEBUG, "Unable to read 848xx "
+                       PMD_DRV_LOG(DEBUG, sc, "Unable to read 848xx "
                                    "phy fw version(1)");
                        elink_save_spirom_version(sc, port, 0, phy->ver_addr);
                        return;
                                    "phy fw version(1)");
                        elink_save_spirom_version(sc, port, 0, phy->ver_addr);
                        return;
@@ -9075,7 +9085,7 @@ static void elink_save_848xx_spirom_version(struct elink_phy *phy,
                        DELAY(5);
                }
                if (cnt == 100) {
                        DELAY(5);
                }
                if (cnt == 100) {
-                       PMD_DRV_LOG(DEBUG, "Unable to read 848xx phy fw "
+                       PMD_DRV_LOG(DEBUG, sc, "Unable to read 848xx phy fw "
                                    "version(2)");
                        elink_save_spirom_version(sc, port, 0, phy->ver_addr);
                        return;
                                    "version(2)");
                        elink_save_spirom_version(sc, port, 0, phy->ver_addr);
                        return;
@@ -9188,7 +9198,7 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
                autoneg_val |= (1 << 9 | 1 << 12);
                if (phy->req_duplex == DUPLEX_FULL)
                        an_1000_val |= (1 << 9);
                autoneg_val |= (1 << 9 | 1 << 12);
                if (phy->req_duplex == DUPLEX_FULL)
                        an_1000_val |= (1 << 9);
-               PMD_DRV_LOG(DEBUG, "Advertising 1G");
+               PMD_DRV_LOG(DEBUG, sc, "Advertising 1G");
        } else
                an_1000_val &= ~((1 << 8) | (1 << 9));
 
        } else
                an_1000_val &= ~((1 << 8) | (1 << 9));
 
@@ -9204,7 +9214,7 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
                         */
                        autoneg_val |= (1 << 9 | 1 << 12);
                        an_10_100_val |= (1 << 8);
                         */
                        autoneg_val |= (1 << 9 | 1 << 12);
                        an_10_100_val |= (1 << 8);
-                       PMD_DRV_LOG(DEBUG, "Advertising 100M-FD");
+                       PMD_DRV_LOG(DEBUG, sc, "Advertising 100M-FD");
                }
 
                if (phy->speed_cap_mask &
                }
 
                if (phy->speed_cap_mask &
@@ -9213,7 +9223,7 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
                         */
                        autoneg_val |= (1 << 9 | 1 << 12);
                        an_10_100_val |= (1 << 7);
                         */
                        autoneg_val |= (1 << 9 | 1 << 12);
                        an_10_100_val |= (1 << 7);
-                       PMD_DRV_LOG(DEBUG, "Advertising 100M-HD");
+                       PMD_DRV_LOG(DEBUG, sc, "Advertising 100M-HD");
                }
 
                if ((phy->speed_cap_mask &
                }
 
                if ((phy->speed_cap_mask &
@@ -9221,7 +9231,7 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
                    (phy->supported & ELINK_SUPPORTED_10baseT_Full)) {
                        an_10_100_val |= (1 << 6);
                        autoneg_val |= (1 << 9 | 1 << 12);
                    (phy->supported & ELINK_SUPPORTED_10baseT_Full)) {
                        an_10_100_val |= (1 << 6);
                        autoneg_val |= (1 << 9 | 1 << 12);
-                       PMD_DRV_LOG(DEBUG, "Advertising 10M-FD");
+                       PMD_DRV_LOG(DEBUG, sc, "Advertising 10M-FD");
                }
 
                if ((phy->speed_cap_mask &
                }
 
                if ((phy->speed_cap_mask &
@@ -9229,7 +9239,7 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
                    (phy->supported & ELINK_SUPPORTED_10baseT_Half)) {
                        an_10_100_val |= (1 << 5);
                        autoneg_val |= (1 << 9 | 1 << 12);
                    (phy->supported & ELINK_SUPPORTED_10baseT_Half)) {
                        an_10_100_val |= (1 << 5);
                        autoneg_val |= (1 << 9 | 1 << 12);
-                       PMD_DRV_LOG(DEBUG, "Advertising 10M-HD");
+                       PMD_DRV_LOG(DEBUG, sc, "Advertising 10M-HD");
                }
        }
 
                }
        }
 
@@ -9244,7 +9254,7 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
                                 (1 << 15 | 1 << 9 | 7 << 0));
                /* The PHY needs this set even for forced link. */
                an_10_100_val |= (1 << 8) | (1 << 7);
                                 (1 << 15 | 1 << 9 | 7 << 0));
                /* The PHY needs this set even for forced link. */
                an_10_100_val |= (1 << 8) | (1 << 7);
-               PMD_DRV_LOG(DEBUG, "Setting 100M force");
+               PMD_DRV_LOG(DEBUG, sc, "Setting 100M force");
        }
        if ((phy->req_line_speed == ELINK_SPEED_10) &&
            (phy->supported &
        }
        if ((phy->req_line_speed == ELINK_SPEED_10) &&
            (phy->supported &
@@ -9253,7 +9263,7 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
                elink_cl45_write(sc, phy,
                                 MDIO_AN_DEVAD, MDIO_AN_REG_8481_AUX_CTRL,
                                 (1 << 15 | 1 << 9 | 7 << 0));
                elink_cl45_write(sc, phy,
                                 MDIO_AN_DEVAD, MDIO_AN_REG_8481_AUX_CTRL,
                                 (1 << 15 | 1 << 9 | 7 << 0));
-               PMD_DRV_LOG(DEBUG, "Setting 10M force");
+               PMD_DRV_LOG(DEBUG, sc, "Setting 10M force");
        }
 
        elink_cl45_write(sc, phy,
        }
 
        elink_cl45_write(sc, phy,
@@ -9277,7 +9287,7 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
             (phy->speed_cap_mask &
              PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) ||
            (phy->req_line_speed == ELINK_SPEED_10000)) {
             (phy->speed_cap_mask &
              PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) ||
            (phy->req_line_speed == ELINK_SPEED_10000)) {
-               PMD_DRV_LOG(DEBUG, "Advertising 10G");
+               PMD_DRV_LOG(DEBUG, sc, "Advertising 10G");
                /* Restart autoneg for 10G */
 
                elink_cl45_read_or_write(sc, phy,
                /* Restart autoneg for 10G */
 
                elink_cl45_read_or_write(sc, phy,
@@ -9333,7 +9343,7 @@ static elink_status_t elink_84833_cmd_hdlr(struct elink_phy *phy,
                DELAY(1000 * 1);
        }
        if (idx >= PHY84833_CMDHDLR_WAIT) {
                DELAY(1000 * 1);
        }
        if (idx >= PHY84833_CMDHDLR_WAIT) {
-               PMD_DRV_LOG(DEBUG, "FW cmd: FW not ready.");
+               PMD_DRV_LOG(DEBUG, sc, "FW cmd: FW not ready.");
                return ELINK_STATUS_ERROR;
        }
 
                return ELINK_STATUS_ERROR;
        }
 
@@ -9355,7 +9365,7 @@ static elink_status_t elink_84833_cmd_hdlr(struct elink_phy *phy,
        }
        if ((idx >= PHY84833_CMDHDLR_WAIT) ||
            (val == PHY84833_STATUS_CMD_COMPLETE_ERROR)) {
        }
        if ((idx >= PHY84833_CMDHDLR_WAIT) ||
            (val == PHY84833_STATUS_CMD_COMPLETE_ERROR)) {
-               PMD_DRV_LOG(DEBUG, "FW cmd failed.");
+               PMD_DRV_LOG(DEBUG, sc, "FW cmd failed.");
                return ELINK_STATUS_ERROR;
        }
        /* Gather returning data */
                return ELINK_STATUS_ERROR;
        }
        /* Gather returning data */
@@ -9397,7 +9407,7 @@ static elink_status_t elink_84833_pair_swap_cfg(struct elink_phy *phy,
                                      PHY84833_CMD_SET_PAIR_SWAP, data,
                                      PHY84833_CMDHDLR_MAX_ARGS);
        if (status == ELINK_STATUS_OK) {
                                      PHY84833_CMD_SET_PAIR_SWAP, data,
                                      PHY84833_CMDHDLR_MAX_ARGS);
        if (status == ELINK_STATUS_OK) {
-               PMD_DRV_LOG(DEBUG, "Pairswap OK, val=0x%x", data[1]);
+               PMD_DRV_LOG(DEBUG, sc, "Pairswap OK, val=0x%x", data[1]);
        }
 
        return status;
        }
 
        return status;
@@ -9473,7 +9483,8 @@ static void elink_84833_hw_reset_phy(struct elink_phy *phy,
        elink_cb_gpio_mult_write(sc, reset_gpios,
                                 MISC_REGISTERS_GPIO_OUTPUT_LOW);
        DELAY(10);
        elink_cb_gpio_mult_write(sc, reset_gpios,
                                 MISC_REGISTERS_GPIO_OUTPUT_LOW);
        DELAY(10);
-       PMD_DRV_LOG(DEBUG, "84833 hw reset on pin values 0x%x", reset_gpios);
+       PMD_DRV_LOG(DEBUG, sc,
+                   "84833 hw reset on pin values 0x%x", reset_gpios);
 }
 
 static elink_status_t elink_8483x_disable_eee(struct elink_phy *phy,
 }
 
 static elink_status_t elink_8483x_disable_eee(struct elink_phy *phy,
@@ -9483,13 +9494,13 @@ static elink_status_t elink_8483x_disable_eee(struct elink_phy *phy,
        elink_status_t rc;
        uint16_t cmd_args = 0;
 
        elink_status_t rc;
        uint16_t cmd_args = 0;
 
-       PMD_DRV_LOG(DEBUG, "Don't Advertise 10GBase-T EEE");
+       PMD_DRV_LOG(DEBUG, params->sc, "Don't Advertise 10GBase-T EEE");
 
        /* Prevent Phy from working in EEE and advertising it */
        rc = elink_84833_cmd_hdlr(phy, params,
                                  PHY84833_CMD_SET_EEE_MODE, &cmd_args, 1);
        if (rc != ELINK_STATUS_OK) {
 
        /* Prevent Phy from working in EEE and advertising it */
        rc = elink_84833_cmd_hdlr(phy, params,
                                  PHY84833_CMD_SET_EEE_MODE, &cmd_args, 1);
        if (rc != ELINK_STATUS_OK) {
-               PMD_DRV_LOG(DEBUG, "EEE disable failed.");
+               PMD_DRV_LOG(DEBUG, params->sc, "EEE disable failed.");
                return rc;
        }
 
                return rc;
        }
 
@@ -9506,7 +9517,7 @@ static elink_status_t elink_8483x_enable_eee(struct elink_phy *phy,
        rc = elink_84833_cmd_hdlr(phy, params,
                                  PHY84833_CMD_SET_EEE_MODE, &cmd_args, 1);
        if (rc != ELINK_STATUS_OK) {
        rc = elink_84833_cmd_hdlr(phy, params,
                                  PHY84833_CMD_SET_EEE_MODE, &cmd_args, 1);
        if (rc != ELINK_STATUS_OK) {
-               PMD_DRV_LOG(DEBUG, "EEE enable failed.");
+               PMD_DRV_LOG(DEBUG, params->sc, "EEE enable failed.");
                return rc;
        }
 
                return rc;
        }
 
@@ -9599,7 +9610,7 @@ static uint8_t elink_848x3_config_init(struct elink_phy *phy,
 
        elink_cl45_write(sc, phy, MDIO_CTL_DEVAD,
                         MDIO_CTL_REG_84823_MEDIA, val);
 
        elink_cl45_write(sc, phy, MDIO_CTL_DEVAD,
                         MDIO_CTL_REG_84823_MEDIA, val);
-       PMD_DRV_LOG(DEBUG, "Multi_phy config = 0x%x, Media control = 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "Multi_phy config = 0x%x, Media control = 0x%x",
                    params->multi_phy_config, val);
 
        if ((phy->type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BNX2X84833) ||
                    params->multi_phy_config, val);
 
        if ((phy->type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BNX2X84833) ||
@@ -9615,7 +9626,7 @@ static uint8_t elink_848x3_config_init(struct elink_phy *phy,
                                          PHY84833_CMD_SET_EEE_MODE, cmd_args,
                                          PHY84833_CMDHDLR_MAX_ARGS);
                if (rc != ELINK_STATUS_OK) {
                                          PHY84833_CMD_SET_EEE_MODE, cmd_args,
                                          PHY84833_CMDHDLR_MAX_ARGS);
                if (rc != ELINK_STATUS_OK) {
-                       PMD_DRV_LOG(DEBUG, "Cfg AutogrEEEn failed.");
+                       PMD_DRV_LOG(DEBUG, sc, "Cfg AutogrEEEn failed.");
                }
        }
        if (initialize) {
                }
        }
        if (initialize) {
@@ -9652,7 +9663,7 @@ static uint8_t elink_848x3_config_init(struct elink_phy *phy,
            elink_eee_has_cap(params)) {
                rc = elink_eee_initial_config(params, vars, SHMEM_EEE_10G_ADV);
                if (rc != ELINK_STATUS_OK) {
            elink_eee_has_cap(params)) {
                rc = elink_eee_initial_config(params, vars, SHMEM_EEE_10G_ADV);
                if (rc != ELINK_STATUS_OK) {
-                       PMD_DRV_LOG(DEBUG, "Failed to configure EEE timers");
+                       PMD_DRV_LOG(DEBUG, sc, "Failed to configure EEE timers");
                        elink_8483x_disable_eee(phy, params, vars);
                        return rc;
                }
                        elink_8483x_disable_eee(phy, params, vars);
                        return rc;
                }
@@ -9665,7 +9676,7 @@ static uint8_t elink_848x3_config_init(struct elink_phy *phy,
                else
                        rc = elink_8483x_disable_eee(phy, params, vars);
                if (rc != ELINK_STATUS_OK) {
                else
                        rc = elink_8483x_disable_eee(phy, params, vars);
                if (rc != ELINK_STATUS_OK) {
-                       PMD_DRV_LOG(DEBUG, "Failed to set EEE advertisement");
+                       PMD_DRV_LOG(DEBUG, sc, "Failed to set EEE advertisement");
                        return rc;
                }
        } else {
                        return rc;
                }
        } else {
@@ -9697,7 +9708,7 @@ static uint8_t elink_848xx_read_status(struct elink_phy *phy,
        elink_cl45_read(sc, phy, MDIO_AN_DEVAD, 0xFFFA, &val1);
        elink_cl45_read(sc, phy,
                        MDIO_PMA_DEVAD, MDIO_PMA_REG_8481_PMD_SIGNAL, &val2);
        elink_cl45_read(sc, phy, MDIO_AN_DEVAD, 0xFFFA, &val1);
        elink_cl45_read(sc, phy,
                        MDIO_PMA_DEVAD, MDIO_PMA_REG_8481_PMD_SIGNAL, &val2);
-       PMD_DRV_LOG(DEBUG, "BNX2X848xx: PMD_SIGNAL 1.a811 = 0x%x", val2);
+       PMD_DRV_LOG(DEBUG, sc, "BNX2X848xx: PMD_SIGNAL 1.a811 = 0x%x", val2);
 
        /* Check link 10G */
        if (val2 & (1 << 11)) {
 
        /* Check link 10G */
        if (val2 & (1 << 11)) {
@@ -9719,7 +9730,8 @@ static uint8_t elink_848xx_read_status(struct elink_phy *phy,
                                MDIO_AN_REG_8481_EXPANSION_REG_RD_RW,
                                &legacy_status);
 
                                MDIO_AN_REG_8481_EXPANSION_REG_RD_RW,
                                &legacy_status);
 
-               PMD_DRV_LOG(DEBUG, "Legacy speed status = 0x%x", legacy_status);
+               PMD_DRV_LOG(DEBUG, sc,
+                           "Legacy speed status = 0x%x", legacy_status);
                link_up = ((legacy_status & (1 << 11)) == (1 << 11));
                legacy_speed = (legacy_status & (3 << 9));
                if (legacy_speed == (0 << 9))
                link_up = ((legacy_status & (1 << 11)) == (1 << 11));
                legacy_speed = (legacy_status & (3 << 9));
                if (legacy_speed == (0 << 9))
@@ -9749,7 +9761,7 @@ static uint8_t elink_848xx_read_status(struct elink_phy *phy,
                        else
                                vars->duplex = DUPLEX_HALF;
 
                        else
                                vars->duplex = DUPLEX_HALF;
 
-                       PMD_DRV_LOG(DEBUG,
+                       PMD_DRV_LOG(DEBUG, sc,
                                    "Link is up in %dMbps, is_duplex_full= %d",
                                    vars->line_speed,
                                    (vars->duplex == DUPLEX_FULL));
                                    "Link is up in %dMbps, is_duplex_full= %d",
                                    vars->line_speed,
                                    (vars->duplex == DUPLEX_FULL));
@@ -9771,7 +9783,7 @@ static uint8_t elink_848xx_read_status(struct elink_phy *phy,
                }
        }
        if (link_up) {
                }
        }
        if (link_up) {
-               PMD_DRV_LOG(DEBUG, "BNX2X848x3: link speed is %d",
+               PMD_DRV_LOG(DEBUG, sc, "BNX2X848x3: link speed is %d",
                            vars->line_speed);
                elink_ext_phy_resolve_fc(phy, params, vars);
 
                            vars->line_speed);
                elink_ext_phy_resolve_fc(phy, params, vars);
 
@@ -9888,7 +9900,7 @@ static void elink_848xx_set_link_led(struct elink_phy *phy,
        switch (mode) {
        case ELINK_LED_MODE_OFF:
 
        switch (mode) {
        case ELINK_LED_MODE_OFF:
 
-               PMD_DRV_LOG(DEBUG, "Port 0x%x: LED MODE OFF", port);
+               PMD_DRV_LOG(DEBUG, sc, "Port 0x%x: LED MODE OFF", port);
 
                if ((params->hw_led_mode << SHARED_HW_CFG_LED_MODE_SHIFT) ==
                    SHARED_HW_CFG_LED_EXTPHY1) {
 
                if ((params->hw_led_mode << SHARED_HW_CFG_LED_MODE_SHIFT) ==
                    SHARED_HW_CFG_LED_EXTPHY1) {
@@ -9918,7 +9930,8 @@ static void elink_848xx_set_link_led(struct elink_phy *phy,
                break;
        case ELINK_LED_MODE_FRONT_PANEL_OFF:
 
                break;
        case ELINK_LED_MODE_FRONT_PANEL_OFF:
 
-               PMD_DRV_LOG(DEBUG, "Port 0x%x: LED MODE FRONT PANEL OFF", port);
+               PMD_DRV_LOG(DEBUG, sc,
+                           "Port 0x%x: LED MODE FRONT PANEL OFF", port);
 
                if ((params->hw_led_mode << SHARED_HW_CFG_LED_MODE_SHIFT) ==
                    SHARED_HW_CFG_LED_EXTPHY1) {
 
                if ((params->hw_led_mode << SHARED_HW_CFG_LED_MODE_SHIFT) ==
                    SHARED_HW_CFG_LED_EXTPHY1) {
@@ -9968,7 +9981,7 @@ static void elink_848xx_set_link_led(struct elink_phy *phy,
                break;
        case ELINK_LED_MODE_ON:
 
                break;
        case ELINK_LED_MODE_ON:
 
-               PMD_DRV_LOG(DEBUG, "Port 0x%x: LED MODE ON", port);
+               PMD_DRV_LOG(DEBUG, sc, "Port 0x%x: LED MODE ON", port);
 
                if ((params->hw_led_mode << SHARED_HW_CFG_LED_MODE_SHIFT) ==
                    SHARED_HW_CFG_LED_EXTPHY1) {
 
                if ((params->hw_led_mode << SHARED_HW_CFG_LED_MODE_SHIFT) ==
                    SHARED_HW_CFG_LED_EXTPHY1) {
@@ -10028,7 +10041,7 @@ static void elink_848xx_set_link_led(struct elink_phy *phy,
 
        case ELINK_LED_MODE_OPER:
 
 
        case ELINK_LED_MODE_OPER:
 
-               PMD_DRV_LOG(DEBUG, "Port 0x%x: LED MODE OPER", port);
+               PMD_DRV_LOG(DEBUG, sc, "Port 0x%x: LED MODE OPER", port);
 
                if ((params->hw_led_mode << SHARED_HW_CFG_LED_MODE_SHIFT) ==
                    SHARED_HW_CFG_LED_EXTPHY1) {
 
                if ((params->hw_led_mode << SHARED_HW_CFG_LED_MODE_SHIFT) ==
                    SHARED_HW_CFG_LED_EXTPHY1) {
@@ -10043,7 +10056,7 @@ static void elink_848xx_set_link_led(struct elink_phy *phy,
                              >>
                              MDIO_PMA_REG_8481_LINK_SIGNAL_LED4_ENABLE_SHIFT))
                        {
                              >>
                              MDIO_PMA_REG_8481_LINK_SIGNAL_LED4_ENABLE_SHIFT))
                        {
-                               PMD_DRV_LOG(DEBUG, "Setting LINK_SIGNAL");
+                               PMD_DRV_LOG(DEBUG, sc, "Setting LINK_SIGNAL");
                                elink_cl45_write(sc, phy,
                                                 MDIO_PMA_DEVAD,
                                                 MDIO_PMA_REG_8481_LINK_SIGNAL,
                                elink_cl45_write(sc, phy,
                                                 MDIO_PMA_DEVAD,
                                                 MDIO_PMA_REG_8481_LINK_SIGNAL,
@@ -10156,7 +10169,7 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
        uint16_t autoneg_val, an_1000_val, an_10_100_val, fc_val, temp;
        uint32_t cfg_pin;
 
        uint16_t autoneg_val, an_1000_val, an_10_100_val, fc_val, temp;
        uint32_t cfg_pin;
 
-       PMD_DRV_LOG(DEBUG, "54618SE cfg init");
+       PMD_DRV_LOG(DEBUG, sc, "54618SE cfg init");
        DELAY(1000 * 1);
 
        /* This works with E3 only, no need to check the chip
        DELAY(1000 * 1);
 
        /* This works with E3 only, no need to check the chip
@@ -10229,7 +10242,7 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
                autoneg_val |= (1 << 9 | 1 << 12);
                if (phy->req_duplex == DUPLEX_FULL)
                        an_1000_val |= (1 << 9);
                autoneg_val |= (1 << 9 | 1 << 12);
                if (phy->req_duplex == DUPLEX_FULL)
                        an_1000_val |= (1 << 9);
-               PMD_DRV_LOG(DEBUG, "Advertising 1G");
+               PMD_DRV_LOG(DEBUG, sc, "Advertising 1G");
        } else
                an_1000_val &= ~((1 << 8) | (1 << 9));
 
        } else
                an_1000_val &= ~((1 << 8) | (1 << 9));
 
@@ -10242,25 +10255,25 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
                    PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_HALF) {
                        an_10_100_val |= (1 << 5);
                        autoneg_val |= (1 << 9 | 1 << 12);
                    PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_HALF) {
                        an_10_100_val |= (1 << 5);
                        autoneg_val |= (1 << 9 | 1 << 12);
-                       PMD_DRV_LOG(DEBUG, "Advertising 10M-HD");
+                       PMD_DRV_LOG(DEBUG, sc, "Advertising 10M-HD");
                }
                if (phy->speed_cap_mask &
                    PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_HALF) {
                        an_10_100_val |= (1 << 6);
                        autoneg_val |= (1 << 9 | 1 << 12);
                }
                if (phy->speed_cap_mask &
                    PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_HALF) {
                        an_10_100_val |= (1 << 6);
                        autoneg_val |= (1 << 9 | 1 << 12);
-                       PMD_DRV_LOG(DEBUG, "Advertising 10M-FD");
+                       PMD_DRV_LOG(DEBUG, sc, "Advertising 10M-FD");
                }
                if (phy->speed_cap_mask &
                    PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_HALF) {
                        an_10_100_val |= (1 << 7);
                        autoneg_val |= (1 << 9 | 1 << 12);
                }
                if (phy->speed_cap_mask &
                    PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_HALF) {
                        an_10_100_val |= (1 << 7);
                        autoneg_val |= (1 << 9 | 1 << 12);
-                       PMD_DRV_LOG(DEBUG, "Advertising 100M-HD");
+                       PMD_DRV_LOG(DEBUG, sc, "Advertising 100M-HD");
                }
                if (phy->speed_cap_mask &
                    PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_FULL) {
                        an_10_100_val |= (1 << 8);
                        autoneg_val |= (1 << 9 | 1 << 12);
                }
                if (phy->speed_cap_mask &
                    PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_FULL) {
                        an_10_100_val |= (1 << 8);
                        autoneg_val |= (1 << 9 | 1 << 12);
-                       PMD_DRV_LOG(DEBUG, "Advertising 100M-FD");
+                       PMD_DRV_LOG(DEBUG, sc, "Advertising 100M-FD");
                }
        }
 
                }
        }
 
@@ -10269,12 +10282,12 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
                autoneg_val |= (1 << 13);
                /* Enabled AUTO-MDIX when autoneg is disabled */
                elink_cl22_write(sc, phy, 0x18, (1 << 15 | 1 << 9 | 7 << 0));
                autoneg_val |= (1 << 13);
                /* Enabled AUTO-MDIX when autoneg is disabled */
                elink_cl22_write(sc, phy, 0x18, (1 << 15 | 1 << 9 | 7 << 0));
-               PMD_DRV_LOG(DEBUG, "Setting 100M force");
+               PMD_DRV_LOG(DEBUG, sc, "Setting 100M force");
        }
        if (phy->req_line_speed == ELINK_SPEED_10) {
                /* Enabled AUTO-MDIX when autoneg is disabled */
                elink_cl22_write(sc, phy, 0x18, (1 << 15 | 1 << 9 | 7 << 0));
        }
        if (phy->req_line_speed == ELINK_SPEED_10) {
                /* Enabled AUTO-MDIX when autoneg is disabled */
                elink_cl22_write(sc, phy, 0x18, (1 << 15 | 1 << 9 | 7 << 0));
-               PMD_DRV_LOG(DEBUG, "Setting 10M force");
+               PMD_DRV_LOG(DEBUG, sc, "Setting 10M force");
        }
 
        if ((phy->flags & ELINK_FLAGS_EEE) && elink_eee_has_cap(params)) {
        }
 
        if ((phy->flags & ELINK_FLAGS_EEE) && elink_eee_has_cap(params)) {
@@ -10289,7 +10302,7 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
 
                rc = elink_eee_initial_config(params, vars, SHMEM_EEE_1G_ADV);
                if (rc != ELINK_STATUS_OK) {
 
                rc = elink_eee_initial_config(params, vars, SHMEM_EEE_1G_ADV);
                if (rc != ELINK_STATUS_OK) {
-                       PMD_DRV_LOG(DEBUG, "Failed to configure EEE timers");
+                       PMD_DRV_LOG(DEBUG, sc, "Failed to configure EEE timers");
                        elink_eee_disable(phy, params, vars);
                } else if ((params->eee_mode & ELINK_EEE_MODE_ADV_LPI) &&
                           (phy->req_duplex == DUPLEX_FULL) &&
                        elink_eee_disable(phy, params, vars);
                } else if ((params->eee_mode & ELINK_EEE_MODE_ADV_LPI) &&
                           (phy->req_duplex == DUPLEX_FULL) &&
@@ -10303,7 +10316,7 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
                        elink_eee_advertise(phy, params, vars,
                                            SHMEM_EEE_1G_ADV);
                } else {
                        elink_eee_advertise(phy, params, vars,
                                            SHMEM_EEE_1G_ADV);
                } else {
-                       PMD_DRV_LOG(DEBUG, "Don't Advertise 1GBase-T EEE");
+                       PMD_DRV_LOG(DEBUG, sc, "Don't Advertise 1GBase-T EEE");
                        elink_eee_disable(phy, params, vars);
                }
        } else {
                        elink_eee_disable(phy, params, vars);
                }
        } else {
@@ -10315,10 +10328,10 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
                        if (params->feature_config_flags &
                            ELINK_FEATURE_CONFIG_AUTOGREEEN_ENABLED) {
                                temp = 6;
                        if (params->feature_config_flags &
                            ELINK_FEATURE_CONFIG_AUTOGREEEN_ENABLED) {
                                temp = 6;
-                               PMD_DRV_LOG(DEBUG, "Enabling Auto-GrEEEn");
+                               PMD_DRV_LOG(DEBUG, sc, "Enabling Auto-GrEEEn");
                        } else {
                                temp = 0;
                        } else {
                                temp = 0;
-                               PMD_DRV_LOG(DEBUG, "Don't Adv. EEE");
+                               PMD_DRV_LOG(DEBUG, sc, "Don't Adv. EEE");
                        }
                        elink_cl45_write(sc, phy, MDIO_AN_DEVAD,
                                         MDIO_AN_REG_EEE_ADV, temp);
                        }
                        elink_cl45_write(sc, phy, MDIO_AN_DEVAD,
                                         MDIO_AN_REG_EEE_ADV, temp);
@@ -10346,7 +10359,7 @@ static void elink_5461x_set_link_led(struct elink_phy *phy,
        elink_cl22_read(sc, phy, MDIO_REG_GPHY_SHADOW, &temp);
        temp &= 0xff00;
 
        elink_cl22_read(sc, phy, MDIO_REG_GPHY_SHADOW, &temp);
        temp &= 0xff00;
 
-       PMD_DRV_LOG(DEBUG, "54618x set link led (mode=%x)", mode);
+       PMD_DRV_LOG(DEBUG, sc, "54618x set link led (mode=%x)", mode);
        switch (mode) {
        case ELINK_LED_MODE_FRONT_PANEL_OFF:
        case ELINK_LED_MODE_OFF:
        switch (mode) {
        case ELINK_LED_MODE_FRONT_PANEL_OFF:
        case ELINK_LED_MODE_OFF:
@@ -10404,7 +10417,7 @@ static uint8_t elink_54618se_read_status(struct elink_phy *phy,
 
        /* Get speed operation status */
        elink_cl22_read(sc, phy, MDIO_REG_GPHY_AUX_STATUS, &legacy_status);
 
        /* Get speed operation status */
        elink_cl22_read(sc, phy, MDIO_REG_GPHY_AUX_STATUS, &legacy_status);
-       PMD_DRV_LOG(DEBUG, "54618SE read_status: 0x%x", legacy_status);
+       PMD_DRV_LOG(DEBUG, sc, "54618SE read_status: 0x%x", legacy_status);
 
        /* Read status to clear the PHY interrupt. */
        elink_cl22_read(sc, phy, MDIO_REG_INTR_STATUS, &val);
 
        /* Read status to clear the PHY interrupt. */
        elink_cl22_read(sc, phy, MDIO_REG_INTR_STATUS, &val);
@@ -10436,7 +10449,7 @@ static uint8_t elink_54618se_read_status(struct elink_phy *phy,
                } else          /* Should not happen */
                        vars->line_speed = 0;
 
                } else          /* Should not happen */
                        vars->line_speed = 0;
 
-               PMD_DRV_LOG(DEBUG,
+               PMD_DRV_LOG(DEBUG, sc,
                            "Link is up in %dMbps, is_duplex_full= %d",
                            vars->line_speed, (vars->duplex == DUPLEX_FULL));
 
                            "Link is up in %dMbps, is_duplex_full= %d",
                            vars->line_speed, (vars->duplex == DUPLEX_FULL));
 
@@ -10450,7 +10463,7 @@ static uint8_t elink_54618se_read_status(struct elink_phy *phy,
                        vars->link_status |=
                            LINK_STATUS_PARALLEL_DETECTION_USED;
 
                        vars->link_status |=
                            LINK_STATUS_PARALLEL_DETECTION_USED;
 
-               PMD_DRV_LOG(DEBUG, "BNX2X54618SE: link speed is %d",
+               PMD_DRV_LOG(DEBUG, sc, "BNX2X54618SE: link speed is %d",
                            vars->line_speed);
 
                elink_ext_phy_resolve_fc(phy, params, vars);
                            vars->line_speed);
 
                elink_ext_phy_resolve_fc(phy, params, vars);
@@ -10498,7 +10511,7 @@ static void elink_54618se_config_loopback(struct elink_phy *phy,
        uint16_t val;
        uint32_t umac_base = params->port ? GRCBASE_UMAC1 : GRCBASE_UMAC0;
 
        uint16_t val;
        uint32_t umac_base = params->port ? GRCBASE_UMAC1 : GRCBASE_UMAC0;
 
-       PMD_DRV_LOG(DEBUG, "2PMA/PMD ext_phy_loopback: 54618se");
+       PMD_DRV_LOG(DEBUG, sc, "2PMA/PMD ext_phy_loopback: 54618se");
 
        /* Enable master/slave manual mmode and set to master */
        /* mii write 9 [bits set 11 12] */
 
        /* Enable master/slave manual mmode and set to master */
        /* mii write 9 [bits set 11 12] */
@@ -10549,7 +10562,7 @@ static uint8_t elink_7101_config_init(struct elink_phy *phy,
 {
        uint16_t fw_ver1, fw_ver2, val;
        struct bnx2x_softc *sc = params->sc;
 {
        uint16_t fw_ver1, fw_ver2, val;
        struct bnx2x_softc *sc = params->sc;
-       PMD_DRV_LOG(DEBUG, "Setting the SFX7101 LASI indication");
+       PMD_DRV_LOG(DEBUG, sc, "Setting the SFX7101 LASI indication");
 
        /* Restore normal power mode */
        elink_cb_gpio_write(sc, MISC_REGISTERS_GPIO_2,
 
        /* Restore normal power mode */
        elink_cb_gpio_write(sc, MISC_REGISTERS_GPIO_2,
@@ -10559,7 +10572,7 @@ static uint8_t elink_7101_config_init(struct elink_phy *phy,
        elink_wait_reset_complete(sc, phy, params);
 
        elink_cl45_write(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_CTRL, 0x1);
        elink_wait_reset_complete(sc, phy, params);
 
        elink_cl45_write(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_CTRL, 0x1);
-       PMD_DRV_LOG(DEBUG, "Setting the SFX7101 LED to blink on traffic");
+       PMD_DRV_LOG(DEBUG, sc, "Setting the SFX7101 LED to blink on traffic");
        elink_cl45_write(sc, phy,
                         MDIO_PMA_DEVAD, MDIO_PMA_REG_7107_LED_CNTL, (1 << 3));
 
        elink_cl45_write(sc, phy,
                         MDIO_PMA_DEVAD, MDIO_PMA_REG_7107_LED_CNTL, (1 << 3));
 
@@ -10590,10 +10603,10 @@ static uint8_t elink_7101_read_status(struct elink_phy *phy,
        uint16_t val1, val2;
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val2);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val1);
        uint16_t val1, val2;
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val2);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val1);
-       PMD_DRV_LOG(DEBUG, "10G-base-T LASI status 0x%x->0x%x", val2, val1);
+       PMD_DRV_LOG(DEBUG, sc, "10G-base-T LASI status 0x%x->0x%x", val2, val1);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val2);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val1);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val2);
        elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val1);
-       PMD_DRV_LOG(DEBUG, "10G-base-T PMA status 0x%x->0x%x", val2, val1);
+       PMD_DRV_LOG(DEBUG, sc, "10G-base-T PMA status 0x%x->0x%x", val2, val1);
        link_up = ((val1 & 4) == 4);
        /* If link is up print the AN outcome of the SFX7101 PHY */
        if (link_up) {
        link_up = ((val1 & 4) == 4);
        /* If link is up print the AN outcome of the SFX7101 PHY */
        if (link_up) {
@@ -10602,7 +10615,7 @@ static uint8_t elink_7101_read_status(struct elink_phy *phy,
                                &val2);
                vars->line_speed = ELINK_SPEED_10000;
                vars->duplex = DUPLEX_FULL;
                                &val2);
                vars->line_speed = ELINK_SPEED_10000;
                vars->duplex = DUPLEX_FULL;
-               PMD_DRV_LOG(DEBUG, "SFX7101 AN status 0x%x->Master=%x",
+               PMD_DRV_LOG(DEBUG, sc, "SFX7101 AN status 0x%x->Master=%x",
                            val2, (val2 & (1 << 14)));
                elink_ext_phy_10G_an_resolve(sc, phy, vars);
                elink_ext_phy_resolve_fc(phy, params, vars);
                            val2, (val2 & (1 << 14)));
                elink_ext_phy_10G_an_resolve(sc, phy, vars);
                elink_ext_phy_resolve_fc(phy, params, vars);
@@ -11209,7 +11222,7 @@ static uint32_t elink_get_ext_phy_config(struct bnx2x_softc *sc,
                                                 external_phy_config2));
                break;
        default:
                                                 external_phy_config2));
                break;
        default:
-               PMD_DRV_LOG(DEBUG, "Invalid phy_index %d", phy_index);
+               PMD_DRV_LOG(DEBUG, sc, "Invalid phy_index %d", phy_index);
                return ELINK_STATUS_ERROR;
        }
 
                return ELINK_STATUS_ERROR;
        }
 
@@ -11232,7 +11245,7 @@ static elink_status_t elink_populate_int_phy(struct bnx2x_softc *sc,
            (REG_RD(sc, MISC_REG_CHIP_NUM) << 16) |
            ((REG_RD(sc, MISC_REG_CHIP_REV) & 0xf) << 12);
 
            (REG_RD(sc, MISC_REG_CHIP_NUM) << 16) |
            ((REG_RD(sc, MISC_REG_CHIP_REV) & 0xf) << 12);
 
-       PMD_DRV_LOG(DEBUG, ":chip_id = 0x%x", chip_id);
+       PMD_DRV_LOG(DEBUG, sc, ":chip_id = 0x%x", chip_id);
        if (USES_WARPCORE(sc)) {
                uint32_t serdes_net_if;
                phy_addr = REG_RD(sc, MISC_REG_WC0_CTRL_PHY_ADDR);
        if (USES_WARPCORE(sc)) {
                uint32_t serdes_net_if;
                phy_addr = REG_RD(sc, MISC_REG_WC0_CTRL_PHY_ADDR);
@@ -11309,7 +11322,7 @@ static elink_status_t elink_populate_int_phy(struct bnx2x_softc *sc,
                        phy->flags &= ~ELINK_FLAGS_TX_ERROR_CHECK;
                        break;
                default:
                        phy->flags &= ~ELINK_FLAGS_TX_ERROR_CHECK;
                        break;
                default:
-                       PMD_DRV_LOG(DEBUG, "Unknown WC interface type 0x%x",
+                       PMD_DRV_LOG(DEBUG, sc, "Unknown WC interface type 0x%x",
                                    serdes_net_if);
                        break;
                }
                                    serdes_net_if);
                        break;
                }
@@ -11337,7 +11350,7 @@ static elink_status_t elink_populate_int_phy(struct bnx2x_softc *sc,
                        *phy = phy_xgxs;
                        break;
                default:
                        *phy = phy_xgxs;
                        break;
                default:
-                       PMD_DRV_LOG(DEBUG, "Invalid switch_cfg");
+                       PMD_DRV_LOG(DEBUG, sc, "Invalid switch_cfg");
                        return ELINK_STATUS_ERROR;
                }
        }
                        return ELINK_STATUS_ERROR;
                }
        }
@@ -11350,7 +11363,7 @@ static elink_status_t elink_populate_int_phy(struct bnx2x_softc *sc,
        else
                phy->def_md_devad = ELINK_DEFAULT_PHY_DEV_ADDR;
 
        else
                phy->def_md_devad = ELINK_DEFAULT_PHY_DEV_ADDR;
 
-       PMD_DRV_LOG(DEBUG, "Internal phy port=%d, addr=0x%x, mdio_ctl=0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "Internal phy port=%d, addr=0x%x, mdio_ctl=0x%x",
                    port, phy->addr, phy->mdio_ctrl);
 
        elink_populate_preemphasis(sc, shmem_base, phy, port, ELINK_INT_PHY);
                    port, phy->addr, phy->mdio_ctrl);
 
        elink_populate_preemphasis(sc, shmem_base, phy, port, ELINK_INT_PHY);
@@ -11477,9 +11490,9 @@ static elink_status_t elink_populate_ext_phy(struct bnx2x_softc *sc,
                                            ELINK_SUPPORTED_100baseT_Full);
        }
 
                                            ELINK_SUPPORTED_100baseT_Full);
        }
 
-       PMD_DRV_LOG(DEBUG, "phy_type 0x%x port %d found in index %d",
+       PMD_DRV_LOG(DEBUG, sc, "phy_type 0x%x port %d found in index %d",
                    phy_type, port, phy_index);
                    phy_type, port, phy_index);
-       PMD_DRV_LOG(DEBUG, "             addr=0x%x, mdio_ctl=0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "             addr=0x%x, mdio_ctl=0x%x",
                    phy->addr, phy->mdio_ctrl);
        return ELINK_STATUS_OK;
 }
                    phy->addr, phy->mdio_ctrl);
        return ELINK_STATUS_OK;
 }
@@ -11528,7 +11541,7 @@ static void elink_phy_def_cfg(struct elink_params *params,
                                                         speed_capability_mask));
        }
 
                                                         speed_capability_mask));
        }
 
-       PMD_DRV_LOG(DEBUG,
+       PMD_DRV_LOG(DEBUG, sc,
                    "Default config phy idx %x cfg 0x%x speed_cap_mask 0x%x",
                    phy_index, link_config, phy->speed_cap_mask);
 
                    "Default config phy idx %x cfg 0x%x speed_cap_mask 0x%x",
                    phy_index, link_config, phy->speed_cap_mask);
 
@@ -11617,7 +11630,7 @@ elink_status_t elink_phy_probe(struct elink_params * params)
        struct bnx2x_softc *sc = params->sc;
        struct elink_phy *phy;
        params->num_phys = 0;
        struct bnx2x_softc *sc = params->sc;
        struct elink_phy *phy;
        params->num_phys = 0;
-       PMD_DRV_LOG(DEBUG, "Begin phy probe");
+       PMD_DRV_LOG(DEBUG, sc, "Begin phy probe");
 
        phy_config_swapped = params->multi_phy_config &
            PORT_HW_CFG_PHY_SWAPPED_ENABLED;
 
        phy_config_swapped = params->multi_phy_config &
            PORT_HW_CFG_PHY_SWAPPED_ENABLED;
@@ -11630,7 +11643,7 @@ elink_status_t elink_phy_probe(struct elink_params * params)
                        else if (phy_index == ELINK_EXT_PHY2)
                                actual_phy_idx = ELINK_EXT_PHY1;
                }
                        else if (phy_index == ELINK_EXT_PHY2)
                                actual_phy_idx = ELINK_EXT_PHY1;
                }
-               PMD_DRV_LOG(DEBUG, "phy_config_swapped %x, phy_index %x,"
+               PMD_DRV_LOG(DEBUG, sc, "phy_config_swapped %x, phy_index %x,"
                            " actual_phy_idx %x", phy_config_swapped,
                            phy_index, actual_phy_idx);
                phy = &params->phy[actual_phy_idx];
                            " actual_phy_idx %x", phy_config_swapped,
                            phy_index, actual_phy_idx);
                phy = &params->phy[actual_phy_idx];
@@ -11638,7 +11651,7 @@ elink_status_t elink_phy_probe(struct elink_params * params)
                                       params->shmem2_base, params->port,
                                       phy) != ELINK_STATUS_OK) {
                        params->num_phys = 0;
                                       params->shmem2_base, params->port,
                                       phy) != ELINK_STATUS_OK) {
                        params->num_phys = 0;
-                       PMD_DRV_LOG(DEBUG, "phy probe failed in phy index %d",
+                       PMD_DRV_LOG(DEBUG, sc, "phy probe failed in phy index %d",
                                    phy_index);
                        for (phy_index = ELINK_INT_PHY;
                             phy_index < ELINK_MAX_PHYS; phy_index++)
                                    phy_index);
                        for (phy_index = ELINK_INT_PHY;
                             phy_index < ELINK_MAX_PHYS; phy_index++)
@@ -11679,7 +11692,8 @@ elink_status_t elink_phy_probe(struct elink_params * params)
                params->num_phys++;
        }
 
                params->num_phys++;
        }
 
-       PMD_DRV_LOG(DEBUG, "End phy probe. #phys found %x", params->num_phys);
+       PMD_DRV_LOG(DEBUG, sc,
+                   "End phy probe. #phys found %x", params->num_phys);
        return ELINK_STATUS_OK;
 }
 
        return ELINK_STATUS_OK;
 }
 
@@ -11849,7 +11863,7 @@ static elink_status_t elink_avoid_link_flap(struct elink_params *params,
        for (phy_idx = ELINK_INT_PHY; phy_idx < params->num_phys; phy_idx++) {
                struct elink_phy *phy = &params->phy[phy_idx];
                if (phy->phy_specific_func) {
        for (phy_idx = ELINK_INT_PHY; phy_idx < params->num_phys; phy_idx++) {
                struct elink_phy *phy = &params->phy[phy_idx];
                if (phy->phy_specific_func) {
-                       PMD_DRV_LOG(DEBUG, "Calling PHY specific func");
+                       PMD_DRV_LOG(DEBUG, sc, "Calling PHY specific func");
                        phy->phy_specific_func(phy, params, ELINK_PHY_INIT);
                }
                if ((phy->media_type == ELINK_ETH_PHY_SFPP_10G_FIBER) ||
                        phy->phy_specific_func(phy, params, ELINK_PHY_INIT);
                }
                if ((phy->media_type == ELINK_ETH_PHY_SFPP_10G_FIBER) ||
@@ -11969,12 +11983,13 @@ elink_status_t elink_phy_init(struct elink_params *params,
 {
        int lfa_status;
        struct bnx2x_softc *sc = params->sc;
 {
        int lfa_status;
        struct bnx2x_softc *sc = params->sc;
-       PMD_DRV_LOG(DEBUG, "Phy Initialization started");
-       PMD_DRV_LOG(DEBUG, "(1) req_speed %d, req_flowctrl %d",
+       PMD_DRV_LOG(DEBUG, sc, "Phy Initialization started");
+       PMD_DRV_LOG(DEBUG, sc, "(1) req_speed %d, req_flowctrl %d",
                    params->req_line_speed[0], params->req_flow_ctrl[0]);
                    params->req_line_speed[0], params->req_flow_ctrl[0]);
-       PMD_DRV_LOG(DEBUG, "(2) req_speed %d, req_flowctrl %d",
+       PMD_DRV_LOG(DEBUG, sc, "(2) req_speed %d, req_flowctrl %d",
                    params->req_line_speed[1], params->req_flow_ctrl[1]);
                    params->req_line_speed[1], params->req_flow_ctrl[1]);
-       PMD_DRV_LOG(DEBUG, "req_adv_flow_ctrl 0x%x", params->req_fc_auto_adv);
+       PMD_DRV_LOG(DEBUG, sc,
+                   "req_adv_flow_ctrl 0x%x", params->req_fc_auto_adv);
        vars->link_status = 0;
        vars->phy_link_up = 0;
        vars->link_up = 0;
        vars->link_status = 0;
        vars->phy_link_up = 0;
        vars->link_up = 0;
@@ -11991,11 +12006,13 @@ elink_status_t elink_phy_init(struct elink_params *params,
        lfa_status = elink_check_lfa(params);
 
        if (lfa_status == 0) {
        lfa_status = elink_check_lfa(params);
 
        if (lfa_status == 0) {
-               PMD_DRV_LOG(DEBUG, "Link Flap Avoidance in progress");
+               PMD_DRV_LOG(DEBUG, sc,
+                           "Link Flap Avoidance in progress");
                return elink_avoid_link_flap(params, vars);
        }
 
                return elink_avoid_link_flap(params, vars);
        }
 
-       PMD_DRV_LOG(DEBUG, "Cannot avoid link flap lfa_sta=0x%x", lfa_status);
+       PMD_DRV_LOG(DEBUG, sc,
+                   "Cannot avoid link flap lfa_sta=0x%x", lfa_status);
        elink_cannot_avoid_link_flap(params, vars, lfa_status);
 
        /* Disable attentions */
        elink_cannot_avoid_link_flap(params, vars, lfa_status);
 
        /* Disable attentions */
@@ -12011,12 +12028,12 @@ elink_status_t elink_phy_init(struct elink_params *params,
                vars->link_status |= LINK_STATUS_PFC_ENABLED;
 
        if ((params->num_phys == 0) && !CHIP_REV_IS_SLOW(sc)) {
                vars->link_status |= LINK_STATUS_PFC_ENABLED;
 
        if ((params->num_phys == 0) && !CHIP_REV_IS_SLOW(sc)) {
-               PMD_DRV_LOG(DEBUG, "No phy found for initialization !!");
+               PMD_DRV_LOG(DEBUG, sc, "No phy found for initialization !!");
                return ELINK_STATUS_ERROR;
        }
        set_phy_vars(params, vars);
 
                return ELINK_STATUS_ERROR;
        }
        set_phy_vars(params, vars);
 
-       PMD_DRV_LOG(DEBUG, "Num of phys on board: %d", params->num_phys);
+       PMD_DRV_LOG(DEBUG, sc, "Num of phys on board: %d", params->num_phys);
 
        switch (params->loopback_mode) {
        case ELINK_LOOPBACK_BMAC:
 
        switch (params->loopback_mode) {
        case ELINK_LOOPBACK_BMAC:
@@ -12059,7 +12076,7 @@ static elink_status_t elink_link_reset(struct elink_params *params,
 {
        struct bnx2x_softc *sc = params->sc;
        uint8_t phy_index, port = params->port, clear_latch_ind = 0;
 {
        struct bnx2x_softc *sc = params->sc;
        uint8_t phy_index, port = params->port, clear_latch_ind = 0;
-       PMD_DRV_LOG(DEBUG, "Resetting the link of port %d", port);
+       PMD_DRV_LOG(DEBUG, sc, "Resetting the link of port %d", port);
        /* Disable attentions */
        vars->link_status = 0;
        elink_update_mng(params, vars->link_status);
        /* Disable attentions */
        vars->link_status = 0;
        elink_update_mng(params, vars->link_status);
@@ -12237,7 +12254,7 @@ static elink_status_t elink_8073_common_init_phy(struct bnx2x_softc *sc,
                if (elink_populate_phy(sc, phy_index, shmem_base, shmem2_base,
                                       port_of_path, &phy[port]) !=
                    ELINK_STATUS_OK) {
                if (elink_populate_phy(sc, phy_index, shmem_base, shmem2_base,
                                       port_of_path, &phy[port]) !=
                    ELINK_STATUS_OK) {
-                       PMD_DRV_LOG(DEBUG, "populate_phy failed");
+                       PMD_DRV_LOG(DEBUG, sc, "populate_phy failed");
                        return ELINK_STATUS_ERROR;
                }
                /* Disable attentions */
                        return ELINK_STATUS_ERROR;
                }
                /* Disable attentions */
@@ -12277,7 +12294,7 @@ static elink_status_t elink_8073_common_init_phy(struct bnx2x_softc *sc,
                else
                        port_of_path = 0;
 
                else
                        port_of_path = 0;
 
-               PMD_DRV_LOG(DEBUG, "Loading spirom for phy address 0x%x",
+               PMD_DRV_LOG(DEBUG, sc, "Loading spirom for phy address 0x%x",
                            phy_blk[port]->addr);
                if (elink_8073_8727_external_rom_boot(sc, phy_blk[port],
                                                      port_of_path))
                            phy_blk[port]->addr);
                if (elink_8073_8727_external_rom_boot(sc, phy_blk[port],
                                                      port_of_path))
@@ -12361,7 +12378,7 @@ static elink_status_t elink_8726_common_init_phy(struct bnx2x_softc *sc,
                /* Extract the ext phy address for the port */
                if (elink_populate_phy(sc, phy_index, shmem_base, shmem2_base,
                                       port, &phy) != ELINK_STATUS_OK) {
                /* Extract the ext phy address for the port */
                if (elink_populate_phy(sc, phy_index, shmem_base, shmem2_base,
                                       port, &phy) != ELINK_STATUS_OK) {
-                       PMD_DRV_LOG(DEBUG, "populate phy failed");
+                       PMD_DRV_LOG(DEBUG, sc, "populate phy failed");
                        return ELINK_STATUS_ERROR;
                }
 
                        return ELINK_STATUS_ERROR;
                }
 
@@ -12481,7 +12498,7 @@ static elink_status_t elink_8727_common_init_phy(struct bnx2x_softc *sc,
                if (elink_populate_phy(sc, phy_index, shmem_base, shmem2_base,
                                       port_of_path, &phy[port]) !=
                    ELINK_STATUS_OK) {
                if (elink_populate_phy(sc, phy_index, shmem_base, shmem2_base,
                                       port_of_path, &phy[port]) !=
                    ELINK_STATUS_OK) {
-                       PMD_DRV_LOG(DEBUG, "populate phy failed");
+                       PMD_DRV_LOG(DEBUG, sc, "populate phy failed");
                        return ELINK_STATUS_ERROR;
                }
                /* disable attentions */
                        return ELINK_STATUS_ERROR;
                }
                /* disable attentions */
@@ -12512,7 +12529,7 @@ static elink_status_t elink_8727_common_init_phy(struct bnx2x_softc *sc,
                        port_of_path = port;
                else
                        port_of_path = 0;
                        port_of_path = port;
                else
                        port_of_path = 0;
-               PMD_DRV_LOG(DEBUG, "Loading spirom for phy address 0x%x",
+               PMD_DRV_LOG(DEBUG, sc, "Loading spirom for phy address 0x%x",
                            phy_blk[port]->addr);
                if (elink_8073_8727_external_rom_boot(sc, phy_blk[port],
                                                      port_of_path))
                            phy_blk[port]->addr);
                if (elink_8073_8727_external_rom_boot(sc, phy_blk[port],
                                                      port_of_path))
@@ -12539,7 +12556,8 @@ static elink_status_t elink_84833_common_init_phy(struct bnx2x_softc *sc,
        DELAY(10);
        elink_cb_gpio_mult_write(sc, reset_gpios,
                                 MISC_REGISTERS_GPIO_OUTPUT_HIGH);
        DELAY(10);
        elink_cb_gpio_mult_write(sc, reset_gpios,
                                 MISC_REGISTERS_GPIO_OUTPUT_HIGH);
-       PMD_DRV_LOG(DEBUG, "84833 reset pulse on pin values 0x%x", reset_gpios);
+       PMD_DRV_LOG(DEBUG, sc,
+                   "84833 reset pulse on pin values 0x%x", reset_gpios);
        return ELINK_STATUS_OK;
 }
 
        return ELINK_STATUS_OK;
 }
 
@@ -12587,7 +12605,7 @@ static elink_status_t elink_ext_phy_common_init(struct bnx2x_softc *sc,
                rc = ELINK_STATUS_ERROR;
                break;
        default:
                rc = ELINK_STATUS_ERROR;
                break;
        default:
-               PMD_DRV_LOG(DEBUG,
+               PMD_DRV_LOG(DEBUG, sc,
                            "ext_phy 0x%x common init not required",
                            ext_phy_type);
                break;
                            "ext_phy 0x%x common init not required",
                            ext_phy_type);
                break;
@@ -12613,7 +12631,7 @@ elink_status_t elink_common_init_phy(struct bnx2x_softc * sc,
 
        elink_set_mdio_clk(sc, GRCBASE_EMAC0);
        elink_set_mdio_clk(sc, GRCBASE_EMAC1);
 
        elink_set_mdio_clk(sc, GRCBASE_EMAC0);
        elink_set_mdio_clk(sc, GRCBASE_EMAC1);
-       PMD_DRV_LOG(DEBUG, "Begin common phy init");
+       PMD_DRV_LOG(DEBUG, sc, "Begin common phy init");
        if (CHIP_IS_E3(sc)) {
                /* Enable EPIO */
                val = REG_RD(sc, MISC_REG_GEN_PURP_HWG);
        if (CHIP_IS_E3(sc)) {
                /* Enable EPIO */
                val = REG_RD(sc, MISC_REG_GEN_PURP_HWG);
@@ -12624,7 +12642,7 @@ elink_status_t elink_common_init_phy(struct bnx2x_softc * sc,
                         offsetof(struct shmem_region,
                                  port_mb[PORT_0].ext_phy_fw_version));
        if (phy_ver) {
                         offsetof(struct shmem_region,
                                  port_mb[PORT_0].ext_phy_fw_version));
        if (phy_ver) {
-               PMD_DRV_LOG(DEBUG, "Not doing common init; phy ver is 0x%x",
+               PMD_DRV_LOG(DEBUG, sc, "Not doing common init; phy ver is 0x%x",
                            phy_ver);
                return ELINK_STATUS_OK;
        }
                            phy_ver);
                return ELINK_STATUS_OK;
        }
@@ -12696,15 +12714,15 @@ static uint8_t elink_analyze_link_error(struct elink_params *params,
        /* If values differ */
        switch (phy_flag) {
        case PHY_HALF_OPEN_CONN_FLAG:
        /* If values differ */
        switch (phy_flag) {
        case PHY_HALF_OPEN_CONN_FLAG:
-               PMD_DRV_LOG(DEBUG, "Analyze Remote Fault");
+               PMD_DRV_LOG(DEBUG, sc, "Analyze Remote Fault");
                break;
        case PHY_SFP_TX_FAULT_FLAG:
                break;
        case PHY_SFP_TX_FAULT_FLAG:
-               PMD_DRV_LOG(DEBUG, "Analyze TX Fault");
+               PMD_DRV_LOG(DEBUG, sc, "Analyze TX Fault");
                break;
        default:
                break;
        default:
-               PMD_DRV_LOG(DEBUG, "Analyze UNKNOWN");
+               PMD_DRV_LOG(DEBUG, sc, "Analyze UNKNOWN");
        }
        }
-       PMD_DRV_LOG(DEBUG, "Link changed:[%x %x]->%x", vars->link_up,
+       PMD_DRV_LOG(DEBUG, sc, "Link changed:[%x %x]->%x", vars->link_up,
                    old_status, status);
 
        /* a. Update shmem->link_status accordingly
                    old_status, status);
 
        /* a. Update shmem->link_status accordingly
@@ -12830,7 +12848,7 @@ static void elink_sfp_tx_fault_detection(struct elink_phy *phy,
            PORT_HW_CFG_E3_TX_FAULT_SHIFT;
 
        if (elink_get_cfg_pin(sc, cfg_pin, &value)) {
            PORT_HW_CFG_E3_TX_FAULT_SHIFT;
 
        if (elink_get_cfg_pin(sc, cfg_pin, &value)) {
-               PMD_DRV_LOG(DEBUG, "Failed to read pin 0x%02x", cfg_pin);
+               PMD_DRV_LOG(DEBUG, sc, "Failed to read pin 0x%02x", cfg_pin);
                return;
        }
 
                return;
        }
 
@@ -12852,7 +12870,7 @@ static void elink_sfp_tx_fault_detection(struct elink_phy *phy,
 
                /* If module is unapproved, led should be on regardless */
                if (!(phy->flags & ELINK_FLAGS_SFP_NOT_APPROVED)) {
 
                /* If module is unapproved, led should be on regardless */
                if (!(phy->flags & ELINK_FLAGS_SFP_NOT_APPROVED)) {
-                       PMD_DRV_LOG(DEBUG, "Change TX_Fault LED: ->%x",
+                       PMD_DRV_LOG(DEBUG, sc, "Change TX_Fault LED: ->%x",
                                    led_mode);
                        elink_set_e3_module_fault_led(params, led_mode);
                }
                                    led_mode);
                        elink_set_e3_module_fault_led(params, led_mode);
                }
@@ -12862,7 +12880,7 @@ static void elink_sfp_tx_fault_detection(struct elink_phy *phy,
 static void elink_kr2_recovery(struct elink_params *params,
                               struct elink_vars *vars, struct elink_phy *phy)
 {
 static void elink_kr2_recovery(struct elink_params *params,
                               struct elink_vars *vars, struct elink_phy *phy)
 {
-       PMD_DRV_LOG(DEBUG, "KR2 recovery");
+       PMD_DRV_LOG(DEBUG, params->sc, "KR2 recovery");
 
        elink_warpcore_enable_AN_KR2(phy, params, vars);
        elink_warpcore_restart_AN_KR(phy, params);
 
        elink_warpcore_enable_AN_KR2(phy, params, vars);
        elink_warpcore_restart_AN_KR(phy, params);
@@ -12889,7 +12907,7 @@ static void elink_check_kr2_wa(struct elink_params *params,
        if (!sigdet) {
                if (!(vars->link_attr_sync & LINK_ATTR_SYNC_KR2_ENABLE)) {
                        elink_kr2_recovery(params, vars, phy);
        if (!sigdet) {
                if (!(vars->link_attr_sync & LINK_ATTR_SYNC_KR2_ENABLE)) {
                        elink_kr2_recovery(params, vars, phy);
-                       PMD_DRV_LOG(DEBUG, "No sigdet");
+                       PMD_DRV_LOG(DEBUG, sc, "No sigdet");
                }
                return;
        }
                }
                return;
        }
@@ -12907,7 +12925,7 @@ static void elink_check_kr2_wa(struct elink_params *params,
        if (base_page == 0) {
                if (!(vars->link_attr_sync & LINK_ATTR_SYNC_KR2_ENABLE)) {
                        elink_kr2_recovery(params, vars, phy);
        if (base_page == 0) {
                if (!(vars->link_attr_sync & LINK_ATTR_SYNC_KR2_ENABLE)) {
                        elink_kr2_recovery(params, vars, phy);
-                       PMD_DRV_LOG(DEBUG, "No BP");
+                       PMD_DRV_LOG(DEBUG, sc, "No BP");
                }
                return;
        }
                }
                return;
        }
@@ -12923,7 +12941,7 @@ static void elink_check_kr2_wa(struct elink_params *params,
        /* In case KR2 is already disabled, check if we need to re-enable it */
        if (!(vars->link_attr_sync & LINK_ATTR_SYNC_KR2_ENABLE)) {
                if (!not_kr2_device) {
        /* In case KR2 is already disabled, check if we need to re-enable it */
        if (!(vars->link_attr_sync & LINK_ATTR_SYNC_KR2_ENABLE)) {
                if (!not_kr2_device) {
-                       PMD_DRV_LOG(DEBUG, "BP=0x%x, NP=0x%x", base_page,
+                       PMD_DRV_LOG(DEBUG, sc, "BP=0x%x, NP=0x%x", base_page,
                                    next_page);
                        elink_kr2_recovery(params, vars, phy);
                }
                                    next_page);
                        elink_kr2_recovery(params, vars, phy);
                }
@@ -12932,7 +12950,8 @@ static void elink_check_kr2_wa(struct elink_params *params,
        /* KR2 is enabled, but not KR2 device */
        if (not_kr2_device) {
                /* Disable KR2 on both lanes */
        /* KR2 is enabled, but not KR2 device */
        if (not_kr2_device) {
                /* Disable KR2 on both lanes */
-               PMD_DRV_LOG(DEBUG, "BP=0x%x, NP=0x%x", base_page, next_page);
+               PMD_DRV_LOG(DEBUG, sc,
+                           "BP=0x%x, NP=0x%x", base_page, next_page);
                elink_disable_kr2(params, vars, phy);
                /* Restart AN on leading lane */
                elink_warpcore_restart_AN_KR(phy, params);
                elink_disable_kr2(params, vars, phy);
                /* Restart AN on leading lane */
                elink_warpcore_restart_AN_KR(phy, params);
@@ -12949,7 +12968,7 @@ void elink_period_func(struct elink_params *params, struct elink_vars *vars)
                        elink_set_aer_mmd(params, &params->phy[phy_idx]);
                        if (elink_check_half_open_conn(params, vars, 1) !=
                            ELINK_STATUS_OK) {
                        elink_set_aer_mmd(params, &params->phy[phy_idx]);
                        if (elink_check_half_open_conn(params, vars, 1) !=
                            ELINK_STATUS_OK) {
-                               PMD_DRV_LOG(DEBUG, "Fault detection failed");
+                               PMD_DRV_LOG(DEBUG, sc, "Fault detection failed");
                        }
                        break;
                }
                        }
                        break;
                }
@@ -12995,7 +13014,7 @@ uint8_t elink_fan_failure_det_req(struct bnx2x_softc *sc,
                if (elink_populate_phy(sc, phy_index, shmem_base, shmem2_base,
                                       port, &phy)
                    != ELINK_STATUS_OK) {
                if (elink_populate_phy(sc, phy_index, shmem_base, shmem2_base,
                                       port, &phy)
                    != ELINK_STATUS_OK) {
-                       PMD_DRV_LOG(DEBUG, "populate phy failed");
+                       PMD_DRV_LOG(DEBUG, sc, "populate phy failed");
                        return 0;
                }
                fan_failure_det_req |= (phy.flags &
                        return 0;
                }
                fan_failure_det_req |= (phy.flags &
@@ -13045,7 +13064,7 @@ void elink_init_mod_abs_int(struct bnx2x_softc *sc, struct elink_vars *vars,
                        if (elink_populate_phy(sc, phy_index, shmem_base,
                                               shmem2_base, port, &phy)
                            != ELINK_STATUS_OK) {
                        if (elink_populate_phy(sc, phy_index, shmem_base,
                                               shmem2_base, port, &phy)
                            != ELINK_STATUS_OK) {
-                               PMD_DRV_LOG(DEBUG, "populate phy failed");
+                               PMD_DRV_LOG(DEBUG, sc, "populate phy failed");
                                return;
                        }
                        if (phy.type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BNX2X8726) {
                                return;
                        }
                        if (phy.type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BNX2X8726) {
@@ -13075,7 +13094,7 @@ void elink_init_mod_abs_int(struct bnx2x_softc *sc, struct elink_vars *vars,
                     dev_info.port_hw_config[port].aeu_int_mask);
        REG_WR(sc, sync_offset, vars->aeu_int_mask);
 
                     dev_info.port_hw_config[port].aeu_int_mask);
        REG_WR(sc, sync_offset, vars->aeu_int_mask);
 
-       PMD_DRV_LOG(DEBUG, "Setting MOD_ABS (GPIO%d_P%d) AEU to 0x%x",
+       PMD_DRV_LOG(DEBUG, sc, "Setting MOD_ABS (GPIO%d_P%d) AEU to 0x%x",
                    gpio_num, gpio_port, vars->aeu_int_mask);
 
        if (port == 0)
                    gpio_num, gpio_port, vars->aeu_int_mask);
 
        if (port == 0)
index b934605..dc867b1 100644 (file)
@@ -132,6 +132,7 @@ struct bnxt {
        uint32_t                flags;
 #define BNXT_FLAG_REGISTERED   (1 << 0)
 #define BNXT_FLAG_VF           (1 << 1)
        uint32_t                flags;
 #define BNXT_FLAG_REGISTERED   (1 << 0)
 #define BNXT_FLAG_VF           (1 << 1)
+#define BNXT_FLAG_DFLT_VNIC_SET        (1 << 12)
 #define BNXT_PF(bp)            (!((bp)->flags & BNXT_FLAG_VF))
 #define BNXT_VF(bp)            ((bp)->flags & BNXT_FLAG_VF)
 #define BNXT_NPAR_ENABLED(bp)  ((bp)->port_partition_type)
 #define BNXT_PF(bp)            (!((bp)->flags & BNXT_FLAG_VF))
 #define BNXT_VF(bp)            ((bp)->flags & BNXT_FLAG_VF)
 #define BNXT_NPAR_ENABLED(bp)  ((bp)->port_partition_type)
index d65e28b..dd99c57 100644 (file)
@@ -50,7 +50,7 @@
 #include "bnxt_vnic.h"
 #include "hsi_struct_def_dpdk.h"
 
 #include "bnxt_vnic.h"
 #include "hsi_struct_def_dpdk.h"
 
-#define HWRM_CMD_TIMEOUT               2000
+#define HWRM_CMD_TIMEOUT               6000000
 
 /*
  * HWRM Functions (sent to HWRM)
 
 /*
  * HWRM Functions (sent to HWRM)
@@ -97,7 +97,7 @@ static int bnxt_hwrm_send_message_locked(struct bnxt *bp, void *msg,
                        if (*valid == HWRM_RESP_VALID_KEY)
                                break;
                }
                        if (*valid == HWRM_RESP_VALID_KEY)
                                break;
                }
-               rte_delay_us(600);
+               rte_delay_us(1);
        }
 
        if (i >= HWRM_CMD_TIMEOUT) {
        }
 
        if (i >= HWRM_CMD_TIMEOUT) {
@@ -232,6 +232,8 @@ int bnxt_hwrm_set_filter(struct bnxt *bp,
        HWRM_PREP(req, CFA_L2_FILTER_ALLOC, -1, resp);
 
        req.flags = rte_cpu_to_le_32(filter->flags);
        HWRM_PREP(req, CFA_L2_FILTER_ALLOC, -1, resp);
 
        req.flags = rte_cpu_to_le_32(filter->flags);
+       req.flags |=
+       rte_cpu_to_le_32(HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_OUTERMOST);
 
        enables = filter->enables |
              HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_DST_ID;
 
        enables = filter->enables |
              HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_DST_ID;
@@ -379,7 +381,6 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
        int rc = 0;
        struct hwrm_ver_get_input req = {.req_type = 0 };
        struct hwrm_ver_get_output *resp = bp->hwrm_cmd_resp_addr;
        int rc = 0;
        struct hwrm_ver_get_input req = {.req_type = 0 };
        struct hwrm_ver_get_output *resp = bp->hwrm_cmd_resp_addr;
-       uint32_t my_version;
        uint32_t fw_version;
        uint16_t max_resp_len;
        char type[RTE_MEMZONE_NAMESIZE];
        uint32_t fw_version;
        uint16_t max_resp_len;
        char type[RTE_MEMZONE_NAMESIZE];
@@ -405,10 +406,6 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
        RTE_LOG(INFO, PMD, "Driver HWRM version: %d.%d.%d\n",
                HWRM_VERSION_MAJOR, HWRM_VERSION_MINOR, HWRM_VERSION_UPDATE);
 
        RTE_LOG(INFO, PMD, "Driver HWRM version: %d.%d.%d\n",
                HWRM_VERSION_MAJOR, HWRM_VERSION_MINOR, HWRM_VERSION_UPDATE);
 
-       my_version = HWRM_VERSION_MAJOR << 16;
-       my_version |= HWRM_VERSION_MINOR << 8;
-       my_version |= HWRM_VERSION_UPDATE;
-
        fw_version = resp->hwrm_intf_maj << 16;
        fw_version |= resp->hwrm_intf_min << 8;
        fw_version |= resp->hwrm_intf_upd;
        fw_version = resp->hwrm_intf_maj << 16;
        fw_version |= resp->hwrm_intf_min << 8;
        fw_version |= resp->hwrm_intf_upd;
@@ -419,21 +416,6 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
                goto error;
        }
 
                goto error;
        }
 
-       if (my_version != fw_version) {
-               RTE_LOG(INFO, PMD, "BNXT Driver/HWRM API mismatch.\n");
-               if (my_version < fw_version) {
-                       RTE_LOG(INFO, PMD,
-                               "Firmware API version is newer than driver.\n");
-                       RTE_LOG(INFO, PMD,
-                               "The driver may be missing features.\n");
-               } else {
-                       RTE_LOG(INFO, PMD,
-                               "Firmware API version is older than driver.\n");
-                       RTE_LOG(INFO, PMD,
-                               "Not all driver features may be functional.\n");
-               }
-       }
-
        if (bp->max_req_len > resp->max_req_win_len) {
                RTE_LOG(ERR, PMD, "Unsupported request length\n");
                rc = -EINVAL;
        if (bp->max_req_len > resp->max_req_win_len) {
                RTE_LOG(ERR, PMD, "Unsupported request length\n");
                rc = -EINVAL;
@@ -898,8 +880,11 @@ int bnxt_hwrm_vnic_cfg(struct bnxt *bp, struct bnxt_vnic_info *vnic)
        req.lb_rule = rte_cpu_to_le_16(0xffff);
        req.mru = rte_cpu_to_le_16(bp->eth_dev->data->mtu + ETHER_HDR_LEN +
                                   ETHER_CRC_LEN + VLAN_TAG_SIZE);
        req.lb_rule = rte_cpu_to_le_16(0xffff);
        req.mru = rte_cpu_to_le_16(bp->eth_dev->data->mtu + ETHER_HDR_LEN +
                                   ETHER_CRC_LEN + VLAN_TAG_SIZE);
-       if (vnic->func_default)
+       /* Configure default VNIC only once. */
+       if (vnic->func_default && !(bp->flags & BNXT_FLAG_DFLT_VNIC_SET)) {
                req.flags = 1;
                req.flags = 1;
+               bp->flags |= BNXT_FLAG_DFLT_VNIC_SET;
+       }
        if (vnic->vlan_strip)
                req.flags |=
                    rte_cpu_to_le_32(HWRM_VNIC_CFG_INPUT_FLAGS_VLAN_STRIP_MODE);
        if (vnic->vlan_strip)
                req.flags |=
                    rte_cpu_to_le_32(HWRM_VNIC_CFG_INPUT_FLAGS_VLAN_STRIP_MODE);
@@ -976,6 +961,10 @@ int bnxt_hwrm_vnic_free(struct bnxt *bp, struct bnxt_vnic_info *vnic)
        HWRM_CHECK_RESULT;
 
        vnic->fw_vnic_id = INVALID_HW_RING_ID;
        HWRM_CHECK_RESULT;
 
        vnic->fw_vnic_id = INVALID_HW_RING_ID;
+       /* Configure default VNIC again if necessary. */
+       if (vnic->func_default && (bp->flags & BNXT_FLAG_DFLT_VNIC_SET))
+               bp->flags &= ~BNXT_FLAG_DFLT_VNIC_SET;
+
        return rc;
 }
 
        return rc;
 }
 
index ff24e23..f1e1616 100644 (file)
@@ -146,7 +146,7 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt,
 {
        struct bnxt_tx_ring_info *txr = txq->tx_ring;
        struct tx_bd_long *txbd;
 {
        struct bnxt_tx_ring_info *txr = txq->tx_ring;
        struct tx_bd_long *txbd;
-       struct tx_bd_long_hi *txbd1;
+       struct tx_bd_long_hi *txbd1 = NULL;
        uint32_t vlan_tag_flags, cfa_action;
        bool long_bd = false;
        uint16_t last_prod = 0;
        uint32_t vlan_tag_flags, cfa_action;
        bool long_bd = false;
        uint16_t last_prod = 0;
@@ -313,7 +313,8 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt,
        }
 
        txbd->flags_type |= TX_BD_LONG_FLAGS_PACKET_END;
        }
 
        txbd->flags_type |= TX_BD_LONG_FLAGS_PACKET_END;
-       txbd1->lflags = rte_cpu_to_le_32(txbd1->lflags);
+       if (txbd1)
+               txbd1->lflags = rte_cpu_to_le_32(txbd1->lflags);
 
        txr->tx_prod = RING_NEXT(txr->tx_ring_struct, txr->tx_prod);
 
 
        txr->tx_prod = RING_NEXT(txr->tx_ring_struct, txr->tx_prod);
 
index 6081918..103f558 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
@@ -62,7 +62,8 @@ get_vlan_offset(struct ether_hdr *eth_hdr, uint16_t *proto)
 {
        size_t vlan_offset = 0;
 
 {
        size_t vlan_offset = 0;
 
-       if (rte_cpu_to_be_16(ETHER_TYPE_VLAN) == *proto) {
+       if (rte_cpu_to_be_16(ETHER_TYPE_VLAN) == *proto ||
+               rte_cpu_to_be_16(ETHER_TYPE_QINQ) == *proto) {
                struct vlan_hdr *vlan_hdr = (struct vlan_hdr *)(eth_hdr + 1);
 
                vlan_offset = sizeof(struct vlan_hdr);
                struct vlan_hdr *vlan_hdr = (struct vlan_hdr *)(eth_hdr + 1);
 
                vlan_offset = sizeof(struct vlan_hdr);
@@ -82,28 +83,34 @@ bond_ethdev_rx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 {
        struct bond_dev_private *internals;
 
 {
        struct bond_dev_private *internals;
 
-       uint16_t num_rx_slave = 0;
        uint16_t num_rx_total = 0;
        uint16_t num_rx_total = 0;
-
+       uint16_t slave_count;
+       uint16_t active_slave;
        int i;
 
        /* Cast to structure, containing bonded device's port id and queue id */
        struct bond_rx_queue *bd_rx_q = (struct bond_rx_queue *)queue;
        int i;
 
        /* Cast to structure, containing bonded device's port id and queue id */
        struct bond_rx_queue *bd_rx_q = (struct bond_rx_queue *)queue;
-
        internals = bd_rx_q->dev_private;
        internals = bd_rx_q->dev_private;
+       slave_count = internals->active_slave_count;
+       active_slave = internals->active_slave;
 
 
+       for (i = 0; i < slave_count && nb_pkts; i++) {
+               uint16_t num_rx_slave;
 
 
-       for (i = 0; i < internals->active_slave_count && nb_pkts; i++) {
                /* Offset of pointer to *bufs increases as packets are received
                 * from other slaves */
                /* Offset of pointer to *bufs increases as packets are received
                 * from other slaves */
-               num_rx_slave = rte_eth_rx_burst(internals->active_slaves[i],
-                               bd_rx_q->queue_id, bufs + num_rx_total, nb_pkts);
-               if (num_rx_slave) {
-                       num_rx_total += num_rx_slave;
-                       nb_pkts -= num_rx_slave;
-               }
-       }
-
+               num_rx_slave =
+                       rte_eth_rx_burst(internals->active_slaves[active_slave],
+                                        bd_rx_q->queue_id,
+                                        bufs + num_rx_total, nb_pkts);
+               num_rx_total += num_rx_slave;
+               nb_pkts -= num_rx_slave;
+               if (++active_slave == slave_count)
+                       active_slave = 0;
+       }
+
+       if (++internals->active_slave == slave_count)
+               internals->active_slave = 0;
        return num_rx_total;
 }
 
        return num_rx_total;
 }
 
@@ -145,7 +152,7 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
        const uint16_t ether_type_slow_be = rte_be_to_cpu_16(ETHER_TYPE_SLOW);
        uint16_t num_rx_total = 0;      /* Total number of received packets */
        uint8_t slaves[RTE_MAX_ETHPORTS];
        const uint16_t ether_type_slow_be = rte_be_to_cpu_16(ETHER_TYPE_SLOW);
        uint16_t num_rx_total = 0;      /* Total number of received packets */
        uint8_t slaves[RTE_MAX_ETHPORTS];
-       uint8_t slave_count;
+       uint8_t slave_count, idx;
 
        uint8_t collecting;  /* current slave collecting status */
        const uint8_t promisc = internals->promiscuous_en;
 
        uint8_t collecting;  /* current slave collecting status */
        const uint8_t promisc = internals->promiscuous_en;
@@ -159,12 +166,18 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
        memcpy(slaves, internals->active_slaves,
                        sizeof(internals->active_slaves[0]) * slave_count);
 
        memcpy(slaves, internals->active_slaves,
                        sizeof(internals->active_slaves[0]) * slave_count);
 
+       idx = internals->active_slave;
+       if (idx >= slave_count) {
+               internals->active_slave = 0;
+               idx = 0;
+       }
        for (i = 0; i < slave_count && num_rx_total < nb_pkts; i++) {
                j = num_rx_total;
        for (i = 0; i < slave_count && num_rx_total < nb_pkts; i++) {
                j = num_rx_total;
-               collecting = ACTOR_STATE(&mode_8023ad_ports[slaves[i]], COLLECTING);
+               collecting = ACTOR_STATE(&mode_8023ad_ports[slaves[idx]],
+                                        COLLECTING);
 
                /* Read packets from this slave */
 
                /* Read packets from this slave */
-               num_rx_total += rte_eth_rx_burst(slaves[i], bd_rx_q->queue_id,
+               num_rx_total += rte_eth_rx_burst(slaves[idx], bd_rx_q->queue_id,
                                &bufs[num_rx_total], nb_pkts - num_rx_total);
 
                for (k = j; k < 2 && k < num_rx_total; k++)
                                &bufs[num_rx_total], nb_pkts - num_rx_total);
 
                for (k = j; k < 2 && k < num_rx_total; k++)
@@ -187,8 +200,8 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
                                        !is_same_ether_addr(&bond_mac, &hdr->d_addr)))) {
 
                                if (hdr->ether_type == ether_type_slow_be) {
                                        !is_same_ether_addr(&bond_mac, &hdr->d_addr)))) {
 
                                if (hdr->ether_type == ether_type_slow_be) {
-                                       bond_mode_8023ad_handle_slow_pkt(internals, slaves[i],
-                                               bufs[j]);
+                                       bond_mode_8023ad_handle_slow_pkt(
+                                           internals, slaves[idx], bufs[j]);
                                } else
                                        rte_pktmbuf_free(bufs[j]);
 
                                } else
                                        rte_pktmbuf_free(bufs[j]);
 
@@ -201,8 +214,13 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
                        } else
                                j++;
                }
                        } else
                                j++;
                }
+               if (unlikely(++idx == slave_count))
+                       idx = 0;
        }
 
        }
 
+       if (++internals->active_slave == slave_count)
+               internals->active_slave = 0;
+
        return num_rx_total;
 }
 
        return num_rx_total;
 }
 
@@ -1324,6 +1342,9 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
        int errval;
        uint16_t q_id;
 
        int errval;
        uint16_t q_id;
 
+       struct bond_dev_private *internals = (struct bond_dev_private *)
+               bonded_eth_dev->data->dev_private;
+
        /* Stop slave */
        rte_eth_dev_stop(slave_eth_dev->data->port_id);
 
        /* Stop slave */
        rte_eth_dev_stop(slave_eth_dev->data->port_id);
 
@@ -1333,12 +1354,11 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
 
        /* If RSS is enabled for bonding, try to enable it for slaves  */
        if (bonded_eth_dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG) {
 
        /* If RSS is enabled for bonding, try to enable it for slaves  */
        if (bonded_eth_dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG) {
-               if (bonded_eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key_len
-                               != 0) {
+               if (internals->rss_key_len != 0) {
                        slave_eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key_len =
                        slave_eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key_len =
-                                       bonded_eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key_len;
+                                       internals->rss_key_len;
                        slave_eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key =
                        slave_eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key =
-                                       bonded_eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key;
+                                       internals->rss_key;
                } else {
                        slave_eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key = NULL;
                }
                } else {
                        slave_eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key = NULL;
                }
@@ -1649,12 +1669,20 @@ bond_ethdev_stop(struct rte_eth_dev *eth_dev)
                        tlb_last_obytets[internals->active_slaves[i]] = 0;
        }
 
                        tlb_last_obytets[internals->active_slaves[i]] = 0;
        }
 
-       internals->link_status_polling_enabled = 0;
-       for (i = 0; i < internals->slave_count; i++)
-               internals->slaves[i].last_link_status = 0;
-
        eth_dev->data->dev_link.link_status = ETH_LINK_DOWN;
        eth_dev->data->dev_started = 0;
        eth_dev->data->dev_link.link_status = ETH_LINK_DOWN;
        eth_dev->data->dev_started = 0;
+
+       internals->link_status_polling_enabled = 0;
+       for (i = 0; i < internals->slave_count; i++) {
+               uint16_t slave_id = internals->slaves[i].port_id;
+               if (find_slave_by_id(internals->active_slaves,
+                               internals->active_slave_count, slave_id) !=
+                                               internals->active_slave_count) {
+                       internals->slaves[i].last_link_status = 0;
+                       rte_eth_dev_stop(slave_id);
+                       deactivate_slave(eth_dev, slave_id);
+               }
+       }
 }
 
 void
 }
 
 void
@@ -2371,16 +2399,30 @@ bond_ethdev_configure(struct rte_eth_dev *dev)
 
        unsigned i, j;
 
 
        unsigned i, j;
 
-       /* If RSS is enabled, fill table and key with default values */
+       /*
+        * If RSS is enabled, fill table with default values and
+        * set key to the the value specified in port RSS configuration.
+        * Fall back to default RSS key if the key is not specified
+        */
        if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS) {
        if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS) {
-               dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key = internals->rss_key;
-               dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key_len = 0;
-               memcpy(internals->rss_key, default_rss_key, 40);
+               if (dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key != NULL) {
+                       internals->rss_key_len =
+                               dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key_len;
+                       memcpy(internals->rss_key,
+                              dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key,
+                              internals->rss_key_len);
+               } else {
+                       internals->rss_key_len = sizeof(default_rss_key);
+                       memcpy(internals->rss_key, default_rss_key,
+                              internals->rss_key_len);
+               }
 
                for (i = 0; i < RTE_DIM(internals->reta_conf); i++) {
                        internals->reta_conf[i].mask = ~0LL;
                        for (j = 0; j < RTE_RETA_GROUP_SIZE; j++)
 
                for (i = 0; i < RTE_DIM(internals->reta_conf); i++) {
                        internals->reta_conf[i].mask = ~0LL;
                        for (j = 0; j < RTE_RETA_GROUP_SIZE; j++)
-                               internals->reta_conf[i].reta[j] = j % dev->data->nb_rx_queues;
+                               internals->reta_conf[i].reta[j] =
+                                               (i * RTE_RETA_GROUP_SIZE + j) %
+                                               dev->data->nb_rx_queues;
                }
        }
 
                }
        }
 
index d95d440..8c963dd 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
@@ -144,6 +144,7 @@ struct bond_dev_private {
        uint16_t nb_rx_queues;                  /**< Total number of rx queues */
        uint16_t nb_tx_queues;                  /**< Total number of tx queues*/
 
        uint16_t nb_rx_queues;                  /**< Total number of rx queues */
        uint16_t nb_tx_queues;                  /**< Total number of tx queues*/
 
+       uint8_t active_slave;           /**< Next active_slave to poll */
        uint8_t active_slave_count;             /**< Number of active slaves */
        uint8_t active_slaves[RTE_MAX_ETHPORTS];        /**< Active slave list */
 
        uint8_t active_slave_count;             /**< Number of active slaves */
        uint8_t active_slaves[RTE_MAX_ETHPORTS];        /**< Active slave list */
 
index 277331c..c2abb43 100644 (file)
@@ -941,6 +941,7 @@ STATIC s32 e1000_pll_workaround_i210(struct e1000_hw *hw)
        if (ret_val != E1000_SUCCESS)
                nvm_word = E1000_INVM_DEFAULT_AL;
        tmp_nvm = nvm_word | E1000_INVM_PLL_WO_VAL;
        if (ret_val != E1000_SUCCESS)
                nvm_word = E1000_INVM_DEFAULT_AL;
        tmp_nvm = nvm_word | E1000_INVM_PLL_WO_VAL;
+       phy_word = E1000_PHY_PLL_UNCONF;
        for (i = 0; i < E1000_MAX_PLL_TRIES; i++) {
                /* check current state directly from internal PHY */
                e1000_read_phy_reg_gs40g(hw, (E1000_PHY_PLL_FREQ_PAGE |
        for (i = 0; i < E1000_MAX_PLL_TRIES; i++) {
                /* check current state directly from internal PHY */
                e1000_read_phy_reg_gs40g(hw, (E1000_PHY_PLL_FREQ_PAGE |
index 41f51c0..371bb62 100644 (file)
@@ -1323,12 +1323,13 @@ eth_em_rx_queue_setup(struct rte_eth_dev *dev,
        }
 
        /*
        }
 
        /*
-        * EM devices don't support drop_en functionality
+        * EM devices don't support drop_en functionality.
+        * It's an optimization that does nothing on single-queue devices,
+        * so just log the issue and carry on.
         */
        if (rx_conf->rx_drop_en) {
         */
        if (rx_conf->rx_drop_en) {
-               PMD_INIT_LOG(ERR, "drop_en functionality not supported by "
+               PMD_INIT_LOG(NOTICE, "drop_en functionality not supported by "
                             "device");
                             "device");
-               return -EINVAL;
        }
 
        /* Free memory prior to re-allocation if needed. */
        }
 
        /* Free memory prior to re-allocation if needed. */
index 556d460..4d11277 100644 (file)
 
 /* Bit Mask to indicate what bits required for building TX context */
 #define IGB_TX_OFFLOAD_MASK (                   \
 
 /* Bit Mask to indicate what bits required for building TX context */
 #define IGB_TX_OFFLOAD_MASK (                   \
+               PKT_TX_OUTER_IPV6 |      \
+               PKT_TX_OUTER_IPV4 |      \
+               PKT_TX_IPV6 |            \
+               PKT_TX_IPV4 |            \
                PKT_TX_VLAN_PKT |                \
                PKT_TX_IP_CKSUM |                \
                PKT_TX_L4_MASK |                 \
                PKT_TX_VLAN_PKT |                \
                PKT_TX_IP_CKSUM |                \
                PKT_TX_L4_MASK |                 \
index 1511c6a..7de63e6 100644 (file)
@@ -1553,7 +1553,7 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 
                /* fill mbuf attributes if any */
                ena_rx_mbuf_prepare(mbuf_head, &ena_rx_ctx);
 
                /* fill mbuf attributes if any */
                ena_rx_mbuf_prepare(mbuf_head, &ena_rx_ctx);
-               mbuf_head->hash.rss = (uint32_t)rx_ring->id;
+               mbuf_head->hash.rss = ena_rx_ctx.hash;
 
                /* pass to DPDK application head mbuf */
                rx_pkts[recv_idx] = mbuf_head;
 
                /* pass to DPDK application head mbuf */
                rx_pkts[recv_idx] = mbuf_head;
index 3926b79..3ed1d90 100644 (file)
@@ -68,5 +68,6 @@ DEPDIRS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += lib/librte_eal lib/librte_ether
 DEPDIRS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += lib/librte_mempool lib/librte_mbuf
 DEPDIRS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += lib/librte_net
 DEPDIRS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += lib/librte_hash
 DEPDIRS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += lib/librte_mempool lib/librte_mbuf
 DEPDIRS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += lib/librte_net
 DEPDIRS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += lib/librte_hash
+DEPDIRS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += lib/librte_kvargs
 
 include $(RTE_SDK)/mk/rte.lib.mk
 
 include $(RTE_SDK)/mk/rte.lib.mk
index 785fd6f..a949626 100644 (file)
@@ -895,9 +895,9 @@ enum {
 };
 
 struct filter_tlv {
 };
 
 struct filter_tlv {
-       u_int32_t type;
-       u_int32_t length;
-       u_int32_t val[0];
+       uint32_t type;
+       uint32_t length;
+       uint32_t val[0];
 };
 
 /* Data for CMD_ADD_FILTER is 2 TLV and filter + action structs */
 };
 
 /* Data for CMD_ADD_FILTER is 2 TLV and filter + action structs */
@@ -911,10 +911,10 @@ struct filter_tlv {
  * drivers should use this instead of "sizeof (struct filter_v2)" when
  * computing length for TLV.
  */
  * drivers should use this instead of "sizeof (struct filter_v2)" when
  * computing length for TLV.
  */
-static inline u_int32_t
+static inline uint32_t
 vnic_filter_size(struct filter_v2 *fp)
 {
 vnic_filter_size(struct filter_v2 *fp)
 {
-       u_int32_t size;
+       uint32_t size;
 
        switch (fp->type) {
        case FILTER_USNIC_ID:
 
        switch (fp->type) {
        case FILTER_USNIC_ID:
index 46f20b2..4782faa 100644 (file)
@@ -127,6 +127,7 @@ struct enic {
        u8 hw_ip_checksum;
        u16 max_mtu;
        u16 adv_filters;
        u8 hw_ip_checksum;
        u16 max_mtu;
        u16 adv_filters;
+       uint8_t ig_vlan_rewrite_mode; /* devargs ig-vlan-rewrite */
 
        unsigned int flags;
        unsigned int priv_flags;
 
        unsigned int flags;
        unsigned int priv_flags;
index 17479d4..31614f3 100644 (file)
@@ -38,6 +38,7 @@
 #include <rte_dev.h>
 #include <rte_pci.h>
 #include <rte_ethdev.h>
 #include <rte_dev.h>
 #include <rte_pci.h>
 #include <rte_ethdev.h>
+#include <rte_kvargs.h>
 #include <rte_string_fns.h>
 
 #include "vnic_intr.h"
 #include <rte_string_fns.h>
 
 #include "vnic_intr.h"
@@ -64,6 +65,8 @@ static const struct rte_pci_id pci_id_enic_map[] = {
        {.vendor_id = 0, /* sentinel */},
 };
 
        {.vendor_id = 0, /* sentinel */},
 };
 
+#define ENIC_DEVARG_IG_VLAN_REWRITE "ig-vlan-rewrite"
+
 static int
 enicpmd_fdir_ctrl_func(struct rte_eth_dev *eth_dev,
                        enum rte_filter_op filter_op, void *arg)
 static int
 enicpmd_fdir_ctrl_func(struct rte_eth_dev *eth_dev,
                        enum rte_filter_op filter_op, void *arg)
@@ -589,7 +592,64 @@ static const struct eth_dev_ops enicpmd_eth_dev_ops = {
        .filter_ctrl          = enicpmd_dev_filter_ctrl,
 };
 
        .filter_ctrl          = enicpmd_dev_filter_ctrl,
 };
 
-struct enic *enicpmd_list_head = NULL;
+static int enic_parse_ig_vlan_rewrite(__rte_unused const char *key,
+                                     const char *value,
+                                     void *opaque)
+{
+       struct enic *enic;
+
+       enic = (struct enic *)opaque;
+       if (strcmp(value, "trunk") == 0) {
+               /* Trunk mode: always tag */
+               enic->ig_vlan_rewrite_mode = IG_VLAN_REWRITE_MODE_DEFAULT_TRUNK;
+       } else if (strcmp(value, "untag") == 0) {
+               /* Untag default VLAN mode: untag if VLAN = default VLAN */
+               enic->ig_vlan_rewrite_mode =
+                       IG_VLAN_REWRITE_MODE_UNTAG_DEFAULT_VLAN;
+       } else if (strcmp(value, "priority") == 0) {
+               /*
+                * Priority-tag default VLAN mode: priority tag (VLAN header
+                * with ID=0) if VLAN = default
+                */
+               enic->ig_vlan_rewrite_mode =
+                       IG_VLAN_REWRITE_MODE_PRIORITY_TAG_DEFAULT_VLAN;
+       } else if (strcmp(value, "pass") == 0) {
+               /* Pass through mode: do not touch tags */
+               enic->ig_vlan_rewrite_mode = IG_VLAN_REWRITE_MODE_PASS_THRU;
+       } else {
+               dev_err(enic, "Invalid value for " ENIC_DEVARG_IG_VLAN_REWRITE
+                       ": expected=trunk|untag|priority|pass given=%s\n",
+                       value);
+               return -EINVAL;
+       }
+       return 0;
+}
+
+static int enic_check_devargs(struct rte_eth_dev *dev)
+{
+       static const char *valid_keys[] = {
+               ENIC_DEVARG_IG_VLAN_REWRITE,
+               NULL};
+       struct enic *enic = pmd_priv(dev);
+       struct rte_kvargs *kvlist;
+
+       ENICPMD_FUNC_TRACE();
+
+       enic->ig_vlan_rewrite_mode = IG_VLAN_REWRITE_MODE_PASS_THRU;
+       if (!dev->pci_dev->device.devargs)
+               return 0;
+       kvlist = rte_kvargs_parse(dev->pci_dev->device.devargs->args, valid_keys);
+       if (!kvlist)
+               return -EINVAL;
+       if (rte_kvargs_process(kvlist, ENIC_DEVARG_IG_VLAN_REWRITE,
+                              enic_parse_ig_vlan_rewrite, enic) < 0) {
+               rte_kvargs_free(kvlist);
+               return -EINVAL;
+       }
+       rte_kvargs_free(kvlist);
+       return 0;
+}
+
 /* Initialize the driver
  * It returns 0 on success.
  */
 /* Initialize the driver
  * It returns 0 on success.
  */
@@ -598,6 +658,7 @@ static int eth_enicpmd_dev_init(struct rte_eth_dev *eth_dev)
        struct rte_pci_device *pdev;
        struct rte_pci_addr *addr;
        struct enic *enic = pmd_priv(eth_dev);
        struct rte_pci_device *pdev;
        struct rte_pci_addr *addr;
        struct enic *enic = pmd_priv(eth_dev);
+       int err;
 
        ENICPMD_FUNC_TRACE();
 
 
        ENICPMD_FUNC_TRACE();
 
@@ -615,6 +676,9 @@ static int eth_enicpmd_dev_init(struct rte_eth_dev *eth_dev)
        snprintf(enic->bdf_name, ENICPMD_BDF_LENGTH, "%04x:%02x:%02x.%x",
                addr->domain, addr->bus, addr->devid, addr->function);
 
        snprintf(enic->bdf_name, ENICPMD_BDF_LENGTH, "%04x:%02x:%02x.%x",
                addr->domain, addr->bus, addr->devid, addr->function);
 
+       err = enic_check_devargs(eth_dev);
+       if (err)
+               return err;
        return enic_probe(enic);
 }
 
        return enic_probe(enic);
 }
 
@@ -631,3 +695,5 @@ static struct eth_driver rte_enic_pmd = {
 
 RTE_PMD_REGISTER_PCI(net_enic, rte_enic_pmd.pci_drv);
 RTE_PMD_REGISTER_PCI_TABLE(net_enic, pci_id_enic_map);
 
 RTE_PMD_REGISTER_PCI(net_enic, rte_enic_pmd.pci_drv);
 RTE_PMD_REGISTER_PCI_TABLE(net_enic, pci_id_enic_map);
+RTE_PMD_REGISTER_PARAM_STRING(net_enic,
+       ENIC_DEVARG_IG_VLAN_REWRITE "=trunk|untag|priority|pass");
index 1760623..f687b3f 100644 (file)
@@ -1394,8 +1394,10 @@ int enic_probe(struct enic *enic)
        }
 
        /* Set ingress vlan rewrite mode before vnic initialization */
        }
 
        /* Set ingress vlan rewrite mode before vnic initialization */
+       dev_debug(enic, "Set ig_vlan_rewrite_mode=%u\n",
+                 enic->ig_vlan_rewrite_mode);
        err = vnic_dev_set_ig_vlan_rewrite_mode(enic->vdev,
        err = vnic_dev_set_ig_vlan_rewrite_mode(enic->vdev,
-               IG_VLAN_REWRITE_MODE_PASS_THRU);
+               enic->ig_vlan_rewrite_mode);
        if (err) {
                dev_err(enic,
                        "Failed to set ingress vlan rewrite mode, aborting.\n");
        if (err) {
                dev_err(enic,
                        "Failed to set ingress vlan rewrite mode, aborting.\n");
index 1934f8b..0cfde46 100644 (file)
@@ -189,10 +189,12 @@ enic_cq_rx_to_pkt_flags(struct cq_desc *cqd, struct rte_mbuf *mbuf)
                pkt_flags |= PKT_RX_VLAN_PKT | PKT_RX_VLAN_STRIPPED;
                mbuf->packet_type |= RTE_PTYPE_L2_ETHER;
        } else {
                pkt_flags |= PKT_RX_VLAN_PKT | PKT_RX_VLAN_STRIPPED;
                mbuf->packet_type |= RTE_PTYPE_L2_ETHER;
        } else {
-               if (vlan_tci != 0)
+               if (vlan_tci != 0) {
+                       pkt_flags |= PKT_RX_VLAN_PKT;
                        mbuf->packet_type |= RTE_PTYPE_L2_ETHER_VLAN;
                        mbuf->packet_type |= RTE_PTYPE_L2_ETHER_VLAN;
-               else
+               } else {
                        mbuf->packet_type |= RTE_PTYPE_L2_ETHER;
                        mbuf->packet_type |= RTE_PTYPE_L2_ETHER;
+               }
        }
        mbuf->vlan_tci = vlan_tci;
 
        }
        mbuf->vlan_tci = vlan_tci;
 
index 0fac816..f8f6d37 100644 (file)
@@ -482,11 +482,6 @@ fm10k_dev_configure(struct rte_eth_dev *dev)
        return 0;
 }
 
        return 0;
 }
 
-/* fls = find last set bit = 32 minus the number of leading zeros */
-#ifndef fls
-#define fls(x) (((x) == 0) ? 0 : (32 - __builtin_clz((x))))
-#endif
-
 static void
 fm10k_dev_vmdq_rx_configure(struct rte_eth_dev *dev)
 {
 static void
 fm10k_dev_vmdq_rx_configure(struct rte_eth_dev *dev)
 {
@@ -1059,8 +1054,8 @@ fm10k_dev_dglort_map_configure(struct rte_eth_dev *dev)
 
        macvlan = FM10K_DEV_PRIVATE_TO_MACVLAN(dev->data->dev_private);
        nb_queue_pools = macvlan->nb_queue_pools;
 
        macvlan = FM10K_DEV_PRIVATE_TO_MACVLAN(dev->data->dev_private);
        nb_queue_pools = macvlan->nb_queue_pools;
-       pool_len = nb_queue_pools ? fls(nb_queue_pools - 1) : 0;
-       rss_len = fls(dev->data->nb_rx_queues - 1) - pool_len;
+       pool_len = nb_queue_pools ? rte_fls_u32(nb_queue_pools - 1) : 0;
+       rss_len = rte_fls_u32(dev->data->nb_rx_queues - 1) - pool_len;
 
        /* GLORT 0x0-0x3F are used by PF and VMDQ,  0x40-0x7F used by FD */
        dglortdec = (rss_len << FM10K_DGLORTDEC_RSSLENGTH_SHIFT) | pool_len;
 
        /* GLORT 0x0-0x3F are used by PF and VMDQ,  0x40-0x7F used by FD */
        dglortdec = (rss_len << FM10K_DGLORTDEC_RSSLENGTH_SHIFT) | pool_len;
@@ -1071,7 +1066,7 @@ fm10k_dev_dglort_map_configure(struct rte_eth_dev *dev)
        FM10K_WRITE_REG(hw, FM10K_DGLORTDEC(0), dglortdec);
 
        /* Flow Director configurations, only queue number is valid. */
        FM10K_WRITE_REG(hw, FM10K_DGLORTDEC(0), dglortdec);
 
        /* Flow Director configurations, only queue number is valid. */
-       dglortdec = fls(dev->data->nb_rx_queues - 1);
+       dglortdec = rte_fls_u32(dev->data->nb_rx_queues - 1);
        dglortmask = (GLORT_FD_MASK << FM10K_DGLORTMAP_MASK_SHIFT) |
                        (hw->mac.dglort_map + GLORT_FD_Q_BASE);
        FM10K_WRITE_REG(hw, FM10K_DGLORTMAP(1), dglortmask);
        dglortmask = (GLORT_FD_MASK << FM10K_DGLORTMAP_MASK_SHIFT) |
                        (hw->mac.dglort_map + GLORT_FD_Q_BASE);
        FM10K_WRITE_REG(hw, FM10K_DGLORTMAP(1), dglortmask);
index e231582..4d3f938 100644 (file)
@@ -126,6 +126,7 @@ enum i40e_status_code i40e_alloc_adminq_arq_ring(struct i40e_hw *hw)
  **/
 void i40e_free_adminq_asq(struct i40e_hw *hw)
 {
  **/
 void i40e_free_adminq_asq(struct i40e_hw *hw)
 {
+       i40e_free_virt_mem(hw, &hw->aq.asq.cmd_buf);
        i40e_free_dma_mem(hw, &hw->aq.asq.desc_buf);
 }
 
        i40e_free_dma_mem(hw, &hw->aq.asq.desc_buf);
 }
 
@@ -433,7 +434,7 @@ enum i40e_status_code i40e_init_asq(struct i40e_hw *hw)
        /* initialize base registers */
        ret_code = i40e_config_asq_regs(hw);
        if (ret_code != I40E_SUCCESS)
        /* initialize base registers */
        ret_code = i40e_config_asq_regs(hw);
        if (ret_code != I40E_SUCCESS)
-               goto init_adminq_free_rings;
+               goto init_config_regs;
 
        /* success! */
        hw->aq.asq.count = hw->aq.num_asq_entries;
 
        /* success! */
        hw->aq.asq.count = hw->aq.num_asq_entries;
@@ -441,6 +442,10 @@ enum i40e_status_code i40e_init_asq(struct i40e_hw *hw)
 
 init_adminq_free_rings:
        i40e_free_adminq_asq(hw);
 
 init_adminq_free_rings:
        i40e_free_adminq_asq(hw);
+       return ret_code;
+
+init_config_regs:
+       i40e_free_asq_bufs(hw);
 
 init_adminq_exit:
        return ret_code;
 
 init_adminq_exit:
        return ret_code;
index de60e2a..8ba75c7 100644 (file)
@@ -1348,7 +1348,7 @@ enum i40e_status_code i40e_pf_reset(struct i40e_hw *hw)
                        I40E_GLGEN_RSTCTL_GRSTDEL_MASK) >>
                        I40E_GLGEN_RSTCTL_GRSTDEL_SHIFT;
 
                        I40E_GLGEN_RSTCTL_GRSTDEL_MASK) >>
                        I40E_GLGEN_RSTCTL_GRSTDEL_SHIFT;
 
-       grst_del = grst_del * 20;
+       grst_del = min(grst_del * 20, 160U);
 
        for (cnt = 0; cnt < grst_del; cnt++) {
                reg = rd32(hw, I40E_GLGEN_RSTAT);
 
        for (cnt = 0; cnt < grst_del; cnt++) {
                reg = rd32(hw, I40E_GLGEN_RSTAT);
@@ -3574,9 +3574,10 @@ STATIC void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
        u32 valid_functions, num_functions;
        u32 number, logical_id, phys_id;
        struct i40e_hw_capabilities *p;
        u32 valid_functions, num_functions;
        u32 number, logical_id, phys_id;
        struct i40e_hw_capabilities *p;
+       enum i40e_status_code status;
+       u16 id, ocp_cfg_word0;
        u8 major_rev;
        u32 i = 0;
        u8 major_rev;
        u32 i = 0;
-       u16 id;
 
        cap = (struct i40e_aqc_list_capabilities_element_resp *) buff;
 
 
        cap = (struct i40e_aqc_list_capabilities_element_resp *) buff;
 
@@ -3863,6 +3864,26 @@ STATIC void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
                        hw->num_ports++;
        }
 
                        hw->num_ports++;
        }
 
+       /* OCP cards case: if a mezz is removed the ethernet port is at
+        * disabled state in PRTGEN_CNF register. Additional NVM read is
+        * needed in order to check if we are dealing with OCP card.
+        * Those cards have 4 PFs at minimum, so using PRTGEN_CNF for counting
+        * physical ports results in wrong partition id calculation and thus
+        * not supporting WoL.
+        */
+       if (hw->mac.type == I40E_MAC_X722) {
+               if (i40e_acquire_nvm(hw, I40E_RESOURCE_READ) == I40E_SUCCESS) {
+                       status = i40e_aq_read_nvm(hw, I40E_SR_EMP_MODULE_PTR,
+                                                 2 * I40E_SR_OCP_CFG_WORD0,
+                                                 sizeof(ocp_cfg_word0),
+                                                 &ocp_cfg_word0, true, NULL);
+                       if (status == I40E_SUCCESS &&
+                           (ocp_cfg_word0 & I40E_SR_OCP_ENABLED))
+                               hw->num_ports = 4;
+                       i40e_release_nvm(hw);
+               }
+       }
+
        valid_functions = p->valid_functions;
        num_functions = 0;
        while (valid_functions) {
        valid_functions = p->valid_functions;
        num_functions = 0;
        while (valid_functions) {
index 2260648..739f3d5 100644 (file)
@@ -143,7 +143,7 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
                ret_code = I40E_ERR_INVALID_HMC_OBJ_COUNT;
                DEBUGOUT3("i40e_init_lan_hmc: Tx context: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
                          txq_num, obj->max_cnt, ret_code);
                ret_code = I40E_ERR_INVALID_HMC_OBJ_COUNT;
                DEBUGOUT3("i40e_init_lan_hmc: Tx context: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
                          txq_num, obj->max_cnt, ret_code);
-               goto init_lan_hmc_out;
+               goto free_hmc_out;
        }
 
        /* aggregate values into the full LAN object for later */
        }
 
        /* aggregate values into the full LAN object for later */
@@ -166,7 +166,7 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
                ret_code = I40E_ERR_INVALID_HMC_OBJ_COUNT;
                DEBUGOUT3("i40e_init_lan_hmc: Rx context: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
                          rxq_num, obj->max_cnt, ret_code);
                ret_code = I40E_ERR_INVALID_HMC_OBJ_COUNT;
                DEBUGOUT3("i40e_init_lan_hmc: Rx context: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
                          rxq_num, obj->max_cnt, ret_code);
-               goto init_lan_hmc_out;
+               goto free_hmc_out;
        }
 
        /* aggregate values into the full LAN object for later */
        }
 
        /* aggregate values into the full LAN object for later */
@@ -189,7 +189,7 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
                ret_code = I40E_ERR_INVALID_HMC_OBJ_COUNT;
                DEBUGOUT3("i40e_init_lan_hmc: FCoE context: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
                          fcoe_cntx_num, obj->max_cnt, ret_code);
                ret_code = I40E_ERR_INVALID_HMC_OBJ_COUNT;
                DEBUGOUT3("i40e_init_lan_hmc: FCoE context: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
                          fcoe_cntx_num, obj->max_cnt, ret_code);
-               goto init_lan_hmc_out;
+               goto free_hmc_out;
        }
 
        /* aggregate values into the full LAN object for later */
        }
 
        /* aggregate values into the full LAN object for later */
@@ -212,7 +212,7 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
                ret_code = I40E_ERR_INVALID_HMC_OBJ_COUNT;
                DEBUGOUT3("i40e_init_lan_hmc: FCoE filter: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
                          fcoe_filt_num, obj->max_cnt, ret_code);
                ret_code = I40E_ERR_INVALID_HMC_OBJ_COUNT;
                DEBUGOUT3("i40e_init_lan_hmc: FCoE filter: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
                          fcoe_filt_num, obj->max_cnt, ret_code);
-               goto init_lan_hmc_out;
+               goto free_hmc_out;
        }
 
        /* aggregate values into the full LAN object for later */
        }
 
        /* aggregate values into the full LAN object for later */
@@ -233,7 +233,7 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
                                          (sizeof(struct i40e_hmc_sd_entry) *
                                          hw->hmc.sd_table.sd_cnt));
                if (ret_code)
                                          (sizeof(struct i40e_hmc_sd_entry) *
                                          hw->hmc.sd_table.sd_cnt));
                if (ret_code)
-                       goto init_lan_hmc_out;
+                       goto free_hmc_out;
                hw->hmc.sd_table.sd_entry =
                        (struct i40e_hmc_sd_entry *)hw->hmc.sd_table.addr.va;
        }
                hw->hmc.sd_table.sd_entry =
                        (struct i40e_hmc_sd_entry *)hw->hmc.sd_table.addr.va;
        }
@@ -241,6 +241,11 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
        full_obj->size = l2fpm_size;
 
 init_lan_hmc_out:
        full_obj->size = l2fpm_size;
 
 init_lan_hmc_out:
+       return ret_code;
+free_hmc_out:
+       if (hw->hmc.hmc_obj_virt_mem.va)
+               i40e_free_virt_mem(hw, &hw->hmc.hmc_obj_virt_mem);
+
        return ret_code;
 }
 
        return ret_code;
 }
 
index d514abe..aa45d10 100644 (file)
@@ -1519,6 +1519,8 @@ struct i40e_hw_port_stats {
 #define I40E_SR_PCIE_ALT_MODULE_MAX_SIZE       1024
 #define I40E_SR_CONTROL_WORD_1_SHIFT           0x06
 #define I40E_SR_CONTROL_WORD_1_MASK    (0x03 << I40E_SR_CONTROL_WORD_1_SHIFT)
 #define I40E_SR_PCIE_ALT_MODULE_MAX_SIZE       1024
 #define I40E_SR_CONTROL_WORD_1_SHIFT           0x06
 #define I40E_SR_CONTROL_WORD_1_MASK    (0x03 << I40E_SR_CONTROL_WORD_1_SHIFT)
+#define I40E_SR_OCP_CFG_WORD0                  0x2B
+#define I40E_SR_OCP_ENABLED                    BIT(15)
 
 /* Shadow RAM related */
 #define I40E_SR_SECTOR_SIZE_IN_WORDS   0x800
 
 /* Shadow RAM related */
 #define I40E_SR_SECTOR_SIZE_IN_WORDS   0x800
index 3061296..62b36c9 100644 (file)
@@ -1081,9 +1081,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev)
        /* Make sure all is clean before doing PF reset */
        i40e_clear_hw(hw);
 
        /* Make sure all is clean before doing PF reset */
        i40e_clear_hw(hw);
 
-       /* Initialize the hardware */
-       i40e_hw_init(dev);
-
        /* Reset here to make sure all is clean for each PF */
        ret = i40e_pf_reset(hw);
        if (ret) {
        /* Reset here to make sure all is clean for each PF */
        ret = i40e_pf_reset(hw);
        if (ret) {
@@ -1098,20 +1095,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev)
                return ret;
        }
 
                return ret;
        }
 
-       i40e_config_automask(pf);
-
-       /*
-        * To work around the NVM issue, initialize registers
-        * for flexible payload and packet type of QinQ by
-        * software. It should be removed once issues are fixed
-        * in NVM.
-        */
-       if (!pf->support_multi_driver)
-               i40e_GLQF_reg_init(hw);
-
-       /* Initialize the input set for filters (hash and fd) to default value */
-       i40e_filter_input_set_init(pf);
-
        /* Initialize the parameters for adminq */
        i40e_init_adminq_parameter(hw);
        ret = i40e_init_adminq(hw);
        /* Initialize the parameters for adminq */
        i40e_init_adminq_parameter(hw);
        ret = i40e_init_adminq(hw);
@@ -1126,6 +1109,23 @@ eth_i40e_dev_init(struct rte_eth_dev *dev)
                     ((hw->nvm.version >> 4) & 0xff),
                     (hw->nvm.version & 0xf), hw->nvm.eetrack);
 
                     ((hw->nvm.version >> 4) & 0xff),
                     (hw->nvm.version & 0xf), hw->nvm.eetrack);
 
+       /* Initialize the hardware */
+       i40e_hw_init(dev);
+
+       i40e_config_automask(pf);
+
+       /*
+        * To work around the NVM issue, initialize registers
+        * for flexible payload and packet type of QinQ by
+        * software. It should be removed once issues are fixed
+        * in NVM.
+        */
+       if (!pf->support_multi_driver)
+               i40e_GLQF_reg_init(hw);
+
+       /* Initialize the input set for filters (hash and fd) to default value */
+       i40e_filter_input_set_init(pf);
+
        /* Need the special FW version to support floating VEB */
        config_floating_veb(dev);
        /* Clear PXE mode */
        /* Need the special FW version to support floating VEB */
        config_floating_veb(dev);
        /* Clear PXE mode */
@@ -2085,6 +2085,10 @@ i40e_dev_promiscuous_disable(struct rte_eth_dev *dev)
        if (status != I40E_SUCCESS)
                PMD_DRV_LOG(ERR, "Failed to disable unicast promiscuous");
 
        if (status != I40E_SUCCESS)
                PMD_DRV_LOG(ERR, "Failed to disable unicast promiscuous");
 
+       /* must remain in all_multicast mode */
+       if (dev->data->all_multicast == 1)
+               return;
+
        status = i40e_aq_set_vsi_multicast_promiscuous(hw, vsi->seid,
                                                        false, NULL);
        if (status != I40E_SUCCESS)
        status = i40e_aq_set_vsi_multicast_promiscuous(hw, vsi->seid,
                                                        false, NULL);
        if (status != I40E_SUCCESS)
@@ -4589,7 +4593,7 @@ i40e_enable_pf_lb(struct i40e_pf *pf)
        int ret;
 
        /* Use the FW API if FW >= v5.0 */
        int ret;
 
        /* Use the FW API if FW >= v5.0 */
-       if (hw->aq.fw_maj_ver < 5) {
+       if (hw->aq.fw_maj_ver < 5 && hw->mac.type != I40E_MAC_X722) {
                PMD_INIT_LOG(ERR, "FW < v5.0, cannot enable loopback");
                return;
        }
                PMD_INIT_LOG(ERR, "FW < v5.0, cannot enable loopback");
                return;
        }
@@ -4858,7 +4862,7 @@ i40e_vsi_setup(struct i40e_pf *pf,
                ctxt.flags = I40E_AQ_VSI_TYPE_VF;
 
                /* Use the VEB configuration if FW >= v5.0 */
                ctxt.flags = I40E_AQ_VSI_TYPE_VF;
 
                /* Use the VEB configuration if FW >= v5.0 */
-               if (hw->aq.fw_maj_ver >= 5) {
+               if (hw->aq.fw_maj_ver >= 5 || hw->mac.type == I40E_MAC_X722) {
                        /* Configure switch ID */
                        ctxt.info.valid_sections |=
                        rte_cpu_to_le_16(I40E_AQ_VSI_PROP_SWITCH_VALID);
                        /* Configure switch ID */
                        ctxt.info.valid_sections |=
                        rte_cpu_to_le_16(I40E_AQ_VSI_PROP_SWITCH_VALID);
@@ -10080,6 +10084,32 @@ i40e_dev_rx_queue_intr_disable(struct rte_eth_dev *dev, uint16_t queue_id)
        return 0;
 }
 
        return 0;
 }
 
+/**
+ * This function is used to check if the register is valid.
+ * Below is the valid registers list for X722 only:
+ * 0x2b800--0x2bb00
+ * 0x38700--0x38a00
+ * 0x3d800--0x3db00
+ * 0x208e00--0x209000
+ * 0x20be00--0x20c000
+ * 0x263c00--0x264000
+ * 0x265c00--0x266000
+ */
+static inline int i40e_valid_regs(enum i40e_mac_type type, uint32_t reg_offset)
+{
+       if ((type != I40E_MAC_X722) &&
+           ((reg_offset >= 0x2b800 && reg_offset <= 0x2bb00) ||
+            (reg_offset >= 0x38700 && reg_offset <= 0x38a00) ||
+            (reg_offset >= 0x3d800 && reg_offset <= 0x3db00) ||
+            (reg_offset >= 0x208e00 && reg_offset <= 0x209000) ||
+            (reg_offset >= 0x20be00 && reg_offset <= 0x20c000) ||
+            (reg_offset >= 0x263c00 && reg_offset <= 0x264000) ||
+            (reg_offset >= 0x265c00 && reg_offset <= 0x266000)))
+               return 0;
+       else
+               return 1;
+}
+
 static int i40e_get_regs(struct rte_eth_dev *dev,
                         struct rte_dev_reg_info *regs)
 {
 static int i40e_get_regs(struct rte_eth_dev *dev,
                         struct rte_dev_reg_info *regs)
 {
@@ -10121,8 +10151,11 @@ static int i40e_get_regs(struct rte_eth_dev *dev,
                                reg_offset = arr_idx * reg_info->stride1 +
                                        arr_idx2 * reg_info->stride2;
                                reg_offset += reg_info->base_addr;
                                reg_offset = arr_idx * reg_info->stride1 +
                                        arr_idx2 * reg_info->stride2;
                                reg_offset += reg_info->base_addr;
-                               ptr_data[reg_offset >> 2] =
-                                       I40E_READ_REG(hw, reg_offset);
+                               if (!i40e_valid_regs(hw->mac.type, reg_offset))
+                                       ptr_data[reg_offset >> 2] = 0;
+                               else
+                                       ptr_data[reg_offset >> 2] =
+                                               I40E_READ_REG(hw, reg_offset);
                        }
        }
 
                        }
        }
 
index 777ffc2..2c56c1a 100644 (file)
 #define I40E_TXD_CMD (I40E_TX_DESC_CMD_EOP | I40E_TX_DESC_CMD_RS)
 
 #define I40E_TX_CKSUM_OFFLOAD_MASK (            \
 #define I40E_TXD_CMD (I40E_TX_DESC_CMD_EOP | I40E_TX_DESC_CMD_RS)
 
 #define I40E_TX_CKSUM_OFFLOAD_MASK (            \
+               PKT_TX_OUTER_IPV4 |              \
+               PKT_TX_OUTER_IPV6 |              \
+               PKT_TX_IPV4 |                    \
+               PKT_TX_IPV6 |                    \
                PKT_TX_IP_CKSUM |                \
                PKT_TX_L4_MASK |                 \
                PKT_TX_TCP_SEG |                 \
                PKT_TX_IP_CKSUM |                \
                PKT_TX_L4_MASK |                 \
                PKT_TX_TCP_SEG |                 \
index e54fd30..ac4ef8a 100644 (file)
@@ -5095,10 +5095,10 @@ s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
                ixgbe_flap_tx_laser(hw);
 
                /* Wait for the controller to acquire link.  Per IEEE 802.3ap,
                ixgbe_flap_tx_laser(hw);
 
                /* Wait for the controller to acquire link.  Per IEEE 802.3ap,
-                * Section 73.10.2, we may have to wait up to 500ms if KR is
+                * Section 73.10.2, we may have to wait up to 1000ms if KR is
                 * attempted.  82599 uses the same timing for 10g SFI.
                 */
                 * attempted.  82599 uses the same timing for 10g SFI.
                 */
-               for (i = 0; i < 5; i++) {
+               for (i = 0; i < 10; i++) {
                        /* Wait for the link partner to also set speed */
                        msec_delay(100);
 
                        /* Wait for the link partner to also set speed */
                        msec_delay(100);
 
index 182a8c6..61c075b 100644 (file)
@@ -3227,13 +3227,8 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,
 
 static int
 ixgbevf_check_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
 
 static int
 ixgbevf_check_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
-                  int *link_up, int wait_to_complete)
+                  int *link_up, int wait_to_complete __rte_unused)
 {
 {
-       /**
-        * for a quick link status checking, wait_to_compelet == 0,
-        * skip PF link status checking
-        */
-       bool no_pflink_check = wait_to_complete == 0;
        struct ixgbe_mbx_info *mbx = &hw->mbx;
        struct ixgbe_mac_info *mac = &hw->mac;
        uint32_t links_reg, in_msg;
        struct ixgbe_mbx_info *mbx = &hw->mbx;
        struct ixgbe_mac_info *mac = &hw->mac;
        uint32_t links_reg, in_msg;
@@ -3294,14 +3289,6 @@ ixgbevf_check_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
                *speed = IXGBE_LINK_SPEED_UNKNOWN;
        }
 
                *speed = IXGBE_LINK_SPEED_UNKNOWN;
        }
 
-       if (no_pflink_check) {
-               if (*speed == IXGBE_LINK_SPEED_UNKNOWN)
-                       mac->get_link_status = true;
-               else
-                       mac->get_link_status = false;
-
-               goto out;
-       }
        /* if the read failed it could just be a mailbox collision, best wait
         * until we are called again and don't report an error
         */
        /* if the read failed it could just be a mailbox collision, best wait
         * until we are called again and don't report an error
         */
@@ -3311,7 +3298,7 @@ ixgbevf_check_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
        if (!(in_msg & IXGBE_VT_MSGTYPE_CTS)) {
                /* msg is not CTS and is NACK we must have lost CTS status */
                if (in_msg & IXGBE_VT_MSGTYPE_NACK)
        if (!(in_msg & IXGBE_VT_MSGTYPE_CTS)) {
                /* msg is not CTS and is NACK we must have lost CTS status */
                if (in_msg & IXGBE_VT_MSGTYPE_NACK)
-                       ret_val = -1;
+                       mac->get_link_status = false;
                goto out;
        }
 
                goto out;
        }
 
index 8b18b53..4b1a6f4 100644 (file)
 
 /* Bit Mask to indicate what bits required for building TX context */
 #define IXGBE_TX_OFFLOAD_MASK (                         \
 
 /* Bit Mask to indicate what bits required for building TX context */
 #define IXGBE_TX_OFFLOAD_MASK (                         \
+               PKT_TX_OUTER_IPV6 |              \
+               PKT_TX_OUTER_IPV4 |              \
+               PKT_TX_IPV6 |                    \
+               PKT_TX_IPV4 |                    \
                PKT_TX_VLAN_PKT |                \
                PKT_TX_IP_CKSUM |                \
                PKT_TX_L4_MASK |                 \
                PKT_TX_VLAN_PKT |                \
                PKT_TX_IP_CKSUM |                \
                PKT_TX_L4_MASK |                 \
@@ -4996,6 +5000,7 @@ ixgbe_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id)
 
        if (tx_queue_id < dev->data->nb_tx_queues) {
                txq = dev->data->tx_queues[tx_queue_id];
 
        if (tx_queue_id < dev->data->nb_tx_queues) {
                txq = dev->data->tx_queues[tx_queue_id];
+               IXGBE_WRITE_REG(hw, IXGBE_TDH(txq->reg_idx), 0);
                txdctl = IXGBE_READ_REG(hw, IXGBE_TXDCTL(txq->reg_idx));
                txdctl |= IXGBE_TXDCTL_ENABLE;
                IXGBE_WRITE_REG(hw, IXGBE_TXDCTL(txq->reg_idx), txdctl);
                txdctl = IXGBE_READ_REG(hw, IXGBE_TXDCTL(txq->reg_idx));
                txdctl |= IXGBE_TXDCTL_ENABLE;
                IXGBE_WRITE_REG(hw, IXGBE_TXDCTL(txq->reg_idx), txdctl);
@@ -5013,7 +5018,6 @@ ixgbe_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id)
                                             "Tx Queue %d", tx_queue_id);
                }
                rte_wmb();
                                             "Tx Queue %d", tx_queue_id);
                }
                rte_wmb();
-               IXGBE_WRITE_REG(hw, IXGBE_TDH(txq->reg_idx), 0);
                IXGBE_WRITE_REG(hw, IXGBE_TDT(txq->reg_idx), 0);
                dev->data->tx_queue_state[tx_queue_id] = RTE_ETH_QUEUE_STATE_STARTED;
        } else
                IXGBE_WRITE_REG(hw, IXGBE_TDT(txq->reg_idx), 0);
                dev->data->tx_queue_state[tx_queue_id] = RTE_ETH_QUEUE_STATE_STARTED;
        } else
index f126979..7412103 100644 (file)
 
 #include "mlx5_defs.h"
 
 
 #include "mlx5_defs.h"
 
+/*
+ * Compilation workaround for PPC64 when AltiVec is fully enabled, e.g. std=c11.
+ * Otherwise there would be a type conflict between stdbool and altivec.
+ */
+#if defined(__PPC64__) && !defined(__APPLE_ALTIVEC__)
+#undef bool
+/* redefine as in stdbool.h */
+#define bool _Bool
+#endif
+
 /* Bit-field manipulation. */
 #define BITFIELD_DECLARE(bf, type, size) \
        type bf[(((size_t)(size) / (sizeof(type) * CHAR_BIT)) + \
 /* Bit-field manipulation. */
 #define BITFIELD_DECLARE(bf, type, size) \
        type bf[(((size_t)(size) / (sizeof(type) * CHAR_BIT)) + \
index 0f0589e..e5f6a88 100644 (file)
@@ -1567,21 +1567,20 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, struct nfp_net_rx_desc *rxd,
                return;
 
        /* If IPv4 and IP checksum error, fail */
                return;
 
        /* If IPv4 and IP checksum error, fail */
-       if ((rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM) &&
-           !(rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM_OK))
+       if (unlikely((rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM) &&
+           !(rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM_OK)))
                mb->ol_flags |= PKT_RX_IP_CKSUM_BAD;
                mb->ol_flags |= PKT_RX_IP_CKSUM_BAD;
+       else
+               mb->ol_flags |= PKT_RX_IP_CKSUM_GOOD;
 
        /* If neither UDP nor TCP return */
        if (!(rxd->rxd.flags & PCIE_DESC_RX_TCP_CSUM) &&
            !(rxd->rxd.flags & PCIE_DESC_RX_UDP_CSUM))
                return;
 
 
        /* If neither UDP nor TCP return */
        if (!(rxd->rxd.flags & PCIE_DESC_RX_TCP_CSUM) &&
            !(rxd->rxd.flags & PCIE_DESC_RX_UDP_CSUM))
                return;
 
-       if ((rxd->rxd.flags & PCIE_DESC_RX_TCP_CSUM) &&
-           !(rxd->rxd.flags & PCIE_DESC_RX_TCP_CSUM_OK))
-               mb->ol_flags |= PKT_RX_L4_CKSUM_BAD;
-
-       if ((rxd->rxd.flags & PCIE_DESC_RX_UDP_CSUM) &&
-           !(rxd->rxd.flags & PCIE_DESC_RX_UDP_CSUM_OK))
+       if (likely(rxd->rxd.flags & PCIE_DESC_RX_L4_CSUM_OK))
+               mb->ol_flags |= PKT_RX_L4_CKSUM_GOOD;
+       else
                mb->ol_flags |= PKT_RX_L4_CKSUM_BAD;
 }
 
                mb->ol_flags |= PKT_RX_L4_CKSUM_BAD;
 }
 
@@ -1630,6 +1629,18 @@ nfp_net_set_hash(struct nfp_net_rxq *rxq, struct nfp_net_rx_desc *rxd,
        case NFP_NET_RSS_IPV6_EX:
                mbuf->packet_type |= RTE_PTYPE_INNER_L3_IPV6_EXT;
                break;
        case NFP_NET_RSS_IPV6_EX:
                mbuf->packet_type |= RTE_PTYPE_INNER_L3_IPV6_EXT;
                break;
+       case NFP_NET_RSS_IPV4_TCP:
+               mbuf->packet_type |= RTE_PTYPE_INNER_L3_IPV6_EXT;
+               break;
+       case NFP_NET_RSS_IPV6_TCP:
+               mbuf->packet_type |= RTE_PTYPE_INNER_L3_IPV6_EXT;
+               break;
+       case NFP_NET_RSS_IPV4_UDP:
+               mbuf->packet_type |= RTE_PTYPE_INNER_L3_IPV6_EXT;
+               break;
+       case NFP_NET_RSS_IPV6_UDP:
+               mbuf->packet_type |= RTE_PTYPE_INNER_L3_IPV6_EXT;
+               break;
        default:
                mbuf->packet_type |= RTE_PTYPE_INNER_L4_MASK;
        }
        default:
                mbuf->packet_type |= RTE_PTYPE_INNER_L4_MASK;
        }
@@ -2223,14 +2234,22 @@ nfp_net_rss_hash_update(struct rte_eth_dev *dev,
        }
 
        if (rss_hf & ETH_RSS_IPV4)
        }
 
        if (rss_hf & ETH_RSS_IPV4)
-               cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV4 |
-                               NFP_NET_CFG_RSS_IPV4_TCP |
-                               NFP_NET_CFG_RSS_IPV4_UDP;
+               cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV4;
+
+       if (rss_hf & ETH_RSS_NONFRAG_IPV4_TCP)
+               cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV4_TCP;
+
+       if (rss_hf & ETH_RSS_NONFRAG_IPV4_UDP)
+               cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV4_UDP;
 
        if (rss_hf & ETH_RSS_IPV6)
 
        if (rss_hf & ETH_RSS_IPV6)
-               cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV6 |
-                               NFP_NET_CFG_RSS_IPV6_TCP |
-                               NFP_NET_CFG_RSS_IPV6_UDP;
+               cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV6;
+
+       if (rss_hf & ETH_RSS_NONFRAG_IPV6_TCP)
+               cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV6_TCP;
+
+       if (rss_hf & ETH_RSS_NONFRAG_IPV6_UDP)
+               cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV6_UDP;
 
        cfg_rss_ctrl |= NFP_NET_CFG_RSS_MASK;
        cfg_rss_ctrl |= NFP_NET_CFG_RSS_TOEPLITZ;
 
        cfg_rss_ctrl |= NFP_NET_CFG_RSS_MASK;
        cfg_rss_ctrl |= NFP_NET_CFG_RSS_TOEPLITZ;
@@ -2450,6 +2469,9 @@ nfp_net_init(struct rte_eth_dev *eth_dev)
        ether_addr_copy((struct ether_addr *)hw->mac_addr,
                        &eth_dev->data->mac_addrs[0]);
 
        ether_addr_copy((struct ether_addr *)hw->mac_addr,
                        &eth_dev->data->mac_addrs[0]);
 
+       if (!(hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR))
+               eth_dev->data->dev_flags |= RTE_ETH_DEV_NOLIVE_MAC_ADDR;
+
        PMD_INIT_LOG(INFO, "port %d VendorID=0x%x DeviceID=0x%x "
                     "mac=%02x:%02x:%02x:%02x:%02x:%02x",
                     eth_dev->data->port_id, pci_dev->id.vendor_id,
        PMD_INIT_LOG(INFO, "port %d VendorID=0x%x DeviceID=0x%x "
                     "mac=%02x:%02x:%02x:%02x:%02x:%02x",
                     eth_dev->data->port_id, pci_dev->id.vendor_id,
index c180972..ce475e3 100644 (file)
@@ -279,6 +279,8 @@ struct nfp_net_txq {
 #define PCIE_DESC_RX_UDP_CSUM_OK        (1 <<  1)
 #define PCIE_DESC_RX_VLAN               (1 <<  0)
 
 #define PCIE_DESC_RX_UDP_CSUM_OK        (1 <<  1)
 #define PCIE_DESC_RX_VLAN               (1 <<  0)
 
+#define PCIE_DESC_RX_L4_CSUM_OK         (PCIE_DESC_RX_TCP_CSUM_OK | \
+                                        PCIE_DESC_RX_UDP_CSUM_OK)
 struct nfp_net_rx_desc {
        union {
                /* Freelist descriptor */
 struct nfp_net_rx_desc {
        union {
                /* Freelist descriptor */
index 4b9b293..ac30552 100644 (file)
@@ -89,6 +89,14 @@ fill_sq_desc_header(union sq_entry_t *entry, struct rte_mbuf *pkt)
        entry->buff[0] = sqe.buff[0];
 }
 
        entry->buff[0] = sqe.buff[0];
 }
 
+static inline void __hot
+fill_sq_desc_header_zero_w1(union sq_entry_t *entry,
+                               struct rte_mbuf *pkt)
+{
+       fill_sq_desc_header(entry, pkt);
+       entry->buff[1] = 0ULL;
+}
+
 void __hot
 nicvf_single_pool_free_xmited_buffers(struct nicvf_txq *sq)
 {
 void __hot
 nicvf_single_pool_free_xmited_buffers(struct nicvf_txq *sq)
 {
@@ -232,7 +240,7 @@ nicvf_xmit_pkts_multiseg(void *tx_queue, struct rte_mbuf **tx_pkts,
                used_bufs += nb_segs;
 
                txbuffs[tail] = NULL;
                used_bufs += nb_segs;
 
                txbuffs[tail] = NULL;
-               fill_sq_desc_header(desc_ptr + tail, pkt);
+               fill_sq_desc_header_zero_w1(desc_ptr + tail, pkt);
                tail = (tail + 1) & qlen_mask;
 
                txbuffs[tail] = pkt;
                tail = (tail + 1) & qlen_mask;
 
                txbuffs[tail] = pkt;
index 12922df..5858e53 100644 (file)
@@ -1248,4 +1248,6 @@ RTE_PMD_REGISTER_VDEV(net_vhost, pmd_vhost_drv);
 RTE_PMD_REGISTER_ALIAS(net_vhost, eth_vhost);
 RTE_PMD_REGISTER_PARAM_STRING(net_vhost,
        "iface=<ifc> "
 RTE_PMD_REGISTER_ALIAS(net_vhost, eth_vhost);
 RTE_PMD_REGISTER_PARAM_STRING(net_vhost,
        "iface=<ifc> "
-       "queues=<int>");
+       "queues=<int> "
+       "client=<0|1> "
+       "dequeue-zero-copy=<0|1> ");
index 5a27ab7..6f950f0 100644 (file)
@@ -1394,11 +1394,6 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev)
        if (ret < 0)
                return ret;
 
        if (ret < 0)
                return ret;
 
-       /* Setup interrupt callback  */
-       if (eth_dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC)
-               rte_intr_callback_register(&pci_dev->intr_handle,
-                       virtio_interrupt_handler, eth_dev);
-
        return 0;
 }
 
        return 0;
 }
 
@@ -1423,11 +1418,6 @@ eth_virtio_dev_uninit(struct rte_eth_dev *eth_dev)
        rte_free(eth_dev->data->mac_addrs);
        eth_dev->data->mac_addrs = NULL;
 
        rte_free(eth_dev->data->mac_addrs);
        eth_dev->data->mac_addrs = NULL;
 
-       /* reset interrupt callback  */
-       if (eth_dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC)
-               rte_intr_callback_unregister(&pci_dev->intr_handle,
-                                               virtio_interrupt_handler,
-                                               eth_dev);
        rte_eal_pci_unmap_device(pci_dev);
 
        PMD_INIT_LOG(DEBUG, "dev_uninit completed");
        rte_eal_pci_unmap_device(pci_dev);
 
        PMD_INIT_LOG(DEBUG, "dev_uninit completed");
@@ -1538,6 +1528,12 @@ virtio_dev_start(struct rte_eth_dev *dev)
                        return -ENOTSUP;
                }
 
                        return -ENOTSUP;
                }
 
+               /* Setup interrupt callback  */
+               if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC)
+                       rte_intr_callback_register(&dev->pci_dev->intr_handle,
+                                                  virtio_interrupt_handler,
+                                                  dev);
+
                if (rte_intr_enable(&dev->pci_dev->intr_handle) < 0) {
                        PMD_DRV_LOG(ERR, "interrupt enable failed");
                        return -EIO;
                if (rte_intr_enable(&dev->pci_dev->intr_handle) < 0) {
                        PMD_DRV_LOG(ERR, "interrupt enable failed");
                        return -EIO;
@@ -1645,9 +1641,17 @@ virtio_dev_stop(struct rte_eth_dev *dev)
 
        PMD_INIT_LOG(DEBUG, "stop");
 
 
        PMD_INIT_LOG(DEBUG, "stop");
 
-       if (dev->data->dev_conf.intr_conf.lsc)
+       if (dev->data->dev_conf.intr_conf.lsc) {
                rte_intr_disable(&dev->pci_dev->intr_handle);
 
                rte_intr_disable(&dev->pci_dev->intr_handle);
 
+               /* Reset interrupt callback  */
+               if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC) {
+                       rte_intr_callback_unregister(&dev->pci_dev->intr_handle,
+                                                    virtio_interrupt_handler,
+                                                    dev);
+               }
+       }
+
        hw->started = 0;
        memset(&link, 0, sizeof(link));
        virtio_dev_atomic_write_link_status(dev, &link);
        hw->started = 0;
        memset(&link, 0, sizeof(link));
        virtio_dev_atomic_write_link_status(dev, &link);
index c491ec1..5122792 100644 (file)
        (VIRTIO_PMD_DEFAULT_GUEST_FEATURES |    \
         1u << VIRTIO_NET_F_GUEST_CSUM     |    \
         1u << VIRTIO_NET_F_GUEST_TSO4     |    \
        (VIRTIO_PMD_DEFAULT_GUEST_FEATURES |    \
         1u << VIRTIO_NET_F_GUEST_CSUM     |    \
         1u << VIRTIO_NET_F_GUEST_TSO4     |    \
-        1u << VIRTIO_NET_F_GUEST_TSO6)
+        1u << VIRTIO_NET_F_GUEST_TSO6     |    \
+        1u << VIRTIO_NET_F_CSUM           |    \
+        1u << VIRTIO_NET_F_HOST_TSO4      |    \
+        1u << VIRTIO_NET_F_HOST_TSO6)
+
 /*
  * CQ function prototype
  */
 /*
  * CQ function prototype
  */
index 8bb155d..3e6787a 100644 (file)
@@ -142,9 +142,6 @@ virtio_user_start_device(struct virtio_user_dev *dev)
        uint64_t features;
        int ret;
 
        uint64_t features;
        int ret;
 
-       /* Do not check return as already done in init, or reset in stop */
-       vhost_user_sock(dev->vhostfd, VHOST_USER_SET_OWNER, NULL);
-
        /* Step 0: tell vhost to create queues */
        if (virtio_user_queue_setup(dev, virtio_user_create_queue) < 0)
                goto error;
        /* Step 0: tell vhost to create queues */
        if (virtio_user_queue_setup(dev, virtio_user_create_queue) < 0)
                goto error;
@@ -185,6 +182,7 @@ error:
 
 int virtio_user_stop_device(struct virtio_user_dev *dev)
 {
 
 int virtio_user_stop_device(struct virtio_user_dev *dev)
 {
+       struct vhost_vring_state state;
        uint32_t i;
 
        for (i = 0; i < dev->max_queue_pairs * 2; ++i) {
        uint32_t i;
 
        for (i = 0; i < dev->max_queue_pairs * 2; ++i) {
@@ -195,6 +193,17 @@ int virtio_user_stop_device(struct virtio_user_dev *dev)
        for (i = 0; i < dev->max_queue_pairs; ++i)
                vhost_user_enable_queue_pair(dev->vhostfd, i, 0);
 
        for (i = 0; i < dev->max_queue_pairs; ++i)
                vhost_user_enable_queue_pair(dev->vhostfd, i, 0);
 
+       /* Stop the backend. */
+       for (i = 0; i < dev->max_queue_pairs * 2; ++i) {
+               state.index = i;
+               if (vhost_user_sock(dev->vhostfd, VHOST_USER_GET_VRING_BASE,
+                                          &state) < 0) {
+                       PMD_DRV_LOG(ERR, "get_vring_base failed, index=%u\n",
+                                   i);
+                       return -1;
+               }
+       }
+
        return 0;
 }
 
        return 0;
 }
 
index b1bd623..caa9be5 100644 (file)
@@ -369,7 +369,7 @@ virtio_user_pmd_probe(const char *name, const char *params)
                }
        } else {
                PMD_INIT_LOG(ERR, "arg %s is mandatory for virtio_user\n",
                }
        } else {
                PMD_INIT_LOG(ERR, "arg %s is mandatory for virtio_user\n",
-                         VIRTIO_USER_ARG_QUEUE_SIZE);
+                            VIRTIO_USER_ARG_PATH);
                goto end;
        }
 
                goto end;
        }
 
index b908b31..d2e1bfb 100644 (file)
@@ -301,8 +301,6 @@ mcast_out_pkt(struct rte_mbuf *pkt, int use_clone)
        hdr->tx_offload = pkt->tx_offload;
        hdr->hash = pkt->hash;
 
        hdr->tx_offload = pkt->tx_offload;
        hdr->hash = pkt->hash;
 
-       hdr->ol_flags = pkt->ol_flags;
-
        __rte_mbuf_sanity_check(hdr, 1);
        return hdr;
 }
        __rte_mbuf_sanity_check(hdr, 1);
        return hdr;
 }
index fe23274..89d21fc 100644 (file)
@@ -87,9 +87,6 @@
 /* Max number of devices. Limited by vmdq. */
 #define MAX_DEVICES 64
 
 /* Max number of devices. Limited by vmdq. */
 #define MAX_DEVICES 64
 
-/* Size of buffers used for snprintfs. */
-#define MAX_PRINT_BUFF 6072
-
 /* Maximum long option length for option parsing. */
 #define MAX_LONG_OPT_SZ 64
 
 /* Maximum long option length for option parsing. */
 #define MAX_LONG_OPT_SZ 64
 
index caa91f7..39686d5 100644 (file)
@@ -117,7 +117,7 @@ enum {
        RTE_ACL_TYPE_SHIFT = 29,
        RTE_ACL_MAX_INDEX = RTE_LEN2MASK(RTE_ACL_TYPE_SHIFT, uint32_t),
        RTE_ACL_MAX_PRIORITY = RTE_ACL_MAX_INDEX,
        RTE_ACL_TYPE_SHIFT = 29,
        RTE_ACL_MAX_INDEX = RTE_LEN2MASK(RTE_ACL_TYPE_SHIFT, uint32_t),
        RTE_ACL_MAX_PRIORITY = RTE_ACL_MAX_INDEX,
-       RTE_ACL_MIN_PRIORITY = 0,
+       RTE_ACL_MIN_PRIORITY = 1,
 };
 
 #define        RTE_ACL_INVALID_USERDATA        0
 };
 
 #define        RTE_ACL_INVALID_USERDATA        0
index 6ca8af1..2dc8650 100644 (file)
@@ -179,7 +179,7 @@ eal_plugin_add(const char *path)
                return -1;
        }
        memset(solib, 0, sizeof(*solib));
                return -1;
        }
        memset(solib, 0, sizeof(*solib));
-       strncpy(solib->name, path, PATH_MAX-1);
+       strlcpy(solib->name, path, PATH_MAX-1);
        solib->name[PATH_MAX-1] = 0;
        TAILQ_INSERT_TAIL(&solib_list, solib, next);
 
        solib->name[PATH_MAX-1] = 0;
        TAILQ_INSERT_TAIL(&solib_list, solib, next);
 
index f5e2f88..f17926f 100644 (file)
@@ -200,16 +200,7 @@ rte_is_aligned(void *ptr, unsigned align)
 /**
  * Triggers an error at compilation time if the condition is true.
  */
 /**
  * Triggers an error at compilation time if the condition is true.
  */
-#ifndef __OPTIMIZE__
 #define RTE_BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
 #define RTE_BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
-#else
-extern int RTE_BUILD_BUG_ON_detected_error;
-#define RTE_BUILD_BUG_ON(condition) do {             \
-       ((void)sizeof(char[1 - 2*!!(condition)]));   \
-       if (condition)                               \
-               RTE_BUILD_BUG_ON_detected_error = 1; \
-} while(0)
-#endif
 
 /*********** Macros to work with powers of 2 ********/
 
 
 /*********** Macros to work with powers of 2 ********/
 
@@ -326,6 +317,23 @@ rte_bsf32(uint32_t v)
        return (uint32_t)__builtin_ctz(v);
 }
 
        return (uint32_t)__builtin_ctz(v);
 }
 
+/**
+ * Return the last (most-significant) bit set.
+ *
+ * @note The last (most significant) bit is at position 32.
+ * @note rte_fls_u32(0) = 0, rte_fls_u32(1) = 1, rte_fls_u32(0x80000000) = 32
+ *
+ * @param x
+ *     The input parameter.
+ * @return
+ *     The last (most-significant) bit set, or 0 if the input is 0.
+ */
+static inline int
+rte_fls_u32(uint32_t x)
+{
+       return (x == 0) ? 0 : 32 - __builtin_clz(x);
+}
+
 #ifndef offsetof
 /** Return the offset of a field in a structure. */
 #define offsetof(TYPE, MEMBER)  __builtin_offsetof (TYPE, MEMBER)
 #ifndef offsetof
 /** Return the offset of a field in a structure. */
 #define offsetof(TYPE, MEMBER)  __builtin_offsetof (TYPE, MEMBER)
index 9ce8847..10fa856 100644 (file)
@@ -248,6 +248,8 @@ TAILQ_HEAD(mapped_pci_res_list, mapped_pci_resource);
 do {                                                               \
        unsigned long val;                                      \
        char *end;                                              \
 do {                                                               \
        unsigned long val;                                      \
        char *end;                                              \
+       if (*in == '\0')                                        \
+               return -EINVAL;                                 \
        errno = 0;                                              \
        val = strtoul((in), &end, 16);                          \
        if (errno != 0 || end[0] != (dlm) || val > (lim))       \
        errno = 0;                                              \
        val = strtoul((in), &end, 16);                          \
        if (errno != 0 || end[0] != (dlm) || val > (lim))       \
index 9148ef1..b509ec9 100644 (file)
@@ -66,7 +66,7 @@ extern "C" {
 /**
  * Patch level number i.e. the z in yy.mm.z
  */
 /**
  * Patch level number i.e. the z in yy.mm.z
  */
-#define RTE_VER_MINOR 8
+#define RTE_VER_MINOR 9
 
 /**
  * Extra string to be appended to version number
 
 /**
  * Extra string to be appended to version number
index 59ed788..bbd6284 100644 (file)
@@ -746,7 +746,8 @@ rte_eal_init(int argc, char **argv)
        int i, fctret, ret;
        pthread_t thread_id;
        static rte_atomic32_t run_once = RTE_ATOMIC32_INIT(0);
        int i, fctret, ret;
        pthread_t thread_id;
        static rte_atomic32_t run_once = RTE_ATOMIC32_INIT(0);
-       const char *logid;
+       const char *p;
+       static char logid[PATH_MAX];
        char cpuset[RTE_CPU_AFFINITY_STR_LEN];
        char thread_name[RTE_MAX_THREAD_NAME_LEN];
 
        char cpuset[RTE_CPU_AFFINITY_STR_LEN];
        char thread_name[RTE_MAX_THREAD_NAME_LEN];
 
@@ -756,9 +757,8 @@ rte_eal_init(int argc, char **argv)
        if (!rte_atomic32_test_and_set(&run_once))
                return -1;
 
        if (!rte_atomic32_test_and_set(&run_once))
                return -1;
 
-       logid = strrchr(argv[0], '/');
-       logid = strdup(logid ? logid + 1: argv[0]);
-
+       p = strrchr(argv[0], '/');
+       strlcpy(logid, p ? p + 1 : argv[0], sizeof(logid));
        thread_id = pthread_self();
 
        eal_log_level_parse(argc, argv);
        thread_id = pthread_self();
 
        eal_log_level_parse(argc, argv);
index 7f73914..cce6928 100644 (file)
@@ -647,7 +647,7 @@ eal_intr_process_interrupts(struct epoll_event *events, int nfds)
 {
        int n, bytes_read;
        struct rte_intr_source *src;
 {
        int n, bytes_read;
        struct rte_intr_source *src;
-       struct rte_intr_callback *cb;
+       struct rte_intr_callback *cb, *next;
        union rte_intr_read_buffer buf;
        struct rte_intr_callback active_cb;
 
        union rte_intr_read_buffer buf;
        struct rte_intr_callback active_cb;
 
@@ -713,6 +713,23 @@ eal_intr_process_interrupts(struct epoll_event *events, int nfds)
                                        "descriptor %d: %s\n",
                                        events[n].data.fd,
                                        strerror(errno));
                                        "descriptor %d: %s\n",
                                        events[n].data.fd,
                                        strerror(errno));
+                               /*
+                                * The device is unplugged or buggy, remove
+                                * it as an interrupt source and return to
+                                * force the wait list to be rebuilt.
+                                */
+                               rte_spinlock_lock(&intr_lock);
+                               TAILQ_REMOVE(&intr_sources, src, next);
+                               rte_spinlock_unlock(&intr_lock);
+
+                               for (cb = TAILQ_FIRST(&src->callbacks); cb;
+                                                       cb = next) {
+                                       next = TAILQ_NEXT(cb, next);
+                                       TAILQ_REMOVE(&src->callbacks, cb, next);
+                                       free(cb);
+                               }
+                               free(src);
+                               return -1;
                        } else if (bytes_read == 0)
                                RTE_LOG(ERR, EAL, "Read nothing from file "
                                        "descriptor %d\n", events[n].data.fd);
                        } else if (bytes_read == 0)
                                RTE_LOG(ERR, EAL, "Read nothing from file "
                                        "descriptor %d\n", events[n].data.fd);
index 4228067..3ca217f 100644 (file)
@@ -327,7 +327,7 @@ pci_uio_map_resource_by_index(struct rte_pci_device *dev, int res_idx,
                        loc->function, res_idx);
 
        /* allocate memory to keep path */
                        loc->function, res_idx);
 
        /* allocate memory to keep path */
-       maps[map_idx].path = rte_malloc(NULL, strlen(devname) + 1, 0);
+       maps[map_idx].path = rte_malloc(NULL, sizeof(devname), 0);
        if (maps[map_idx].path == NULL) {
                RTE_LOG(ERR, EAL, "Cannot allocate memory for path: %s\n",
                                strerror(errno));
        if (maps[map_idx].path == NULL) {
                RTE_LOG(ERR, EAL, "Cannot allocate memory for path: %s\n",
                                strerror(errno));
index ac31a4f..72f1f75 100644 (file)
 #define VFIO_IOMMU_SPAPR_REGISTER_MEMORY _IO(VFIO_TYPE, VFIO_BASE + 17)
 #define VFIO_IOMMU_SPAPR_TCE_CREATE _IO(VFIO_TYPE, VFIO_BASE + 19)
 #define VFIO_IOMMU_SPAPR_TCE_REMOVE _IO(VFIO_TYPE, VFIO_BASE + 20)
 #define VFIO_IOMMU_SPAPR_REGISTER_MEMORY _IO(VFIO_TYPE, VFIO_BASE + 17)
 #define VFIO_IOMMU_SPAPR_TCE_CREATE _IO(VFIO_TYPE, VFIO_BASE + 19)
 #define VFIO_IOMMU_SPAPR_TCE_REMOVE _IO(VFIO_TYPE, VFIO_BASE + 20)
+
 struct vfio_iommu_spapr_register_memory {
        uint32_t argsz;
        uint32_t flags;
        uint64_t vaddr;
        uint64_t size;
 };
 struct vfio_iommu_spapr_register_memory {
        uint32_t argsz;
        uint32_t flags;
        uint64_t vaddr;
        uint64_t size;
 };
+
 struct vfio_iommu_spapr_tce_create {
        uint32_t argsz;
        uint32_t page_shift;
        uint64_t window_size;
        uint32_t levels;
 };
 struct vfio_iommu_spapr_tce_create {
        uint32_t argsz;
        uint32_t page_shift;
        uint64_t window_size;
        uint32_t levels;
 };
+
 struct vfio_iommu_spapr_tce_remove {
        uint32_t argsz;
        uint64_t start_addr;
 };
 struct vfio_iommu_spapr_tce_remove {
        uint32_t argsz;
        uint64_t start_addr;
 };
-#else
+
+struct vfio_iommu_spapr_tce_ddw_info {
+       uint64_t pgsizes;
+       uint32_t max_dynamic_windows_supported;
+       uint32_t levels;
+};
+
+/* SPAPR_v2 is not present, but SPAPR might be */
+#ifndef VFIO_SPAPR_TCE_IOMMU
+#define VFIO_IOMMU_SPAPR_TCE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
+
+struct vfio_iommu_spapr_tce_info {
+       uint32_t argsz;
+       uint32_t flags;
+       uint32_t dma32_window_start;
+       uint32_t dma32_window_size;
+       struct vfio_iommu_spapr_tce_ddw_info ddw;
+};
+#endif /* VFIO_SPAPR_TCE_IOMMU */
+
+#else /* VFIO_SPAPR_TCE_v2_IOMMU */
 #define RTE_VFIO_SPAPR VFIO_SPAPR_TCE_v2_IOMMU
 #endif
 
 #define RTE_VFIO_SPAPR VFIO_SPAPR_TCE_v2_IOMMU
 #endif
 
index 09713b0..1dc161c 100644 (file)
@@ -61,6 +61,7 @@
 
 #ifdef __KERNEL__
 #include <linux/if.h>
 
 #ifdef __KERNEL__
 #include <linux/if.h>
+#include <asm/barrier.h>
 #define RTE_STD_C11
 #else
 #include <rte_common.h>
 #define RTE_STD_C11
 #else
 #include <rte_common.h>
index 9f00f07..59d6a09 100644 (file)
@@ -170,6 +170,33 @@ igbuio_pci_irqhandler(int irq, struct uio_info *info)
        return IRQ_HANDLED;
 }
 
        return IRQ_HANDLED;
 }
 
+/**
+ * This gets called while opening uio device file.
+ */
+static int
+igbuio_pci_open(struct uio_info *info, struct inode *inode)
+{
+       struct rte_uio_pci_dev *udev = info->priv;
+       struct pci_dev *dev = udev->pdev;
+
+       /* set bus master, which was cleared by the reset function */
+       pci_set_master(dev);
+
+       return 0;
+}
+
+static int
+igbuio_pci_release(struct uio_info *info, struct inode *inode)
+{
+       struct rte_uio_pci_dev *udev = info->priv;
+       struct pci_dev *dev = udev->pdev;
+
+       /* stop the device from further DMA */
+       pci_clear_master(dev);
+
+       return 0;
+}
+
 #ifdef CONFIG_XEN_DOM0
 static int
 igbuio_dom0_mmap_phys(struct uio_info *info, struct vm_area_struct *vma)
 #ifdef CONFIG_XEN_DOM0
 static int
 igbuio_dom0_mmap_phys(struct uio_info *info, struct vm_area_struct *vma)
@@ -370,6 +397,8 @@ igbuio_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
        udev->info.version = "0.1";
        udev->info.handler = igbuio_pci_irqhandler;
        udev->info.irqcontrol = igbuio_pci_irqcontrol;
        udev->info.version = "0.1";
        udev->info.handler = igbuio_pci_irqhandler;
        udev->info.irqcontrol = igbuio_pci_irqcontrol;
+       udev->info.open = igbuio_pci_open;
+       udev->info.release = igbuio_pci_release;
 #ifdef CONFIG_XEN_DOM0
        /* check if the driver run on Xen Dom0 */
        if (xen_initial_domain())
 #ifdef CONFIG_XEN_DOM0
        /* check if the driver run on Xen Dom0 */
        if (xen_initial_domain())
@@ -460,6 +489,8 @@ igbuio_pci_remove(struct pci_dev *dev)
 {
        struct rte_uio_pci_dev *udev = pci_get_drvdata(dev);
 
 {
        struct rte_uio_pci_dev *udev = pci_get_drvdata(dev);
 
+       igbuio_pci_release(&udev->info, NULL);
+
        sysfs_remove_group(&dev->dev.kobj, &dev_attr_grp);
        uio_unregister_device(&udev->info);
        igbuio_pci_release_iomem(&udev->info);
        sysfs_remove_group(&dev->dev.kobj, &dev_attr_grp);
        uio_unregister_device(&udev->info);
        igbuio_pci_release_iomem(&udev->info);
index 1110bef..272f309 100644 (file)
@@ -150,6 +150,7 @@ static const char igb_gstrings_test[][ETH_GSTRING_LEN] = {
 #define IGB_TEST_LEN (sizeof(igb_gstrings_test) / ETH_GSTRING_LEN)
 #endif /* ETHTOOL_TEST */
 
 #define IGB_TEST_LEN (sizeof(igb_gstrings_test) / ETH_GSTRING_LEN)
 #endif /* ETHTOOL_TEST */
 
+#ifndef ETHTOOL_GLINKSETTINGS
 static int igb_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
 {
        struct igb_adapter *adapter = netdev_priv(netdev);
 static int igb_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
 {
        struct igb_adapter *adapter = netdev_priv(netdev);
@@ -274,7 +275,9 @@ static int igb_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
 #endif /* ETH_TP_MDI_X */
        return 0;
 }
 #endif /* ETH_TP_MDI_X */
        return 0;
 }
+#endif
 
 
+#ifndef ETHTOOL_SLINKSETTINGS
 static int igb_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
 {
        struct igb_adapter *adapter = netdev_priv(netdev);
 static int igb_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
 {
        struct igb_adapter *adapter = netdev_priv(netdev);
@@ -379,6 +382,7 @@ static int igb_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
        clear_bit(__IGB_RESETTING, &adapter->state);
        return 0;
 }
        clear_bit(__IGB_RESETTING, &adapter->state);
        return 0;
 }
+#endif
 
 static u32 igb_get_link(struct net_device *netdev)
 {
 
 static u32 igb_get_link(struct net_device *netdev)
 {
@@ -2752,8 +2756,12 @@ static int igb_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd)
 #endif /* ETHTOOL_GRXRINGS */
 
 static const struct ethtool_ops igb_ethtool_ops = {
 #endif /* ETHTOOL_GRXRINGS */
 
 static const struct ethtool_ops igb_ethtool_ops = {
+#ifndef ETHTOOL_GLINKSETTINGS
        .get_settings           = igb_get_settings,
        .get_settings           = igb_get_settings,
+#endif
+#ifndef ETHTOOL_SLINKSETTINGS
        .set_settings           = igb_set_settings,
        .set_settings           = igb_set_settings,
+#endif
        .get_drvinfo            = igb_get_drvinfo,
        .get_regs_len           = igb_get_regs_len,
        .get_regs               = igb_get_regs,
        .get_drvinfo            = igb_get_drvinfo,
        .get_regs_len           = igb_get_regs_len,
        .get_regs               = igb_get_regs,
index 9e4798e..87d0096 100644 (file)
@@ -697,19 +697,22 @@ struct _kc_ethtool_pauseparam {
 #define SLE_VERSION(a,b,c) KERNEL_VERSION(a,b,c)
 #endif
 #ifdef CONFIG_SUSE_KERNEL
 #define SLE_VERSION(a,b,c) KERNEL_VERSION(a,b,c)
 #endif
 #ifdef CONFIG_SUSE_KERNEL
-#if ( LINUX_VERSION_CODE == KERNEL_VERSION(2,6,27) )
-/* SLES11 GA is 2.6.27 based */
-#define SLE_VERSION_CODE SLE_VERSION(11,0,0)
-#elif ( LINUX_VERSION_CODE == KERNEL_VERSION(2,6,32) )
-/* SLES11 SP1 is 2.6.32 based */
-#define SLE_VERSION_CODE SLE_VERSION(11,1,0)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 57))
+/* SLES12SP3 is at least 4.4.57+ based */
+#define SLE_VERSION_CODE SLE_VERSION(12, 3, 0)
+#elif ( LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,28) )
+/* SLES12 is at least 3.12.28+ based */
+#define SLE_VERSION_CODE SLE_VERSION(12,0,0)
 #elif ((LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,61)) && \
        (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)))
 /* SLES11 SP3 is at least 3.0.61+ based */
 #define SLE_VERSION_CODE SLE_VERSION(11,3,0)
 #elif ((LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,61)) && \
        (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)))
 /* SLES11 SP3 is at least 3.0.61+ based */
 #define SLE_VERSION_CODE SLE_VERSION(11,3,0)
-#elif ( LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,28) )
-/* SLES12 is at least 3.12.28+ based */
-#define SLE_VERSION_CODE SLE_VERSION(12,0,0)
+#elif ( LINUX_VERSION_CODE == KERNEL_VERSION(2,6,32) )
+/* SLES11 SP1 is 2.6.32 based */
+#define SLE_VERSION_CODE SLE_VERSION(11,1,0)
+#elif ( LINUX_VERSION_CODE == KERNEL_VERSION(2,6,27) )
+/* SLES11 GA is 2.6.27 based */
+#define SLE_VERSION_CODE SLE_VERSION(11,0,0)
 #endif /* LINUX_VERSION_CODE == KERNEL_VERSION(x,y,z) */
 #endif /* CONFIG_SUSE_KERNEL */
 #ifndef SLE_VERSION_CODE
 #endif /* LINUX_VERSION_CODE == KERNEL_VERSION(x,y,z) */
 #endif /* CONFIG_SUSE_KERNEL */
 #ifndef SLE_VERSION_CODE
@@ -3912,7 +3915,8 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, __always_unused int type)
 #define HAVE_NDO_BRIDGE_GETLINK_NLFLAGS
 #endif /* >= 4.1.0 */
 
 #define HAVE_NDO_BRIDGE_GETLINK_NLFLAGS
 #endif /* >= 4.1.0 */
 
-#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) )
+#if (( LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) ) \
+    || ( RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7,4) ))
 /* ndo_bridge_getlink adds new filter_mask and vlan_fill parameters */
 #define HAVE_NDO_BRIDGE_GETLINK_FILTER_MASK_VLAN_FILL
 #endif /* >= 4.2.0 */
 /* ndo_bridge_getlink adds new filter_mask and vlan_fill parameters */
 #define HAVE_NDO_BRIDGE_GETLINK_FILTER_MASK_VLAN_FILL
 #endif /* >= 4.2.0 */
@@ -3929,9 +3933,16 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, __always_unused int type)
 #define vlan_tx_tag_present skb_vlan_tag_present
 #endif
 
 #define vlan_tx_tag_present skb_vlan_tag_present
 #endif
 
-#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0) )
+#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)) || \
+     (SLE_VERSION_CODE && SLE_VERSION_CODE >= SLE_VERSION(12, 3, 0)) || \
+     (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 4)))
 #define HAVE_VF_VLAN_PROTO
 #define HAVE_VF_VLAN_PROTO
-#endif /* >= 4.9.0 */
+#if (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 4))
+/* In RHEL/Centos 7.4, the "new" version of ndo_set_vf_vlan
+ * is in the struct net_device_ops_extended */
+#define ndo_set_vf_vlan extended.ndo_set_vf_vlan
+#endif
+#endif
 
 #if (defined(RHEL_RELEASE_CODE) && \
        (RHEL_RELEASE_VERSION(7, 5) <= RHEL_RELEASE_CODE))
 
 #if (defined(RHEL_RELEASE_CODE) && \
        (RHEL_RELEASE_VERSION(7, 5) <= RHEL_RELEASE_CODE))
index 5941546..cc3f8ea 100644 (file)
@@ -905,8 +905,10 @@ s32 ixgbe_dcb_hw_ets(struct ixgbe_hw *hw, struct ieee_ets *ets, int max_frame);
 #endif /* CONFIG_DCB */
 
 extern void ixgbe_clean_rx_ring(struct ixgbe_ring *rx_ring);
 #endif /* CONFIG_DCB */
 
 extern void ixgbe_clean_rx_ring(struct ixgbe_ring *rx_ring);
+#ifndef ETHTOOL_GLINKSETTINGS
 extern int ixgbe_get_settings(struct net_device *netdev,
                              struct ethtool_cmd *ecmd);
 extern int ixgbe_get_settings(struct net_device *netdev,
                              struct ethtool_cmd *ecmd);
+#endif
 extern int ixgbe_write_uc_addr_list(struct ixgbe_adapter *adapter,
                            struct net_device *netdev, unsigned int vfn);
 extern void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter);
 extern int ixgbe_write_uc_addr_list(struct ixgbe_adapter *adapter,
                            struct net_device *netdev, unsigned int vfn);
 extern void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter);
index bc3cb2f..8e3f258 100644 (file)
@@ -173,6 +173,7 @@ static const char ixgbe_gstrings_test[][ETH_GSTRING_LEN] = {
 #define IXGBE_TEST_LEN (sizeof(ixgbe_gstrings_test) / ETH_GSTRING_LEN)
 #endif /* ETHTOOL_TEST */
 
 #define IXGBE_TEST_LEN (sizeof(ixgbe_gstrings_test) / ETH_GSTRING_LEN)
 #endif /* ETHTOOL_TEST */
 
+#ifndef ETHTOOL_GLINKSETTINGS
 int ixgbe_get_settings(struct net_device *netdev,
                       struct ethtool_cmd *ecmd)
 {
 int ixgbe_get_settings(struct net_device *netdev,
                       struct ethtool_cmd *ecmd)
 {
@@ -362,7 +363,9 @@ int ixgbe_get_settings(struct net_device *netdev,
 
        return 0;
 }
 
        return 0;
 }
+#endif
 
 
+#ifndef ETHTOOL_SLINKSETTINGS
 static int ixgbe_set_settings(struct net_device *netdev,
                              struct ethtool_cmd *ecmd)
 {
 static int ixgbe_set_settings(struct net_device *netdev,
                              struct ethtool_cmd *ecmd)
 {
@@ -406,6 +409,7 @@ static int ixgbe_set_settings(struct net_device *netdev,
        }
        return err;
 }
        }
        return err;
 }
+#endif
 
 static void ixgbe_get_pauseparam(struct net_device *netdev,
                                 struct ethtool_pauseparam *pause)
 
 static void ixgbe_get_pauseparam(struct net_device *netdev,
                                 struct ethtool_pauseparam *pause)
@@ -2830,8 +2834,12 @@ static int ixgbe_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd)
 #endif /* ETHTOOL_GRXRINGS */
 //static
 struct ethtool_ops ixgbe_ethtool_ops = {
 #endif /* ETHTOOL_GRXRINGS */
 //static
 struct ethtool_ops ixgbe_ethtool_ops = {
+#ifndef ETHTOOL_GLINKSETTINGS
        .get_settings           = ixgbe_get_settings,
        .get_settings           = ixgbe_get_settings,
+#endif
+#ifndef ETHTOOL_SLINKSETTINGS
        .set_settings           = ixgbe_set_settings,
        .set_settings           = ixgbe_set_settings,
+#endif
        .get_drvinfo            = ixgbe_get_drvinfo,
        .get_regs_len           = ixgbe_get_regs_len,
        .get_regs               = ixgbe_get_regs,
        .get_drvinfo            = ixgbe_get_drvinfo,
        .get_regs_len           = ixgbe_get_regs_len,
        .get_regs               = ixgbe_get_regs,
index 0c88589..8174e98 100644 (file)
@@ -46,6 +46,8 @@ kni_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
        priv->lad_dev->ethtool_ops->get_drvinfo(priv->lad_dev, info);
 }
 
        priv->lad_dev->ethtool_ops->get_drvinfo(priv->lad_dev, info);
 }
 
+/* ETHTOOL_GLINKSETTINGS replaces ETHTOOL_GSET */
+#ifndef ETHTOOL_GLINKSETTINGS
 static int
 kni_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
 {
 static int
 kni_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
 {
@@ -53,7 +55,10 @@ kni_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
 
        return priv->lad_dev->ethtool_ops->get_settings(priv->lad_dev, ecmd);
 }
 
        return priv->lad_dev->ethtool_ops->get_settings(priv->lad_dev, ecmd);
 }
+#endif
 
 
+/* ETHTOOL_SLINKSETTINGS replaces ETHTOOL_SSET */
+#ifndef ETHTOOL_SLINKSETTINGS
 static int
 kni_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
 {
 static int
 kni_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
 {
@@ -61,6 +66,7 @@ kni_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
 
        return priv->lad_dev->ethtool_ops->set_settings(priv->lad_dev, ecmd);
 }
 
        return priv->lad_dev->ethtool_ops->set_settings(priv->lad_dev, ecmd);
 }
+#endif
 
 static void
 kni_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
 
 static void
 kni_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
@@ -209,8 +215,12 @@ kni_get_ethtool_stats(struct net_device *dev, struct ethtool_stats *stats,
 struct ethtool_ops kni_ethtool_ops = {
        .begin                  = kni_check_if_running,
        .get_drvinfo            = kni_get_drvinfo,
 struct ethtool_ops kni_ethtool_ops = {
        .begin                  = kni_check_if_running,
        .get_drvinfo            = kni_get_drvinfo,
+#ifndef ETHTOOL_GLINKSETTINGS
        .get_settings           = kni_get_settings,
        .get_settings           = kni_get_settings,
+#endif
+#ifndef ETHTOOL_SLINKSETTINGS
        .set_settings           = kni_set_settings,
        .set_settings           = kni_set_settings,
+#endif
        .get_regs_len           = kni_get_regs_len,
        .get_regs               = kni_get_regs,
        .get_wol                = kni_get_wol,
        .get_regs_len           = kni_get_regs_len,
        .get_regs               = kni_get_regs,
        .get_wol                = kni_get_wol,
index 025ec1c..208d34b 100644 (file)
 
 #include <exec-env/rte_kni_common.h>
 
 
 #include <exec-env/rte_kni_common.h>
 
+/* Skip some memory barriers on Linux < 3.14 */
+#ifndef smp_load_acquire
+#define smp_load_acquire(a) (*(a))
+#endif
+#ifndef smp_store_release
+#define smp_store_release(a, b) *(a) = (b)
+#endif
+
 /**
  * Adds num elements into the fifo. Return the number actually written
  */
 /**
  * Adds num elements into the fifo. Return the number actually written
  */
@@ -35,7 +43,7 @@ kni_fifo_put(struct rte_kni_fifo *fifo, void **data, uint32_t num)
 {
        uint32_t i = 0;
        uint32_t fifo_write = fifo->write;
 {
        uint32_t i = 0;
        uint32_t fifo_write = fifo->write;
-       uint32_t fifo_read = fifo->read;
+       uint32_t fifo_read = smp_load_acquire(&fifo->read);
        uint32_t new_write = fifo_write;
 
        for (i = 0; i < num; i++) {
        uint32_t new_write = fifo_write;
 
        for (i = 0; i < num; i++) {
@@ -46,7 +54,7 @@ kni_fifo_put(struct rte_kni_fifo *fifo, void **data, uint32_t num)
                fifo->buffer[fifo_write] = data[i];
                fifo_write = new_write;
        }
                fifo->buffer[fifo_write] = data[i];
                fifo_write = new_write;
        }
-       fifo->write = fifo_write;
+       smp_store_release(&fifo->write, fifo_write);
 
        return i;
 }
 
        return i;
 }
@@ -59,7 +67,7 @@ kni_fifo_get(struct rte_kni_fifo *fifo, void **data, uint32_t num)
 {
        uint32_t i = 0;
        uint32_t new_read = fifo->read;
 {
        uint32_t i = 0;
        uint32_t new_read = fifo->read;
-       uint32_t fifo_write = fifo->write;
+       uint32_t fifo_write = smp_load_acquire(&fifo->write);
 
        for (i = 0; i < num; i++) {
                if (new_read == fifo_write)
 
        for (i = 0; i < num; i++) {
                if (new_read == fifo_write)
@@ -68,7 +76,7 @@ kni_fifo_get(struct rte_kni_fifo *fifo, void **data, uint32_t num)
                data[i] = fifo->buffer[new_read];
                new_read = (new_read + 1) & (fifo->len - 1);
        }
                data[i] = fifo->buffer[new_read];
                new_read = (new_read + 1) & (fifo->len - 1);
        }
-       fifo->read = new_read;
+       smp_store_release(&fifo->read, new_read);
 
        return i;
 }
 
        return i;
 }
@@ -79,7 +87,9 @@ kni_fifo_get(struct rte_kni_fifo *fifo, void **data, uint32_t num)
 static inline uint32_t
 kni_fifo_count(struct rte_kni_fifo *fifo)
 {
 static inline uint32_t
 kni_fifo_count(struct rte_kni_fifo *fifo)
 {
-       return (fifo->len + fifo->write - fifo->read) & (fifo->len - 1);
+       uint32_t fifo_write = smp_load_acquire(&fifo->write);
+       uint32_t fifo_read = smp_load_acquire(&fifo->read);
+       return (fifo->len + fifo_write - fifo_read) & (fifo->len - 1);
 }
 
 /**
 }
 
 /**
@@ -88,7 +98,9 @@ kni_fifo_count(struct rte_kni_fifo *fifo)
 static inline uint32_t
 kni_fifo_free_count(struct rte_kni_fifo *fifo)
 {
 static inline uint32_t
 kni_fifo_free_count(struct rte_kni_fifo *fifo)
 {
-       return (fifo->read - fifo->write - 1) & (fifo->len - 1);
+       uint32_t fifo_write = smp_load_acquire(&fifo->write);
+       uint32_t fifo_read = smp_load_acquire(&fifo->read);
+       return (fifo_read - fifo_write - 1) & (fifo->len - 1);
 }
 
 #ifdef RTE_KNI_VHOST
 }
 
 #ifdef RTE_KNI_VHOST
index 9b28e95..4992b30 100644 (file)
@@ -601,6 +601,13 @@ rte_eth_dev_rx_queue_start(uint8_t port_id, uint16_t rx_queue_id)
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
        dev = &rte_eth_devices[port_id];
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
        dev = &rte_eth_devices[port_id];
+       if (!dev->data->dev_started) {
+               RTE_PMD_DEBUG_TRACE(
+                   "port %d must be started before start any queue\n",
+                   port_id);
+               return -EINVAL;
+       }
+
        if (rx_queue_id >= dev->data->nb_rx_queues) {
                RTE_PMD_DEBUG_TRACE("Invalid RX queue_id=%d\n", rx_queue_id);
                return -EINVAL;
        if (rx_queue_id >= dev->data->nb_rx_queues) {
                RTE_PMD_DEBUG_TRACE("Invalid RX queue_id=%d\n", rx_queue_id);
                return -EINVAL;
@@ -627,12 +634,6 @@ rte_eth_dev_rx_queue_stop(uint8_t port_id, uint16_t rx_queue_id)
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
        dev = &rte_eth_devices[port_id];
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
        dev = &rte_eth_devices[port_id];
-       if (!dev->data->dev_started) {
-               RTE_PMD_DEBUG_TRACE(
-                   "port %d must be started before start any queue\n", port_id);
-               return -EINVAL;
-       }
-
        if (rx_queue_id >= dev->data->nb_rx_queues) {
                RTE_PMD_DEBUG_TRACE("Invalid RX queue_id=%d\n", rx_queue_id);
                return -EINVAL;
        if (rx_queue_id >= dev->data->nb_rx_queues) {
                RTE_PMD_DEBUG_TRACE("Invalid RX queue_id=%d\n", rx_queue_id);
                return -EINVAL;
@@ -659,6 +660,13 @@ rte_eth_dev_tx_queue_start(uint8_t port_id, uint16_t tx_queue_id)
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
        dev = &rte_eth_devices[port_id];
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
        dev = &rte_eth_devices[port_id];
+       if (!dev->data->dev_started) {
+               RTE_PMD_DEBUG_TRACE(
+                   "port %d must be started before start any queue\n",
+                   port_id);
+               return -EINVAL;
+       }
+
        if (tx_queue_id >= dev->data->nb_tx_queues) {
                RTE_PMD_DEBUG_TRACE("Invalid TX queue_id=%d\n", tx_queue_id);
                return -EINVAL;
        if (tx_queue_id >= dev->data->nb_tx_queues) {
                RTE_PMD_DEBUG_TRACE("Invalid TX queue_id=%d\n", tx_queue_id);
                return -EINVAL;
@@ -685,12 +693,6 @@ rte_eth_dev_tx_queue_stop(uint8_t port_id, uint16_t tx_queue_id)
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
        dev = &rte_eth_devices[port_id];
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
        dev = &rte_eth_devices[port_id];
-       if (!dev->data->dev_started) {
-               RTE_PMD_DEBUG_TRACE(
-                   "port %d must be started before start any queue\n", port_id);
-               return -EINVAL;
-       }
-
        if (tx_queue_id >= dev->data->nb_tx_queues) {
                RTE_PMD_DEBUG_TRACE("Invalid TX queue_id=%d\n", tx_queue_id);
                return -EINVAL;
        if (tx_queue_id >= dev->data->nb_tx_queues) {
                RTE_PMD_DEBUG_TRACE("Invalid TX queue_id=%d\n", tx_queue_id);
                return -EINVAL;
@@ -795,7 +797,9 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
 {
        struct rte_eth_dev *dev;
        struct rte_eth_dev_info dev_info;
 {
        struct rte_eth_dev *dev;
        struct rte_eth_dev_info dev_info;
+       struct rte_eth_conf orig_conf;
        int diag;
        int diag;
+       int ret;
 
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
 
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
@@ -824,6 +828,9 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
                return -EBUSY;
        }
 
                return -EBUSY;
        }
 
+       /* Store original config, as rollback required on failure */
+       memcpy(&orig_conf, &dev->data->dev_conf, sizeof(dev->data->dev_conf));
+
        /* Copy the dev_conf parameter into the dev structure */
        memcpy(&dev->data->dev_conf, dev_conf, sizeof(dev->data->dev_conf));
 
        /* Copy the dev_conf parameter into the dev structure */
        memcpy(&dev->data->dev_conf, dev_conf, sizeof(dev->data->dev_conf));
 
@@ -836,19 +843,22 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
 
        if (nb_rx_q == 0 && nb_tx_q == 0) {
                RTE_PMD_DEBUG_TRACE("ethdev port_id=%d both rx and tx queue cannot be 0\n", port_id);
 
        if (nb_rx_q == 0 && nb_tx_q == 0) {
                RTE_PMD_DEBUG_TRACE("ethdev port_id=%d both rx and tx queue cannot be 0\n", port_id);
-               return -EINVAL;
+               ret = -EINVAL;
+               goto rollback;
        }
 
        if (nb_rx_q > dev_info.max_rx_queues) {
                RTE_PMD_DEBUG_TRACE("ethdev port_id=%d nb_rx_queues=%d > %d\n",
                                port_id, nb_rx_q, dev_info.max_rx_queues);
        }
 
        if (nb_rx_q > dev_info.max_rx_queues) {
                RTE_PMD_DEBUG_TRACE("ethdev port_id=%d nb_rx_queues=%d > %d\n",
                                port_id, nb_rx_q, dev_info.max_rx_queues);
-               return -EINVAL;
+               ret = -EINVAL;
+               goto rollback;
        }
 
        if (nb_tx_q > dev_info.max_tx_queues) {
                RTE_PMD_DEBUG_TRACE("ethdev port_id=%d nb_tx_queues=%d > %d\n",
                                port_id, nb_tx_q, dev_info.max_tx_queues);
        }
 
        if (nb_tx_q > dev_info.max_tx_queues) {
                RTE_PMD_DEBUG_TRACE("ethdev port_id=%d nb_tx_queues=%d > %d\n",
                                port_id, nb_tx_q, dev_info.max_tx_queues);
-               return -EINVAL;
+               ret = -EINVAL;
+               goto rollback;
        }
 
        /*
        }
 
        /*
@@ -859,7 +869,8 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
                (!(dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC))) {
                        RTE_PMD_DEBUG_TRACE("driver %s does not support lsc\n",
                                        dev->data->drv_name);
                (!(dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC))) {
                        RTE_PMD_DEBUG_TRACE("driver %s does not support lsc\n",
                                        dev->data->drv_name);
-                       return -EINVAL;
+                       ret = -EINVAL;
+                       goto rollback;
        }
 
        /*
        }
 
        /*
@@ -874,14 +885,16 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
                                port_id,
                                (unsigned)dev_conf->rxmode.max_rx_pkt_len,
                                (unsigned)dev_info.max_rx_pktlen);
                                port_id,
                                (unsigned)dev_conf->rxmode.max_rx_pkt_len,
                                (unsigned)dev_info.max_rx_pktlen);
-                       return -EINVAL;
+                       ret = -EINVAL;
+                       goto rollback;
                } else if (dev_conf->rxmode.max_rx_pkt_len < ETHER_MIN_LEN) {
                        RTE_PMD_DEBUG_TRACE("ethdev port_id=%d max_rx_pkt_len %u"
                                " < min valid value %u\n",
                                port_id,
                                (unsigned)dev_conf->rxmode.max_rx_pkt_len,
                                (unsigned)ETHER_MIN_LEN);
                } else if (dev_conf->rxmode.max_rx_pkt_len < ETHER_MIN_LEN) {
                        RTE_PMD_DEBUG_TRACE("ethdev port_id=%d max_rx_pkt_len %u"
                                " < min valid value %u\n",
                                port_id,
                                (unsigned)dev_conf->rxmode.max_rx_pkt_len,
                                (unsigned)ETHER_MIN_LEN);
-                       return -EINVAL;
+                       ret = -EINVAL;
+                       goto rollback;
                }
        } else {
                if (dev_conf->rxmode.max_rx_pkt_len < ETHER_MIN_LEN ||
                }
        } else {
                if (dev_conf->rxmode.max_rx_pkt_len < ETHER_MIN_LEN ||
@@ -898,7 +911,8 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
        if (diag != 0) {
                RTE_PMD_DEBUG_TRACE("port%d rte_eth_dev_rx_queue_config = %d\n",
                                port_id, diag);
        if (diag != 0) {
                RTE_PMD_DEBUG_TRACE("port%d rte_eth_dev_rx_queue_config = %d\n",
                                port_id, diag);
-               return diag;
+               ret = diag;
+               goto rollback;
        }
 
        diag = rte_eth_dev_tx_queue_config(dev, nb_tx_q);
        }
 
        diag = rte_eth_dev_tx_queue_config(dev, nb_tx_q);
@@ -906,7 +920,8 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
                RTE_PMD_DEBUG_TRACE("port%d rte_eth_dev_tx_queue_config = %d\n",
                                port_id, diag);
                rte_eth_dev_rx_queue_config(dev, 0);
                RTE_PMD_DEBUG_TRACE("port%d rte_eth_dev_tx_queue_config = %d\n",
                                port_id, diag);
                rte_eth_dev_rx_queue_config(dev, 0);
-               return diag;
+               ret = diag;
+               goto rollback;
        }
 
        diag = (*dev->dev_ops->dev_configure)(dev);
        }
 
        diag = (*dev->dev_ops->dev_configure)(dev);
@@ -915,10 +930,16 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
                                port_id, diag);
                rte_eth_dev_rx_queue_config(dev, 0);
                rte_eth_dev_tx_queue_config(dev, 0);
                                port_id, diag);
                rte_eth_dev_rx_queue_config(dev, 0);
                rte_eth_dev_tx_queue_config(dev, 0);
-               return diag;
+               ret = diag;
+               goto rollback;
        }
 
        return 0;
        }
 
        return 0;
+
+rollback:
+       memcpy(&dev->data->dev_conf, &orig_conf, sizeof(dev->data->dev_conf));
+
+       return ret;
 }
 
 static void
 }
 
 static void
index 981e057..41839bb 100644 (file)
@@ -841,12 +841,6 @@ struct rte_eth_conf {
        struct rte_intr_conf intr_conf; /**< Interrupt mode configuration. */
 };
 
        struct rte_intr_conf intr_conf; /**< Interrupt mode configuration. */
 };
 
-/**
- * A structure used to retrieve the contextual information of
- * an Ethernet device, such as the controlling driver of the device,
- * its PCI context, etc...
- */
-
 /**
  * RX offload capabilities of a device.
  */
 /**
  * RX offload capabilities of a device.
  */
@@ -878,6 +872,12 @@ struct rte_eth_conf {
 /**
  * Ethernet device information
  */
 /**
  * Ethernet device information
  */
+
+/**
+ * A structure used to retrieve the contextual information of
+ * an Ethernet device, such as the controlling driver of the
+ * device, etc...
+ */
 struct rte_eth_dev_info {
        struct rte_pci_device *pci_dev; /**< Device PCI information. */
        const char *driver_name; /**< Device Driver name. */
 struct rte_eth_dev_info {
        struct rte_pci_device *pci_dev; /**< Device PCI information. */
        const char *driver_name; /**< Device Driver name. */
index 049ff98..2414c7f 100644 (file)
@@ -212,7 +212,9 @@ rte_hash_create(const struct rte_hash_parameters *params)
                goto err_unlock;
        }
 
                goto err_unlock;
        }
 
-       const uint32_t key_entry_size = sizeof(struct rte_hash_key) + params->key_len;
+       const uint32_t key_entry_size =
+               RTE_ALIGN(sizeof(struct rte_hash_key) + params->key_len,
+                         KEY_ALIGNMENT);
        const uint64_t key_tbl_size = (uint64_t) key_entry_size * num_key_slots;
 
        k = rte_zmalloc_socket(NULL, key_tbl_size,
        const uint64_t key_tbl_size = (uint64_t) key_entry_size * num_key_slots;
 
        k = rte_zmalloc_socket(NULL, key_tbl_size,
@@ -405,7 +407,7 @@ rte_hash_reset(struct rte_hash *h)
 
        /* clear the free ring */
        while (rte_ring_dequeue(h->free_slots, &ptr) == 0)
 
        /* clear the free ring */
        while (rte_ring_dequeue(h->free_slots, &ptr) == 0)
-               rte_pause();
+               continue;
 
        /* Repopulate the free slots ring. Entry zero is reserved for key misses */
        if (h->hw_trans_mem_support)
 
        /* Repopulate the free slots ring. Entry zero is reserved for key misses */
        if (h->hw_trans_mem_support)
index 1b8ffed..dae3f4a 100644 (file)
@@ -161,7 +161,7 @@ struct rte_hash_key {
        };
        /* Variable key size */
        char key[0];
        };
        /* Variable key size */
        char key[0];
-} __attribute__((aligned(KEY_ALIGNMENT)));
+};
 
 /* All different signature compare functions */
 enum rte_hash_sig_compare_function {
 
 /* All different signature compare functions */
 enum rte_hash_sig_compare_function {
index 835e4f9..5382a3e 100644 (file)
@@ -81,28 +81,23 @@ struct rte_mbuf *ipv6_frag_reassemble(struct ip_frag_pkt *fp);
 static inline int
 ip_frag_key_is_empty(const struct ip_frag_key * key)
 {
 static inline int
 ip_frag_key_is_empty(const struct ip_frag_key * key)
 {
-       uint32_t i;
-       for (i = 0; i < RTE_MIN(key->key_len, RTE_DIM(key->src_dst)); i++)
-               if (key->src_dst[i] != 0)
-                       return 0;
-       return 1;
+       return (key->key_len == 0);
 }
 
 }
 
-/* empty the key */
+/* invalidate the key */
 static inline void
 ip_frag_key_invalidate(struct ip_frag_key * key)
 {
 static inline void
 ip_frag_key_invalidate(struct ip_frag_key * key)
 {
-       uint32_t i;
-       for (i = 0; i < key->key_len; i++)
-               key->src_dst[i] = 0;
+       key->key_len = 0;
 }
 
 /* compare two keys */
 }
 
 /* compare two keys */
-static inline int
+static inline uint64_t
 ip_frag_key_cmp(const struct ip_frag_key * k1, const struct ip_frag_key * k2)
 {
 ip_frag_key_cmp(const struct ip_frag_key * k1, const struct ip_frag_key * k2)
 {
-       uint32_t i, val;
-       val = k1->id ^ k2->id;
+       uint32_t i;
+       uint64_t val;
+       val = k1->id_key_len ^ k2->id_key_len;
        for (i = 0; i < k1->key_len; i++)
                val |= k1->src_dst[i] ^ k2->src_dst[i];
        return val;
        for (i = 0; i < k1->key_len; i++)
                val |= k1->src_dst[i] ^ k2->src_dst[i];
        return val;
index 6708906..e13486a 100644 (file)
@@ -72,9 +72,17 @@ struct ip_frag {
 
 /** @internal <src addr, dst_addr, id> to uniquely indetify fragmented datagram. */
 struct ip_frag_key {
 
 /** @internal <src addr, dst_addr, id> to uniquely indetify fragmented datagram. */
 struct ip_frag_key {
-       uint64_t src_dst[4];      /**< src address, first 8 bytes used for IPv4 */
-       uint32_t id;           /**< dst address */
-       uint32_t key_len;      /**< src/dst key length */
+       uint64_t src_dst[4];
+       /**< src and dst address, only first 8 bytes used for IPv4 */
+       RTE_STD_C11
+       union {
+               uint64_t id_key_len; /**< combined for easy fetch */
+               __extension__
+               struct {
+                       uint32_t id;       /**< packet id */
+                       uint32_t key_len;  /**< src/dst key length */
+               };
+       };
 };
 
 /**
 };
 
 /**
index 847ea0d..ede2ae0 100644 (file)
@@ -65,8 +65,11 @@ ipv4_frag_reassemble(struct ip_frag_pkt *fp)
                        /* previous fragment found. */
                        if(fp->frags[i].ofs + fp->frags[i].len == ofs) {
 
                        /* previous fragment found. */
                        if(fp->frags[i].ofs + fp->frags[i].len == ofs) {
 
+                               RTE_ASSERT(curr_idx != i);
+
                                /* adjust start of the last fragment data. */
                                /* adjust start of the last fragment data. */
-                               rte_pktmbuf_adj(m, (uint16_t)(m->l2_len + m->l3_len));
+                               rte_pktmbuf_adj(m,
+                                       (uint16_t)(m->l2_len + m->l3_len));
                                rte_pktmbuf_chain(fp->frags[i].mb, m);
 
                                /* this mbuf should not be accessed directly */
                                rte_pktmbuf_chain(fp->frags[i].mb, m);
 
                                /* this mbuf should not be accessed directly */
@@ -125,14 +128,14 @@ ipv4_frag_reassemble(struct ip_frag_pkt *fp)
  */
 struct rte_mbuf *
 rte_ipv4_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl,
  */
 struct rte_mbuf *
 rte_ipv4_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl,
-               struct rte_ip_frag_death_row *dr, struct rte_mbuf *mb, uint64_t tms,
-               struct ipv4_hdr *ip_hdr)
+       struct rte_ip_frag_death_row *dr, struct rte_mbuf *mb, uint64_t tms,
+       struct ipv4_hdr *ip_hdr)
 {
        struct ip_frag_pkt *fp;
        struct ip_frag_key key;
        const unaligned_uint64_t *psd;
 {
        struct ip_frag_pkt *fp;
        struct ip_frag_key key;
        const unaligned_uint64_t *psd;
-       uint16_t ip_len;
        uint16_t flag_offset, ip_ofs, ip_flag;
        uint16_t flag_offset, ip_ofs, ip_flag;
+       int32_t ip_len;
 
        flag_offset = rte_be_to_cpu_16(ip_hdr->fragment_offset);
        ip_ofs = (uint16_t)(flag_offset & IPV4_HDR_OFFSET_MASK);
 
        flag_offset = rte_be_to_cpu_16(ip_hdr->fragment_offset);
        ip_ofs = (uint16_t)(flag_offset & IPV4_HDR_OFFSET_MASK);
@@ -145,12 +148,11 @@ rte_ipv4_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl,
        key.key_len = IPV4_KEYLEN;
 
        ip_ofs *= IPV4_HDR_OFFSET_UNITS;
        key.key_len = IPV4_KEYLEN;
 
        ip_ofs *= IPV4_HDR_OFFSET_UNITS;
-       ip_len = (uint16_t)(rte_be_to_cpu_16(ip_hdr->total_length) -
-               mb->l3_len);
+       ip_len = rte_be_to_cpu_16(ip_hdr->total_length) - mb->l3_len;
 
        IP_FRAG_LOG(DEBUG, "%s:%d:\n"
                "mbuf: %p, tms: %" PRIu64
 
        IP_FRAG_LOG(DEBUG, "%s:%d:\n"
                "mbuf: %p, tms: %" PRIu64
-               ", key: <%" PRIx64 ", %#x>, ofs: %u, len: %u, flags: %#x\n"
+               ", key: <%" PRIx64 ", %#x>, ofs: %u, len: %d, flags: %#x\n"
                "tbl: %p, max_cycles: %" PRIu64 ", entry_mask: %#x, "
                "max_entries: %u, use_entries: %u\n\n",
                __func__, __LINE__,
                "tbl: %p, max_cycles: %" PRIu64 ", entry_mask: %#x, "
                "max_entries: %u, use_entries: %u\n\n",
                __func__, __LINE__,
@@ -158,6 +160,12 @@ rte_ipv4_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl,
                tbl, tbl->max_cycles, tbl->entry_mask, tbl->max_entries,
                tbl->use_entries);
 
                tbl, tbl->max_cycles, tbl->entry_mask, tbl->max_entries,
                tbl->use_entries);
 
+       /* check that fragment length is greater then zero. */
+       if (ip_len <= 0) {
+               IP_FRAG_MBUF2DR(dr, mb);
+               return NULL;
+       }
+
        /* try to find/add entry into the fragment's table. */
        if ((fp = ip_frag_find(tbl, dr, &key, tms)) == NULL) {
                IP_FRAG_MBUF2DR(dr, mb);
        /* try to find/add entry into the fragment's table. */
        if ((fp = ip_frag_find(tbl, dr, &key, tms)) == NULL) {
                IP_FRAG_MBUF2DR(dr, mb);
index d9b5d69..9f080d6 100644 (file)
@@ -88,8 +88,11 @@ ipv6_frag_reassemble(struct ip_frag_pkt *fp)
                        /* previous fragment found. */
                        if (fp->frags[i].ofs + fp->frags[i].len == ofs) {
 
                        /* previous fragment found. */
                        if (fp->frags[i].ofs + fp->frags[i].len == ofs) {
 
+                               RTE_ASSERT(curr_idx != i);
+
                                /* adjust start of the last fragment data. */
                                /* adjust start of the last fragment data. */
-                               rte_pktmbuf_adj(m, (uint16_t)(m->l2_len + m->l3_len));
+                               rte_pktmbuf_adj(m,
+                                       (uint16_t)(m->l2_len + m->l3_len));
                                rte_pktmbuf_chain(fp->frags[i].mb, m);
 
                                /* this mbuf should not be accessed directly */
                                rte_pktmbuf_chain(fp->frags[i].mb, m);
 
                                /* this mbuf should not be accessed directly */
@@ -164,12 +167,13 @@ ipv6_frag_reassemble(struct ip_frag_pkt *fp)
 #define FRAG_OFFSET(x) (rte_cpu_to_be_16(x) >> 3)
 struct rte_mbuf *
 rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl,
 #define FRAG_OFFSET(x) (rte_cpu_to_be_16(x) >> 3)
 struct rte_mbuf *
 rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl,
-               struct rte_ip_frag_death_row *dr, struct rte_mbuf *mb, uint64_t tms,
-               struct ipv6_hdr *ip_hdr, struct ipv6_extension_fragment *frag_hdr)
+       struct rte_ip_frag_death_row *dr, struct rte_mbuf *mb, uint64_t tms,
+       struct ipv6_hdr *ip_hdr, struct ipv6_extension_fragment *frag_hdr)
 {
        struct ip_frag_pkt *fp;
        struct ip_frag_key key;
 {
        struct ip_frag_pkt *fp;
        struct ip_frag_key key;
-       uint16_t ip_len, ip_ofs;
+       uint16_t ip_ofs;
+       int32_t ip_len;
 
        rte_memcpy(&key.src_dst[0], ip_hdr->src_addr, 16);
        rte_memcpy(&key.src_dst[2], ip_hdr->dst_addr, 16);
 
        rte_memcpy(&key.src_dst[0], ip_hdr->src_addr, 16);
        rte_memcpy(&key.src_dst[2], ip_hdr->dst_addr, 16);
@@ -180,15 +184,17 @@ rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl,
        ip_ofs = FRAG_OFFSET(frag_hdr->frag_data) * 8;
 
        /*
        ip_ofs = FRAG_OFFSET(frag_hdr->frag_data) * 8;
 
        /*
-        * as per RFC2460, payload length contains all extension headers as well.
-        * since we don't support anything but frag headers, this is what we remove
-        * from the payload len.
+        * as per RFC2460, payload length contains all extension headers
+        * as well.
+        * since we don't support anything but frag headers,
+        * this is what we remove from the payload len.
         */
        ip_len = rte_be_to_cpu_16(ip_hdr->payload_len) - sizeof(*frag_hdr);
 
        IP_FRAG_LOG(DEBUG, "%s:%d:\n"
                "mbuf: %p, tms: %" PRIu64
         */
        ip_len = rte_be_to_cpu_16(ip_hdr->payload_len) - sizeof(*frag_hdr);
 
        IP_FRAG_LOG(DEBUG, "%s:%d:\n"
                "mbuf: %p, tms: %" PRIu64
-               ", key: <" IPv6_KEY_BYTES_FMT ", %#x>, ofs: %u, len: %u, flags: %#x\n"
+               ", key: <" IPv6_KEY_BYTES_FMT ", %#x>, "
+               "ofs: %u, len: %d, flags: %#x\n"
                "tbl: %p, max_cycles: %" PRIu64 ", entry_mask: %#x, "
                "max_entries: %u, use_entries: %u\n\n",
                __func__, __LINE__,
                "tbl: %p, max_cycles: %" PRIu64 ", entry_mask: %#x, "
                "max_entries: %u, use_entries: %u\n\n",
                __func__, __LINE__,
@@ -197,6 +203,12 @@ rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl,
                tbl, tbl->max_cycles, tbl->entry_mask, tbl->max_entries,
                tbl->use_entries);
 
                tbl, tbl->max_cycles, tbl->entry_mask, tbl->max_entries,
                tbl->use_entries);
 
+       /* check that fragment length is greater then zero. */
+       if (ip_len <= 0) {
+               IP_FRAG_MBUF2DR(dr, mb);
+               return NULL;
+       }
+
        /* try to find/add entry into the fragment's table. */
        fp = ip_frag_find(tbl, dr, &key, tms);
        if (fp == NULL) {
        /* try to find/add entry into the fragment's table. */
        fp = ip_frag_find(tbl, dr, &key, tms);
        if (fp == NULL) {
index 0c6641b..12656a9 100644 (file)
@@ -532,7 +532,7 @@ int
 rte_kni_handle_request(struct rte_kni *kni)
 {
        unsigned ret;
 rte_kni_handle_request(struct rte_kni *kni)
 {
        unsigned ret;
-       struct rte_kni_request *req;
+       struct rte_kni_request *req = NULL;
 
        if (kni == NULL)
                return -1;
 
        if (kni == NULL)
                return -1;
index 5504c6d..476b8c1 100644 (file)
@@ -160,6 +160,9 @@ rte_kvargs_process(const struct rte_kvargs *kvlist,
        const struct rte_kvargs_pair *pair;
        unsigned i;
 
        const struct rte_kvargs_pair *pair;
        unsigned i;
 
+       if (kvlist == NULL)
+               return 0;
+
        for (i = 0; i < kvlist->count; i++) {
                pair = &kvlist->pairs[i];
                if (key_match == NULL || strcmp(pair->key, key_match) == 0) {
        for (i = 0; i < kvlist->count; i++) {
                pair = &kvlist->pairs[i];
                if (key_match == NULL || strcmp(pair->key, key_match) == 0) {
index ae9ae79..83363a8 100644 (file)
@@ -106,7 +106,7 @@ struct rte_kvargs *rte_kvargs_parse(const char *args, const char *valid_keys[]);
  * rte_kvargs_parse().
  *
  * @param kvlist
  * rte_kvargs_parse().
  *
  * @param kvlist
- *   The rte_kvargs structure
+ *   The rte_kvargs structure. No error if NULL.
  */
 void rte_kvargs_free(struct rte_kvargs *kvlist);
 
  */
 void rte_kvargs_free(struct rte_kvargs *kvlist);
 
@@ -115,11 +115,10 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
  *
  * For each key/value association that matches the given key, calls the
  * handler function with the for a given arg_name passing the value on the
  *
  * For each key/value association that matches the given key, calls the
  * handler function with the for a given arg_name passing the value on the
- * dictionary for that key and a given extra argument. If *kvlist* is NULL
- * function does nothing.
+ * dictionary for that key and a given extra argument.
  *
  * @param kvlist
  *
  * @param kvlist
- *   The rte_kvargs structure
+ *   The rte_kvargs structure. No error if NULL.
  * @param key_match
  *   The key on which the handler should be called, or NULL to process handler
  *   on all associations
  * @param key_match
  *   The key on which the handler should be called, or NULL to process handler
  *   on all associations
index 46568ff..8a3414c 100644 (file)
@@ -43,6 +43,7 @@ extern "C" {
 /**
  * GRE Header
  */
 /**
  * GRE Header
  */
+__extension__
 struct gre_hdr {
 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
        uint16_t res2:4; /**< Reserved */
 struct gre_hdr {
 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
        uint16_t res2:4; /**< Reserved */
index bbf4da9..6828a7c 100644 (file)
@@ -116,7 +116,7 @@ __rte_bitmap_index1_inc(struct rte_bitmap *bmp)
 static inline uint64_t
 __rte_bitmap_mask1_get(struct rte_bitmap *bmp)
 {
 static inline uint64_t
 __rte_bitmap_mask1_get(struct rte_bitmap *bmp)
 {
-       return (~1lu) << bmp->offset1;
+       return (~1llu) << bmp->offset1;
 }
 
 static inline void
 }
 
 static inline void
@@ -345,7 +345,7 @@ rte_bitmap_get(struct rte_bitmap *bmp, uint32_t pos)
        index2 = pos >> RTE_BITMAP_SLAB_BIT_SIZE_LOG2;
        offset2 = pos & RTE_BITMAP_SLAB_BIT_MASK;
        slab2 = bmp->array2 + index2;
        index2 = pos >> RTE_BITMAP_SLAB_BIT_SIZE_LOG2;
        offset2 = pos & RTE_BITMAP_SLAB_BIT_MASK;
        slab2 = bmp->array2 + index2;
-       return (*slab2) & (1lu << offset2);
+       return (*slab2) & (1llu << offset2);
 }
 
 /**
 }
 
 /**
@@ -370,8 +370,8 @@ rte_bitmap_set(struct rte_bitmap *bmp, uint32_t pos)
        slab2 = bmp->array2 + index2;
        slab1 = bmp->array1 + index1;
 
        slab2 = bmp->array2 + index2;
        slab1 = bmp->array1 + index1;
 
-       *slab2 |= 1lu << offset2;
-       *slab1 |= 1lu << offset1;
+       *slab2 |= 1llu << offset2;
+       *slab1 |= 1llu << offset1;
 }
 
 /**
 }
 
 /**
@@ -398,7 +398,7 @@ rte_bitmap_set_slab(struct rte_bitmap *bmp, uint32_t pos, uint64_t slab)
        slab1 = bmp->array1 + index1;
 
        *slab2 |= slab;
        slab1 = bmp->array1 + index1;
 
        *slab2 |= slab;
-       *slab1 |= 1lu << offset1;
+       *slab1 |= 1llu << offset1;
 }
 
 static inline uint64_t
 }
 
 static inline uint64_t
@@ -436,7 +436,7 @@ rte_bitmap_clear(struct rte_bitmap *bmp, uint32_t pos)
        slab2 = bmp->array2 + index2;
 
        /* Return if array2 slab is not all-zeros */
        slab2 = bmp->array2 + index2;
 
        /* Return if array2 slab is not all-zeros */
-       *slab2 &= ~(1lu << offset2);
+       *slab2 &= ~(1llu << offset2);
        if (*slab2){
                return;
        }
        if (*slab2){
                return;
        }
@@ -452,7 +452,7 @@ rte_bitmap_clear(struct rte_bitmap *bmp, uint32_t pos)
        index1 = pos >> (RTE_BITMAP_SLAB_BIT_SIZE_LOG2 + RTE_BITMAP_CL_BIT_SIZE_LOG2);
        offset1 = (pos >> RTE_BITMAP_CL_BIT_SIZE_LOG2) & RTE_BITMAP_SLAB_BIT_MASK;
        slab1 = bmp->array1 + index1;
        index1 = pos >> (RTE_BITMAP_SLAB_BIT_SIZE_LOG2 + RTE_BITMAP_CL_BIT_SIZE_LOG2);
        offset1 = (pos >> RTE_BITMAP_CL_BIT_SIZE_LOG2) & RTE_BITMAP_SLAB_BIT_MASK;
        slab1 = bmp->array1 + index1;
-       *slab1 &= ~(1lu << offset1);
+       *slab1 &= ~(1llu << offset1);
 
        return;
 }
 
        return;
 }
index 652f023..385109c 100644 (file)
 
 #include "rte_reciprocal.h"
 
 
 #include "rte_reciprocal.h"
 
-/* find largest set bit.
- * portable and slow but does not matter for this usage.
- */
-static inline int fls(uint32_t x)
-{
-       int b;
-
-       for (b = 31; b >= 0; --b) {
-               if (x & (1u << b))
-                       return b + 1;
-       }
-
-       return 0;
-}
-
 struct rte_reciprocal rte_reciprocal_value(uint32_t d)
 {
        struct rte_reciprocal R;
        uint64_t m;
        int l;
 
 struct rte_reciprocal rte_reciprocal_value(uint32_t d)
 {
        struct rte_reciprocal R;
        uint64_t m;
        int l;
 
-       l = fls(d - 1);
+       l = rte_fls_u32(d - 1);
        m = ((1ULL << 32) * ((1ULL << l) - d));
        m /= d;
 
        m = ((1ULL << 32) * ((1ULL << l) - d));
        m /= d;
 
index 04c92ce..618d413 100644 (file)
@@ -741,7 +741,7 @@ vhost_user_set_vring_call(struct virtio_net *dev, struct VhostUserMsg *pmsg)
  *  In vhost-user, when we receive kick message, will test whether virtio
  *  device is ready for packet processing.
  */
  *  In vhost-user, when we receive kick message, will test whether virtio
  *  device is ready for packet processing.
  */
-static void
+static int
 vhost_user_set_vring_kick(struct virtio_net *dev, struct VhostUserMsg *pmsg)
 {
        struct vhost_vring_file file;
 vhost_user_set_vring_kick(struct virtio_net *dev, struct VhostUserMsg *pmsg)
 {
        struct vhost_vring_file file;
@@ -769,6 +769,8 @@ vhost_user_set_vring_kick(struct virtio_net *dev, struct VhostUserMsg *pmsg)
                if (notify_ops->new_device(dev->vid) == 0)
                        dev->flags |= VIRTIO_DEV_RUNNING;
        }
                if (notify_ops->new_device(dev->vid) == 0)
                        dev->flags |= VIRTIO_DEV_RUNNING;
        }
+
+       return 0;
 }
 
 static void
 }
 
 static void
@@ -847,14 +849,19 @@ vhost_user_set_vring_enable(struct virtio_net *dev,
        return 0;
 }
 
        return 0;
 }
 
-static void
+static int
 vhost_user_set_protocol_features(struct virtio_net *dev,
                                 uint64_t protocol_features)
 {
 vhost_user_set_protocol_features(struct virtio_net *dev,
                                 uint64_t protocol_features)
 {
-       if (protocol_features & ~VHOST_USER_PROTOCOL_FEATURES)
-               return;
+       if (protocol_features & ~VHOST_USER_PROTOCOL_FEATURES) {
+               RTE_LOG(ERR, VHOST_CONFIG,
+                       "(%d) received invalid protocol features.\n",
+                       dev->vid);
+               return -1;
+       }
 
        dev->protocol_features = protocol_features;
 
        dev->protocol_features = protocol_features;
+       return 0;
 }
 
 static int
 }
 
 static int
@@ -949,7 +956,7 @@ read_vhost_message(int sockfd, struct VhostUserMsg *msg)
        if (ret <= 0)
                return ret;
 
        if (ret <= 0)
                return ret;
 
-       if (msg && msg->size) {
+       if (msg->size) {
                if (msg->size > sizeof(msg->payload)) {
                        RTE_LOG(ERR, VHOST_CONFIG,
                                "invalid msg size: %d\n", msg->size);
                if (msg->size > sizeof(msg->payload)) {
                        RTE_LOG(ERR, VHOST_CONFIG,
                                "invalid msg size: %d\n", msg->size);
@@ -1080,6 +1087,7 @@ vhost_user_msg_handler(int vid, int fd)
 
        }
 
 
        }
 
+       ret = 0;
        switch (msg.request) {
        case VHOST_USER_GET_FEATURES:
                msg.payload.u64 = vhost_user_get_features();
        switch (msg.request) {
        case VHOST_USER_GET_FEATURES:
                msg.payload.u64 = vhost_user_get_features();
@@ -1087,7 +1095,7 @@ vhost_user_msg_handler(int vid, int fd)
                send_vhost_message(fd, &msg);
                break;
        case VHOST_USER_SET_FEATURES:
                send_vhost_message(fd, &msg);
                break;
        case VHOST_USER_SET_FEATURES:
-               vhost_user_set_features(dev, msg.payload.u64);
+               ret = vhost_user_set_features(dev, msg.payload.u64);
                break;
 
        case VHOST_USER_GET_PROTOCOL_FEATURES:
                break;
 
        case VHOST_USER_GET_PROTOCOL_FEATURES:
@@ -1096,14 +1104,14 @@ vhost_user_msg_handler(int vid, int fd)
                send_vhost_message(fd, &msg);
                break;
        case VHOST_USER_SET_PROTOCOL_FEATURES:
                send_vhost_message(fd, &msg);
                break;
        case VHOST_USER_SET_PROTOCOL_FEATURES:
-               vhost_user_set_protocol_features(dev, msg.payload.u64);
+               ret = vhost_user_set_protocol_features(dev, msg.payload.u64);
                break;
 
        case VHOST_USER_SET_OWNER:
                break;
 
        case VHOST_USER_SET_OWNER:
-               vhost_user_set_owner();
+               ret = vhost_user_set_owner();
                break;
        case VHOST_USER_RESET_OWNER:
                break;
        case VHOST_USER_RESET_OWNER:
-               vhost_user_reset_owner(dev);
+               ret = vhost_user_reset_owner(dev);
                break;
 
        case VHOST_USER_SET_MEM_TABLE:
                break;
 
        case VHOST_USER_SET_MEM_TABLE:
@@ -1111,10 +1119,14 @@ vhost_user_msg_handler(int vid, int fd)
                break;
 
        case VHOST_USER_SET_LOG_BASE:
                break;
 
        case VHOST_USER_SET_LOG_BASE:
-               vhost_user_set_log_base(dev, &msg);
-
-               /* it needs a reply */
-               msg.size = sizeof(msg.payload.u64);
+               ret = vhost_user_set_log_base(dev, &msg);
+               if (ret)
+                       break;
+               /*
+                * The spec is not clear about it (yet), but QEMU doesn't expect
+                * any payload in the reply. But a reply is required.
+                */
+               msg.size = 0;
                send_vhost_message(fd, &msg);
                break;
        case VHOST_USER_SET_LOG_FD:
                send_vhost_message(fd, &msg);
                break;
        case VHOST_USER_SET_LOG_FD:
@@ -1123,23 +1135,25 @@ vhost_user_msg_handler(int vid, int fd)
                break;
 
        case VHOST_USER_SET_VRING_NUM:
                break;
 
        case VHOST_USER_SET_VRING_NUM:
-               vhost_user_set_vring_num(dev, &msg.payload.state);
+               ret = vhost_user_set_vring_num(dev, &msg.payload.state);
                break;
        case VHOST_USER_SET_VRING_ADDR:
                break;
        case VHOST_USER_SET_VRING_ADDR:
-               vhost_user_set_vring_addr(&dev, &msg.payload.addr);
+               ret = vhost_user_set_vring_addr(&dev, &msg.payload.addr);
                break;
        case VHOST_USER_SET_VRING_BASE:
                break;
        case VHOST_USER_SET_VRING_BASE:
-               vhost_user_set_vring_base(dev, &msg.payload.state);
+               ret = vhost_user_set_vring_base(dev, &msg.payload.state);
                break;
 
        case VHOST_USER_GET_VRING_BASE:
                ret = vhost_user_get_vring_base(dev, &msg.payload.state);
                break;
 
        case VHOST_USER_GET_VRING_BASE:
                ret = vhost_user_get_vring_base(dev, &msg.payload.state);
+               if (ret)
+                       break;
                msg.size = sizeof(msg.payload.state);
                send_vhost_message(fd, &msg);
                break;
 
        case VHOST_USER_SET_VRING_KICK:
                msg.size = sizeof(msg.payload.state);
                send_vhost_message(fd, &msg);
                break;
 
        case VHOST_USER_SET_VRING_KICK:
-               vhost_user_set_vring_kick(dev, &msg);
+               ret = vhost_user_set_vring_kick(dev, &msg);
                break;
        case VHOST_USER_SET_VRING_CALL:
                vhost_user_set_vring_call(dev, &msg);
                break;
        case VHOST_USER_SET_VRING_CALL:
                vhost_user_set_vring_call(dev, &msg);
@@ -1158,10 +1172,10 @@ vhost_user_msg_handler(int vid, int fd)
                break;
 
        case VHOST_USER_SET_VRING_ENABLE:
                break;
 
        case VHOST_USER_SET_VRING_ENABLE:
-               vhost_user_set_vring_enable(dev, &msg.payload.state);
+               ret = vhost_user_set_vring_enable(dev, &msg.payload.state);
                break;
        case VHOST_USER_SEND_RARP:
                break;
        case VHOST_USER_SEND_RARP:
-               vhost_user_send_rarp(dev, &msg);
+               ret = vhost_user_send_rarp(dev, &msg);
                break;
 
        default:
                break;
 
        default:
@@ -1172,5 +1186,11 @@ vhost_user_msg_handler(int vid, int fd)
        if (unlock_required)
                vhost_user_unlock_all_queue_pairs(dev);
 
        if (unlock_required)
                vhost_user_unlock_all_queue_pairs(dev);
 
+       if (ret) {
+               RTE_LOG(ERR, VHOST_CONFIG,
+                       "vhost message handling failed.\n");
+               return -1;
+       }
+
        return 0;
 }
        return 0;
 }
index cfd69ce..eaee1c7 100644 (file)
@@ -272,7 +272,7 @@ flush_shadow_used_ring(struct virtio_net *dev, struct vhost_virtqueue *vq)
 
 static inline void __attribute__((always_inline))
 update_shadow_used_ring(struct vhost_virtqueue *vq,
 
 static inline void __attribute__((always_inline))
 update_shadow_used_ring(struct vhost_virtqueue *vq,
-                        uint16_t desc_idx, uint16_t len)
+                        uint16_t desc_idx, uint32_t len)
 {
        uint16_t i = vq->shadow_used_idx++;
 
 {
        uint16_t i = vq->shadow_used_idx++;
 
@@ -610,7 +610,7 @@ static inline int __attribute__((always_inline))
 fill_vec_buf(struct virtio_net *dev, struct vhost_virtqueue *vq,
                         uint32_t avail_idx, uint32_t *vec_idx,
                         struct buf_vector *buf_vec, uint16_t *desc_chain_head,
 fill_vec_buf(struct virtio_net *dev, struct vhost_virtqueue *vq,
                         uint32_t avail_idx, uint32_t *vec_idx,
                         struct buf_vector *buf_vec, uint16_t *desc_chain_head,
-                        uint16_t *desc_chain_len)
+                        uint32_t *desc_chain_len)
 {
        uint16_t idx = vq->avail->ring[avail_idx & (vq->size - 1)];
        uint32_t vec_id = *vec_idx;
 {
        uint16_t idx = vq->avail->ring[avail_idx & (vq->size - 1)];
        uint32_t vec_id = *vec_idx;
@@ -684,7 +684,7 @@ reserve_avail_buf_mergeable(struct virtio_net *dev, struct vhost_virtqueue *vq,
        uint16_t tries = 0;
 
        uint16_t head_idx = 0;
        uint16_t tries = 0;
 
        uint16_t head_idx = 0;
-       uint16_t len = 0;
+       uint32_t len = 0;
 
        *num_buffers = 0;
        cur_idx  = vq->last_avail_idx;
 
        *num_buffers = 0;
        cur_idx  = vq->last_avail_idx;
index e634abc..5cef63a 100644 (file)
@@ -70,8 +70,10 @@ CPUFLAGS += PCLMULQDQ
 endif
 
 ifneq ($(filter $(AUTO_CPUFLAGS),__AVX__),)
 endif
 
 ifneq ($(filter $(AUTO_CPUFLAGS),__AVX__),)
+ifeq ($(CONFIG_RTE_ENABLE_AVX),y)
 CPUFLAGS += AVX
 endif
 CPUFLAGS += AVX
 endif
+endif
 
 ifneq ($(filter $(AUTO_CPUFLAGS),__RDRND__),)
 CPUFLAGS += RDRAND
 
 ifneq ($(filter $(AUTO_CPUFLAGS),__RDRND__),)
 CPUFLAGS += RDRAND
@@ -86,11 +88,20 @@ CPUFLAGS += F16C
 endif
 
 ifneq ($(filter $(AUTO_CPUFLAGS),__AVX2__),)
 endif
 
 ifneq ($(filter $(AUTO_CPUFLAGS),__AVX2__),)
+ifeq ($(CONFIG_RTE_ENABLE_AVX),y)
 CPUFLAGS += AVX2
 endif
 CPUFLAGS += AVX2
 endif
+endif
 
 ifneq ($(filter $(AUTO_CPUFLAGS),__AVX512F__),)
 
 ifneq ($(filter $(AUTO_CPUFLAGS),__AVX512F__),)
+ifeq ($(CONFIG_RTE_ENABLE_AVX512),y)
 CPUFLAGS += AVX512F
 CPUFLAGS += AVX512F
+else
+# disable AVX512F support of gcc as a workaround for Bug 97
+ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
+MACHINE_CFLAGS += -mno-avx512f
+endif
+endif
 endif
 
 # IBM Power CPU flags
 endif
 
 # IBM Power CPU flags
@@ -111,7 +122,7 @@ CPUFLAGS += VSX
 endif
 
 # ARM flags
 endif
 
 # ARM flags
-ifneq ($(filter $(AUTO_CPUFLAGS),__ARM_NEON),)
+ifneq ($(filter __ARM_NEON __aarch64__,$(AUTO_CPUFLAGS)),)
 CPUFLAGS += NEON
 endif
 
 CPUFLAGS += NEON
 endif
 
index b33a182..c2cd30f 100644 (file)
@@ -30,7 +30,7 @@
 # OF THE POSSIBILITY OF SUCH DAMAGE.
 
 Name: dpdk
 # OF THE POSSIBILITY OF SUCH DAMAGE.
 
 Name: dpdk
-Version: 16.11.8
+Version: 16.11.9
 Release: 1
 Packager: packaging@6wind.com
 URL: http://dpdk.org
 Release: 1
 Packager: packaging@6wind.com
 URL: http://dpdk.org
index e7cfcd0..47597de 100755 (executable)
@@ -609,6 +609,13 @@ def do_arg_actions():
 
 def main():
     '''program main function'''
 
 def main():
     '''program main function'''
+    # check if lspci is installed, suppress any output
+    with open(os.devnull, 'w') as devnull:
+        ret = subprocess.call(['which', 'lspci'],
+                              stdout=devnull, stderr=devnull)
+        if ret != 0:
+            print("'lspci' not found - please install 'pciutils'")
+            sys.exit(1)
     parse_args()
     check_modules()
     get_nic_details()
     parse_args()
     check_modules()
     get_nic_details()