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

Commit 2063a5f5 authored by Kittipon Meesompop's avatar Kittipon Meesompop Committed by David S. Miller
Browse files

s390/qeth: add ipa return codes for bridgeport



add ipa return codes for Bridgeport (HiperSockets and OSA) according to
system level design.

Signed-off-by: default avatarKittipon Meesompop <kmeesomp@linux.vnet.ibm.com>
Reviewed-by: default avatarJulian Wiedmann <jwi@linux.vnet.ibm.com>
Reviewed-by: default avatarUrsula Braun <ubraun@linux.vnet.ibm.com>
Signed-off-by: default avatarJulian Wiedmann <jwi@linux.vnet.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5ee8aa68
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -170,12 +170,18 @@ static struct ipa_rc_msg qeth_ipa_rc_msg[] = {
	{IPA_RC_TRACE_ALREADY_ACTIVE,	"trace already active"},
	{IPA_RC_INVALID_FORMAT,		"invalid format or length"},
	{IPA_RC_DUP_IPV6_REMOTE, "ipv6 address already registered remote"},
	{IPA_RC_SBP_IQD_NOT_CONFIGURED,	"Not configured for bridgeport"},
	{IPA_RC_DUP_IPV6_HOME,		"ipv6 address already registered"},
	{IPA_RC_UNREGISTERED_ADDR,	"Address not registered"},
	{IPA_RC_NO_ID_AVAILABLE,	"No identifiers available"},
	{IPA_RC_ID_NOT_FOUND,		"Identifier not found"},
	{IPA_RC_SBP_IQD_ANO_DEV_PRIMARY, "Primary bridgeport exists already"},
	{IPA_RC_SBP_IQD_CURRENT_SECOND,	"Bridgeport is currently secondary"},
	{IPA_RC_SBP_IQD_LIMIT_SECOND, "Limit of secondary bridgeports reached"},
	{IPA_RC_INVALID_IP_VERSION,	"IP version incorrect"},
	{IPA_RC_SBP_IQD_CURRENT_PRIMARY, "Bridgeport is currently primary"},
	{IPA_RC_LAN_FRAME_MISMATCH,	"LAN and frame mismatch"},
	{IPA_RC_SBP_IQD_NO_QDIO_QUEUES,	"QDIO queues not established"},
	{IPA_RC_L2_UNSUPPORTED_CMD,	"Unsupported layer 2 command"},
	{IPA_RC_L2_DUP_MAC,		"Duplicate MAC address"},
	{IPA_RC_L2_ADDR_TABLE_FULL,	"Layer2 address table full"},
@@ -187,6 +193,14 @@ static struct ipa_rc_msg qeth_ipa_rc_msg[] = {
	{IPA_RC_L2_INVALID_VLAN_ID,	"L2 invalid vlan id"},
	{IPA_RC_L2_DUP_VLAN_ID,		"L2 duplicate vlan id"},
	{IPA_RC_L2_VLAN_ID_NOT_FOUND,	"L2 vlan id not found"},
	{IPA_RC_SBP_OSA_NOT_CONFIGURED,	"Not configured for bridgeport"},
	{IPA_RC_SBP_OSA_OS_MISMATCH,	"OS mismatch"},
	{IPA_RC_SBP_OSA_ANO_DEV_PRIMARY, "Primary bridgeport exists already"},
	{IPA_RC_SBP_OSA_CURRENT_SECOND,	"Bridgeport is currently secondary"},
	{IPA_RC_SBP_OSA_LIMIT_SECOND, "Limit of secondary bridgeports reached"},
	{IPA_RC_SBP_OSA_NOT_AUTHD_BY_ZMAN, "Not authorized by zManager"},
	{IPA_RC_SBP_OSA_CURRENT_PRIMARY, "Bridgeport is currently primary"},
	{IPA_RC_SBP_OSA_NO_QDIO_QUEUES,	"QDIO queues not established"},
	{IPA_RC_DATA_MISMATCH,		"Data field mismatch (v4/v6 mixed)"},
	{IPA_RC_INVALID_MTU_SIZE,	"Invalid MTU size"},
	{IPA_RC_INVALID_LANTYPE,	"Invalid LAN type"},
+18 −0
Original line number Diff line number Diff line
@@ -142,12 +142,18 @@ enum qeth_ipa_return_codes {
	IPA_RC_TRACE_ALREADY_ACTIVE	= 0x0005,
	IPA_RC_INVALID_FORMAT		= 0x0006,
	IPA_RC_DUP_IPV6_REMOTE		= 0x0008,
	IPA_RC_SBP_IQD_NOT_CONFIGURED	= 0x000C,
	IPA_RC_DUP_IPV6_HOME		= 0x0010,
	IPA_RC_UNREGISTERED_ADDR	= 0x0011,
	IPA_RC_NO_ID_AVAILABLE		= 0x0012,
	IPA_RC_ID_NOT_FOUND		= 0x0013,
	IPA_RC_SBP_IQD_ANO_DEV_PRIMARY	= 0x0014,
	IPA_RC_SBP_IQD_CURRENT_SECOND	= 0x0018,
	IPA_RC_SBP_IQD_LIMIT_SECOND	= 0x001C,
	IPA_RC_INVALID_IP_VERSION	= 0x0020,
	IPA_RC_SBP_IQD_CURRENT_PRIMARY	= 0x0024,
	IPA_RC_LAN_FRAME_MISMATCH	= 0x0040,
	IPA_RC_SBP_IQD_NO_QDIO_QUEUES	= 0x00EB,
	IPA_RC_L2_UNSUPPORTED_CMD	= 0x2003,
	IPA_RC_L2_DUP_MAC		= 0x2005,
	IPA_RC_L2_ADDR_TABLE_FULL	= 0x2006,
@@ -159,6 +165,14 @@ enum qeth_ipa_return_codes {
	IPA_RC_L2_INVALID_VLAN_ID	= 0x2015,
	IPA_RC_L2_DUP_VLAN_ID		= 0x2016,
	IPA_RC_L2_VLAN_ID_NOT_FOUND	= 0x2017,
	IPA_RC_SBP_OSA_NOT_CONFIGURED	= 0x2B0C,
	IPA_RC_SBP_OSA_OS_MISMATCH	= 0x2B10,
	IPA_RC_SBP_OSA_ANO_DEV_PRIMARY	= 0x2B14,
	IPA_RC_SBP_OSA_CURRENT_SECOND	= 0x2B18,
	IPA_RC_SBP_OSA_LIMIT_SECOND	= 0x2B1C,
	IPA_RC_SBP_OSA_NOT_AUTHD_BY_ZMAN = 0x2B20,
	IPA_RC_SBP_OSA_CURRENT_PRIMARY	= 0x2B24,
	IPA_RC_SBP_OSA_NO_QDIO_QUEUES	= 0x2BEB,
	IPA_RC_DATA_MISMATCH		= 0xe001,
	IPA_RC_INVALID_MTU_SIZE		= 0xe002,
	IPA_RC_INVALID_LANTYPE		= 0xe003,
@@ -187,6 +201,10 @@ enum qeth_ipa_return_codes {
#define IPA_RC_INVALID_SUBCMD		IPA_RC_IP_TABLE_FULL
#define IPA_RC_HARDWARE_AUTH_ERROR	IPA_RC_UNKNOWN_ERROR

/* for SETBRIDGEPORT (double occupancies) */
#define IPA_RC_SBP_IQD_OS_MISMATCH	 IPA_RC_DUP_IPV6_HOME
#define IPA_RC_SBP_IQD_NOT_AUTHD_BY_ZMAN IPA_RC_INVALID_IP_VERSION

/* IPA function flags; each flag marks availability of respective function */
enum qeth_ipa_funcs {
	IPA_ARP_PROCESSING      = 0x00000001L,
+17 −17
Original line number Diff line number Diff line
@@ -1650,27 +1650,27 @@ static int qeth_bridgeport_makerc(struct qeth_card *card,
	if ((is_iqd && (cbctl->ipa_rc == IPA_RC_SUCCESS)) ||
	    (!is_iqd && (cbctl->ipa_rc == cbctl->cmd_rc)))
		switch (cbctl->cmd_rc) {
		case 0x0000:
		case IPA_RC_SUCCESS:
			rc = 0;
			break;
		case 0x2B04:
		case 0x0004:
		case IPA_RC_L2_UNSUPPORTED_CMD:
		case IPA_RC_UNSUPPORTED_COMMAND:
			rc = -EOPNOTSUPP;
			break;
		case 0x2B0C:
		case 0x000C: /* Not configured as bridge Port */
		case IPA_RC_SBP_OSA_NOT_CONFIGURED:
		case IPA_RC_SBP_IQD_NOT_CONFIGURED:
			rc = -ENODEV; /* maybe not the best code here? */
			dev_err(&card->gdev->dev,
	"The device is not configured as a Bridge Port\n");
			break;
		case 0x2B10:
		case 0x0010: /* OS mismatch */
		case IPA_RC_SBP_OSA_OS_MISMATCH:
		case IPA_RC_SBP_IQD_OS_MISMATCH:
			rc = -EPERM;
			dev_err(&card->gdev->dev,
	"A Bridge Port is already configured by a different operating system\n");
			break;
		case 0x2B14:
		case 0x0014: /* Another device is Primary */
		case IPA_RC_SBP_OSA_ANO_DEV_PRIMARY:
		case IPA_RC_SBP_IQD_ANO_DEV_PRIMARY:
			switch (setcmd) {
			case IPA_SBP_SET_PRIMARY_BRIDGE_PORT:
				rc = -EEXIST;
@@ -1686,26 +1686,26 @@ static int qeth_bridgeport_makerc(struct qeth_card *card,
				rc = -EIO;
			}
			break;
		case 0x2B18:
		case 0x0018: /* This device is currently Secondary */
		case IPA_RC_SBP_OSA_CURRENT_SECOND:
		case IPA_RC_SBP_IQD_CURRENT_SECOND:
			rc = -EBUSY;
			dev_err(&card->gdev->dev,
	"The device is already a secondary Bridge Port\n");
			break;
		case 0x2B1C:
		case 0x001C: /* Limit for Secondary devices reached */
		case IPA_RC_SBP_OSA_LIMIT_SECOND:
		case IPA_RC_SBP_IQD_LIMIT_SECOND:
			rc = -EEXIST;
			dev_err(&card->gdev->dev,
	"The LAN cannot have more secondary Bridge Ports\n");
			break;
		case 0x2B24:
		case 0x0024: /* This device is currently Primary */
		case IPA_RC_SBP_OSA_CURRENT_PRIMARY:
		case IPA_RC_SBP_IQD_CURRENT_PRIMARY:
			rc = -EBUSY;
			dev_err(&card->gdev->dev,
	"The device is already a primary Bridge Port\n");
			break;
		case 0x2B20:
		case 0x0020: /* Not authorized by zManager */
		case IPA_RC_SBP_OSA_NOT_AUTHD_BY_ZMAN:
		case IPA_RC_SBP_IQD_NOT_AUTHD_BY_ZMAN:
			rc = -EACCES;
			dev_err(&card->gdev->dev,
	"The device is not authorized to be a Bridge Port\n");