Commit 1ca22126 authored by David S. Miller's avatar David S. Miller

Merge branch 's390-next'

Ursula Braun says:

====================
s390 patches for net-next

here are some cleanup patches for drivers/s390/net.
V2: respin, now patch "s390/qeth: improve endianness handling"
    is supposed to apply cleanly to net-next
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 45e60cb3 6c37c60c
...@@ -1283,7 +1283,7 @@ static void ctcmpc_chx_txdone(fsm_instance *fi, int event, void *arg) ...@@ -1283,7 +1283,7 @@ static void ctcmpc_chx_txdone(fsm_instance *fi, int event, void *arg)
p_header = (struct pdu *) p_header = (struct pdu *)
(skb_tail_pointer(ch->trans_skb) - skb->len); (skb_tail_pointer(ch->trans_skb) - skb->len);
p_header->pdu_flag = 0x00; p_header->pdu_flag = 0x00;
if (skb->protocol == ntohs(ETH_P_SNAP)) if (be16_to_cpu(skb->protocol) == ETH_P_SNAP)
p_header->pdu_flag |= 0x60; p_header->pdu_flag |= 0x60;
else else
p_header->pdu_flag |= 0x20; p_header->pdu_flag |= 0x20;
......
...@@ -106,7 +106,7 @@ void ctcm_unpack_skb(struct channel *ch, struct sk_buff *pskb) ...@@ -106,7 +106,7 @@ void ctcm_unpack_skb(struct channel *ch, struct sk_buff *pskb)
priv->stats.rx_frame_errors++; priv->stats.rx_frame_errors++;
return; return;
} }
pskb->protocol = ntohs(header->type); pskb->protocol = cpu_to_be16(header->type);
if ((header->length <= LL_HEADER_LENGTH) || if ((header->length <= LL_HEADER_LENGTH) ||
(len <= LL_HEADER_LENGTH)) { (len <= LL_HEADER_LENGTH)) {
if (!(ch->logflags & LOG_FLAG_ILLEGALSIZE)) { if (!(ch->logflags & LOG_FLAG_ILLEGALSIZE)) {
...@@ -125,7 +125,7 @@ void ctcm_unpack_skb(struct channel *ch, struct sk_buff *pskb) ...@@ -125,7 +125,7 @@ void ctcm_unpack_skb(struct channel *ch, struct sk_buff *pskb)
header->length -= LL_HEADER_LENGTH; header->length -= LL_HEADER_LENGTH;
len -= LL_HEADER_LENGTH; len -= LL_HEADER_LENGTH;
if ((header->length > skb_tailroom(pskb)) || if ((header->length > skb_tailroom(pskb)) ||
(header->length > len)) { (header->length > len)) {
if (!(ch->logflags & LOG_FLAG_OVERRUN)) { if (!(ch->logflags & LOG_FLAG_OVERRUN)) {
CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR,
"%s(%s): Packet size %d (overrun)" "%s(%s): Packet size %d (overrun)"
...@@ -485,7 +485,7 @@ static int ctcm_transmit_skb(struct channel *ch, struct sk_buff *skb) ...@@ -485,7 +485,7 @@ static int ctcm_transmit_skb(struct channel *ch, struct sk_buff *skb)
} else { } else {
atomic_inc(&skb->users); atomic_inc(&skb->users);
header.length = l; header.length = l;
header.type = skb->protocol; header.type = be16_to_cpu(skb->protocol);
header.unused = 0; header.unused = 0;
memcpy(skb_push(skb, LL_HEADER_LENGTH), &header, memcpy(skb_push(skb, LL_HEADER_LENGTH), &header,
LL_HEADER_LENGTH); LL_HEADER_LENGTH);
...@@ -503,7 +503,7 @@ static int ctcm_transmit_skb(struct channel *ch, struct sk_buff *skb) ...@@ -503,7 +503,7 @@ static int ctcm_transmit_skb(struct channel *ch, struct sk_buff *skb)
atomic_inc(&skb->users); atomic_inc(&skb->users);
ch->prof.txlen += skb->len; ch->prof.txlen += skb->len;
header.length = skb->len + LL_HEADER_LENGTH; header.length = skb->len + LL_HEADER_LENGTH;
header.type = skb->protocol; header.type = be16_to_cpu(skb->protocol);
header.unused = 0; header.unused = 0;
memcpy(skb_push(skb, LL_HEADER_LENGTH), &header, LL_HEADER_LENGTH); memcpy(skb_push(skb, LL_HEADER_LENGTH), &header, LL_HEADER_LENGTH);
block_len = skb->len + 2; block_len = skb->len + 2;
...@@ -690,7 +690,7 @@ static int ctcmpc_transmit_skb(struct channel *ch, struct sk_buff *skb) ...@@ -690,7 +690,7 @@ static int ctcmpc_transmit_skb(struct channel *ch, struct sk_buff *skb)
p_header->pdu_offset = skb->len; p_header->pdu_offset = skb->len;
p_header->pdu_proto = 0x01; p_header->pdu_proto = 0x01;
p_header->pdu_flag = 0x00; p_header->pdu_flag = 0x00;
if (skb->protocol == ntohs(ETH_P_SNAP)) { if (be16_to_cpu(skb->protocol) == ETH_P_SNAP) {
p_header->pdu_flag |= PDU_FIRST | PDU_CNTL; p_header->pdu_flag |= PDU_FIRST | PDU_CNTL;
} else { } else {
p_header->pdu_flag |= PDU_FIRST; p_header->pdu_flag |= PDU_FIRST;
...@@ -745,7 +745,7 @@ static int ctcmpc_transmit_skb(struct channel *ch, struct sk_buff *skb) ...@@ -745,7 +745,7 @@ static int ctcmpc_transmit_skb(struct channel *ch, struct sk_buff *skb)
p_header->pdu_proto = 0x01; p_header->pdu_proto = 0x01;
p_header->pdu_flag = 0x00; p_header->pdu_flag = 0x00;
p_header->pdu_seq = 0; p_header->pdu_seq = 0;
if (skb->protocol == ntohs(ETH_P_SNAP)) { if (be16_to_cpu(skb->protocol) == ETH_P_SNAP) {
p_header->pdu_flag |= PDU_FIRST | PDU_CNTL; p_header->pdu_flag |= PDU_FIRST | PDU_CNTL;
} else { } else {
p_header->pdu_flag |= PDU_FIRST; p_header->pdu_flag |= PDU_FIRST;
......
...@@ -635,7 +635,7 @@ static void netiucv_unpack_skb(struct iucv_connection *conn, ...@@ -635,7 +635,7 @@ static void netiucv_unpack_skb(struct iucv_connection *conn,
skb_put(pskb, NETIUCV_HDRLEN); skb_put(pskb, NETIUCV_HDRLEN);
pskb->dev = dev; pskb->dev = dev;
pskb->ip_summed = CHECKSUM_NONE; pskb->ip_summed = CHECKSUM_NONE;
pskb->protocol = ntohs(ETH_P_IP); pskb->protocol = cpu_to_be16(ETH_P_IP);
while (1) { while (1) {
struct sk_buff *skb; struct sk_buff *skb;
......
...@@ -503,22 +503,12 @@ struct qeth_qdio_info { ...@@ -503,22 +503,12 @@ struct qeth_qdio_info {
int default_out_queue; int default_out_queue;
}; };
enum qeth_send_errors {
QETH_SEND_ERROR_NONE,
QETH_SEND_ERROR_LINK_FAILURE,
QETH_SEND_ERROR_RETRY,
QETH_SEND_ERROR_KICK_IT,
};
#define QETH_ETH_MAC_V4 0x0100 /* like v4 */ #define QETH_ETH_MAC_V4 0x0100 /* like v4 */
#define QETH_ETH_MAC_V6 0x3333 /* like v6 */ #define QETH_ETH_MAC_V6 0x3333 /* like v6 */
/* tr mc mac is longer, but that will be enough to detect mc frames */ /* tr mc mac is longer, but that will be enough to detect mc frames */
#define QETH_TR_MAC_NC 0xc000 /* non-canonical */ #define QETH_TR_MAC_NC 0xc000 /* non-canonical */
#define QETH_TR_MAC_C 0x0300 /* canonical */ #define QETH_TR_MAC_C 0x0300 /* canonical */
#define DEFAULT_ADD_HHLEN 0
#define MAX_ADD_HHLEN 1024
/** /**
* buffer stuff for read channel * buffer stuff for read channel
*/ */
...@@ -644,7 +634,6 @@ struct qeth_reply { ...@@ -644,7 +634,6 @@ struct qeth_reply {
atomic_t refcnt; atomic_t refcnt;
}; };
struct qeth_card_blkt { struct qeth_card_blkt {
int time_total; int time_total;
int inter_packet; int inter_packet;
...@@ -685,7 +674,6 @@ struct qeth_card_options { ...@@ -685,7 +674,6 @@ struct qeth_card_options {
struct qeth_ipa_info ipa6; struct qeth_ipa_info ipa6;
struct qeth_sbp_info sbp; /* SETBRIDGEPORT options */ struct qeth_sbp_info sbp; /* SETBRIDGEPORT options */
int fake_broadcast; int fake_broadcast;
int add_hhlen;
int layer2; int layer2;
int performance_stats; int performance_stats;
int rx_sg_cb; int rx_sg_cb;
...@@ -856,9 +844,9 @@ static inline int qeth_get_ip_version(struct sk_buff *skb) ...@@ -856,9 +844,9 @@ static inline int qeth_get_ip_version(struct sk_buff *skb)
{ {
__be16 *p = &((struct ethhdr *)skb->data)->h_proto; __be16 *p = &((struct ethhdr *)skb->data)->h_proto;
if (*p == ETH_P_8021Q) if (be16_to_cpu(*p) == ETH_P_8021Q)
p += 2; p += 2;
switch (*p) { switch (be16_to_cpu(*p)) {
case ETH_P_IPV6: case ETH_P_IPV6:
return 6; return 6;
case ETH_P_IP: case ETH_P_IP:
......
...@@ -55,7 +55,6 @@ static struct mutex qeth_mod_mutex; ...@@ -55,7 +55,6 @@ static struct mutex qeth_mod_mutex;
static void qeth_send_control_data_cb(struct qeth_channel *, static void qeth_send_control_data_cb(struct qeth_channel *,
struct qeth_cmd_buffer *); struct qeth_cmd_buffer *);
static int qeth_issue_next_read(struct qeth_card *);
static struct qeth_cmd_buffer *qeth_get_buffer(struct qeth_channel *); static struct qeth_cmd_buffer *qeth_get_buffer(struct qeth_channel *);
static void qeth_setup_ccw(struct qeth_channel *, unsigned char *, __u32); static void qeth_setup_ccw(struct qeth_channel *, unsigned char *, __u32);
static void qeth_free_buffer_pool(struct qeth_card *); static void qeth_free_buffer_pool(struct qeth_card *);
...@@ -1202,7 +1201,7 @@ static void qeth_notify_skbs(struct qeth_qdio_out_q *q, ...@@ -1202,7 +1201,7 @@ static void qeth_notify_skbs(struct qeth_qdio_out_q *q,
while (skb) { while (skb) {
QETH_CARD_TEXT_(q->card, 5, "skbn%d", notification); QETH_CARD_TEXT_(q->card, 5, "skbn%d", notification);
QETH_CARD_TEXT_(q->card, 5, "%lx", (long) skb); QETH_CARD_TEXT_(q->card, 5, "%lx", (long) skb);
if (skb->protocol == ETH_P_AF_IUCV) { if (be16_to_cpu(skb->protocol) == ETH_P_AF_IUCV) {
if (skb->sk) { if (skb->sk) {
struct iucv_sock *iucv = iucv_sk(skb->sk); struct iucv_sock *iucv = iucv_sk(skb->sk);
iucv->sk_txnotify(skb, notification); iucv->sk_txnotify(skb, notification);
...@@ -1233,7 +1232,8 @@ static void qeth_release_skbs(struct qeth_qdio_out_buffer *buf) ...@@ -1233,7 +1232,8 @@ static void qeth_release_skbs(struct qeth_qdio_out_buffer *buf)
while (skb) { while (skb) {
QETH_CARD_TEXT(buf->q->card, 5, "skbr"); QETH_CARD_TEXT(buf->q->card, 5, "skbr");
QETH_CARD_TEXT_(buf->q->card, 5, "%lx", (long) skb); QETH_CARD_TEXT_(buf->q->card, 5, "%lx", (long) skb);
if (notify_general_error && skb->protocol == ETH_P_AF_IUCV) { if (notify_general_error &&
be16_to_cpu(skb->protocol) == ETH_P_AF_IUCV) {
if (skb->sk) { if (skb->sk) {
iucv = iucv_sk(skb->sk); iucv = iucv_sk(skb->sk);
iucv->sk_txnotify(skb, TX_NOTIFY_GENERALERROR); iucv->sk_txnotify(skb, TX_NOTIFY_GENERALERROR);
...@@ -1396,7 +1396,6 @@ static void qeth_set_intial_options(struct qeth_card *card) ...@@ -1396,7 +1396,6 @@ static void qeth_set_intial_options(struct qeth_card *card)
card->options.route4.type = NO_ROUTER; card->options.route4.type = NO_ROUTER;
card->options.route6.type = NO_ROUTER; card->options.route6.type = NO_ROUTER;
card->options.fake_broadcast = 0; card->options.fake_broadcast = 0;
card->options.add_hhlen = DEFAULT_ADD_HHLEN;
card->options.performance_stats = 0; card->options.performance_stats = 0;
card->options.rx_sg_cb = QETH_RX_SG_CB; card->options.rx_sg_cb = QETH_RX_SG_CB;
card->options.isolation = ISOLATION_MODE_NONE; card->options.isolation = ISOLATION_MODE_NONE;
...@@ -3322,7 +3321,7 @@ void qeth_queue_input_buffer(struct qeth_card *card, int index) ...@@ -3322,7 +3321,7 @@ void qeth_queue_input_buffer(struct qeth_card *card, int index)
} }
EXPORT_SYMBOL_GPL(qeth_queue_input_buffer); EXPORT_SYMBOL_GPL(qeth_queue_input_buffer);
static int qeth_handle_send_error(struct qeth_card *card, static void qeth_handle_send_error(struct qeth_card *card,
struct qeth_qdio_out_buffer *buffer, unsigned int qdio_err) struct qeth_qdio_out_buffer *buffer, unsigned int qdio_err)
{ {
int sbalf15 = buffer->buffer->element[15].sflags; int sbalf15 = buffer->buffer->element[15].sflags;
...@@ -3338,15 +3337,14 @@ static int qeth_handle_send_error(struct qeth_card *card, ...@@ -3338,15 +3337,14 @@ static int qeth_handle_send_error(struct qeth_card *card,
qeth_check_qdio_errors(card, buffer->buffer, qdio_err, "qouterr"); qeth_check_qdio_errors(card, buffer->buffer, qdio_err, "qouterr");
if (!qdio_err) if (!qdio_err)
return QETH_SEND_ERROR_NONE; return;
if ((sbalf15 >= 15) && (sbalf15 <= 31)) if ((sbalf15 >= 15) && (sbalf15 <= 31))
return QETH_SEND_ERROR_RETRY; return;
QETH_CARD_TEXT(card, 1, "lnkfail"); QETH_CARD_TEXT(card, 1, "lnkfail");
QETH_CARD_TEXT_(card, 1, "%04x %02x", QETH_CARD_TEXT_(card, 1, "%04x %02x",
(u16)qdio_err, (u8)sbalf15); (u16)qdio_err, (u8)sbalf15);
return QETH_SEND_ERROR_LINK_FAILURE;
} }
/* /*
...@@ -3799,9 +3797,9 @@ int qeth_get_priority_queue(struct qeth_card *card, struct sk_buff *skb, ...@@ -3799,9 +3797,9 @@ int qeth_get_priority_queue(struct qeth_card *card, struct sk_buff *skb,
return qeth_cut_iqd_prio(card, ~skb->priority >> 1 & 3); return qeth_cut_iqd_prio(card, ~skb->priority >> 1 & 3);
case QETH_PRIO_Q_ING_VLAN: case QETH_PRIO_Q_ING_VLAN:
tci = &((struct ethhdr *)skb->data)->h_proto; tci = &((struct ethhdr *)skb->data)->h_proto;
if (*tci == ETH_P_8021Q) if (be16_to_cpu(*tci) == ETH_P_8021Q)
return qeth_cut_iqd_prio(card, ~*(tci + 1) >> return qeth_cut_iqd_prio(card,
(VLAN_PRIO_SHIFT + 1) & 3); ~be16_to_cpu(*(tci + 1)) >> (VLAN_PRIO_SHIFT + 1) & 3);
break; break;
default: default:
break; break;
...@@ -4775,12 +4773,10 @@ static int qeth_query_card_info(struct qeth_card *card, ...@@ -4775,12 +4773,10 @@ static int qeth_query_card_info(struct qeth_card *card,
static inline int qeth_get_qdio_q_format(struct qeth_card *card) static inline int qeth_get_qdio_q_format(struct qeth_card *card)
{ {
switch (card->info.type) { if (card->info.type == QETH_CARD_TYPE_IQD)
case QETH_CARD_TYPE_IQD: return QDIO_IQDIO_QFMT;
return 2; else
default: return QDIO_QETH_QFMT;
return 0;
}
} }
static void qeth_determine_capabilities(struct qeth_card *card) static void qeth_determine_capabilities(struct qeth_card *card)
...@@ -4819,8 +4815,9 @@ static void qeth_determine_capabilities(struct qeth_card *card) ...@@ -4819,8 +4815,9 @@ static void qeth_determine_capabilities(struct qeth_card *card)
QETH_DBF_TEXT_(SETUP, 2, "6err%d", rc); QETH_DBF_TEXT_(SETUP, 2, "6err%d", rc);
QETH_DBF_TEXT_(SETUP, 2, "qfmt%d", card->ssqd.qfmt); QETH_DBF_TEXT_(SETUP, 2, "qfmt%d", card->ssqd.qfmt);
QETH_DBF_TEXT_(SETUP, 2, "%d", card->ssqd.qdioac1); QETH_DBF_TEXT_(SETUP, 2, "ac1:%02x", card->ssqd.qdioac1);
QETH_DBF_TEXT_(SETUP, 2, "%d", card->ssqd.qdioac3); QETH_DBF_TEXT_(SETUP, 2, "ac2:%04x", card->ssqd.qdioac2);
QETH_DBF_TEXT_(SETUP, 2, "ac3:%04x", card->ssqd.qdioac3);
QETH_DBF_TEXT_(SETUP, 2, "icnt%d", card->ssqd.icnt); QETH_DBF_TEXT_(SETUP, 2, "icnt%d", card->ssqd.icnt);
if (!((card->ssqd.qfmt != QDIO_IQDIO_QFMT) || if (!((card->ssqd.qfmt != QDIO_IQDIO_QFMT) ||
((card->ssqd.qdioac1 & CHSC_AC1_INITIATE_INPUTQ) == 0) || ((card->ssqd.qdioac1 & CHSC_AC1_INITIATE_INPUTQ) == 0) ||
......
...@@ -29,7 +29,6 @@ extern unsigned char IPA_PDU_HEADER[]; ...@@ -29,7 +29,6 @@ extern unsigned char IPA_PDU_HEADER[];
#define QETH_TIMEOUT (10 * HZ) #define QETH_TIMEOUT (10 * HZ)
#define QETH_IPA_TIMEOUT (45 * HZ) #define QETH_IPA_TIMEOUT (45 * HZ)
#define QETH_IDX_COMMAND_SEQNO 0xffff0000 #define QETH_IDX_COMMAND_SEQNO 0xffff0000
#define SR_INFO_LEN 16
#define QETH_CLEAR_CHANNEL_PARM -10 #define QETH_CLEAR_CHANNEL_PARM -10
#define QETH_HALT_CHANNEL_PARM -11 #define QETH_HALT_CHANNEL_PARM -11
...@@ -65,7 +64,6 @@ enum qeth_link_types { ...@@ -65,7 +64,6 @@ enum qeth_link_types {
QETH_LINK_TYPE_LANE_TR = 0x82, QETH_LINK_TYPE_LANE_TR = 0x82,
QETH_LINK_TYPE_LANE_ETH1000 = 0x83, QETH_LINK_TYPE_LANE_ETH1000 = 0x83,
QETH_LINK_TYPE_LANE = 0x88, QETH_LINK_TYPE_LANE = 0x88,
QETH_LINK_TYPE_ATM_NATIVE = 0x90,
}; };
/* /*
...@@ -185,8 +183,6 @@ enum qeth_ipa_return_codes { ...@@ -185,8 +183,6 @@ enum qeth_ipa_return_codes {
IPA_RC_ENOMEM = 0xfffe, IPA_RC_ENOMEM = 0xfffe,
IPA_RC_FFFF = 0xffff IPA_RC_FFFF = 0xffff
}; };
/* for DELIP */
#define IPA_RC_IP_ADDRESS_NOT_DEFINED IPA_RC_PRIMARY_ALREADY_DEFINED
/* for SET_DIAGNOSTIC_ASSIST */ /* for SET_DIAGNOSTIC_ASSIST */
#define IPA_RC_INVALID_SUBCMD IPA_RC_IP_TABLE_FULL #define IPA_RC_INVALID_SUBCMD IPA_RC_IP_TABLE_FULL
#define IPA_RC_HARDWARE_AUTH_ERROR IPA_RC_UNKNOWN_ERROR #define IPA_RC_HARDWARE_AUTH_ERROR IPA_RC_UNKNOWN_ERROR
...@@ -631,14 +627,6 @@ enum qeth_ipa_addr_change_code { ...@@ -631,14 +627,6 @@ enum qeth_ipa_addr_change_code {
IPA_ADDR_CHANGE_CODE_MACADDR = 0x02, IPA_ADDR_CHANGE_CODE_MACADDR = 0x02,
IPA_ADDR_CHANGE_CODE_REMOVAL = 0x80, /* else addition */ IPA_ADDR_CHANGE_CODE_REMOVAL = 0x80, /* else addition */
}; };
enum qeth_ipa_addr_change_retcode {
IPA_ADDR_CHANGE_RETCODE_OK = 0x0000,
IPA_ADDR_CHANGE_RETCODE_LOSTEVENTS = 0x0010,
};
enum qeth_ipa_addr_change_lostmask {
IPA_ADDR_CHANGE_MASK_OVERFLOW = 0x01,
IPA_ADDR_CHANGE_MASK_STATECHANGE = 0x02,
};
struct qeth_ipacmd_addr_change_entry { struct qeth_ipacmd_addr_change_entry {
struct net_if_token token; struct net_if_token token;
...@@ -817,9 +805,4 @@ extern unsigned char IDX_ACTIVATE_WRITE[]; ...@@ -817,9 +805,4 @@ extern unsigned char IDX_ACTIVATE_WRITE[];
((buffer) && \ ((buffer) && \
(*(buffer + ((*(buffer + 0x0b)) + 4)) == 0xc1)) (*(buffer + ((*(buffer + 0x0b)) + 4)) == 0xc1))
#define ADDR_FRAME_TYPE_DIX 1
#define ADDR_FRAME_TYPE_802_3 2
#define ADDR_FRAME_TYPE_TR_WITHOUT_SR 0x10
#define ADDR_FRAME_TYPE_TR_WITH_SR 0x20
#endif #endif
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
static int qeth_l2_set_offline(struct ccwgroup_device *); static int qeth_l2_set_offline(struct ccwgroup_device *);
static int qeth_l2_stop(struct net_device *); static int qeth_l2_stop(struct net_device *);
static void qeth_l2_set_rx_mode(struct net_device *); static void qeth_l2_set_rx_mode(struct net_device *);
static int qeth_l2_recover(void *);
static void qeth_bridgeport_query_support(struct qeth_card *card); static void qeth_bridgeport_query_support(struct qeth_card *card);
static void qeth_bridge_state_change(struct qeth_card *card, static void qeth_bridge_state_change(struct qeth_card *card,
struct qeth_ipa_cmd *cmd); struct qeth_ipa_cmd *cmd);
......
...@@ -8,9 +8,6 @@ ...@@ -8,9 +8,6 @@
#include "qeth_core.h" #include "qeth_core.h"
#include "qeth_l2.h" #include "qeth_l2.h"
#define QETH_DEVICE_ATTR(_id, _name, _mode, _show, _store) \
struct device_attribute dev_attr_##_id = __ATTR(_name, _mode, _show, _store)
static ssize_t qeth_bridge_port_role_state_show(struct device *dev, static ssize_t qeth_bridge_port_role_state_show(struct device *dev,
struct device_attribute *attr, char *buf, struct device_attribute *attr, char *buf,
int show_state) int show_state)
......
...@@ -36,16 +36,12 @@ ...@@ -36,16 +36,12 @@
static int qeth_l3_set_offline(struct ccwgroup_device *); static int qeth_l3_set_offline(struct ccwgroup_device *);
static int qeth_l3_recover(void *);
static int qeth_l3_stop(struct net_device *); static int qeth_l3_stop(struct net_device *);
static void qeth_l3_set_multicast_list(struct net_device *); static void qeth_l3_set_multicast_list(struct net_device *);
static int qeth_l3_neigh_setup(struct net_device *, struct neigh_parms *);
static int qeth_l3_register_addr_entry(struct qeth_card *, static int qeth_l3_register_addr_entry(struct qeth_card *,
struct qeth_ipaddr *); struct qeth_ipaddr *);
static int qeth_l3_deregister_addr_entry(struct qeth_card *, static int qeth_l3_deregister_addr_entry(struct qeth_card *,
struct qeth_ipaddr *); struct qeth_ipaddr *);
static int __qeth_l3_set_online(struct ccwgroup_device *, int);
static int __qeth_l3_set_offline(struct ccwgroup_device *, int);
static int qeth_l3_isxdigit(char *buf) static int qeth_l3_isxdigit(char *buf)
{ {
...@@ -1341,7 +1337,7 @@ qeth_diags_trace(struct qeth_card *card, enum qeth_diags_trace_cmds diags_cmd) ...@@ -1341,7 +1337,7 @@ qeth_diags_trace(struct qeth_card *card, enum qeth_diags_trace_cmds diags_cmd)
return qeth_send_ipa_cmd(card, iob, qeth_diags_trace_cb, NULL); return qeth_send_ipa_cmd(card, iob, qeth_diags_trace_cb, NULL);
} }
static void qeth_l3_get_mac_for_ipm(__u32 ipm, char *mac) static void qeth_l3_get_mac_for_ipm(__be32 ipm, char *mac)
{ {
ip_eth_mc_map(ipm, mac); ip_eth_mc_map(ipm, mac);
} }
...@@ -1414,7 +1410,7 @@ qeth_l3_add_mc_to_hash(struct qeth_card *card, struct in_device *in4_dev) ...@@ -1414,7 +1410,7 @@ qeth_l3_add_mc_to_hash(struct qeth_card *card, struct in_device *in4_dev)
im4 = rcu_dereference(im4->next_rcu)) { im4 = rcu_dereference(im4->next_rcu)) {
qeth_l3_get_mac_for_ipm(im4->multiaddr, buf); qeth_l3_get_mac_for_ipm(im4->multiaddr, buf);
tmp->u.a4.addr = im4->multiaddr; tmp->u.a4.addr = be32_to_cpu(im4->multiaddr);
memcpy(tmp->mac, buf, sizeof(tmp->mac)); memcpy(tmp->mac, buf, sizeof(tmp->mac));
ipm = qeth_l3_ip_from_hash(card, tmp); ipm = qeth_l3_ip_from_hash(card, tmp);
...@@ -1425,7 +1421,7 @@ qeth_l3_add_mc_to_hash(struct qeth_card *card, struct in_device *in4_dev) ...@@ -1425,7 +1421,7 @@ qeth_l3_add_mc_to_hash(struct qeth_card *card, struct in_device *in4_dev)
if (!ipm) if (!ipm)
continue; continue;
memcpy(ipm->mac, buf, sizeof(tmp->mac)); memcpy(ipm->mac, buf, sizeof(tmp->mac));
ipm->u.a4.addr = im4->multiaddr; ipm->u.a4.addr = be32_to_cpu(im4->multiaddr);
ipm->is_multicast = 1; ipm->is_multicast = 1;
ipm->disp_flag = QETH_DISP_ADDR_ADD; ipm->disp_flag = QETH_DISP_ADDR_ADD;
hash_add(card->ip_mc_htable, hash_add(card->ip_mc_htable,
...@@ -1598,8 +1594,8 @@ static void qeth_l3_free_vlan_addresses4(struct qeth_card *card, ...@@ -1598,8 +1594,8 @@ static void qeth_l3_free_vlan_addresses4(struct qeth_card *card,
spin_lock_bh(&card->ip_lock); spin_lock_bh(&card->ip_lock);
for (ifa = in_dev->ifa_list; ifa; ifa = ifa->ifa_next) { for (ifa = in_dev->ifa_list; ifa; ifa = ifa->ifa_next) {
addr->u.a4.addr = ifa->ifa_address; addr->u.a4.addr = be32_to_cpu(ifa->ifa_address);
addr->u.a4.mask = ifa->ifa_mask; addr->u.a4.mask = be32_to_cpu(ifa->ifa_mask);
addr->type = QETH_IP_TYPE_NORMAL; addr->type = QETH_IP_TYPE_NORMAL;
qeth_l3_delete_ip(card, addr); qeth_l3_delete_ip(card, addr);
} }
...@@ -1690,25 +1686,25 @@ static inline int qeth_l3_rebuild_skb(struct qeth_card *card, ...@@ -1690,25 +1686,25 @@ static inline int qeth_l3_rebuild_skb(struct qeth_card *card,
struct sk_buff *skb, struct qeth_hdr *hdr, struct sk_buff *skb, struct qeth_hdr *hdr,
unsigned short *vlan_id) unsigned short *vlan_id)
{ {
__be16 prot; __u16 prot;
struct iphdr *ip_hdr; struct iphdr *ip_hdr;
unsigned char tg_addr[MAX_ADDR_LEN]; unsigned char tg_addr[MAX_ADDR_LEN];
int is_vlan = 0; int is_vlan = 0;
if (!(hdr->hdr.l3.flags & QETH_HDR_PASSTHRU)) { if (!(hdr->hdr.l3.flags & QETH_HDR_PASSTHRU)) {
prot = htons((hdr->hdr.l3.flags & QETH_HDR_IPV6)? ETH_P_IPV6 : prot = (hdr->hdr.l3.flags & QETH_HDR_IPV6) ? ETH_P_IPV6 :
ETH_P_IP); ETH_P_IP;
switch (hdr->hdr.l3.flags & QETH_HDR_CAST_MASK) { switch (hdr->hdr.l3.flags & QETH_HDR_CAST_MASK) {
case QETH_CAST_MULTICAST: case QETH_CAST_MULTICAST:
switch (prot) { switch (prot) {
#ifdef CONFIG_QETH_IPV6 #ifdef CONFIG_QETH_IPV6
case __constant_htons(ETH_P_IPV6): case ETH_P_IPV6:
ndisc_mc_map((struct in6_addr *) ndisc_mc_map((struct in6_addr *)
skb->data + 24, skb->data + 24,
tg_addr, card->dev, 0); tg_addr, card->dev, 0);
break; break;
#endif #endif
case __constant_htons(ETH_P_IP): case ETH_P_IP:
ip_hdr = (struct iphdr *)skb->data; ip_hdr = (struct iphdr *)skb->data;
ip_eth_mc_map(ip_hdr->daddr, tg_addr); ip_eth_mc_map(ip_hdr->daddr, tg_addr);
break; break;
...@@ -1795,7 +1791,7 @@ static int qeth_l3_process_inbound_buffer(struct qeth_card *card, ...@@ -1795,7 +1791,7 @@ static int qeth_l3_process_inbound_buffer(struct qeth_card *card,
magic = *(__u16 *)skb->data; magic = *(__u16 *)skb->data;
if ((card->info.type == QETH_CARD_TYPE_IQD) && if ((card->info.type == QETH_CARD_TYPE_IQD) &&
(magic == ETH_P_AF_IUCV)) { (magic == ETH_P_AF_IUCV)) {
skb->protocol = ETH_P_AF_IUCV; skb->protocol = cpu_to_be16(ETH_P_AF_IUCV);
skb->pkt_type = PACKET_HOST; skb->pkt_type = PACKET_HOST;
skb->mac_header = NET_SKB_PAD; skb->mac_header = NET_SKB_PAD;
skb->dev = card->dev; skb->dev = card->dev;
...@@ -2572,10 +2568,10 @@ int inline qeth_l3_get_cast_type(struct qeth_card *card, struct sk_buff *skb) ...@@ -2572,10 +2568,10 @@ int inline qeth_l3_get_cast_type(struct qeth_card *card, struct sk_buff *skb)
rcu_read_unlock(); rcu_read_unlock();
/* try something else */ /* try something else */
if (skb->protocol == ETH_P_IPV6) if (be16_to_cpu(skb->protocol) == ETH_P_IPV6)
return (skb_network_header(skb)[24] == 0xff) ? return (skb_network_header(skb)[24] == 0xff) ?
RTN_MULTICAST : 0; RTN_MULTICAST : 0;
else if (skb->protocol == ETH_P_IP) else if (be16_to_cpu(skb->protocol) == ETH_P_IP)
return ((skb_network_header(skb)[16] & 0xf0) == 0xe0) ? return ((skb_network_header(skb)[16] & 0xf0) == 0xe0) ?
RTN_MULTICAST : 0; RTN_MULTICAST : 0;
/* ... */ /* ... */
...@@ -2726,7 +2722,7 @@ static void qeth_tso_fill_header(struct qeth_card *card, ...@@ -2726,7 +2722,7 @@ static void qeth_tso_fill_header(struct qeth_card *card,
hdr->ext.payload_len = (__u16)(skb->len - hdr->ext.dg_hdr_len - hdr->ext.payload_len = (__u16)(skb->len - hdr->ext.dg_hdr_len -
sizeof(struct qeth_hdr_tso)); sizeof(struct qeth_hdr_tso));
tcph->check = 0; tcph->check = 0;
if (skb->protocol == ETH_P_IPV6) { if (be16_to_cpu(skb->protocol) == ETH_P_IPV6) {
ip6h->payload_len = 0; ip6h->payload_len = 0;
tcph->check = ~csum_ipv6_magic(&ip6h->saddr, &ip6h->daddr, tcph->check = ~csum_ipv6_magic(&ip6h->saddr, &ip6h->daddr,
0, IPPROTO_TCP, 0); 0, IPPROTO_TCP, 0);
...@@ -2773,7 +2769,7 @@ static int qeth_l3_get_elements_no_tso(struct qeth_card *card, ...@@ -2773,7 +2769,7 @@ static int qeth_l3_get_elements_no_tso(struct qeth_card *card,
static int qeth_l3_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) static int qeth_l3_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
{ {
int rc; int rc;
u16 *tag; __be16 *tag;
struct qeth_hdr *hdr = NULL; struct qeth_hdr *hdr = NULL;
int hdr_elements = 0; int hdr_elements = 0;
int elements; int elements;
...@@ -2794,7 +2790,7 @@ static int qeth_l3_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -2794,7 +2790,7 @@ static int qeth_l3_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
if (((card->info.type == QETH_CARD_TYPE_IQD) && if (((card->info.type == QETH_CARD_TYPE_IQD) &&
(((card->options.cq != QETH_CQ_ENABLED) && !ipv) || (((card->options.cq != QETH_CQ_ENABLED) && !ipv) ||
((card->options.cq == QETH_CQ_ENABLED) && ((card->options.cq == QETH_CQ_ENABLED) &&
(skb->protocol != ETH_P_AF_IUCV)))) || (be16_to_cpu(skb->protocol) != ETH_P_AF_IUCV)))) ||
card->options.sniffer) card->options.sniffer)
goto tx_drop; goto tx_drop;
...@@ -2847,9 +2843,9 @@ static int qeth_l3_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -2847,9 +2843,9 @@ static int qeth_l3_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
new_skb->data + 8, 4); new_skb->data + 8, 4);
skb_copy_to_linear_data_offset(new_skb, 8, skb_copy_to_linear_data_offset(new_skb, 8,
new_skb->data + 12, 4); new_skb->data + 12, 4);
tag = (u16 *)(new_skb->data + 12); tag = (__be16 *)(new_skb->data + 12);
*tag = __constant_htons(ETH_P_8021Q); *tag = cpu_to_be16(ETH_P_8021Q);
*(tag + 1) = htons(skb_vlan_tag_get(new_skb)); *(tag + 1) = cpu_to_be16(skb_vlan_tag_get(new_skb));
} }
} }
...@@ -2887,7 +2883,7 @@ static int qeth_l3_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -2887,7 +2883,7 @@ static int qeth_l3_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
qeth_l3_fill_header(card, hdr, new_skb, ipv, qeth_l3_fill_header(card, hdr, new_skb, ipv,
cast_type); cast_type);
} else { } else {
if (new_skb->protocol == ETH_P_AF_IUCV) if (be16_to_cpu(new_skb->protocol) == ETH_P_AF_IUCV)
qeth_l3_fill_af_iucv_hdr(card, hdr, new_skb); qeth_l3_fill_af_iucv_hdr(card, hdr, new_skb);
else { else {
qeth_l3_fill_header(card, hdr, new_skb, ipv, qeth_l3_fill_header(card, hdr, new_skb, ipv,
...@@ -3466,8 +3462,8 @@ static int qeth_l3_ip_event(struct notifier_block *this, ...@@ -3466,8 +3462,8 @@ static int qeth_l3_ip_event(struct notifier_block *this,
addr = qeth_l3_get_addr_buffer(QETH_PROT_IPV4); addr = qeth_l3_get_addr_buffer(QETH_PROT_IPV4);
if (addr) { if (addr) {
addr->u.a4.addr = ifa->ifa_address; addr->u.a4.addr = be32_to_cpu(ifa->ifa_address);
addr->u.a4.mask = ifa->ifa_mask; addr->u.a4.mask = be32_to_cpu(ifa->ifa_mask);
addr->type = QETH_IP_TYPE_NORMAL; addr->type = QETH_IP_TYPE_NORMAL;
} else } else
return NOTIFY_DONE; return NOTIFY_DONE;
......
...@@ -286,7 +286,7 @@ static ssize_t qeth_l3_dev_hsuid_store(struct device *dev, ...@@ -286,7 +286,7 @@ static ssize_t qeth_l3_dev_hsuid_store(struct device *dev,
if (!addr) if (!addr)
return -ENOMEM; return -ENOMEM;
addr->u.a6.addr.s6_addr32[0] = 0xfe800000; addr->u.a6.addr.s6_addr32[0] = cpu_to_be32(0xfe800000);
addr->u.a6.addr.s6_addr32[1] = 0x00000000; addr->u.a6.addr.s6_addr32[1] = 0x00000000;
for (i = 8; i < 16; i++) for (i = 8; i < 16; i++)
addr->u.a6.addr.s6_addr[i] = addr->u.a6.addr.s6_addr[i] =
...@@ -320,7 +320,7 @@ static ssize_t qeth_l3_dev_hsuid_store(struct device *dev, ...@@ -320,7 +320,7 @@ static ssize_t qeth_l3_dev_hsuid_store(struct device *dev,
addr = qeth_l3_get_addr_buffer(QETH_PROT_IPV6); addr = qeth_l3_get_addr_buffer(QETH_PROT_IPV6);
if (addr != NULL) { if (addr != NULL) {
addr->u.a6.addr.s6_addr32[0] = 0xfe800000; addr->u.a6.addr.s6_addr32[0] = cpu_to_be32(0xfe800000);
addr->u.a6.addr.s6_addr32[1] = 0x00000000; addr->u.a6.addr.s6_addr32[1] = 0x00000000;
for (i = 8; i < 16; i++) for (i = 8; i < 16; i++)
addr->u.a6.addr.s6_addr[i] = card->options.hsuid[i - 8]; addr->u.a6.addr.s6_addr[i] = card->options.hsuid[i - 8];
......
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