s390/qdio: bridgeport support - CHSC part
[platform/adaptation/renesas_rcar/renesas_kernel.git] / arch / s390 / include / asm / qdio.h
index 57d0d7e..0a1abf1 100644 (file)
@@ -378,6 +378,34 @@ struct qdio_initialize {
        struct qdio_outbuf_state *output_sbal_state_array;
 };
 
+/**
+ * enum qdio_brinfo_entry_type - type of address entry for qdio_brinfo_desc()
+ * @l3_ipv6_addr: entry contains IPv6 address
+ * @l3_ipv4_addr: entry contains IPv4 address
+ * @l2_addr_lnid: entry contains MAC address and VLAN ID
+ */
+enum qdio_brinfo_entry_type {l3_ipv6_addr, l3_ipv4_addr, l2_addr_lnid};
+
+/**
+ * struct qdio_brinfo_entry_XXX - Address entry for qdio_brinfo_desc()
+ * @nit:  Network interface token
+ * @addr: Address of one of the three types
+ *
+ * The struct is passed to the callback function by qdio_brinfo_desc()
+ */
+struct qdio_brinfo_entry_l3_ipv6 {
+       u64 nit;
+       struct { unsigned char _s6_addr[16]; } addr;
+} __packed;
+struct qdio_brinfo_entry_l3_ipv4 {
+       u64 nit;
+       struct { uint32_t _s_addr; } addr;
+} __packed;
+struct qdio_brinfo_entry_l2 {
+       u64 nit;
+       struct { u8 mac[6]; u16 lnid; } addr_lnid;
+} __packed;
+
 #define QDIO_STATE_INACTIVE            0x00000002 /* after qdio_cleanup */
 #define QDIO_STATE_ESTABLISHED         0x00000004 /* after qdio_establish */
 #define QDIO_STATE_ACTIVE              0x00000008 /* after qdio_activate */
@@ -399,5 +427,10 @@ extern int qdio_get_next_buffers(struct ccw_device *, int, int *, int *);
 extern int qdio_shutdown(struct ccw_device *, int);
 extern int qdio_free(struct ccw_device *);
 extern int qdio_get_ssqd_desc(struct ccw_device *, struct qdio_ssqd_desc *);
+extern int qdio_pnso_brinfo(struct subchannel_id schid,
+               int cnc, u16 *response,
+               void (*cb)(void *priv, enum qdio_brinfo_entry_type type,
+                               void *entry),
+               void *priv);
 
 #endif /* __QDIO_H__ */