rc=claw_hw_tx( skb, dev, 1 );
spin_unlock_irqrestore(get_ccwdev_lock(p_ch->cdev), saveflags);
CLAW_DBF_TEXT_(4, trace, "clawtx%d", rc);
+ if (rc)
+ rc = NETDEV_TX_BUSY;
return rc;
} /* end of claw_tx */
pages_to_order_of_mag(int num_of_pages)
{
int order_of_mag=1; /* assume 2 pages */
- int nump=2;
+ int nump;
CLAW_DBF_TEXT_(5, trace, "pages%d", num_of_pages);
if (num_of_pages == 1) {return 0; } /* magnitude of 0 = 1 page */
dev_warn(dev, "The communication peer of %s disconnected\n",
ndev->name);
- if (sense & 0x40) {
- if (sense & 0x01) {
+ if (sense & 0x40) {
+ if (sense & 0x01) {
dev_warn(dev, "The remote channel adapter for"
" %s has been reset\n",
ndev->name);
- }
- }
- else if (sense & 0x20) {
- if (sense & 0x04) {
+ }
+ } else if (sense & 0x20) {
+ if (sense & 0x04) {
dev_warn(dev, "A data streaming timeout occurred"
" for %s\n",
ndev->name);
- }
- else {
- dev_warn(dev, "A data transfer parity error occurred"
- " for %s\n",
- ndev->name);
- }
- }
- else if (sense & 0x10) {
- if (sense & 0x20) {
+ } else if (sense & 0x10) {
dev_warn(dev, "The remote channel adapter for %s"
" is faulty\n",
ndev->name);
- }
- else {
- dev_warn(dev, "A read data parity error occurred"
+ } else {
+ dev_warn(dev, "A data transfer parity error occurred"
" for %s\n",
ndev->name);
- }
- }
+ }
+ } else if (sense & 0x10) {
+ dev_warn(dev, "A read data parity error occurred"
+ " for %s\n",
+ ndev->name);
+ }
} /* end of ccw_check_unit_check */
break;
}
- return 0;
+ return rc;
} /* end of find_link */
/*-------------------------------------------------------------------*
privptr->p_write_free_chain=p_this_ccw->next;
p_this_ccw->next=NULL;
--privptr->write_free_count; /* -1 */
- bytesInThisBuffer=len_of_data;
+ if (len_of_data >= privptr->p_env->write_size)
+ bytesInThisBuffer = privptr->p_env->write_size;
+ else
+ bytesInThisBuffer = len_of_data;
memcpy( p_this_ccw->p_buffer,pDataAddress, bytesInThisBuffer);
len_of_data-=bytesInThisBuffer;
pDataAddress+=(unsigned long)bytesInThisBuffer;
p_dev = &privptr->channel[READ].cdev->dev;
p_env = privptr->p_env;
p_this_ccw=privptr->p_read_active_first;
- i=0;
while (p_this_ccw!=NULL && p_this_ccw->header.flag!=CLAW_PENDING) {
pack_off = 0;
p = 0;