110-b44_alignment.patch 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. --- a/drivers/net/b44.c
  2. +++ b/drivers/net/b44.c
  3. @@ -101,7 +101,8 @@ static int instance = 0;
  4. (BP)->tx_cons - (BP)->tx_prod - TX_RING_GAP(BP))
  5. #define NEXT_TX(N) (((N) + 1) & (B44_TX_RING_SIZE - 1))
  6. -#define RX_PKT_BUF_SZ (1536 + bp->rx_offset + 64)
  7. +#define RX_HEADER_OFS (RX_HEADER_LEN + 2)
  8. +#define RX_PKT_BUF_SZ (1536 + RX_HEADER_OFS)
  9. /* minimum number of free TX descriptors required to wake up TX process */
  10. #define B44_TX_WAKEUP_THRESH (B44_TX_RING_SIZE / 4)
  11. @@ -734,10 +735,8 @@ static int b44_alloc_rx_skb(struct b44 *
  12. mapping = pci_map_single(bp->pdev, skb->data,
  13. RX_PKT_BUF_SZ,
  14. PCI_DMA_FROMDEVICE);
  15. - skb_reserve(skb, bp->rx_offset);
  16. - rh = (struct rx_header *)
  17. - (skb->data - bp->rx_offset);
  18. + rh = (struct rx_header *) skb->data;
  19. rh->len = 0;
  20. rh->flags = 0;
  21. @@ -747,13 +746,13 @@ static int b44_alloc_rx_skb(struct b44 *
  22. if (src_map != NULL)
  23. src_map->skb = NULL;
  24. - ctrl = (DESC_CTRL_LEN & (RX_PKT_BUF_SZ - bp->rx_offset));
  25. + ctrl = (DESC_CTRL_LEN & RX_PKT_BUF_SZ);
  26. if (dest_idx == (B44_RX_RING_SIZE - 1))
  27. ctrl |= DESC_CTRL_EOT;
  28. dp = &bp->rx_ring[dest_idx];
  29. dp->ctrl = cpu_to_le32(ctrl);
  30. - dp->addr = cpu_to_le32((u32) mapping + bp->rx_offset + bp->dma_offset);
  31. + dp->addr = cpu_to_le32((u32) mapping + bp->dma_offset);
  32. return RX_PKT_BUF_SZ;
  33. }
  34. @@ -812,7 +811,7 @@ static int b44_rx(struct b44 *bp, int bu
  35. PCI_DMA_FROMDEVICE);
  36. rh = (struct rx_header *) skb->data;
  37. len = cpu_to_le16(rh->len);
  38. - if ((len > (RX_PKT_BUF_SZ - bp->rx_offset)) ||
  39. + if ((len > (RX_PKT_BUF_SZ - RX_HEADER_OFS)) ||
  40. (rh->flags & cpu_to_le16(RX_FLAG_ERRORS))) {
  41. drop_it:
  42. b44_recycle_rx(bp, cons, bp->rx_prod);
  43. @@ -844,8 +843,8 @@ static int b44_rx(struct b44 *bp, int bu
  44. pci_unmap_single(bp->pdev, map,
  45. skb_size, PCI_DMA_FROMDEVICE);
  46. /* Leave out rx_header */
  47. - skb_put(skb, len+bp->rx_offset);
  48. - skb_pull(skb,bp->rx_offset);
  49. + skb_put(skb, len+RX_HEADER_OFS);
  50. + skb_pull(skb,RX_HEADER_OFS);
  51. } else {
  52. struct sk_buff *copy_skb;
  53. @@ -858,7 +857,7 @@ static int b44_rx(struct b44 *bp, int bu
  54. skb_reserve(copy_skb, 2);
  55. skb_put(copy_skb, len);
  56. /* DMA sync done above, copy just the actual packet */
  57. - memcpy(copy_skb->data, skb->data+bp->rx_offset, len);
  58. + memcpy(copy_skb->data, skb->data+RX_HEADER_OFS, len);
  59. skb = copy_skb;
  60. }
  61. @@ -1344,7 +1343,7 @@ static void b44_init_hw(struct b44 *bp)
  62. bw32(B44_DMATX_CTRL, DMATX_CTRL_ENABLE);
  63. bw32(B44_DMATX_ADDR, bp->tx_ring_dma + bp->dma_offset);
  64. bw32(B44_DMARX_CTRL, (DMARX_CTRL_ENABLE |
  65. - (bp->rx_offset << DMARX_CTRL_ROSHIFT)));
  66. + (RX_HEADER_OFS << DMARX_CTRL_ROSHIFT)));
  67. bw32(B44_DMARX_ADDR, bp->rx_ring_dma + bp->dma_offset);
  68. bw32(B44_DMARX_PTR, bp->rx_pending);
  69. @@ -1873,13 +1872,7 @@ static int __devinit b44_get_invariants(
  70. bp->mdc_port = (eeprom[90] >> 14) & 0x1;
  71. }
  72. - /* With this, plus the rx_header prepended to the data by the
  73. - * hardware, we'll land the ethernet header on a 2-byte boundary.
  74. - */
  75. - bp->rx_offset = 30;
  76. -
  77. bp->imask = IMASK_DEF;
  78. -
  79. bp->core_unit = ssb_core_unit(bp);
  80. /* XXX - really required?
  81. --- a/drivers/net/b44.h
  82. +++ b/drivers/net/b44.h
  83. @@ -518,8 +518,6 @@ struct b44 {
  84. #define B44_FLAG_ADV_100FULL 0x08000000
  85. #define B44_FLAG_INTERNAL_PHY 0x10000000
  86. - u32 rx_offset;
  87. -
  88. u32 msg_enable;
  89. struct timer_list timer;