Commit 096cc49c authored by David S. Miller's avatar David S. Miller

Merge branch 's390-qeth-next'

Julian Wiedmann says:

====================
s390/qeth: updates 2019-06-27

please apply another round of qeth updates for net-next.
This completes the conversion of the control path to use dynamically
allocated cmd buffers, along with some fine-tuning for the route
validation fix that recently went into -net.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 39f41f36 eca1d5c2
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
#include <linux/wait.h> #include <linux/wait.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <net/dst.h>
#include <net/ip6_fib.h>
#include <net/ipv6.h> #include <net/ipv6.h>
#include <net/if_inet6.h> #include <net/if_inet6.h>
#include <net/addrconf.h> #include <net/addrconf.h>
...@@ -60,7 +62,7 @@ struct qeth_dbf_info { ...@@ -60,7 +62,7 @@ struct qeth_dbf_info {
debug_info_t *id; debug_info_t *id;
}; };
#define QETH_DBF_CTRL_LEN 256 #define QETH_DBF_CTRL_LEN 256U
#define QETH_DBF_TEXT(name, level, text) \ #define QETH_DBF_TEXT(name, level, text) \
debug_text_event(qeth_dbf[QETH_DBF_##name].id, level, text) debug_text_event(qeth_dbf[QETH_DBF_##name].id, level, text)
...@@ -524,11 +526,6 @@ struct qeth_qdio_info { ...@@ -524,11 +526,6 @@ struct qeth_qdio_info {
int default_out_queue; int default_out_queue;
}; };
/**
* buffer stuff for read channel
*/
#define QETH_CMD_BUFFER_NO 8
/** /**
* channel state machine * channel state machine
*/ */
...@@ -551,16 +548,11 @@ enum qeth_card_states { ...@@ -551,16 +548,11 @@ enum qeth_card_states {
* Protocol versions * Protocol versions
*/ */
enum qeth_prot_versions { enum qeth_prot_versions {
QETH_PROT_NONE = 0x0000,
QETH_PROT_IPV4 = 0x0004, QETH_PROT_IPV4 = 0x0004,
QETH_PROT_IPV6 = 0x0006, QETH_PROT_IPV6 = 0x0006,
}; };
enum qeth_cmd_buffer_state {
BUF_STATE_FREE,
BUF_STATE_LOCKED,
BUF_STATE_MALLOC,
};
enum qeth_cq { enum qeth_cq {
QETH_CQ_DISABLED = 0, QETH_CQ_DISABLED = 0,
QETH_CQ_ENABLED = 1, QETH_CQ_ENABLED = 1,
...@@ -574,18 +566,20 @@ struct qeth_ipato { ...@@ -574,18 +566,20 @@ struct qeth_ipato {
struct list_head entries; struct list_head entries;
}; };
struct qeth_channel; struct qeth_channel {
struct ccw_device *ccwdev;
enum qeth_channel_states state;
atomic_t irq_pending;
};
struct qeth_cmd_buffer { struct qeth_cmd_buffer {
enum qeth_cmd_buffer_state state;
unsigned int length; unsigned int length;
refcount_t ref_count; refcount_t ref_count;
struct qeth_channel *channel; struct qeth_channel *channel;
struct qeth_reply *reply; struct qeth_reply *reply;
long timeout; long timeout;
unsigned char *data; unsigned char *data;
void (*finalize)(struct qeth_card *card, struct qeth_cmd_buffer *iob, void (*finalize)(struct qeth_card *card, struct qeth_cmd_buffer *iob);
unsigned int length);
void (*callback)(struct qeth_card *card, struct qeth_cmd_buffer *iob); void (*callback)(struct qeth_card *card, struct qeth_cmd_buffer *iob);
}; };
...@@ -599,25 +593,8 @@ static inline struct qeth_ipa_cmd *__ipa_cmd(struct qeth_cmd_buffer *iob) ...@@ -599,25 +593,8 @@ static inline struct qeth_ipa_cmd *__ipa_cmd(struct qeth_cmd_buffer *iob)
return (struct qeth_ipa_cmd *)(iob->data + IPA_PDU_HEADER_SIZE); return (struct qeth_ipa_cmd *)(iob->data + IPA_PDU_HEADER_SIZE);
} }
/**
* definition of a qeth channel, used for read and write
*/
struct qeth_channel {
enum qeth_channel_states state;
struct ccw1 *ccw;
spinlock_t iob_lock;
wait_queue_head_t wait_q;
struct ccw_device *ccwdev;
/*command buffer for control data*/
struct qeth_cmd_buffer iob[QETH_CMD_BUFFER_NO];
atomic_t irq_pending;
int io_buf_no;
};
static inline struct ccw1 *__ccw_from_cmd(struct qeth_cmd_buffer *iob) static inline struct ccw1 *__ccw_from_cmd(struct qeth_cmd_buffer *iob)
{ {
if (iob->state != BUF_STATE_MALLOC)
return iob->channel->ccw;
return (struct ccw1 *)(iob->data + ALIGN(iob->length, 8)); return (struct ccw1 *)(iob->data + ALIGN(iob->length, 8));
} }
...@@ -738,9 +715,6 @@ struct qeth_discipline { ...@@ -738,9 +715,6 @@ struct qeth_discipline {
void (*remove) (struct ccwgroup_device *); void (*remove) (struct ccwgroup_device *);
int (*set_online) (struct ccwgroup_device *); int (*set_online) (struct ccwgroup_device *);
int (*set_offline) (struct ccwgroup_device *); int (*set_offline) (struct ccwgroup_device *);
int (*freeze)(struct ccwgroup_device *);
int (*thaw) (struct ccwgroup_device *);
int (*restore)(struct ccwgroup_device *);
int (*do_ioctl)(struct net_device *dev, struct ifreq *rq, int cmd); int (*do_ioctl)(struct net_device *dev, struct ifreq *rq, int cmd);
int (*control_event_handler)(struct qeth_card *card, int (*control_event_handler)(struct qeth_card *card,
struct qeth_ipa_cmd *cmd); struct qeth_ipa_cmd *cmd);
...@@ -905,6 +879,17 @@ static inline int qeth_get_ether_cast_type(struct sk_buff *skb) ...@@ -905,6 +879,17 @@ static inline int qeth_get_ether_cast_type(struct sk_buff *skb)
return RTN_UNICAST; return RTN_UNICAST;
} }
static inline struct dst_entry *qeth_dst_check_rcu(struct sk_buff *skb, int ipv)
{
struct dst_entry *dst = skb_dst(skb);
struct rt6_info *rt;
rt = (struct rt6_info *) dst;
if (dst)
dst = dst_check(dst, (ipv == 6) ? rt6_get_cookie(rt) : 0);
return dst;
}
static inline void qeth_rx_csum(struct qeth_card *card, struct sk_buff *skb, static inline void qeth_rx_csum(struct qeth_card *card, struct sk_buff *skb,
u8 flags) u8 flags)
{ {
...@@ -939,12 +924,12 @@ static inline int qeth_is_diagass_supported(struct qeth_card *card, ...@@ -939,12 +924,12 @@ static inline int qeth_is_diagass_supported(struct qeth_card *card,
int qeth_send_simple_setassparms_prot(struct qeth_card *card, int qeth_send_simple_setassparms_prot(struct qeth_card *card,
enum qeth_ipa_funcs ipa_func, enum qeth_ipa_funcs ipa_func,
u16 cmd_code, long data, u16 cmd_code, u32 *data,
enum qeth_prot_versions prot); enum qeth_prot_versions prot);
/* IPv4 variant */ /* IPv4 variant */
static inline int qeth_send_simple_setassparms(struct qeth_card *card, static inline int qeth_send_simple_setassparms(struct qeth_card *card,
enum qeth_ipa_funcs ipa_func, enum qeth_ipa_funcs ipa_func,
u16 cmd_code, long data) u16 cmd_code, u32 *data)
{ {
return qeth_send_simple_setassparms_prot(card, ipa_func, cmd_code, return qeth_send_simple_setassparms_prot(card, ipa_func, cmd_code,
data, QETH_PROT_IPV4); data, QETH_PROT_IPV4);
...@@ -952,7 +937,7 @@ static inline int qeth_send_simple_setassparms(struct qeth_card *card, ...@@ -952,7 +937,7 @@ static inline int qeth_send_simple_setassparms(struct qeth_card *card,
static inline int qeth_send_simple_setassparms_v6(struct qeth_card *card, static inline int qeth_send_simple_setassparms_v6(struct qeth_card *card,
enum qeth_ipa_funcs ipa_func, enum qeth_ipa_funcs ipa_func,
u16 cmd_code, long data) u16 cmd_code, u32 *data)
{ {
return qeth_send_simple_setassparms_prot(card, ipa_func, cmd_code, return qeth_send_simple_setassparms_prot(card, ipa_func, cmd_code,
data, QETH_PROT_IPV6); data, QETH_PROT_IPV6);
...@@ -993,8 +978,23 @@ int qeth_send_ipa_cmd(struct qeth_card *, struct qeth_cmd_buffer *, ...@@ -993,8 +978,23 @@ int qeth_send_ipa_cmd(struct qeth_card *, struct qeth_cmd_buffer *,
int (*reply_cb) int (*reply_cb)
(struct qeth_card *, struct qeth_reply *, unsigned long), (struct qeth_card *, struct qeth_reply *, unsigned long),
void *); void *);
struct qeth_cmd_buffer *qeth_get_ipacmd_buffer(struct qeth_card *, struct qeth_cmd_buffer *qeth_ipa_alloc_cmd(struct qeth_card *card,
enum qeth_ipa_cmds, enum qeth_prot_versions); enum qeth_ipa_cmds cmd_code,
enum qeth_prot_versions prot,
unsigned int data_length);
struct qeth_cmd_buffer *qeth_alloc_cmd(struct qeth_channel *channel,
unsigned int length, unsigned int ccws,
long timeout);
struct qeth_cmd_buffer *qeth_get_setassparms_cmd(struct qeth_card *card,
enum qeth_ipa_funcs ipa_func,
u16 cmd_code,
unsigned int data_length,
enum qeth_prot_versions prot);
struct qeth_cmd_buffer *qeth_get_diag_cmd(struct qeth_card *card,
enum qeth_diags_cmds sub_cmd,
unsigned int data_length);
void qeth_put_cmd(struct qeth_cmd_buffer *iob);
struct sk_buff *qeth_core_get_next_skb(struct qeth_card *, struct sk_buff *qeth_core_get_next_skb(struct qeth_card *,
struct qeth_qdio_buffer *, struct qdio_buffer_element **, int *, struct qeth_qdio_buffer *, struct qdio_buffer_element **, int *,
struct qeth_hdr **); struct qeth_hdr **);
...@@ -1003,16 +1003,13 @@ int qeth_poll(struct napi_struct *napi, int budget); ...@@ -1003,16 +1003,13 @@ int qeth_poll(struct napi_struct *napi, int budget);
void qeth_clear_ipacmd_list(struct qeth_card *); void qeth_clear_ipacmd_list(struct qeth_card *);
int qeth_qdio_clear_card(struct qeth_card *, int); int qeth_qdio_clear_card(struct qeth_card *, int);
void qeth_clear_working_pool_list(struct qeth_card *); void qeth_clear_working_pool_list(struct qeth_card *);
void qeth_clear_cmd_buffers(struct qeth_channel *);
void qeth_drain_output_queues(struct qeth_card *card); void qeth_drain_output_queues(struct qeth_card *card);
void qeth_setadp_promisc_mode(struct qeth_card *); void qeth_setadp_promisc_mode(struct qeth_card *);
int qeth_setadpparms_change_macaddr(struct qeth_card *); int qeth_setadpparms_change_macaddr(struct qeth_card *);
void qeth_tx_timeout(struct net_device *); void qeth_tx_timeout(struct net_device *);
void qeth_release_buffer(struct qeth_cmd_buffer *iob);
void qeth_notify_reply(struct qeth_reply *reply, int reason); void qeth_notify_reply(struct qeth_reply *reply, int reason);
void qeth_prepare_ipa_cmd(struct qeth_card *card, struct qeth_cmd_buffer *iob, void qeth_prepare_ipa_cmd(struct qeth_card *card, struct qeth_cmd_buffer *iob,
u16 cmd_length); u16 cmd_length);
struct qeth_cmd_buffer *qeth_get_buffer(struct qeth_channel *channel);
int qeth_query_switch_attributes(struct qeth_card *card, int qeth_query_switch_attributes(struct qeth_card *card,
struct qeth_switch_info *sw_info); struct qeth_switch_info *sw_info);
int qeth_query_card_info(struct qeth_card *card, int qeth_query_card_info(struct qeth_card *card,
...@@ -1029,10 +1026,6 @@ int qeth_configure_cq(struct qeth_card *, enum qeth_cq); ...@@ -1029,10 +1026,6 @@ int qeth_configure_cq(struct qeth_card *, enum qeth_cq);
int qeth_hw_trap(struct qeth_card *, enum qeth_diags_trap_action); int qeth_hw_trap(struct qeth_card *, enum qeth_diags_trap_action);
void qeth_trace_features(struct qeth_card *); void qeth_trace_features(struct qeth_card *);
int qeth_setassparms_cb(struct qeth_card *, struct qeth_reply *, unsigned long); int qeth_setassparms_cb(struct qeth_card *, struct qeth_reply *, unsigned long);
struct qeth_cmd_buffer *qeth_get_setassparms_cmd(struct qeth_card *,
enum qeth_ipa_funcs,
__u16, __u16,
enum qeth_prot_versions);
int qeth_set_features(struct net_device *, netdev_features_t); int qeth_set_features(struct net_device *, netdev_features_t);
void qeth_enable_hw_features(struct net_device *dev); void qeth_enable_hw_features(struct net_device *dev);
netdev_features_t qeth_fix_features(struct net_device *, netdev_features_t); netdev_features_t qeth_fix_features(struct net_device *, netdev_features_t);
...@@ -1047,11 +1040,10 @@ int qeth_stop(struct net_device *dev); ...@@ -1047,11 +1040,10 @@ int qeth_stop(struct net_device *dev);
int qeth_vm_request_mac(struct qeth_card *card); int qeth_vm_request_mac(struct qeth_card *card);
int qeth_xmit(struct qeth_card *card, struct sk_buff *skb, int qeth_xmit(struct qeth_card *card, struct sk_buff *skb,
struct qeth_qdio_out_q *queue, int ipv, int cast_type, struct qeth_qdio_out_q *queue, int ipv,
void (*fill_header)(struct qeth_qdio_out_q *queue, void (*fill_header)(struct qeth_qdio_out_q *queue,
struct qeth_hdr *hdr, struct sk_buff *skb, struct qeth_hdr *hdr, struct sk_buff *skb,
int ipv, int cast_type, int ipv, unsigned int data_len));
unsigned int data_len));
/* exports for OSN */ /* exports for OSN */
int qeth_osn_assist(struct net_device *, void *, int); int qeth_osn_assist(struct net_device *, void *, int);
......
This diff is collapsed.
...@@ -379,9 +379,7 @@ struct qeth_ipacmd_layer2setdelvlan { ...@@ -379,9 +379,7 @@ struct qeth_ipacmd_layer2setdelvlan {
__u16 vlan_id; __u16 vlan_id;
} __attribute__ ((packed)); } __attribute__ ((packed));
struct qeth_ipacmd_setassparms_hdr { struct qeth_ipacmd_setassparms_hdr {
__u32 assist_no;
__u16 length; __u16 length;
__u16 command_code; __u16 command_code;
__u16 return_code; __u16 return_code;
...@@ -426,6 +424,7 @@ struct qeth_tso_start_data { ...@@ -426,6 +424,7 @@ struct qeth_tso_start_data {
/* SETASSPARMS IPA Command: */ /* SETASSPARMS IPA Command: */
struct qeth_ipacmd_setassparms { struct qeth_ipacmd_setassparms {
u32 assist_no;
struct qeth_ipacmd_setassparms_hdr hdr; struct qeth_ipacmd_setassparms_hdr hdr;
union { union {
__u32 flags_32bit; __u32 flags_32bit;
...@@ -437,6 +436,8 @@ struct qeth_ipacmd_setassparms { ...@@ -437,6 +436,8 @@ struct qeth_ipacmd_setassparms {
} data; } data;
} __attribute__ ((packed)); } __attribute__ ((packed));
#define SETASS_DATA_SIZEOF(field) FIELD_SIZEOF(struct qeth_ipacmd_setassparms,\
data.field)
/* SETRTG IPA Command: ****************************************************/ /* SETRTG IPA Command: ****************************************************/
struct qeth_set_routing { struct qeth_set_routing {
...@@ -524,8 +525,6 @@ struct qeth_query_switch_attributes { ...@@ -524,8 +525,6 @@ struct qeth_query_switch_attributes {
#define QETH_SETADP_FLAGS_VIRTUAL_MAC 0x80 /* for CHANGE_ADDR_READ_MAC */ #define QETH_SETADP_FLAGS_VIRTUAL_MAC 0x80 /* for CHANGE_ADDR_READ_MAC */
struct qeth_ipacmd_setadpparms_hdr { struct qeth_ipacmd_setadpparms_hdr {
u32 supp_hw_cmds;
u32 reserved1;
u16 cmdlength; u16 cmdlength;
u16 reserved2; u16 reserved2;
u32 command_code; u32 command_code;
...@@ -537,6 +536,7 @@ struct qeth_ipacmd_setadpparms_hdr { ...@@ -537,6 +536,7 @@ struct qeth_ipacmd_setadpparms_hdr {
}; };
struct qeth_ipacmd_setadpparms { struct qeth_ipacmd_setadpparms {
struct qeth_ipa_caps hw_cmds;
struct qeth_ipacmd_setadpparms_hdr hdr; struct qeth_ipacmd_setadpparms_hdr hdr;
union { union {
struct qeth_query_cmds_supp query_cmds_supp; struct qeth_query_cmds_supp query_cmds_supp;
...@@ -550,6 +550,9 @@ struct qeth_ipacmd_setadpparms { ...@@ -550,6 +550,9 @@ struct qeth_ipacmd_setadpparms {
} data; } data;
} __attribute__ ((packed)); } __attribute__ ((packed));
#define SETADP_DATA_SIZEOF(field) FIELD_SIZEOF(struct qeth_ipacmd_setadpparms,\
data.field)
/* CREATE_ADDR IPA Command: ***********************************************/ /* CREATE_ADDR IPA Command: ***********************************************/
struct qeth_create_destroy_address { struct qeth_create_destroy_address {
__u8 unique_id[8]; __u8 unique_id[8];
...@@ -596,6 +599,11 @@ struct qeth_ipacmd_diagass { ...@@ -596,6 +599,11 @@ struct qeth_ipacmd_diagass {
__u8 cdata[64]; __u8 cdata[64];
} __attribute__ ((packed)); } __attribute__ ((packed));
#define DIAG_HDR_LEN offsetofend(struct qeth_ipacmd_diagass, ext)
#define DIAG_SUB_HDR_LEN (offsetofend(struct qeth_ipacmd_diagass, ext) -\
offsetof(struct qeth_ipacmd_diagass, \
subcmd_len))
/* VNIC Characteristics IPA Command: *****************************************/ /* VNIC Characteristics IPA Command: *****************************************/
/* IPA commands/sub commands for VNICC */ /* IPA commands/sub commands for VNICC */
#define IPA_VNICC_QUERY_CHARS 0x00000000L #define IPA_VNICC_QUERY_CHARS 0x00000000L
...@@ -622,12 +630,6 @@ struct qeth_ipacmd_diagass { ...@@ -622,12 +630,6 @@ struct qeth_ipacmd_diagass {
/* VNICC header */ /* VNICC header */
struct qeth_ipacmd_vnicc_hdr { struct qeth_ipacmd_vnicc_hdr {
u32 sup;
u32 cur;
};
/* VNICC sub command header */
struct qeth_vnicc_sub_hdr {
u16 data_length; u16 data_length;
u16 reserved; u16 reserved;
u32 sub_command; u32 sub_command;
...@@ -652,15 +654,18 @@ struct qeth_vnicc_getset_timeout { ...@@ -652,15 +654,18 @@ struct qeth_vnicc_getset_timeout {
/* complete VNICC IPA command message */ /* complete VNICC IPA command message */
struct qeth_ipacmd_vnicc { struct qeth_ipacmd_vnicc {
struct qeth_ipa_caps vnicc_cmds;
struct qeth_ipacmd_vnicc_hdr hdr; struct qeth_ipacmd_vnicc_hdr hdr;
struct qeth_vnicc_sub_hdr sub_hdr;
union { union {
struct qeth_vnicc_query_cmds query_cmds; struct qeth_vnicc_query_cmds query_cmds;
struct qeth_vnicc_set_char set_char; struct qeth_vnicc_set_char set_char;
struct qeth_vnicc_getset_timeout getset_timeout; struct qeth_vnicc_getset_timeout getset_timeout;
}; } data;
}; };
#define VNICC_DATA_SIZEOF(field) FIELD_SIZEOF(struct qeth_ipacmd_vnicc,\
data.field)
/* SETBRIDGEPORT IPA Command: *********************************************/ /* SETBRIDGEPORT IPA Command: *********************************************/
enum qeth_ipa_sbp_cmd { enum qeth_ipa_sbp_cmd {
IPA_SBP_QUERY_COMMANDS_SUPPORTED = 0x00000000L, IPA_SBP_QUERY_COMMANDS_SUPPORTED = 0x00000000L,
...@@ -686,8 +691,6 @@ struct mac_addr_lnid { ...@@ -686,8 +691,6 @@ struct mac_addr_lnid {
} __packed; } __packed;
struct qeth_ipacmd_sbp_hdr { struct qeth_ipacmd_sbp_hdr {
__u32 supported_sbp_cmds;
__u32 enabled_sbp_cmds;
__u16 cmdlength; __u16 cmdlength;
__u16 reserved1; __u16 reserved1;
__u32 command_code; __u32 command_code;
...@@ -702,16 +705,10 @@ struct qeth_sbp_query_cmds_supp { ...@@ -702,16 +705,10 @@ struct qeth_sbp_query_cmds_supp {
__u32 reserved; __u32 reserved;
} __packed; } __packed;
struct qeth_sbp_reset_role {
} __packed;
struct qeth_sbp_set_primary { struct qeth_sbp_set_primary {
struct net_if_token token; struct net_if_token token;
} __packed; } __packed;
struct qeth_sbp_set_secondary {
} __packed;
struct qeth_sbp_port_entry { struct qeth_sbp_port_entry {
__u8 role; __u8 role;
__u8 state; __u8 state;
...@@ -737,17 +734,19 @@ struct qeth_sbp_state_change { ...@@ -737,17 +734,19 @@ struct qeth_sbp_state_change {
} __packed; } __packed;
struct qeth_ipacmd_setbridgeport { struct qeth_ipacmd_setbridgeport {
struct qeth_ipa_caps sbp_cmds;
struct qeth_ipacmd_sbp_hdr hdr; struct qeth_ipacmd_sbp_hdr hdr;
union { union {
struct qeth_sbp_query_cmds_supp query_cmds_supp; struct qeth_sbp_query_cmds_supp query_cmds_supp;
struct qeth_sbp_reset_role reset_role;
struct qeth_sbp_set_primary set_primary; struct qeth_sbp_set_primary set_primary;
struct qeth_sbp_set_secondary set_secondary;
struct qeth_sbp_query_ports query_ports; struct qeth_sbp_query_ports query_ports;
struct qeth_sbp_state_change state_change; struct qeth_sbp_state_change state_change;
} data; } data;
} __packed; } __packed;
#define SBP_DATA_SIZEOF(field) FIELD_SIZEOF(struct qeth_ipacmd_setbridgeport,\
data.field)
/* ADDRESS_CHANGE_NOTIFICATION adapter-initiated "command" *******************/ /* ADDRESS_CHANGE_NOTIFICATION adapter-initiated "command" *******************/
/* Bitmask for entry->change_code. Both bits may be raised. */ /* Bitmask for entry->change_code. Both bits may be raised. */
enum qeth_ipa_addr_change_code { enum qeth_ipa_addr_change_code {
...@@ -806,6 +805,8 @@ struct qeth_ipa_cmd { ...@@ -806,6 +805,8 @@ struct qeth_ipa_cmd {
} data; } data;
} __attribute__ ((packed)); } __attribute__ ((packed));
#define IPA_DATA_SIZEOF(field) FIELD_SIZEOF(struct qeth_ipa_cmd, data.field)
/* /*
* special command for ARP processing. * special command for ARP processing.
* this is not included in setassparms command before, because we get * this is not included in setassparms command before, because we get
...@@ -823,10 +824,6 @@ enum qeth_ipa_arp_return_codes { ...@@ -823,10 +824,6 @@ enum qeth_ipa_arp_return_codes {
extern const char *qeth_get_ipa_msg(enum qeth_ipa_return_codes rc); extern const char *qeth_get_ipa_msg(enum qeth_ipa_return_codes rc);
extern const char *qeth_get_ipa_cmd_name(enum qeth_ipa_cmds cmd); extern const char *qeth_get_ipa_cmd_name(enum qeth_ipa_cmds cmd);
#define QETH_SETADP_BASE_LEN (sizeof(struct qeth_ipacmd_hdr) + \
sizeof(struct qeth_ipacmd_setadpparms_hdr))
#define QETH_SNMP_SETADP_CMDLENGTH 16
/* Helper functions */ /* Helper functions */
#define IS_IPA_REPLY(cmd) ((cmd->hdr.initiator == IPA_CMD_INITIATOR_HOST) || \ #define IS_IPA_REPLY(cmd) ((cmd->hdr.initiator == IPA_CMD_INITIATOR_HOST) || \
(cmd->hdr.initiator == IPA_CMD_INITIATOR_OSA_REPLY)) (cmd->hdr.initiator == IPA_CMD_INITIATOR_OSA_REPLY))
......
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment