@@ -473,7 +473,6 @@ static void qeth_cleanup_handled_pending(struct qeth_qdio_out_q *q, int bidx,
473473 if (forced_cleanup && (atomic_read (& (q -> bufs [bidx ]-> state )) ==
474474 QETH_QDIO_BUF_HANDLED_DELAYED )) {
475475 /* for recovery situations */
476- q -> bufs [bidx ]-> aob = q -> bufstates [bidx ].aob ;
477476 qeth_init_qdio_out_buf (q , bidx );
478477 QETH_CARD_TEXT (q -> card , 2 , "clprecov" );
479478 }
@@ -510,7 +509,6 @@ static void qeth_qdio_handle_aob(struct qeth_card *card,
510509 }
511510 qeth_notify_skbs (buffer -> q , buffer , notification );
512511
513- buffer -> aob = NULL ;
514512 /* Free dangling allocations. The attached skbs are handled by
515513 * qeth_cleanup_handled_pending().
516514 */
@@ -1267,32 +1265,27 @@ static void qeth_release_skbs(struct qeth_qdio_out_buffer *buf)
12671265}
12681266
12691267static void qeth_clear_output_buffer (struct qeth_qdio_out_q * queue ,
1270- struct qeth_qdio_out_buffer * buf ,
1271- enum qeth_qdio_buffer_states newbufstate )
1268+ struct qeth_qdio_out_buffer * buf )
12721269{
12731270 int i ;
12741271
12751272 /* is PCI flag set on buffer? */
12761273 if (buf -> buffer -> element [0 ].sflags & SBAL_SFLAGS0_PCI_REQ )
12771274 atomic_dec (& queue -> set_pci_flags_count );
12781275
1279- if (newbufstate == QETH_QDIO_BUF_EMPTY ) {
1280- qeth_release_skbs (buf );
1281- }
1276+ qeth_release_skbs (buf );
1277+
12821278 for (i = 0 ; i < QETH_MAX_BUFFER_ELEMENTS (queue -> card ); ++ i ) {
12831279 if (buf -> buffer -> element [i ].addr && buf -> is_header [i ])
12841280 kmem_cache_free (qeth_core_header_cache ,
12851281 buf -> buffer -> element [i ].addr );
12861282 buf -> is_header [i ] = 0 ;
1287- buf -> buffer -> element [i ].length = 0 ;
1288- buf -> buffer -> element [i ].addr = NULL ;
1289- buf -> buffer -> element [i ].eflags = 0 ;
1290- buf -> buffer -> element [i ].sflags = 0 ;
12911283 }
1292- buf -> buffer -> element [15 ].eflags = 0 ;
1293- buf -> buffer -> element [15 ].sflags = 0 ;
1284+
1285+ qeth_scrub_qdio_buffer (buf -> buffer ,
1286+ QETH_MAX_BUFFER_ELEMENTS (queue -> card ));
12941287 buf -> next_element_to_fill = 0 ;
1295- atomic_set (& buf -> state , newbufstate );
1288+ atomic_set (& buf -> state , QETH_QDIO_BUF_EMPTY );
12961289}
12971290
12981291static void qeth_clear_outq_buffers (struct qeth_qdio_out_q * q , int free )
@@ -1303,7 +1296,7 @@ static void qeth_clear_outq_buffers(struct qeth_qdio_out_q *q, int free)
13031296 if (!q -> bufs [j ])
13041297 continue ;
13051298 qeth_cleanup_handled_pending (q , j , 1 );
1306- qeth_clear_output_buffer (q , q -> bufs [j ], QETH_QDIO_BUF_EMPTY );
1299+ qeth_clear_output_buffer (q , q -> bufs [j ]);
13071300 if (free ) {
13081301 kmem_cache_free (qeth_qdio_outbuf_cache , q -> bufs [j ]);
13091302 q -> bufs [j ] = NULL ;
@@ -1544,8 +1537,6 @@ static void qeth_determine_card_type(struct qeth_card *card)
15441537 card -> qdio .default_out_queue = QETH_DEFAULT_QUEUE ;
15451538 card -> info .type = CARD_RDEV (card )-> id .driver_info ;
15461539 card -> qdio .no_out_queues = QETH_MAX_QUEUES ;
1547- if (card -> info .type == QETH_CARD_TYPE_IQD )
1548- card -> info .is_multicast_different = 0x0103 ;
15491540 qeth_update_from_chp_desc (card );
15501541}
15511542
@@ -2473,32 +2464,20 @@ static int qeth_ulp_setup(struct qeth_card *card)
24732464
24742465static int qeth_init_qdio_out_buf (struct qeth_qdio_out_q * q , int bidx )
24752466{
2476- int rc ;
24772467 struct qeth_qdio_out_buffer * newbuf ;
24782468
2479- rc = 0 ;
24802469 newbuf = kmem_cache_zalloc (qeth_qdio_outbuf_cache , GFP_ATOMIC );
2481- if (!newbuf ) {
2482- rc = - ENOMEM ;
2483- goto out ;
2484- }
2470+ if (!newbuf )
2471+ return - ENOMEM ;
2472+
24852473 newbuf -> buffer = q -> qdio_bufs [bidx ];
24862474 skb_queue_head_init (& newbuf -> skb_list );
24872475 lockdep_set_class (& newbuf -> skb_list .lock , & qdio_out_skb_queue_key );
24882476 newbuf -> q = q ;
2489- newbuf -> aob = NULL ;
24902477 newbuf -> next_pending = q -> bufs [bidx ];
24912478 atomic_set (& newbuf -> state , QETH_QDIO_BUF_EMPTY );
24922479 q -> bufs [bidx ] = newbuf ;
2493- if (q -> bufstates ) {
2494- q -> bufstates [bidx ].user = newbuf ;
2495- QETH_CARD_TEXT_ (q -> card , 2 , "nbs%d" , bidx );
2496- QETH_CARD_TEXT_ (q -> card , 2 , "%lx" , (long ) newbuf );
2497- QETH_CARD_TEXT_ (q -> card , 2 , "%lx" ,
2498- (long ) newbuf -> next_pending );
2499- }
2500- out :
2501- return rc ;
2480+ return 0 ;
25022481}
25032482
25042483static void qeth_free_qdio_out_buf (struct qeth_qdio_out_q * q )
@@ -2908,8 +2887,7 @@ int qeth_init_qdio_queues(struct qeth_card *card)
29082887 QDIO_MAX_BUFFERS_PER_Q );
29092888 for (j = 0 ; j < QDIO_MAX_BUFFERS_PER_Q ; ++ j ) {
29102889 qeth_clear_output_buffer (card -> qdio .out_qs [i ],
2911- card -> qdio .out_qs [i ]-> bufs [j ],
2912- QETH_QDIO_BUF_EMPTY );
2890+ card -> qdio .out_qs [i ]-> bufs [j ]);
29132891 }
29142892 card -> qdio .out_qs [i ]-> card = card ;
29152893 card -> qdio .out_qs [i ]-> next_buf_to_fill = 0 ;
@@ -3076,7 +3054,7 @@ static struct qeth_cmd_buffer *qeth_get_adapter_cmd(struct qeth_card *card,
30763054 return iob ;
30773055}
30783056
3079- int qeth_query_setadapterparms (struct qeth_card * card )
3057+ static int qeth_query_setadapterparms (struct qeth_card * card )
30803058{
30813059 int rc ;
30823060 struct qeth_cmd_buffer * iob ;
@@ -3089,7 +3067,6 @@ int qeth_query_setadapterparms(struct qeth_card *card)
30893067 rc = qeth_send_ipa_cmd (card , iob , qeth_query_setadapterparms_cb , NULL );
30903068 return rc ;
30913069}
3092- EXPORT_SYMBOL_GPL (qeth_query_setadapterparms );
30933070
30943071static int qeth_query_ipassists_cb (struct qeth_card * card ,
30953072 struct qeth_reply * reply , unsigned long data )
@@ -3129,7 +3106,8 @@ static int qeth_query_ipassists_cb(struct qeth_card *card,
31293106 return 0 ;
31303107}
31313108
3132- int qeth_query_ipassists (struct qeth_card * card , enum qeth_prot_versions prot )
3109+ static int qeth_query_ipassists (struct qeth_card * card ,
3110+ enum qeth_prot_versions prot )
31333111{
31343112 int rc ;
31353113 struct qeth_cmd_buffer * iob ;
@@ -3141,7 +3119,6 @@ int qeth_query_ipassists(struct qeth_card *card, enum qeth_prot_versions prot)
31413119 rc = qeth_send_ipa_cmd (card , iob , qeth_query_ipassists_cb , NULL );
31423120 return rc ;
31433121}
3144- EXPORT_SYMBOL_GPL (qeth_query_ipassists );
31453122
31463123static int qeth_query_switch_attributes_cb (struct qeth_card * card ,
31473124 struct qeth_reply * reply , unsigned long data )
@@ -3180,7 +3157,6 @@ int qeth_query_switch_attributes(struct qeth_card *card,
31803157 return qeth_send_ipa_cmd (card , iob ,
31813158 qeth_query_switch_attributes_cb , sw_info );
31823159}
3183- EXPORT_SYMBOL_GPL (qeth_query_switch_attributes );
31843160
31853161static int qeth_query_setdiagass_cb (struct qeth_card * card ,
31863162 struct qeth_reply * reply , unsigned long data )
@@ -3634,10 +3610,10 @@ int qeth_configure_cq(struct qeth_card *card, enum qeth_cq cq)
36343610}
36353611EXPORT_SYMBOL_GPL (qeth_configure_cq );
36363612
3637-
3638- static void qeth_qdio_cq_handler ( struct qeth_card * card ,
3639- unsigned int qdio_err ,
3640- unsigned int queue , int first_element , int count ) {
3613+ static void qeth_qdio_cq_handler ( struct qeth_card * card , unsigned int qdio_err ,
3614+ unsigned int queue , int first_element ,
3615+ int count )
3616+ {
36413617 struct qeth_qdio_q * cq = card -> qdio .c_q ;
36423618 int i ;
36433619 int rc ;
@@ -3663,25 +3639,17 @@ static void qeth_qdio_cq_handler(struct qeth_card *card,
36633639 for (i = first_element ; i < first_element + count ; ++ i ) {
36643640 int bidx = i % QDIO_MAX_BUFFERS_PER_Q ;
36653641 struct qdio_buffer * buffer = cq -> qdio_bufs [bidx ];
3666- int e ;
3642+ int e = 0 ;
36673643
3668- e = 0 ;
36693644 while ((e < QDIO_MAX_ELEMENTS_PER_BUFFER ) &&
36703645 buffer -> element [e ].addr ) {
36713646 unsigned long phys_aob_addr ;
36723647
36733648 phys_aob_addr = (unsigned long ) buffer -> element [e ].addr ;
36743649 qeth_qdio_handle_aob (card , phys_aob_addr );
3675- buffer -> element [e ].addr = NULL ;
3676- buffer -> element [e ].eflags = 0 ;
3677- buffer -> element [e ].sflags = 0 ;
3678- buffer -> element [e ].length = 0 ;
3679-
36803650 ++ e ;
36813651 }
3682-
3683- buffer -> element [15 ].eflags = 0 ;
3684- buffer -> element [15 ].sflags = 0 ;
3652+ qeth_scrub_qdio_buffer (buffer , QDIO_MAX_ELEMENTS_PER_BUFFER );
36853653 }
36863654 rc = do_QDIO (CARD_DDEV (card ), QDIO_FLAG_SYNC_INPUT , queue ,
36873655 card -> qdio .c_q -> next_buf_to_init ,
@@ -3760,11 +3728,7 @@ static void qeth_qdio_output_handler(struct ccw_device *ccwdev,
37603728 qeth_notify_skbs (queue , buffer ,
37613729 TX_NOTIFY_PENDING );
37623730 }
3763- buffer -> aob = queue -> bufstates [bidx ].aob ;
37643731 QETH_CARD_TEXT_ (queue -> card , 5 , "pel%d" , bidx );
3765- QETH_CARD_TEXT (queue -> card , 5 , "aob" );
3766- QETH_CARD_TEXT_ (queue -> card , 5 , "%lx" ,
3767- virt_to_phys (buffer -> aob ));
37683732
37693733 /* prepare the queue slot for re-use: */
37703734 qeth_scrub_qdio_buffer (buffer -> buffer ,
@@ -3782,8 +3746,7 @@ static void qeth_qdio_output_handler(struct ccw_device *ccwdev,
37823746 qeth_notify_skbs (queue , buffer , n );
37833747 }
37843748
3785- qeth_clear_output_buffer (queue , buffer ,
3786- QETH_QDIO_BUF_EMPTY );
3749+ qeth_clear_output_buffer (queue , buffer );
37873750 }
37883751 qeth_cleanup_handled_pending (queue , bidx , 0 );
37893752 }
@@ -3810,15 +3773,11 @@ static inline int qeth_cut_iqd_prio(struct qeth_card *card, int queue_num)
38103773 * Note: Function assumes that we have 4 outbound queues.
38113774 */
38123775int qeth_get_priority_queue (struct qeth_card * card , struct sk_buff * skb ,
3813- int ipv , int cast_type )
3776+ int ipv )
38143777{
38153778 __be16 * tci ;
38163779 u8 tos ;
38173780
3818- if (cast_type && card -> info .is_multicast_different )
3819- return card -> info .is_multicast_different &
3820- (card -> qdio .no_out_queues - 1 );
3821-
38223781 switch (card -> qdio .do_prio_queueing ) {
38233782 case QETH_PRIO_Q_ING_TOS :
38243783 case QETH_PRIO_Q_ING_PREC :
@@ -5887,31 +5846,13 @@ static int qeth_core_restore(struct ccwgroup_device *gdev)
58875846 return 0 ;
58885847}
58895848
5890- static struct ccwgroup_driver qeth_core_ccwgroup_driver = {
5891- .driver = {
5892- .owner = THIS_MODULE ,
5893- .name = "qeth" ,
5894- },
5895- .ccw_driver = & qeth_ccw_driver ,
5896- .setup = qeth_core_probe_device ,
5897- .remove = qeth_core_remove_device ,
5898- .set_online = qeth_core_set_online ,
5899- .set_offline = qeth_core_set_offline ,
5900- .shutdown = qeth_core_shutdown ,
5901- .prepare = NULL ,
5902- .complete = NULL ,
5903- .freeze = qeth_core_freeze ,
5904- .thaw = qeth_core_thaw ,
5905- .restore = qeth_core_restore ,
5906- };
5907-
59085849static ssize_t group_store (struct device_driver * ddrv , const char * buf ,
59095850 size_t count )
59105851{
59115852 int err ;
59125853
5913- err = ccwgroup_create_dev (qeth_core_root_dev ,
5914- & qeth_core_ccwgroup_driver , 3 , buf );
5854+ err = ccwgroup_create_dev (qeth_core_root_dev , to_ccwgroupdrv ( ddrv ), 3 ,
5855+ buf );
59155856
59165857 return err ? err : count ;
59175858}
@@ -5929,6 +5870,25 @@ static const struct attribute_group *qeth_drv_attr_groups[] = {
59295870 NULL ,
59305871};
59315872
5873+ static struct ccwgroup_driver qeth_core_ccwgroup_driver = {
5874+ .driver = {
5875+ .groups = qeth_drv_attr_groups ,
5876+ .owner = THIS_MODULE ,
5877+ .name = "qeth" ,
5878+ },
5879+ .ccw_driver = & qeth_ccw_driver ,
5880+ .setup = qeth_core_probe_device ,
5881+ .remove = qeth_core_remove_device ,
5882+ .set_online = qeth_core_set_online ,
5883+ .set_offline = qeth_core_set_offline ,
5884+ .shutdown = qeth_core_shutdown ,
5885+ .prepare = NULL ,
5886+ .complete = NULL ,
5887+ .freeze = qeth_core_freeze ,
5888+ .thaw = qeth_core_thaw ,
5889+ .restore = qeth_core_restore ,
5890+ };
5891+
59325892int qeth_do_ioctl (struct net_device * dev , struct ifreq * rq , int cmd )
59335893{
59345894 struct qeth_card * card = dev -> ml_priv ;
@@ -6620,7 +6580,6 @@ static int __init qeth_core_init(void)
66206580 rc = ccw_driver_register (& qeth_ccw_driver );
66216581 if (rc )
66226582 goto ccw_err ;
6623- qeth_core_ccwgroup_driver .driver .groups = qeth_drv_attr_groups ;
66246583 rc = ccwgroup_driver_register (& qeth_core_ccwgroup_driver );
66256584 if (rc )
66266585 goto ccwgroup_err ;
0 commit comments