Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce088848 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'be2net'



Sathya Perla says:

====================
be2net: patch set

Pls apply the following bug fixes to the 'net' tree. Thanks.

Suresh Reddy (2):
  be2net: increase the timeout value for loopback-test FW cmd
  be2net: fix max_evt_qs calculation for BE3 in SR-IOV config

Vasundhara Volam (1):
  be2net: disable RSS when number of RXQs is reduced to 1 via
    set-channels
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents f35f76ee e3dc867c
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ static inline char *nic_name(struct pci_dev *pdev)
#define BE3_MAX_RSS_QS		16
#define BE3_MAX_TX_QS		16
#define BE3_MAX_EVT_QS		16
#define BE3_SRIOV_MAX_EVT_QS	8

#define MAX_RX_QS		32
#define MAX_EVT_QS		32
@@ -480,7 +481,7 @@ struct be_adapter {
	struct list_head entry;

	u32 flash_status;
	struct completion flash_compl;
	struct completion et_cmd_compl;

	struct be_resources res;	/* resources available for the func */
	u16 num_vfs;			/* Number of VFs provisioned by PF */
+23 −10
Original line number Diff line number Diff line
@@ -141,11 +141,17 @@ static int be_mcc_compl_process(struct be_adapter *adapter,
		subsystem = resp_hdr->subsystem;
	}

	if (opcode == OPCODE_LOWLEVEL_LOOPBACK_TEST &&
	    subsystem == CMD_SUBSYSTEM_LOWLEVEL) {
		complete(&adapter->et_cmd_compl);
		return 0;
	}

	if (((opcode == OPCODE_COMMON_WRITE_FLASHROM) ||
	     (opcode == OPCODE_COMMON_WRITE_OBJECT)) &&
	    (subsystem == CMD_SUBSYSTEM_COMMON)) {
		adapter->flash_status = compl_status;
		complete(&adapter->flash_compl);
		complete(&adapter->et_cmd_compl);
	}

	if (compl_status == MCC_STATUS_SUCCESS) {
@@ -2017,6 +2023,9 @@ int be_cmd_rss_config(struct be_adapter *adapter, u8 *rsstable,
			0x3ea83c02, 0x4a110304};
	int status;

	if (!(be_if_cap_flags(adapter) & BE_IF_FLAGS_RSS))
		return 0;

	if (mutex_lock_interruptible(&adapter->mbox_lock))
		return -1;

@@ -2160,7 +2169,7 @@ int lancer_cmd_write_object(struct be_adapter *adapter, struct be_dma_mem *cmd,
	be_mcc_notify(adapter);
	spin_unlock_bh(&adapter->mcc_lock);

	if (!wait_for_completion_timeout(&adapter->flash_compl,
	if (!wait_for_completion_timeout(&adapter->et_cmd_compl,
					 msecs_to_jiffies(60000)))
		status = -1;
	else
@@ -2255,7 +2264,7 @@ int be_cmd_write_flashrom(struct be_adapter *adapter, struct be_dma_mem *cmd,
	be_mcc_notify(adapter);
	spin_unlock_bh(&adapter->mcc_lock);

	if (!wait_for_completion_timeout(&adapter->flash_compl,
	if (!wait_for_completion_timeout(&adapter->et_cmd_compl,
					 msecs_to_jiffies(40000)))
		status = -1;
	else
@@ -2367,6 +2376,7 @@ int be_cmd_loopback_test(struct be_adapter *adapter, u32 port_num,
{
	struct be_mcc_wrb *wrb;
	struct be_cmd_req_loopback_test *req;
	struct be_cmd_resp_loopback_test *resp;
	int status;

	spin_lock_bh(&adapter->mcc_lock);
@@ -2381,8 +2391,8 @@ int be_cmd_loopback_test(struct be_adapter *adapter, u32 port_num,

	be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_LOWLEVEL,
			OPCODE_LOWLEVEL_LOOPBACK_TEST, sizeof(*req), wrb, NULL);
	req->hdr.timeout = cpu_to_le32(4);

	req->hdr.timeout = cpu_to_le32(15);
	req->pattern = cpu_to_le64(pattern);
	req->src_port = cpu_to_le32(port_num);
	req->dest_port = cpu_to_le32(port_num);
@@ -2390,12 +2400,15 @@ int be_cmd_loopback_test(struct be_adapter *adapter, u32 port_num,
	req->num_pkts = cpu_to_le32(num_pkts);
	req->loopback_type = cpu_to_le32(loopback_type);

	status = be_mcc_notify_wait(adapter);
	if (!status) {
		struct be_cmd_resp_loopback_test *resp = embedded_payload(wrb);
	be_mcc_notify(adapter);

	spin_unlock_bh(&adapter->mcc_lock);

	wait_for_completion(&adapter->et_cmd_compl);
	resp = embedded_payload(wrb);
	status = le32_to_cpu(resp->status);
	}

	return status;
err:
	spin_unlock_bh(&adapter->mcc_lock);
	return status;
+18 −11
Original line number Diff line number Diff line
@@ -2744,14 +2744,17 @@ static int be_rx_qs_create(struct be_adapter *adapter)
		if (!BEx_chip(adapter))
			adapter->rss_flags |= RSS_ENABLE_UDP_IPV4 |
						RSS_ENABLE_UDP_IPV6;
	} else {
		/* Disable RSS, if only default RX Q is created */
		adapter->rss_flags = RSS_ENABLE_NONE;
	}

	rc = be_cmd_rss_config(adapter, rsstable, adapter->rss_flags,
			       128);
	if (rc) {
			adapter->rss_flags = 0;
		adapter->rss_flags = RSS_ENABLE_NONE;
		return rc;
	}
	}

	/* First time posting */
	for_all_rx_queues(adapter, rxo, i)
@@ -3124,11 +3127,11 @@ static void BEx_get_resources(struct be_adapter *adapter,
{
	struct pci_dev *pdev = adapter->pdev;
	bool use_sriov = false;

	if (BE3_chip(adapter) && sriov_want(adapter)) {
	int max_vfs;

	max_vfs = pci_sriov_get_totalvfs(pdev);

	if (BE3_chip(adapter) && sriov_want(adapter)) {
		res->max_vfs = max_vfs > 0 ? min(MAX_VFS, max_vfs) : 0;
		use_sriov = res->max_vfs;
	}
@@ -3159,7 +3162,11 @@ static void BEx_get_resources(struct be_adapter *adapter,
					   BE3_MAX_RSS_QS : BE2_MAX_RSS_QS;
	res->max_rx_qs = res->max_rss_qs + 1;

	res->max_evt_qs = be_physfn(adapter) ? BE3_MAX_EVT_QS : 1;
	if (be_physfn(adapter))
		res->max_evt_qs = (max_vfs > 0) ?
					BE3_SRIOV_MAX_EVT_QS : BE3_MAX_EVT_QS;
	else
		res->max_evt_qs = 1;

	res->if_cap_flags = BE_IF_CAP_FLAGS_WANT;
	if (!(adapter->function_caps & BE_FUNCTION_CAPS_RSS))
@@ -4205,7 +4212,7 @@ static int be_ctrl_init(struct be_adapter *adapter)
	spin_lock_init(&adapter->mcc_lock);
	spin_lock_init(&adapter->mcc_cq_lock);

	init_completion(&adapter->flash_compl);
	init_completion(&adapter->et_cmd_compl);
	pci_save_state(adapter->pdev);
	return 0;