Hi, While developing the wireless support for PS3, I'd noticed there were alignment issues if we issued some wireless ioctl from 32bit userland to 64bit kernel (ppc64 PS3 does have). - IW_EV_LCP_LEN in 32bit userland and 64bit kernel differ - offsetof(struct iw_point, length) differ The former issue could be fixed if we added 'packed' attribute to iw_event structure, but it would break existing 64bit userland. I have no idea to resolve latter issue because the first member of struct iw_point is a pointer. Does anyone have idea to fix these issues? (except compiling all userland apps in 64bit mode...) The following is the output from a test code on my PS3. > # cat test.c > #include <stdio.h> > #include <netdb.h> > #include <linux/wireless.h> > /* packed version */ > struct iw_event_p { > __u16 len; > __u16 cmd; > union iwreq_data u; > } __attribute__((packed)); > > int main(void) > { > printf("IW_EV_LCP_LEN=%d offset=%d,%d\n", > IW_EV_LCP_LEN, > offsetof(struct iw_event, u), > offsetof(struct iw_event_p, u)); > printf("iw_event=%d iw_event_p=%d iwreq_data=%d\n", > sizeof(struct iw_event), > sizeof(struct iw_event_p), > sizeof(union iwreq_data)); > > /* --- */ > > printf("iw_point=%d length=%d flags=%d\n", > sizeof(struct iw_point), > offsetof(struct iw_point, length), > offsetof(struct iw_point, flags)); > return 0; > } > # cc -m64 -o test_64 test.c; cc -o test_32 test.c > # ./test_64 > IW_EV_LCP_LEN=8 offset=8,4 > iw_event=24 iw_event_p=20 iwreq_data=16 > iw_point=16 length=8 flags=10 > # ./test_32 > IW_EV_LCP_LEN=4 offset=4,4 > iw_event=20 iw_event_p=20 iwreq_data=16 > iw_point=8 length=4 flags=6 > # regards -- Masakazu MOKUNO - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html