ChangeSet 1.2134, 2004/10/18 09:25:49+01:00, [EMAIL PROTECTED] USB SpeedTouch / ATM: Make it work on 64-bit hosts.
Reduce size of struct udsl_control to make it fit in skb->cb, by dropping the cell_header and generating it later instead of storing it. Signed-off-by: David Woodhouse <[EMAIL PROTECTED]> Signed-off-by: Duncan Sands <[EMAIL PROTECTED]> Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]> drivers/usb/atm/usb_atm.c | 20 ++++++++++++-------- drivers/usb/atm/usb_atm.h | 1 - 2 files changed, 12 insertions(+), 9 deletions(-) diff -Nru a/drivers/usb/atm/usb_atm.c b/drivers/usb/atm/usb_atm.c --- a/drivers/usb/atm/usb_atm.c 2004-10-19 08:06:06 -07:00 +++ b/drivers/usb/atm/usb_atm.c 2004-10-19 08:06:06 -07:00 @@ -311,6 +311,15 @@ ** encode ** *************/ +static inline void udsl_fill_cell_header(unsigned char *target, struct atm_vcc *vcc) +{ + target[0] = vcc->vpi >> 4; + target[1] = (vcc->vpi << 4) | (vcc->vci >> 12); + target[2] = vcc->vci >> 4; + target[3] = vcc->vci << 4; + target[4] = 0xec; +} + static const unsigned char zeros[ATM_CELL_PAYLOAD]; static void udsl_groom_skb(struct atm_vcc *vcc, struct sk_buff *skb) @@ -320,11 +329,6 @@ u32 crc; ctrl->atm_data.vcc = vcc; - ctrl->cell_header[0] = vcc->vpi >> 4; - ctrl->cell_header[1] = (vcc->vpi << 4) | (vcc->vci >> 12); - ctrl->cell_header[2] = vcc->vci >> 4; - ctrl->cell_header[3] = vcc->vci << 4; - ctrl->cell_header[4] = 0xec; ctrl->num_cells = UDSL_NUM_CELLS(skb->len); ctrl->num_entire = skb->len / ATM_CELL_PAYLOAD; @@ -366,7 +370,7 @@ ne = min(howmany, ctrl->num_entire); for (i = 0; i < ne; i++) { - memcpy(target, ctrl->cell_header, ATM_CELL_HEADER); + udsl_fill_cell_header(target, ctrl->atm_data.vcc); target += ATM_CELL_HEADER; memcpy(target, skb->data, ATM_CELL_PAYLOAD); target += ATM_CELL_PAYLOAD; @@ -386,7 +390,7 @@ memset(target, 0, instance->snd_padding); target += instance->snd_padding; } - memcpy(target, ctrl->cell_header, ATM_CELL_HEADER); + udsl_fill_cell_header(target, ctrl->atm_data.vcc); target += ATM_CELL_HEADER; memcpy(target, skb->data, skb->len); target += skb->len; @@ -400,7 +404,7 @@ goto out; } - memcpy(target, ctrl->cell_header, ATM_CELL_HEADER); + udsl_fill_cell_header(target, ctrl->atm_data.vcc); target += ATM_CELL_HEADER; memset(target, 0, ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER); target += ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER; diff -Nru a/drivers/usb/atm/usb_atm.h b/drivers/usb/atm/usb_atm.h --- a/drivers/usb/atm/usb_atm.h 2004-10-19 08:06:06 -07:00 +++ b/drivers/usb/atm/usb_atm.h 2004-10-19 08:06:06 -07:00 @@ -91,7 +91,6 @@ unsigned int num_cells; unsigned int num_entire; unsigned int pdu_padding; - unsigned char cell_header[ATM_CELL_HEADER]; unsigned char aal5_trailer[ATM_AAL5_TRAILER]; }; ------------------------------------------------------- This SF.net email is sponsored by: IT Product Guide on ITManagersJournal Use IT products in your business? Tell us what you think of them. Give us Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more http://productguide.itmanagersjournal.com/guidepromo.tmpl _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel