diff options
Diffstat (limited to 'drivers/net/wimax/i2400m/i2400m.h')
| -rw-r--r-- | drivers/net/wimax/i2400m/i2400m.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/net/wimax/i2400m/i2400m.h b/drivers/net/wimax/i2400m/i2400m.h index 7a9c2c5b25cb..b8c7dbfead49 100644 --- a/drivers/net/wimax/i2400m/i2400m.h +++ b/drivers/net/wimax/i2400m/i2400m.h | |||
| @@ -412,7 +412,7 @@ struct i2400m_barker_db; | |||
| 412 | * | 412 | * |
| 413 | * @tx_size_max: biggest TX message sent. | 413 | * @tx_size_max: biggest TX message sent. |
| 414 | * | 414 | * |
| 415 | * @rx_lock: spinlock to protect RX members | 415 | * @rx_lock: spinlock to protect RX members and rx_roq_refcount. |
| 416 | * | 416 | * |
| 417 | * @rx_pl_num: total number of payloads received | 417 | * @rx_pl_num: total number of payloads received |
| 418 | * | 418 | * |
| @@ -436,6 +436,10 @@ struct i2400m_barker_db; | |||
| 436 | * delivered. Then the driver can release them to the host. See | 436 | * delivered. Then the driver can release them to the host. See |
| 437 | * drivers/net/i2400m/rx.c for details. | 437 | * drivers/net/i2400m/rx.c for details. |
| 438 | * | 438 | * |
| 439 | * @rx_roq_refcount: refcount rx_roq. This refcounts any access to | ||
| 440 | * rx_roq thus preventing rx_roq being destroyed when rx_roq | ||
| 441 | * is being accessed. rx_roq_refcount is protected by rx_lock. | ||
| 442 | * | ||
| 439 | * @rx_reports: reports received from the device that couldn't be | 443 | * @rx_reports: reports received from the device that couldn't be |
| 440 | * processed because the driver wasn't still ready; when ready, | 444 | * processed because the driver wasn't still ready; when ready, |
| 441 | * they are pulled from here and chewed. | 445 | * they are pulled from here and chewed. |
| @@ -597,10 +601,12 @@ struct i2400m { | |||
| 597 | tx_num, tx_size_acc, tx_size_min, tx_size_max; | 601 | tx_num, tx_size_acc, tx_size_min, tx_size_max; |
| 598 | 602 | ||
| 599 | /* RX stuff */ | 603 | /* RX stuff */ |
| 600 | spinlock_t rx_lock; /* protect RX state */ | 604 | /* protect RX state and rx_roq_refcount */ |
| 605 | spinlock_t rx_lock; | ||
| 601 | unsigned rx_pl_num, rx_pl_max, rx_pl_min, | 606 | unsigned rx_pl_num, rx_pl_max, rx_pl_min, |
| 602 | rx_num, rx_size_acc, rx_size_min, rx_size_max; | 607 | rx_num, rx_size_acc, rx_size_min, rx_size_max; |
| 603 | struct i2400m_roq *rx_roq; /* not under rx_lock! */ | 608 | struct i2400m_roq *rx_roq; /* access is refcounted */ |
| 609 | struct kref rx_roq_refcount; /* refcount access to rx_roq */ | ||
| 604 | u8 src_mac_addr[ETH_HLEN]; | 610 | u8 src_mac_addr[ETH_HLEN]; |
| 605 | struct list_head rx_reports; /* under rx_lock! */ | 611 | struct list_head rx_reports; /* under rx_lock! */ |
| 606 | struct work_struct rx_report_ws; | 612 | struct work_struct rx_report_ws; |
