@@ -742,7 +742,7 @@ static void qeth_issue_next_read_cb(struct qeth_card *card,
742742 /* fall through */
743743 default :
744744 qeth_clear_ipacmd_list (card );
745- goto out ;
745+ goto err_idx ;
746746 }
747747
748748 cmd = __ipa_reply (iob );
@@ -795,8 +795,9 @@ static void qeth_issue_next_read_cb(struct qeth_card *card,
795795 memcpy (& card -> seqno .pdu_hdr_ack ,
796796 QETH_PDU_HEADER_SEQ_NO (iob -> data ),
797797 QETH_SEQ_NO_LENGTH );
798- qeth_put_cmd (iob );
799798 __qeth_issue_next_read (card );
799+ err_idx :
800+ qeth_put_cmd (iob );
800801}
801802
802803static int qeth_set_thread_start_bit (struct qeth_card * card ,
@@ -1256,7 +1257,6 @@ static void qeth_set_initial_options(struct qeth_card *card)
12561257{
12571258 card -> options .route4 .type = NO_ROUTER ;
12581259 card -> options .route6 .type = NO_ROUTER ;
1259- card -> options .rx_sg_cb = QETH_RX_SG_CB ;
12601260 card -> options .isolation = ISOLATION_MODE_NONE ;
12611261 card -> options .cq = QETH_CQ_DISABLED ;
12621262 card -> options .layer = QETH_DISCIPLINE_UNDETERMINED ;
@@ -1624,17 +1624,16 @@ static void qeth_set_blkt_defaults(struct qeth_card *card)
16241624 }
16251625}
16261626
1627- static void qeth_init_tokens (struct qeth_card * card )
1627+ static void qeth_idx_init (struct qeth_card * card )
16281628{
1629+ memset (& card -> seqno , 0 , sizeof (card -> seqno ));
1630+
16291631 card -> token .issuer_rm_w = 0x00010103UL ;
16301632 card -> token .cm_filter_w = 0x00010108UL ;
16311633 card -> token .cm_connection_w = 0x0001010aUL ;
16321634 card -> token .ulp_filter_w = 0x0001010bUL ;
16331635 card -> token .ulp_connection_w = 0x0001010dUL ;
1634- }
16351636
1636- static void qeth_init_func_level (struct qeth_card * card )
1637- {
16381637 switch (card -> info .type ) {
16391638 case QETH_CARD_TYPE_IQD :
16401639 card -> info .func_level = QETH_IDX_FUNC_LEVEL_IQD ;
@@ -3405,8 +3404,7 @@ static void qeth_qdio_start_poll(struct ccw_device *ccwdev, int queue,
34053404{
34063405 struct qeth_card * card = (struct qeth_card * )card_ptr ;
34073406
3408- if (card -> dev -> flags & IFF_UP )
3409- napi_schedule_irqoff (& card -> napi );
3407+ napi_schedule_irqoff (& card -> napi );
34103408}
34113409
34123410int qeth_configure_cq (struct qeth_card * card , enum qeth_cq cq )
@@ -4952,9 +4950,9 @@ int qeth_core_hardsetup_card(struct qeth_card *card, bool *carrier_ok)
49524950 else
49534951 goto retry ;
49544952 }
4953+
49554954 qeth_determine_capabilities (card );
4956- qeth_init_tokens (card );
4957- qeth_init_func_level (card );
4955+ qeth_idx_init (card );
49584956
49594957 rc = qeth_idx_activate_read_channel (card );
49604958 if (rc == - EINTR ) {
@@ -5269,6 +5267,7 @@ static int qeth_extract_skb(struct qeth_card *card,
52695267 int * __offset )
52705268{
52715269 struct qdio_buffer_element * element = * __element ;
5270+ struct qeth_priv * priv = netdev_priv (card -> dev );
52725271 struct qdio_buffer * buffer = qethbuffer -> buffer ;
52735272 struct napi_struct * napi = & card -> napi ;
52745273 unsigned int linear_len = 0 ;
@@ -5344,7 +5343,7 @@ static int qeth_extract_skb(struct qeth_card *card,
53445343 }
53455344
53465345 use_rx_sg = (card -> options .cq == QETH_CQ_ENABLED ) ||
5347- (skb_len > card -> options . rx_sg_cb &&
5346+ (skb_len > READ_ONCE ( priv -> rx_copybreak ) &&
53485347 !atomic_read (& card -> force_alloc_skb ) &&
53495348 !IS_OSN (card ));
53505349
@@ -5893,25 +5892,30 @@ static void qeth_clear_dbf_list(void)
58935892static struct net_device * qeth_alloc_netdev (struct qeth_card * card )
58945893{
58955894 struct net_device * dev ;
5895+ struct qeth_priv * priv ;
58965896
58975897 switch (card -> info .type ) {
58985898 case QETH_CARD_TYPE_IQD :
5899- dev = alloc_netdev_mqs (0 , "hsi%d" , NET_NAME_UNKNOWN ,
5899+ dev = alloc_netdev_mqs (sizeof ( * priv ) , "hsi%d" , NET_NAME_UNKNOWN ,
59005900 ether_setup , QETH_MAX_QUEUES , 1 );
59015901 break ;
59025902 case QETH_CARD_TYPE_OSM :
5903- dev = alloc_etherdev (0 );
5903+ dev = alloc_etherdev (sizeof ( * priv ) );
59045904 break ;
59055905 case QETH_CARD_TYPE_OSN :
5906- dev = alloc_netdev (0 , "osn%d" , NET_NAME_UNKNOWN , ether_setup );
5906+ dev = alloc_netdev (sizeof (* priv ), "osn%d" , NET_NAME_UNKNOWN ,
5907+ ether_setup );
59075908 break ;
59085909 default :
5909- dev = alloc_etherdev_mqs (0 , QETH_MAX_QUEUES , 1 );
5910+ dev = alloc_etherdev_mqs (sizeof ( * priv ) , QETH_MAX_QUEUES , 1 );
59105911 }
59115912
59125913 if (!dev )
59135914 return NULL ;
59145915
5916+ priv = netdev_priv (dev );
5917+ priv -> rx_copybreak = QETH_RX_COPYBREAK ;
5918+
59155919 dev -> ml_priv = card ;
59165920 dev -> watchdog_timeo = QETH_TX_TIMEOUT ;
59175921 dev -> min_mtu = IS_OSN (card ) ? 64 : 576 ;
0 commit comments