Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[platform/kernel/linux-rpi.git] / drivers / s390 / net / qeth_core_mpc.h
index 55f3d23..ff6877f 100644 (file)
@@ -45,7 +45,6 @@ extern unsigned char IPA_PDU_HEADER[];
 #define IPA_CMD_PRIM_VERSION_NO 0x01
 
 enum qeth_card_types {
-       QETH_CARD_TYPE_UNKNOWN = 0,
        QETH_CARD_TYPE_OSD     = 1,
        QETH_CARD_TYPE_IQD     = 5,
        QETH_CARD_TYPE_OSN     = 6,
@@ -91,6 +90,7 @@ enum qeth_ipa_cmds {
        IPA_CMD_DELGMAC                 = 0x24,
        IPA_CMD_SETVLAN                 = 0x25,
        IPA_CMD_DELVLAN                 = 0x26,
+       IPA_CMD_VNICC                   = 0x2a,
        IPA_CMD_SETBRIDGEPORT_OSA       = 0x2b,
        IPA_CMD_SETCCID                 = 0x41,
        IPA_CMD_DELCCID                 = 0x42,
@@ -166,6 +166,8 @@ 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_L2_VLAN_ID_NOT_ALLOWED   = 0x2050,
+       IPA_RC_VNICC_VNICBP             = 0x20B0,
        IPA_RC_SBP_OSA_NOT_CONFIGURED   = 0x2B0C,
        IPA_RC_SBP_OSA_OS_MISMATCH      = 0x2B10,
        IPA_RC_SBP_OSA_ANO_DEV_PRIMARY  = 0x2B14,
@@ -198,6 +200,9 @@ enum qeth_ipa_return_codes {
        IPA_RC_ENOMEM                   = 0xfffe,
        IPA_RC_FFFF                     = 0xffff
 };
+/* for VNIC Characteristics */
+#define IPA_RC_VNICC_OOSEQ 0x0005
+
 /* for SET_DIAGNOSTIC_ASSIST */
 #define IPA_RC_INVALID_SUBCMD          IPA_RC_IP_TABLE_FULL
 #define IPA_RC_HARDWARE_AUTH_ERROR     IPA_RC_UNKNOWN_ERROR
@@ -552,6 +557,71 @@ struct qeth_ipacmd_diagass {
        __u8   cdata[64];
 } __attribute__ ((packed));
 
+/* VNIC Characteristics IPA Command: *****************************************/
+/* IPA commands/sub commands for VNICC */
+#define IPA_VNICC_QUERY_CHARS          0x00000000L
+#define IPA_VNICC_QUERY_CMDS           0x00000001L
+#define IPA_VNICC_ENABLE               0x00000002L
+#define IPA_VNICC_DISABLE              0x00000004L
+#define IPA_VNICC_SET_TIMEOUT          0x00000008L
+#define IPA_VNICC_GET_TIMEOUT          0x00000010L
+
+/* VNICC flags */
+#define QETH_VNICC_FLOODING            0x80000000
+#define QETH_VNICC_MCAST_FLOODING      0x40000000
+#define QETH_VNICC_LEARNING            0x20000000
+#define QETH_VNICC_TAKEOVER_SETVMAC    0x10000000
+#define QETH_VNICC_TAKEOVER_LEARNING   0x08000000
+#define QETH_VNICC_BRIDGE_INVISIBLE    0x04000000
+#define QETH_VNICC_RX_BCAST            0x02000000
+
+/* VNICC default values */
+#define QETH_VNICC_ALL                 0xff000000
+#define QETH_VNICC_DEFAULT             QETH_VNICC_RX_BCAST
+/* default VNICC timeout in seconds */
+#define QETH_VNICC_DEFAULT_TIMEOUT     600
+
+/* VNICC header */
+struct qeth_ipacmd_vnicc_hdr {
+       u32 sup;
+       u32 cur;
+};
+
+/* VNICC sub command header */
+struct qeth_vnicc_sub_hdr {
+       u16 data_length;
+       u16 reserved;
+       u32 sub_command;
+};
+
+/* query supported commands for VNIC characteristic */
+struct qeth_vnicc_query_cmds {
+       u32 vnic_char;
+       u32 sup_cmds;
+};
+
+/* enable/disable VNIC characteristic */
+struct qeth_vnicc_set_char {
+       u32 vnic_char;
+};
+
+/* get/set timeout for VNIC characteristic */
+struct qeth_vnicc_getset_timeout {
+       u32 vnic_char;
+       u32 timeout;
+};
+
+/* complete VNICC IPA command message */
+struct qeth_ipacmd_vnicc {
+       struct qeth_ipacmd_vnicc_hdr hdr;
+       struct qeth_vnicc_sub_hdr sub_hdr;
+       union {
+               struct qeth_vnicc_query_cmds query_cmds;
+               struct qeth_vnicc_set_char set_char;
+               struct qeth_vnicc_getset_timeout getset_timeout;
+       };
+};
+
 /* SETBRIDGEPORT IPA Command:   *********************************************/
 enum qeth_ipa_sbp_cmd {
        IPA_SBP_QUERY_COMMANDS_SUPPORTED        = 0x00000000L,
@@ -693,6 +763,7 @@ struct qeth_ipa_cmd {
                struct qeth_ipacmd_diagass              diagass;
                struct qeth_ipacmd_setbridgeport        sbp;
                struct qeth_ipacmd_addr_change          addrchange;
+               struct qeth_ipacmd_vnicc                vnicc;
        } data;
 } __attribute__ ((packed));